修复解绑bug
authorCaisking <3449750381@qq.com>
Mon, 6 May 2024 01:17:06 +0000 (09:17 +0800)
committerCaisking <3449750381@qq.com>
Mon, 6 May 2024 01:17:06 +0000 (09:17 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp

index ac0ba98..3b755fe 100644 (file)
@@ -302,8 +302,8 @@ void send_big_data(uint8_t flag, char *data, int datalen, int total, uint32_t Pa
 \r
     // 处理数据和计算CRC\r
     if (data == NULL) {\r
-        data = "\0"; // 数据为空时处理\r
-        buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); // 计算CRC\r
+        //数据为空 按照18个字节总长度发送给app\r
+        buf[17] = 0x00; // 直接写0x00的校验和\r
     } else {\r
         memcpy(buf + 17, data, datalen); // 复制数据到缓冲区\r
         buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); // 计算CRC\r
@@ -952,7 +952,7 @@ void sendBindInfor(uint8_t *crcnum)
             if (devname != NULL){\r
                 printf("phone devname is name!!!!!!!!!:");\r
                 uint8_t buf[devnamelen+2]; \r
-                buf[0] = DEVICEBIND;\r
+                buf[0] = DEVICEBIND ;\r
                 buf[1] = devnamelen;//设备名称长度 0不显示\r
                 memcpy(buf+2,devname,devnamelen);\r
                 CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,(uint8_t *)buf,devnamelen+2);\r
@@ -971,7 +971,7 @@ void sendBindInfor(uint8_t *crcnum)
         }else{\r
             uint8_t buf[2]; \r
             buf[0] = DEVICEBIND;\r
-            buf[1] = 0;\r
+            buf[1] = 0 ;\r
             printf("phone devname is no name!!!!!!!!!:");\r
             CustomEventPublish(TOPIC_EVENT_DEVICE_BIND,buf,2);\r
         }\r
@@ -1015,9 +1015,9 @@ void sendBindInfor(uint8_t *crcnum)
         {   \r
             devname = GetwatchSaveName();\r
             if (devname != NULL){\r
-                uint8_t buf[devnamelen+1]; \r
-                buf[0] = devnamelen;\r
-                buf[1] = DEVICEUNBIND;\r
+                uint8_t buf[devnamelen+2]; \r
+                buf[0] = DEVICEUNBIND ;\r
+                buf[1] = devnamelen;\r
                 memcpy(buf+2,devname,devnamelen);\r
                 CustomEventPublish(TOPIC_EVENT_DEVICE_UNBIND,(uint8_t *)buf,devnamelen+2);\r
                 printf("devname:is no null!!!!!");\r
@@ -2152,28 +2152,28 @@ static void aboutDeviceCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *to
     char *json_format = cJSON_PrintUnformatted(dataJSON);\r
     cJSON_Delete(dataJSON);\r
     uint32_t data_len = strlen(json_format);\r
-    uint8_t value[data_len+18];\r
+    uint8_t value[data_len+19];\r
+    memset(value,0,data_len+19);\r
     uint32_t tmp = 1;\r
-    uint16_t tmp_data = 1;\r
+    uint16_t tmp_data = (uint16_t)data_len;\r
     value[0] = 0x72;\r
     value[1] = 0x01;\r
     value[2] = 0x03;\r
     memcpy(value+3,&tmp,4);\r
-    memcpy(value+7,&tmp,4);\r
+    memcpy(value+7,&data_len,4);\r
     memcpy(value+11,&tmp,4);\r
     memcpy(value+15,&tmp_data,2);\r
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\r
-        memcpy(value+17,(uint8_t *)json_format,data_len);\r
+        memcpy(value+17,(uint8_t *)json_format,data_len);//17+69 = 86\r
         free(json_format);\r
-        unsigned char  lrc = Calculate_CRC(value,data_len+17);\r
-        printf("lrc:%d",lrc);\r
-        value[data_len+18] = lrc;\r
+        value[data_len+17] = Calculate_CRC(value,data_len+17);//\r
+        printf("data_len:%d %x %d!!!!!\r\n",data_len,value[data_len+17],data_len+17);\r
         sendBleData(value,data_len+18);\r
     }else\r
     {\r
         value[17] = 0;\r
-        unsigned char  lrc = Calculate_CRC(value,18);\r
+        uint8_t lrc = Calculate_CRC(value,18);\r
         value[18] = lrc;\r
         sendBleData(value,19);\r
     }\r
@@ -2200,10 +2200,9 @@ void setFindWatchFlag(uint8_t flag)
 }\r
 static void findWatchCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
 {\r
-   \r
-    uint8_t findFlag = crcnum[0];\r
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\r
+        uint8_t findFlag = crcnum[0];\r
         //弹窗界面\r
         if(findFlag)//查找手表弹窗界面\r
         {\r
@@ -2615,9 +2614,9 @@ void sendRealTimeDataToAPP(uint8_t flag)
 {\r
     if(flag == 0)//校验失败\r
     {\r
-        send_big_data(0,NULL,1,data_len,1,1,0x0f,1);\r
+        send_big_data(0,NULL,0,0,1,1,0x0f,1);\r
 \r
-    }else\r
+    }else \r
     {\r
         training_ble_data.sportType= 4;//运动类型 0 健走 1跑步 2骑行 3\r
         training_ble_data.controlmd= SENDDATA;\r
@@ -2895,7 +2894,7 @@ static void GetWatchAuxFuncCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t
     memcpy(value+15,&tmp_data,2);\r
     if(Check_CRC(crcnum,len,crcvalue))\r
     {\r
-        uint8_t paramCmt = 0;//辅助功能 0\r
+        uint8_t paramCmt = crcnum[0];//辅助功能 0\r
         \r
         value[17] = paramCmt;// \r
         value[18] = Calculate_CRC(value,18);\r
@@ -4004,7 +4003,7 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,char *data_item)
     }\r
     if(path==NULL)\r
     {\r
-        send_big_data(1,NULL,1,1,1,1,id,1);\r
+        send_big_data(1,NULL,0,0,1,1,id,1);\r
         sendbigDataBufState = false;//分包同步数据不允许打断\r
         free(buf);\r
         return;\r
@@ -4013,7 +4012,7 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,char *data_item)
     FILE *fp= fopen(path,"r+");\r
     if(fp==NULL)\r
     {\r
-        send_big_data(1,NULL,1,1,1,1,id,1);\r
+        send_big_data(1,NULL,0,0,1,1,id,1);\r
         printf("打开文件失败%s\r\n",path);\r
         free(buf);\r
         sendbigDataBufState = false;//分包同步数据不允许打断\r
index 8def5ba..3f84172 100644 (file)
@@ -472,7 +472,7 @@ namespace OHOS
             DeviceUnbindingRequestViewLabel[0]->SetStyle(STYLE_TEXT_FONT, 30);
             DeviceUnbindingRequestViewLabel[0]->SetStyle(STYLE_LINE_HEIGHT, 40);
             char str[512];
-            memcpy(str, 0, 512);
+            memset(str, 0, 512);
             sprintf(str, "当前设备已经与 %s 绑定", PairingViewEventListener::GetInstance().GetDeviceName());
             DeviceUnbindingRequestViewLabel[0]->SetText(str);
             DeviceUnbindingRequestViewLabel[0]->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
@@ -491,7 +491,7 @@ namespace OHOS
             DeviceUnbindingRequestViewLabel[1]->SetPosition(33, y, 400, 300);
             DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_TEXT_FONT, 30);
             DeviceUnbindingRequestViewLabel[1]->SetStyle(STYLE_LINE_HEIGHT, 40);
-            memcpy(str, 0, 512);
+            memset(str, 0, 512);
             sprintf(str, "继续连接操作会解除与%s的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n", PairingViewEventListener::GetInstance().GetDeviceName());
             // str = "继续连接操作会解除与 " + GetDeviceName() + " 的绑定并将手表恢复出厂设置(会清空手表数据)\n\n是否继续此操作\n";
             DeviceUnbindingRequestViewLabel[1]->SetText(str);