From: Caisking <3449750381@qq.com> Date: Sun, 28 Apr 2024 08:31:11 +0000 (+0800) Subject: 修复蓝牙读取心率bug X-Git-Tag: release_V1.2.70_20241020_135402~1025^2~55 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=bef3cfb01f8e1349b1c5fa92e7704b002542cb6d;p=mirrors%2FFD230.git 修复蓝牙读取心率bug --- diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 440068ebe..21786e496 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -275,32 +275,36 @@ void sendDataNow(uint8_t *buf,uint16_t len) 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) { - uint8_t *buf = malloc(17 + datalen + 1); // 动态分配内存空间,防止堆栈溢出 + // 动态分配内存空间,防止堆栈溢出 + uint8_t *buf = malloc(17 + datalen + 1); if (buf == NULL) { printf("内存分配失败\n"); return; } - buf[0] = 0x72; - buf[1] = type; - buf[2] = type_id; - memcpy(buf + 3, &packet_total, 4); - memcpy(buf + 7, &total, 4); - memcpy(buf + 11, &Packet_id, 4); - memcpy(buf + 15, &datalen, 2); + // 设置消息头部信息 + buf[0] = 0x72; // 消息头 + buf[1] = type; // 类型 + buf[2] = type_id; // 类型ID + memcpy(buf + 3, &packet_total, 4); // 总包数 + memcpy(buf + 7, &total, 4); // 总数据长度 + memcpy(buf + 11, &Packet_id, 4); // 数据包ID + memcpy(buf + 15, &datalen, 2); // 数据长度 + // 处理数据和计算CRC if (data == NULL) { - data = "\0"; - buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); + data = "\0"; // 数据为空时处理 + buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); // 计算CRC } else { - memcpy(buf + 17, data, datalen); - buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); + memcpy(buf + 17, data, datalen); // 复制数据到缓冲区 + buf[17 + datalen] = Calculate_CRC_Big((uint8_t *)data, datalen); // 计算CRC } + // 根据标志位选择发送数据的方式 if (flag) { - sendDataNow(buf, 17 + datalen + 1); + sendDataNow(buf, 17 + datalen + 1); // 直接发送数据 } else { - sendBleData(buf, 17 + datalen + 1); + sendBleData(buf, 17 + datalen + 1); // 使用BLE发送数据 } free(buf); // 释放内存空间 @@ -3986,6 +3990,7 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len { send_big_data(1,NULL,1,1,1,1,id,1); sendbigDataBufState = false;//分包同步数据不允许打断 + free(buf); return; } @@ -3994,6 +3999,7 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len { send_big_data(1,NULL,1,1,1,1,id,1); printf("打开文件失败%s\r\n",path); + free(buf); sendbigDataBufState = false;//分包同步数据不允许打断 return; } @@ -4024,19 +4030,19 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len } else { - packet_total=item_num/num+1; + packet_total=item_num/num+1; } for(int i=0;ivalueint; - uint8_t vale=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint; - printf("heart_value :%d\r\n",vale); + uint8_t value=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint; + printf("heart_value :%d\r\n",value); printf("timestamp :%d\r\n",timestamp); memcpy(send_buf+send_len,×tamp,4); send_len+=4; - memcpy(send_buf+send_len,&vale,single_data_len); - send_len+=single_data_len; + memcpy(send_buf+send_len,&value,1); + send_len+=1; if(((i+1)%num==0 && i!=0) || (item_num-1==i)) {