优化扫描列表上传
authordxy <1731678236qq.com>
Fri, 15 Aug 2025 01:34:22 +0000 (09:34 +0800)
committerdxy <1731678236qq.com>
Fri, 15 Aug 2025 01:34:22 +0000 (09:34 +0800)
2.code/1.sdk/apps/BK_app/BK_drive/bk_uart.c
2.code/1.sdk/apps/common/third_party_profile/jieli/trans_data_demo/le_trans_data.c
2.code/1.sdk/apps/watch/task_manager/bt/bt_event_fun.c

index 9be46c2..ac3a9a1 100644 (file)
@@ -326,6 +326,7 @@ int uart_send_single_bt_mac(u8 *name,u8 *mac,u8 connect)
         printf( "Failed to create JSON object\n");
         cJSON_Delete(data);
         return -1;
+        
     }
     char mac_tmp[18]={0};
     memset(mac_tmp,0,18);
@@ -353,6 +354,73 @@ int uart_send_single_bt_mac(u8 *name,u8 *mac,u8 connect)
     cJSON_Delete(root);
     return 0;
 }
+extern char userremote_name[32]; //当前连接或者断开的蓝牙名称
+extern u8 bt_conn_addr[6];//蓝牙连接成功的地址
+extern u8 bt_connect;
+void send_bt_connect_state(void){
+    cJSON *root = cJSON_CreateObject();
+    if (root == NULL) {
+        printf( "Failed to create JSON object\n");
+        return;
+    }
+    // 添加字符串字段 "event"
+    
+    cJSON_AddStringToObject(root, "event", "need_send_bt_connect_list");
+    cJSON *data = cJSON_CreateObject();
+    if (data == NULL) {
+        printf( "Failed to create JSON object\n");
+        cJSON_Delete(data);
+        return;
+    }
+    char mac_tmp[18]={0};
+    memset(mac_tmp,0,18);
+    if(memcmp(bt_conn_addr,"\0\0\0\0\0\0",6) != 0){
+        sprintf((char *)mac_tmp,"%02X:%02X:%02X:%02X:%02X:%02X",bt_conn_addr[5],bt_conn_addr[4],bt_conn_addr[3],bt_conn_addr[2],bt_conn_addr[1],bt_conn_addr[0]);
+
+        cJSON_AddStringToObject(data, "name", (char *)userremote_name);
+        cJSON_AddStringToObject(data, "mac", (char *)mac_tmp);
+        if(bt_connect == 1){
+            cJSON_AddStringToObject(data, "state", "connecting");
+        }
+        else if (bt_connect == 2)
+        {
+            cJSON_AddStringToObject(data, "state", "connected");
+        }else{
+            cJSON_AddStringToObject(data, "state", "disconnected");
+        }
+        cJSON_AddItemToObject(root, "data", data);
+        
+        char *json_string = cJSON_Print(root);
+        if (json_string == NULL) {
+            
+            printf( "Failed to print JSON\n");
+
+            cJSON_Delete(root);
+            return;
+        }
+        printf("JSON数据1: %s\n", json_string);
+        uart_send_blocking(ut, json_string, strlen(json_string), 20);
+        // 释放内存
+        cJSON_free(json_string);
+        cJSON_Delete(root);
+    }else{
+        cJSON_AddStringToObject(data, "None","");
+        cJSON_AddItemToObject(root, "data", data);
+        
+        char *json_string = cJSON_Print(root);
+        if (json_string == NULL) {
+            printf( "Failed to print JSON\n");
+            cJSON_Delete(root);
+            return;
+        }
+        
+        printf("JSON数据2: %s\n", json_string);
+        uart_send_blocking(ut, json_string, strlen(json_string), 20);
+        // 释放内存
+        cJSON_free(json_string);
+        cJSON_Delete(root);
+    }
+}
 int uart_send_bt_list(u8 *data)
 {
     u16 len_tmp = 0;
@@ -373,6 +441,7 @@ int uart_send_bt_list(u8 *data)
                     uart_send_blocking(ut, data+len_tmp, date_len, 200);
                     len_tmp+=date_len;
                 }
+                data_flag = 0;
                 break; //最后一包
             }
             //532
@@ -563,6 +632,11 @@ int parse_uart_data(char *json_string)
                 
             }
         }
+
+        if(!strcmp(event->valuestring,"get_connect_bt_state")) {
+            printf("获取当前连接蓝牙耳机的状态");
+            send_bt_connect_state();
+        }
         if(ack_flag == 1)
         {
             ack_flag = 0;
index 1254e54..e44a089 100644 (file)
@@ -230,6 +230,7 @@ void start_scan_bt(void){
     if (bt_connect) { //搜索前断开已连接得蓝牙耳机
         user_emitter_cmd_prepare(USER_CTRL_DISCONNECTION_HCI, 0, NULL);
     }
+    scan_state = 1;
     bt_emitter_start_search_device(); //开始扫描
 }
 void set_adv_imei(char *imei){
@@ -237,9 +238,7 @@ void set_adv_imei(char *imei){
     bt_ble_init();
 }
 void stop_scan_bt(void){
-    
-    bt_emitter_stop_search_device();//停止扫描
-    scan_state=0;
+    bt_emitter_stop_search_device();//停止扫描 
 }
 ///ble回复扫描耳机列表
 void bt_scan_list(void) //扫描完成发送设备列表->小程序
@@ -248,6 +247,7 @@ void bt_scan_list(void) //扫描完成发送设备列表->小程序
     {
         return;
     }
+    scan_state=0;
     printf("scan_state:%d",scan_state);
     // if(!scan_state){
     //     return;
@@ -431,6 +431,7 @@ void connect_bt(char *json_data,u8 conect){
         }  
     }
 }
+
 extern u8 get_total_connect_dev(void);
 //------------------------------------------------------
 //ANCS
index c33a6f7..6412835 100644 (file)
@@ -1448,7 +1448,8 @@ void bt_status_connect_background(struct bt_event *bt)
 /*----------------------------------------------------------------------------*/
 void bt_status_disconnect(struct bt_event *bt)
 {
-    bt_connect = BT_CONN_STATE_INIT;
+    bt_connect = BT_CONN_STATE_INIT; 
+    uart_send_single_bt_mac(userremote_name,bt_conn_addr,0);
     sys_auto_sniff_controle(0, NULL);
     __this->call_flag = 0;
     /* log_info("BT_STATUS_DISCONNECT\n"); */