绑定协议先屏蔽hid,能正常发起配对
authordxy <1731678236@qq.com>
Wed, 10 Apr 2024 12:39:20 +0000 (20:39 +0800)
committerdxy <1731678236@qq.com>
Wed, 10 Apr 2024 12:39:20 +0000 (20:39 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c

index 9b76a23..9e84c0f 100644 (file)
@@ -327,9 +327,10 @@ static uint8_t  jsonCheck_phoneinfor(uint8_t *buf,uint8_t *mac_data,char *devnam
         }\r
         printf("\n");\r
     }\r
-    if(mac_tmp[0] != 0 && mac_tmp[1] != 0 && mac_tmp[2] != 0 && mac_tmp[3] != 0 && mac_tmp[4] != 0 && mac_tmp[5] != 0)\r
+    if(mac_tmp[0] == 0 && mac_tmp[1] == 0 && mac_tmp[2] == 0 && mac_tmp[3] == 0 && mac_tmp[4] == 0 && mac_tmp[5] == 0)\r
     {\r
-        printf("MAC地址: len %d",sizeof(mac_tmp));\r
+        memcpy(mac_data,0,6);\r
+    }else{\r
         memcpy(mac_data,mac_tmp,6);\r
     }\r
     cJSON_Delete(root);\r
@@ -487,9 +488,13 @@ static void getRecvPhoneInfo(uint8_t *phonemac,uint8_t *name,uint8_t *len,uint8_
                 }\r
                 printf("\n");\r
             }\r
-            if(mac[0] !=0 && mac[1] != 0 && mac[2] != 0 && mac[3] != 0 && mac[4] != 0 && mac[5] != 0)\r
+            if(mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && mac[4] == 0 && mac[5] == 0)\r
+            {\r
+                memcpy(phonemac,0,6);\r
+            }else\r
             {\r
                 memcpy(phonemac,mac,6);\r
+\r
             }\r
             \r
             cJSON *pn = cJSON_GetObjectItem(root,"pn");\r
@@ -549,6 +554,7 @@ static char *getPhoneName(uint8_t *crcnum)//获取手机设备名称
                 savephonename =  malloc(sizeof(char)*datalen);\r
                 strcpy(str,pn->valuestring);\r
                 strcpy(savephonename,pn->valuestring);\r
+                free(str);\r
                 printf("str:%s savephonename:%s\n",str,savephonename);\r
             }\r
             printf("设备名称: %s\n", pn->valuestring);\r
@@ -583,10 +589,11 @@ void getPhoneMac(uint8_t *crcnum,uint8_t *phoneMac)//获取手机设备mac这个
             printf("\n");\r
         }\r
         if(phone_tmp[0] == 0 && phone_tmp[1] == 0 && phone_tmp[2] == 0 && phone_tmp[3] == 0 && phone_tmp[4] == 0 && phone_tmp[5] == 0){\r
-            memcpy(phoneMac,phone_tmp,6);\r
+            memcpy(phoneMac,0,6);\r
         }else\r
         {\r
-            memcpy(phoneMac,0,6);\r
+            memcpy(phoneMac,phone_tmp,6);\r
+            \r
         }\r
         cJSON_Delete(root);\r
     } \r
@@ -706,6 +713,10 @@ static char *GetwatchSaveName(void)//获取手表本地保存的手机设备名
                     str = malloc(sizeof(char)*showname_len);\r
                     pn->valuestring[showname_len-1]='\0';\r
                     strcpy(str,pn->valuestring);\r
+                    if(str)\r
+                    {\r
+                        free(str);\r
+                    }\r
                     printf("GetwatchSaveName:%s",pn->valuestring);\r
                 }\r
             }\r
@@ -778,7 +789,7 @@ void sendBindInfor(uint8_t *crcnum)
 \r
     GetwatchSaveMac(&save_mac,&MacType);//获取手表设备本地保存的mac地址和mac地址类型 \r
     getPhoneMac(crcnum,&copare_mac);\r
-    \r
+   \r
     if(save_mac[0] == 0 && save_mac[1] == 0 && save_mac[2] == 0 && save_mac[3] == 0 && save_mac[4] == 0 && save_mac[5] == 0)//只要手表本地存储没有mac地址就走连接流程重新绑定\r
     {\r
         #ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION\r
@@ -787,11 +798,9 @@ void sendBindInfor(uint8_t *crcnum)
         if(devnamelen > 0 )\r
         {\r
             devname = getPhoneName(crcnum);\r
-            printf("devname:%s devnamelen:%d",devname,devnamelen);\r
-            CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,(uint8_t *)devname,devnamelen);\r
-            if(devname){\r
-                free(devname);\r
-            }\r
+            printf("devname!!!!!!!!!:%s devnamelen:%d",devname,devnamelen);\r
+            CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,NULL,0);\r
+            printf("bond flag:!!!!!!!!!\r\n");\r
         }else{\r
             CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,NULL,0);\r
         }\r
@@ -809,7 +818,10 @@ void sendBindInfor(uint8_t *crcnum)
             int result = memcmp(copare_mac,save_mac,6);\r
             if(result == 0)\r
             {\r
+                printf("phone_addr:%02x-%02x-%02x-%02x-%02x-%02x type:%d",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],\r
+                phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5],phone_addr.type);\r
                 ret = gap_ble_pair_remote_device(&phone_addr);\r
+                printf("ret:%d",ret);\r
                 bond = 0x02;//手表与该手机绑定过\r
             }else{\r
                 bond = 0x03;//手表与其他手机绑定过\r
@@ -829,9 +841,7 @@ void sendBindInfor(uint8_t *crcnum)
             devname = GetwatchSaveName();\r
             printf("devname:%s showname_len:%d",devname,devnamelen);\r
             CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,(uint8_t *)devname,devnamelen);\r
-            if(devname){\r
-                free(devname);\r
-            }\r
+            printf("cleanUnbindInfor!!!!!!!");\r
         }else{\r
             CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,NULL,0);\r
         }\r
@@ -2504,7 +2514,23 @@ static void GetSpo2GetParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t
     \r
     \r
 }\r
-\r
+void cameraSend(void)\r
+{\r
+    uint8_t value[19];\r
+    memset(value,0,19);\r
+    uint32_t tmp = 1;\r
+    uint16_t tmp_data = 1;\r
+    value[0] = 0x72;\r
+    value[1] = 0x01;\r
+    value[2] = 0x23;\r
+    memcpy(value+3,&tmp,4);\r
+    memcpy(value+7,&tmp,4);\r
+    memcpy(value+11,&tmp,4);\r
+    memcpy(value+15,&tmp_data,2);\r
+    value[17] = 2;// \r
+    value[18] = Calculate_CRC(value,18);\r
+    sendBleData(value,19);\r
+}\r
 //手势拍照协议\r
 static void carmeraCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
 {\r
index 06b3391..2fdcdca 100644 (file)
@@ -584,6 +584,7 @@ errcode_t bondSucessCmd(void);//发送解绑指令,解绑界面调用这个函
 void getDeviceState(void);
 void cleanUnbindInfor(void);//和旧手机解绑清除配对信息
 void comfirmPaire(uint8_t flag);//发送确认配对指令 1确认配对 0取消配对
+void cameraSend(void);
 #ifdef __cplusplus
 }
 #endif
index 15f1910..0088bc3 100644 (file)
@@ -105,16 +105,9 @@ uint8_t data2ae5Cmd = 0;
 #if 1//def SUPPORT_BLE_SERVICE\r
 static void set_phone_info(bd_addr_t *addr)//保存手机信息 包含手机mac地址\r
 {\r
-    bd_addr_t new_addr;\r
-    new_addr.type = addr->type;\r
-    new_addr.addr[0] = addr->addr[5];\r
-    new_addr.addr[1] = addr->addr[4];\r
-    new_addr.addr[2] = addr->addr[3];\r
-    new_addr.addr[3] = addr->addr[2];\r
-    new_addr.addr[4] = addr->addr[1];\r
-    new_addr.addr[5] = addr->addr[0];\r
-    printf("set_phone_info:addr.type %x-%x-%x-%x-%x-%x-%x:%d new_addr.type->%d",new_addr.addr[5],new_addr.addr[4],new_addr.addr[3],new_addr.addr[2],new_addr.addr[1],new_addr.addr[0],addr->type,new_addr.type);\r
-    memcpy(&phone_addr,&new_addr,sizeof(bd_addr_t));\r
+    printf("set_phone_info:addr.type %x-%x-%x-%x-%x-%x: new_addr.type->%d\r\n",addr->addr[5],addr->addr[4],\r
+    addr->addr[3],addr->addr[2],addr->addr[1],addr->addr[0],addr->type);\r
+    memcpy(&phone_addr,addr,sizeof(bd_addr_t));\r
     memcpy(&disconect_addr,addr,sizeof(bd_addr_t));\r
     // printf("phone_addr:%x-%x-%x-%x-%x-%x",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5]);\r
 }\r
@@ -155,8 +148,8 @@ static void svr_ble_adv_data_set(int adv_id)
     gap_ble_config_adv_data_t adv_data_info;\r
     memset_s(&adv_data_info, sizeof(gap_ble_config_adv_data_t), 0, sizeof(gap_ble_config_adv_data_t));\r
 \r
-#if 0\r
-    unsigned char set_mac[6] = {0x61,0x22,0x33,0x44,0x09,0x20};\r
+#if 1\r
+    unsigned char set_mac[6] = {0x61,0x22,0x33,0x44,0x09,0x26};\r
     bluetooth_set_local_addr(set_mac,6);\r
     bd_addr_t addr_info;\r
     int32_t ret= 0;\r
@@ -290,11 +283,11 @@ static void svr_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr,
     if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
         Bleconnect = GAP_BLE_STATE_DISCONNECTED;//蓝牙已断开\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_DISCONNECTED!!! 0x%x ret:%d\r\n",pair_state,AdverFlag);\r
-        if(AdverFlag == true){\r
-            svr_ble_adv_start();\r
-        }    \r
+        // if(AdverFlag == true){\r
+        svr_ble_adv_start();\r
+        // }    \r
     } else {\r
-        \r
+        svr_ble_adv_stop();\r
         set_phone_info(addr);\r
         Bleconnect = GAP_BLE_STATE_CONNECTED;//蓝牙已连接\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_CONNECTED!!! 0x%x\r\n",pair_state);\r
@@ -1255,7 +1248,7 @@ void svr_bluetooth_init(void)
     svr_ble_bt_init_gatts();\r
     #endif\r
     #ifdef SUPPORT_HID_SERVICE\r
-    ble_hid_server_init();\r
+    // ble_hid_server_init();\r
     #endif\r
     ble_factory_server_init();\r
     svr_ble_adv_start_param();\r