}\r
\r
\r
+static uint8_t ble_adv_init_falg=100;\r
+\r
+static osTimerId_t ble_adv_timer=NULL;\r
+\r
+static uint32_t last_package_id=0;\r
+\r
+static void ble_adv_Timer_CallBack(int data)\r
+{\r
+ ble_adv_init_falg--;\r
+\r
+ if(ble_adv_init_falg<=0)\r
+ {\r
+ int adv_id = BLE_ADV_ID;\r
+\r
+ errcode_t ret = 0;\r
+ if(get_ble_adv_status())\r
+ {\r
+ ret=gap_ble_stop_adv(adv_id);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_stop_adv ret %x\n",ret);\r
+ osDelay(50);\r
+\r
+ if(!uapi_dev_runtime_get_factory_test_status_flag())\r
+ {\r
+ gap_ble_adv_params_t adv_para;\r
+ memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
+ adv_para.min_interval = 0x640;\r
+ adv_para.max_interval = 0x640;\r
+ adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
+ adv_para.channel_map = 0x7;\r
+ adv_para.duration = 0;\r
+\r
+ ret=gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_set_adv_param ret %x\n",ret);\r
+\r
+ }\r
+ \r
+ \r
+\r
+ ret=gap_ble_start_adv(adv_id);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_start_adv ret %x\n",ret);\r
+\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "no sdv\n");\r
+ if(!uapi_dev_runtime_get_factory_test_status_flag())\r
+ {\r
+\r
+ gap_ble_adv_params_t adv_para;\r
+ memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
+ adv_para.min_interval = 0x640;\r
+ adv_para.max_interval = 0x640;\r
+ adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
+ adv_para.channel_map = 0x7;\r
+ adv_para.duration = 0;\r
+ ret=gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_set_adv_param ret %x\n",ret);\r
+\r
+ }\r
+ \r
+\r
+ \r
+ }\r
+\r
+\r
+ osTimerStop(ble_adv_timer);\r
+ osTimerDelete(ble_adv_timer);\r
+ ble_adv_timer = NULL;\r
+ \r
+ }\r
+}\r
+\r
+\r
\r
void svr_ble_adv_start_param(void)\r
{\r
osDelay(50);\r
}\r
\r
- gap_ble_adv_params_t adv_para;\r
- memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
+ if(ble_adv_init_falg)\r
+ {\r
+ gap_ble_adv_params_t adv_para;\r
+ memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
+ adv_para.min_interval = 0x64;\r
+ adv_para.max_interval = 0x64;\r
+ adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
+ adv_para.channel_map = 0x7;\r
+ adv_para.duration = 0;\r
+ gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
+\r
+ uint32_t tick;\r
+ osStatus_t retTimer;\r
+ if(ble_adv_timer!=NULL)\r
+ {\r
+ osTimerDelete(ble_adv_timer);\r
+ ble_adv_timer = NULL;\r
+ }\r
\r
- adv_para.min_interval = 0x640;\r
- adv_para.max_interval = 0x640;\r
- adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
- adv_para.channel_map = 0x7;\r
- adv_para.duration = 0;\r
+ ble_adv_timer = osTimerNew((osTimerFunc_t)ble_adv_Timer_CallBack, osTimerPeriodic, NULL, NULL);\r
+ tick =osMs2Tick(1000);\r
+ retTimer = osTimerStart(ble_adv_timer, tick);\r
+ if (retTimer != osOK && ble_adv_timer != NULL) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer);\r
+ osTimerDelete(ble_adv_timer);\r
+ ble_adv_timer = NULL;\r
+ return;\r
+ }\r
\r
- gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
+ }\r
+ else\r
+ {\r
+ if(!uapi_dev_runtime_get_factory_test_status_flag())\r
+ {\r
+ gap_ble_adv_params_t adv_para;\r
+ memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
+ adv_para.min_interval = 0x640;\r
+ adv_para.max_interval = 0x640;\r
+ adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
+ adv_para.channel_map = 0x7;\r
+ adv_para.duration = 0;\r
+ gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
+ }\r
+ else\r
+ {\r
+ gap_ble_adv_params_t adv_para;\r
+ memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
+ adv_para.min_interval = 0x64;\r
+ adv_para.max_interval = 0x64;\r
+ adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
+ adv_para.channel_map = 0x7;\r
+ adv_para.duration = 0;\r
+ gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
+ }\r
+\r
+ }\r
+ \r
gap_ble_set_local_appearance(GAP_BLE_APPEARANCE_TYPE_GENERIC_WATCH);//仅是手表\r
svr_ble_adv_data_set(adv_id);//开始广播和扫描数据\r
ble_adv_falg = 1;\r