\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
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
}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
{ \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
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
}\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
{\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
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
}\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
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