return;\r
}\r
\r
+/* gap_ble_stop_adv is asynchronous; set_adv_param/start_adv return STATE_ERR if stack not idle yet */\r
+static void ble_adv_wait_stopped_evt(uint32_t timeout_ms)\r
+{\r
+ uint32_t waited = 0;\r
+ const uint32_t step = 25U;\r
+\r
+ while (get_ble_adv_status() != 0 && waited < timeout_ms) {\r
+ osDelay((int32_t)step);\r
+ waited += step;\r
+ }\r
+}\r
\r
void svr_ble_adv_factory_test_start_param(void)\r
{\r
errcode_t ret = 0;\r
int adv_id = BLE_ADV_ID;\r
if (ble_adv_falg == 1) { //已经开始广播了,不需要重复开启广播\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
+ ret = gap_ble_stop_adv(adv_id);\r
+ if (ret != ERRCODE_BT_SUCCESS) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "factory ble adv: gap_ble_stop_adv ret 0x%x", ret);\r
+ }\r
+ ble_adv_wait_stopped_evt(800U);\r
}\r
\r
gap_ble_adv_params_t adv_para;\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_adv_start bt gap_ble_start_adv2 ret = 0x%x", ret);\r
}\r
\r
-\r
-static int8_t ble_adv_init_falg=200;\r
+static uint16_t ble_adv_init_falg = 200;\r
\r
static osTimerId_t ble_adv_timer=NULL;\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
+ ret = gap_ble_stop_adv(adv_id);\r
+ if (ret != ERRCODE_BT_SUCCESS) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv restart: gap_ble_stop_adv ret 0x%x", ret);\r
+ }\r
+ ble_adv_wait_stopped_evt(800U);\r
\r
if(!uapi_dev_runtime_get_factory_test_status_flag())\r
{\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
+ ret = gap_ble_set_adv_param(adv_id, &adv_para);\r
+ if (ret != ERRCODE_BT_SUCCESS) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv restart: gap_ble_set_adv_param ret 0x%x", ret);\r
+ }\r
\r
}\r
if(get_ble_connect()==false)\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
+ ret = gap_ble_start_adv(adv_id);\r
+ if (ret != ERRCODE_BT_SUCCESS) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv restart: gap_ble_start_adv ret 0x%x", ret);\r
+ }\r
}\r
\r
\r
}\r
else\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "no sdv\n");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv restart: adv already stopped");\r
if(!uapi_dev_runtime_get_factory_test_status_flag())\r
{\r
\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
+ ret = gap_ble_set_adv_param(adv_id, &adv_para);\r
+ if (ret != ERRCODE_BT_SUCCESS) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv restart: gap_ble_set_adv_param ret 0x%x", ret);\r
+ }\r
\r
}\r
\r
errcode_t ret = 0;\r
int adv_id = BLE_ADV_ID;\r
if (ble_adv_falg == 1) { //已经开始广播了,不需要重复开启广播\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
+ ret = gap_ble_stop_adv(adv_id);\r
+ if (ret != ERRCODE_BT_SUCCESS) {\r
+ WEARABLE_LOGW(WEARABLE_LOG_MODULE_APP, "ble adv param: gap_ble_stop_adv ret 0x%x", ret);\r
+ }\r
+ ble_adv_wait_stopped_evt(800U);\r
}\r
\r
if(ble_adv_init_falg)\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "srv_ble_add_chart_decr_recv_cmd \r\n");\r
srv_ble_add_chart_decr_Zhihui_ota(server_id,srv_handle);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "srv_ble_add_chart_decr_Zhihui_ota \r\n");\r
- srv_ble_add_Zhihui_AI(server_id,srv_handle);\r
+ // srv_ble_add_Zhihui_AI(server_id,srv_handle);\r
// srv_ble_add_chart_decr_Zhihui_AI(server_id,srv_handle);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "srv_ble_add_Zhihui_AI \r\n");\r
srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(server_id,srv_handle);\r
static void svr_ble_adv_stop_cb(uint8_t adv_id, adv_status_t status)\r
{\r
if (adv_id == BLE_ADV_ID) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"svr_ble_adv_stop_cb adv_id: %d, status:%d\n", adv_id, status);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_adv_stop_cb adv_id: %d, status:%d", adv_id, status);\r
ble_adv_start=0;\r
uapi_save_runtime_log(RUNTIME_LOG_BLE_BROADCAST_OFF);\r
}\r