From a45633e3e4107954e9839de10136339419a30a92 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Fri, 22 Nov 2024 16:21:46 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E8=BF=9B=E5=85=A5=E4=BA=A7?= =?utf8?q?=E6=B5=8B=E6=A8=A1=E5=BC=8F=E4=BF=9D=E6=8C=81=E9=AB=98=E9=A2=91?= =?utf8?q?=E7=8E=87=E8=93=9D=E7=89=99=E5=B9=BF=E6=92=AD=EF=BC=8C=E4=BC=98?= =?utf8?q?=E5=8C=96=E7=9D=A1=E7=9C=A0=E6=96=87=E4=BB=B6=E5=AD=98=E5=82=A8?= =?utf8?q?=EF=BC=8C=E8=B0=83=E6=95=B4=E6=B4=BB=E4=BD=93=E6=A3=80=E6=B5=8B?= =?utf8?q?=E9=98=88=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../ble_service/bleservice/bleService.c | 136 ++++++++++++++++-- .../drivers/peripheral/cywee/src/main_dml.c | 6 +- .../drivers/peripheral/ppg/hx3695/hx3695.c | 2 +- 3 files changed, 132 insertions(+), 12 deletions(-) diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c index bfb3f2c4d..f486840be 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -411,6 +411,79 @@ void svr_ble_adv_factory_test_start_param(void) } +static uint8_t ble_adv_init_falg=100; + +static osTimerId_t ble_adv_timer=NULL; + +static uint32_t last_package_id=0; + +static void ble_adv_Timer_CallBack(int data) +{ + ble_adv_init_falg--; + + if(ble_adv_init_falg<=0) + { + int adv_id = BLE_ADV_ID; + + errcode_t ret = 0; + if(get_ble_adv_status()) + { + ret=gap_ble_stop_adv(adv_id); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_stop_adv ret %x\n",ret); + osDelay(50); + + if(!uapi_dev_runtime_get_factory_test_status_flag()) + { + gap_ble_adv_params_t adv_para; + memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t)); + adv_para.min_interval = 0x640; + adv_para.max_interval = 0x640; + adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR; + adv_para.channel_map = 0x7; + adv_para.duration = 0; + + ret=gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_set_adv_param ret %x\n",ret); + + } + + + + ret=gap_ble_start_adv(adv_id); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_start_adv ret %x\n",ret); + + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "no sdv\n"); + if(!uapi_dev_runtime_get_factory_test_status_flag()) + { + + gap_ble_adv_params_t adv_para; + memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t)); + adv_para.min_interval = 0x640; + adv_para.max_interval = 0x640; + adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR; + adv_para.channel_map = 0x7; + adv_para.duration = 0; + ret=gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_set_adv_param ret %x\n",ret); + + } + + + + } + + + osTimerStop(ble_adv_timer); + osTimerDelete(ble_adv_timer); + ble_adv_timer = NULL; + + } +} + + void svr_ble_adv_start_param(void) { @@ -422,16 +495,63 @@ void svr_ble_adv_start_param(void) osDelay(50); } - gap_ble_adv_params_t adv_para; - memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t)); + if(ble_adv_init_falg) + { + gap_ble_adv_params_t adv_para; + memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t)); + adv_para.min_interval = 0x64; + adv_para.max_interval = 0x64; + adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR; + adv_para.channel_map = 0x7; + adv_para.duration = 0; + gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数 + + uint32_t tick; + osStatus_t retTimer; + if(ble_adv_timer!=NULL) + { + osTimerDelete(ble_adv_timer); + ble_adv_timer = NULL; + } - adv_para.min_interval = 0x640; - adv_para.max_interval = 0x640; - adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR; - adv_para.channel_map = 0x7; - adv_para.duration = 0; + ble_adv_timer = osTimerNew((osTimerFunc_t)ble_adv_Timer_CallBack, osTimerPeriodic, NULL, NULL); + tick =osMs2Tick(1000); + retTimer = osTimerStart(ble_adv_timer, tick); + if (retTimer != osOK && ble_adv_timer != NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer); + osTimerDelete(ble_adv_timer); + ble_adv_timer = NULL; + return; + } - gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数 + } + else + { + if(!uapi_dev_runtime_get_factory_test_status_flag()) + { + gap_ble_adv_params_t adv_para; + memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t)); + adv_para.min_interval = 0x640; + adv_para.max_interval = 0x640; + adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR; + adv_para.channel_map = 0x7; + adv_para.duration = 0; + gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数 + } + else + { + gap_ble_adv_params_t adv_para; + memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t)); + adv_para.min_interval = 0x64; + adv_para.max_interval = 0x64; + adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR; + adv_para.channel_map = 0x7; + adv_para.duration = 0; + gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数 + } + + } + gap_ble_set_local_appearance(GAP_BLE_APPEARANCE_TYPE_GENERIC_WATCH);//仅是手表 svr_ble_adv_data_set(adv_id);//开始广播和扫描数据 ble_adv_falg = 1; diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index fb9644fb8..abafaf521 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -799,9 +799,6 @@ void cywee_time_sync(void) time_t rawtime; struct tm* timeinfo; - clean_sleep_data(); - - time(&rawtime); timeinfo = localtime(&rawtime); CWM_OS_dbgPrintf("cywee_time_sync : year[%d], mon[%d], day[%d], hour[%d], min[%d], sec[%d] \r\n", @@ -823,6 +820,7 @@ void cywee_time_sync(void) //时间同步以后创建文件夹 char day[12] = {0}; get_sleep_file_day(day); + memset(dir_path, 0, sizeof(dir_path)); sprintf_s(dir_path, 64, SLEEP_DIR_PATH, day); uapi_create_folder(dir_path); } @@ -885,6 +883,8 @@ void activity_mode_setstatus(int cmd) void cywee_inactivity_mode_change(int mode) { // cywee_time_sync(); + clean_sleep_data(); + switch (mode) { //无作用 diff --git a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c index 5c37eec0d..efb52c575 100644 --- a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c +++ b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c @@ -2254,7 +2254,7 @@ bool hx3695_init(WORK_MODE_T mode) case HRS_MODE: //TYHX_LOG(" hx3695_init mode : HRS_MODE \n"); #ifdef HRS_ALG_LIB - tyhx_hrs_set_living(1, 15, 30); + tyhx_hrs_set_living(1, 18, 30); if(hx3695_hrs_enable()== SENSOR_OP_FAILED) { return false; -- 2.17.1