ble广播机制优化 1496/1 1496/head
authorhcj <1224667075@qq.com>
Thu, 5 Dec 2024 13:52:07 +0000 (21:52 +0800)
committerhcj <1224667075@qq.com>
Thu, 5 Dec 2024 13:52:07 +0000 (21:52 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index f486840..e735a70 100644 (file)
@@ -446,12 +446,13 @@ static void  ble_adv_Timer_CallBack(int data)
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_set_adv_param ret %x\n",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
+            }\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
@@ -510,6 +511,7 @@ void svr_ble_adv_start_param(void)
         osStatus_t retTimer;\r
         if(ble_adv_timer!=NULL)\r
         {\r
+            osTimerStop(ble_adv_timer);\r
             osTimerDelete(ble_adv_timer);\r
             ble_adv_timer = NULL;\r
         }\r
@@ -1276,7 +1278,7 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
     bt_uuid_t hid_report_uuid_2ae6 = {0};\r
     bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_ID, &hid_report_uuid_2ae6);\r
 \r
-bt_uuid_t chara_uuid_data_2ae7 = {0};\r
+    bt_uuid_t chara_uuid_data_2ae7 = {0};\r
     bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_REPLY_ID, &chara_uuid_data_2ae7);\r
 \r
     if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae7))\r
@@ -1497,16 +1499,16 @@ errcode_t svr_ble_bt_gatts_noyify_zhihui(uint8_t *data, uint16_t data_len)//这
     if(ret!=ERRCODE_SUCC)\r
     {\r
         msleep(50);\r
-                ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
-                if(ret!=ERRCODE_SUCC)\r
-                {\r
+        ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+        if(ret!=ERRCODE_SUCC)\r
+        {\r
             msleep(100);\r
             ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
 \r
             if(ret!=ERRCODE_SUCC)\r
                     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
                     g_ble_conn_id, g_ble_server_handle,data_len);\r
-                            }\r
+        }\r
     }\r
     return ret;  \r
 }\r
@@ -1695,15 +1697,15 @@ static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, g
         if(status!=ERRCODE_SUCC)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ota fial ");\r
-            //如果存在此文件证明ota出现失败过\r
+           //如果存在此文件证明ota出现失败过\r
             FILE *fp= fopen("/user/updata/Ble_ota_file.txt","ab+");\r
             fwrite("x",1,1,fp);\r
             fclose(fp);\r
         }\r
-    }\r
+           }\r
     if(Is_App_ble_handle(write_cb_para->handle))\r
     {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," %d %d\r\n",conn_id,write_cb_para->handle);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP," %d %d\r\n",conn_id,write_cb_para->handle);\r
         g_ble_conn_id=conn_id;\r
     }\r
     if(is_alipay_handle(write_cb_para->handle))\r
@@ -2041,17 +2043,17 @@ static void blesrv_service_check_task(void const *arg)
         uint16_t server_handle = mail.service_handle;\r
         uint32_t msg_len = mail.msg_len;\r
 \r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"mail.msg_data:%X,g_blesrv_queue:%d ble_recv:%d %d %02X %02X %02X mail.msg_data: %02X %02X %02X\r\n",\r
-            mail.msg_data,\r
-            g_blesrv_queue,\r
-            msg_len,\r
-            server_handle,\r
-            p_msgbuf[0],\r
-            p_msgbuf[1],\r
-            p_msgbuf[2],\r
-            mail.msg_data[0],\r
-            mail.msg_data[1],\r
-            mail.msg_data[2]);\r
+        // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"mail.msg_data:%X,g_blesrv_queue:%d ble_recv:%d %d %02X %02X %02X mail.msg_data: %02X %02X %02X\r\n",\r
+        //     mail.msg_data,\r
+        //     g_blesrv_queue,\r
+        //     msg_len,\r
+        //     server_handle,\r
+        //     p_msgbuf[0],\r
+        //     p_msgbuf[1],\r
+        //     p_msgbuf[2],\r
+        //     mail.msg_data[0],\r
+        //     mail.msg_data[1],\r
+        //     mail.msg_data[2]);\r
 \r
         #if 1\r
         if (server_handle == get_factory_ate_write_handl()) \r
@@ -2085,7 +2087,7 @@ static void blesrv_service_check_task(void const *arg)
             free(mail.msg_data);\r
             mail.msg_data = NULL;\r
         }\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"ble_recv:end\r\n");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble_recv:end\r\n");\r
     }\r
 }\r
 #define BLESRV_APP_BOARD_MSG_COUNT 50\r
@@ -2132,6 +2134,7 @@ void send_pair_succ(bd_addr_t *addr)
     sendParieSuccess(1,addr);\r
 }\r
 \r
+ static uint8_t get_ble_Check_adv_status_falg=0;\r
 \r
 void Check_ble_adv_status(void)\r
 {\r
@@ -2143,16 +2146,21 @@ void Check_ble_adv_status(void)
     else\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"get_ble_adv_status %s \n", get_ble_adv_status()?"true":"fales");\r
+       \r
         if(get_ble_adv_status()==0)\r
         {\r
-            if(AdverFlag)\r
+            get_ble_Check_adv_status_falg++;\r
+            if(AdverFlag && get_ble_Check_adv_status_falg>=3)\r
             {\r
                 if(uapi_dev_runtime_get_factory_test_status_flag())\r
                 svr_ble_adv_factory_test_start_param();\r
                 else\r
                 svr_ble_adv_start_param(); \r
             }\r
-            \r
+        }\r
+        else\r
+        {\r
+            get_ble_Check_adv_status_falg=0;\r
         }\r
     }\r
     return;\r