修复蓝牙读取心率bug
authorCaisking <3449750381@qq.com>
Sun, 28 Apr 2024 08:31:11 +0000 (16:31 +0800)
committerCaisking <3449750381@qq.com>
Sun, 28 Apr 2024 08:31:11 +0000 (16:31 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 440068e..21786e4 100644 (file)
@@ -275,32 +275,36 @@ void sendDataNow(uint8_t *buf,uint16_t len)
 \r
 void send_big_data(uint8_t flag, char *data, int datalen, int total, uint32_t Packet_id, uint32_t packet_total, uint8_t type_id, uint8_t type)\r
 {\r
-    uint8_t *buf = malloc(17 + datalen + 1); // 动态分配内存空间,防止堆栈溢出\r
+    // 动态分配内存空间,防止堆栈溢出\r
+    uint8_t *buf = malloc(17 + datalen + 1); \r
     if (buf == NULL) {\r
         printf("内存分配失败\n");\r
         return;\r
     }\r
 \r
-    buf[0] = 0x72;\r
-    buf[1] = type;\r
-    buf[2] = type_id;\r
-    memcpy(buf + 3, &packet_total, 4);\r
-    memcpy(buf + 7, &total, 4);\r
-    memcpy(buf + 11, &Packet_id, 4);\r
-    memcpy(buf + 15, &datalen, 2);\r
+    // 设置消息头部信息\r
+    buf[0] = 0x72; // 消息头\r
+    buf[1] = type; // 类型\r
+    buf[2] = type_id; // 类型ID\r
+    memcpy(buf + 3, &packet_total, 4); // 总包数\r
+    memcpy(buf + 7, &total, 4); // 总数据长度\r
+    memcpy(buf + 11, &Packet_id, 4); // 数据包ID\r
+    memcpy(buf + 15, &datalen, 2); // 数据长度\r
 \r
+    // 处理数据和计算CRC\r
     if (data == NULL) {\r
-        data = "\0";\r
-        buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen);\r
+        data = "\0"; // 数据为空时处理\r
+        buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); // 计算CRC\r
     } else {\r
-        memcpy(buf + 17, data, datalen);\r
-        buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen);\r
+        memcpy(buf + 17, data, datalen); // 复制数据到缓冲区\r
+        buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); // 计算CRC\r
     }\r
 \r
+    // 根据标志位选择发送数据的方式\r
     if (flag) {\r
-        sendDataNow(buf, 17 + datalen + 1);\r
+        sendDataNow(buf, 17 + datalen + 1); // 直接发送数据\r
     } else {\r
-        sendBleData(buf, 17 + datalen + 1);\r
+        sendBleData(buf, 17 + datalen + 1); // 使用BLE发送数据\r
     }\r
 \r
     free(buf); // 释放内存空间\r
@@ -3986,6 +3990,7 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len
     {\r
         send_big_data(1,NULL,1,1,1,1,id,1);\r
         sendbigDataBufState = false;//分包同步数据不允许打断\r
+        free(buf);\r
         return;\r
     }\r
     \r
@@ -3994,6 +3999,7 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len
     {\r
         send_big_data(1,NULL,1,1,1,1,id,1);\r
         printf("打开文件失败%s\r\n",path);\r
+        free(buf);\r
         sendbigDataBufState = false;//分包同步数据不允许打断\r
         return;\r
     }\r
@@ -4024,19 +4030,19 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len
     }\r
     else\r
     {\r
-         packet_total=item_num/num+1;\r
+        packet_total=item_num/num+1;\r
     }\r
    for(int i=0;i<item_num;i++)\r
     {\r
         cJSON * heart_data_item=cJSON_GetArrayItem(heart_data_list,i);\r
         uint32 timestamp=cJSON_GetObjectItem(heart_data_item,"timestamp")->valueint;\r
-        uint8_t vale=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint;\r
-        printf("heart_value :%d\r\n",vale);\r
+        uint8_t value=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint;\r
+        printf("heart_value :%d\r\n",value);\r
         printf("timestamp :%d\r\n",timestamp);\r
         memcpy(send_buf+send_len,&timestamp,4);\r
         send_len+=4;\r
-        memcpy(send_buf+send_len,&vale,single_data_len);\r
-        send_len+=single_data_len;\r
+        memcpy(send_buf+send_len,&value,1);\r
+        send_len+=1;\r
         \r
         if(((i+1)%num==0 && i!=0) || (item_num-1==i))\r
         {\r