}\r
}\r
\r
-void send_big_data(uint8_t flag, char *data, uint16_t datalen, uint32_t total, uint32_t Packet_id, uint32_t packet_total, uint8_t type_id, uint8_t type)\r
+void send_big_data(ble_data_type type,char *data, uint16 datalen)\r
{\r
// 动态分配内存空间,防止堆栈溢出\r
- uint8_t *buf = ym_malloc(17 + datalen + 1); \r
- if (buf == NULL) {\r
+ uint8_t *buf =NULL;\r
+ buf = ym_malloc(17 + datalen + 1); \r
+ memset_s(buf,500,0,17 + datalen + 1);\r
+ if (buf == NULL && datalen!=0) {\r
printf("内存分配失败\n");\r
return;\r
}\r
- if(Packet_id>=2)\r
+ if(type.Packet_id>=2)\r
{\r
msleep(10);//多包数据发送增加延迟\r
}\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
+ buf[1] = type.type; // 类型\r
+ buf[2] = type.type_id; // 类型ID\r
+ memcpy(buf + 3, &type.packet_total, 4); // 总包数\r
+ memcpy(buf + 7, &type.total, 4); // 总数据长度\r
+ memcpy(buf + 11, &type.Packet_id, 4); // 数据包ID\r
memcpy(buf + 15, &datalen, 2); // 包数据长度\r
\r
// 处理数据和计算CRC\r
}\r
\r
// 根据标志位选择发送数据的方式\r
- if (flag) {\r
+ if (1) {\r
sendDataNow(buf, 17 + datalen + 1); // 直接发送数据\r
} else {\r
sendBleData(buf, 17 + datalen + 1); // 判断是否在传输或接收多包数据\r
data[0]=state;\r
memcpy(&data[1],&time,2);\r
printf("发送训练状态数据%d %d\r\n",data[0],time);\r
- send_big_data(0,data,data_len,data_len,1,1,0x50,5);\r
+ ble_data_type type={0x05,0x50,data_len,1,1};\r
+ send_big_data(type,data,data_len);\r
\r
}\r
\r
uint32_t data_len=1;\r
data[0]=0; //[0 结束]\r
printf("发送训练状态结束%d\r\n",data[0]);\r
- send_big_data(0,data,data_len,data_len,1,1,0x51,5);\r
+ \r
+ ble_data_type type={0x05,0x51,data_len,1,1};\r
+ send_big_data(type,data,data_len);\r
+ //end_big_data(0,data,data_len,data_len,1,1,0x51,5);\r
}\r
\r
void sendtraningdata(msg_get_train_data_info_t *data)\r
}\r
\r
printf("发送训练实时数据 %d %s\n", data_len, jsonString);\r
- send_big_data(0, jsonString, data_len, data_len, 1, 1, 0x0f, 1);\r
+ ble_data_type type={0x01,0x0f,data_len,1,1};\r
+ send_big_data(type,data,data_len);\r
+ //send_big_data(0, jsonString, data_len, data_len, 1, 1, 0x0f, 1);\r
\r
cJSON_free(jsonString);\r
}\r
{\r
\r
printf("发送AI准备就绪\r\n");\r
- send_big_data(0, (char *)&type, 1, 1, 1, 1, 0x05, 5);\r
+ ble_data_type type_={0x05,0x05,1,1,1};\r
+ send_big_data(type_,(char *)&type,1);\r
+\r
+ //send_big_data(0, (char *)&type, 1, 1, 1, 1, 0x05, 5);\r
}\r
//查询AI 模型是否可用,结果通过2AE4返回\r
/*使用模型:\r
{\r
\r
printf("查询AI模型,是否准备就绪\r\n");\r
- send_big_data(0, (char *)&type, 1, 1, 1, 1, 0x06, 5);\r
+ ble_data_type type_={0x05,0x06,1,1,1};\r
+ send_big_data(type_,(char *)&type,1);\r
+ //send_big_data(0, (char *)&type, 1, 1, 1, 1, 0x06, 5);\r
}\r
\r
void cancel_AI_cur_chat(void)\r
\r
printf("取消当前AI对话\r\n");\r
uint8_t data=1;\r
- send_big_data(0, (char *)&data, 1, 1, 1, 1, 0x07, 5);\r
+ ble_data_type type_={0x05,0x07,data_len,1,1};\r
+ send_big_data(type_,(char *)&data,data_len);\r
+\r
+ //send_big_data(0, (char *)&data, 1, 1, 1, 1, 0x07, 5);\r
}\r
\r
\r
}\r
\r
}\r
+\r
void cleanUnbindInfor(uint8_t flag)//和旧手机解绑清除配对信息\r
{\r
uint8_t value[19];\r
\r
void GetGPSCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)\r
{\r
- send_big_data(1,NULL,0,0,1,1,0x4f,2);\r
+ ble_data_type type_={0x02,0x4f,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+\r
+ //send_big_data(1,NULL,0,0,1,1,0x4f,2);\r
}\r
\r
void query_dial_installed(ble_read_data *buffer_handle,uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
{\r
if(!Check_CRC(data,len,crcvalue))\r
{\r
- send_big_data(1,NULL,0,0,1,1,0x06,1);\r
+ int data_len=0;\r
+ ble_data_type type_={0x01,0x06,data_len,1,1};\r
+ send_big_data(type_,NULL,0);\r
return;\r
}\r
cJSON *dataJSON = cJSON_CreateObject();\r
if(surplus_len>=pack_size)\r
{\r
surplus_len=surplus_len-pack_size;\r
- send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,0x06,1);\r
+\r
+\r
+ ble_data_type type_={0x01,0x06,data_len,pack,pack_id};\r
+ send_big_data(type_,json_format+offset,pack_size);\r
+\r
+ //send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,0x06,1);\r
offset+=pack_size;\r
}\r
else\r
{\r
\r
printf("%d %d %d %d\r\n",data_len,surplus_len,pack_id,pack);\r
- send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,0x06,1);\r
+ ble_data_type type_={0x01,0x06,data_len,pack,pack_id};\r
+ send_big_data(type_,json_format+offset,surplus_len);\r
+ //send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,0x06,1);\r
break;\r
}\r
pack_id++;\r
{\r
if(flag == 0)//校验失败\r
{\r
- send_big_data(0,NULL,0,0,1,1,0x0f,1);\r
+ ble_data_type type_={0x01,0x0f,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+\r
+ //send_big_data(0,NULL,0,0,1,1,0x0f,1);\r
\r
}else \r
{\r
printf( "GetAllDialUidCmd yes\r\n");\r
\r
}\r
- send_big_data(0,dail_uid_buf,data_size,temp_data_size,1,1,0x2a,1);\r
+ ble_data_type type_={0x01,0x2a,temp_data_size,1,1};\r
+ send_big_data(type_,dail_uid_buf,data_size);\r
+ //send_big_data(0,dail_uid_buf,data_size,temp_data_size,1,1,0x2a,1);\r
\r
free(dail_uid_buf);\r
\r
{\r
memset_s(data,num+1,0,num+1);\r
read_size=fread(data,1,num,fp);\r
- \r
- send_big_data(1,data,read_size,file_size,pack_id,pack,0x34,1);\r
+\r
+ if(read_size!=0)\r
+ {\r
+ ble_data_type type_={0x01,0x34,file_size,pack,pack_id};\r
+ send_big_data(type_,data,read_size);\r
+ }\r
+\r
+ //send_big_data(1,data,read_size,file_size,pack_id,pack,0x34,1);\r
pack_id++;\r
msleep(SEND_AIVOICE_PACKAGE_DELAY);\r
\r
if(surplus_len>=pack_size)\r
{\r
surplus_len=surplus_len-pack_size;\r
- send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,id,1);\r
+\r
+ ble_data_type type_={0x01,id,data_len,pack,pack_id};\r
+ send_big_data(type_,json_format+offset,pack_size);\r
+\r
+ //send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,id,1);\r
offset+=pack_size;\r
}\r
else\r
{\r
\r
printf("%d %d %d %d\r\n",data_len,surplus_len,pack_id,pack);\r
- send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,id,1);\r
+ ble_data_type type_={0x01,id,data_len,pack,pack_id};\r
+ send_big_data(type_,json_format+offset,surplus_len);\r
+ //send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,id,1);\r
break;\r
}\r
pack_id++;\r
\r
if(data==NULL || file_size==1)\r
{\r
- send_big_data(1,NULL,0,0,1,1,0x4b,1);\r
+ ble_data_type type_={0x01,0x4b,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+\r
+ //send_big_data(1,NULL,0,0,1,1,0x4b,1);\r
+ \r
sendbigDataBufState = false;//分包同步数据不允许打断\r
return;\r
}\r
{\r
surplus_len=surplus_len-num;\r
printf("%d %d %d %d\r\n",num,file_size,pack_id,pack);\r
- send_big_data(1,data+offset,num,file_size,pack_id,pack,0x4b,1);\r
+\r
+ ble_data_type type_={0x01,0x4b,file_size,pack,pack_id};\r
+ send_big_data(type_,data+offset,num);\r
+ //send_big_data(1,data+offset,num,file_size,pack_id,pack,0x4b,1);\r
offset+=num;\r
}\r
else\r
//#ifdef BLE_LOG\r
printf("%d %d %d %d\r\n",surplus_len,file_size,pack_id,pack);\r
//#endif\r
- send_big_data(1,data+offset,surplus_len,file_size,pack_id,pack,0x4b,1);\r
+ ble_data_type type_={0x01,0x4b,file_size,pack,pack_id};\r
+ send_big_data(type_,data+offset,surplus_len);\r
+\r
+ //send_big_data(1,data+offset,surplus_len,file_size,pack_id,pack,0x4b,1);\r
break;\r
}\r
pack_id++;\r
fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾\r
file_size = ftell(fp); // 获取当前文件指针位置,即文件大小\r
fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头\r
+\r
+ int num=file_size%5;\r
+ if(num!=0)\r
+ {\r
+ printf("数据有误 %d \r\n",id);\r
+ return false;\r
+ }\r
\r
buf = (char *)ym_malloc(sizeof(char)*num+1);\r
if(buf==NULL){fclose(fp); return false;}\r
{\r
memset_s(buf,num+1,0,num+1);\r
read_size=fread(buf,1,num,fp);\r
- send_big_data(1,buf,read_size,file_size,pack_id,pack,id,1);\r
+ if(read_size!=0)\r
+ {\r
+ ble_data_type type_={0x01,id,file_size,pack,pack_id};\r
+ send_big_data(type_,buf,read_size);\r
+ }\r
+ \r
+\r
+ //send_big_data(1,buf,read_size,file_size,pack_id,pack,id,1);\r
pack_id++;\r
} while (read_size==num);\r
\r
\r
if(data==NULL)\r
{\r
- send_big_data(1,NULL,0,0,1,1,id,1);\r
- printf("Read_BIN_file_buf_send_bin_Data is NULL");\r
+ ble_data_type type_={0x01,id,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+\r
+ //send_big_data(1,NULL,0,0,1,1,id,1);\r
+ sendbigDataBufState = false;//分包同步数据不允许打断\r
return;\r
}\r
+ uint8_t single_data=8;\r
+ if(id==0x44)\r
+ {\r
+ single_data=6;\r
+ }\r
+ else if (id==0x45)\r
+ {\r
+ single_data=4;\r
+ }\r
+ int check_num=data_len%single_data;\r
+ if(check_num!=0)\r
+ {\r
+ printf("数据有误 %d \r\n",id);\r
+\r
+ ble_data_type type_={0x01,id,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+\r
+ return ;\r
+ }\r
\r
uint32_t surplus_len=data_len;\r
uint32_t pack;\r
if(surplus_len>=pack_size)\r
{\r
surplus_len=surplus_len-pack_size;\r
- send_big_data(1,data+offset,pack_size,data_len,pack_id,pack,id,1);\r
+ ble_data_type type_={0x01,id,data_len,pack,pack_id};\r
+ send_big_data(type_,data+offset,pack_size);\r
+ //send_big_data(1,data+offset,pack_size,data_len,pack_id,pack,id,1);\r
offset+=pack_size;\r
}\r
else\r
#ifdef BLE_LOG\r
printf("%d %d %d %d\r\n",data_len,surplus_len,pack_id,pack);\r
#endif\r
- send_big_data(1,data+offset,surplus_len,data_len,pack_id,pack,id,1);\r
+\r
+ ble_data_type type_={0x01,id,data_len,pack,pack_id};\r
+ send_big_data(type_,data+offset,surplus_len);\r
+\r
+ //send_big_data(1,data+offset,surplus_len,data_len,pack_id,pack,id,1);\r
break;\r
}\r
pack_id++;\r
printf("同步心率数据,每包最多:%d 数据 data:%d %d\r\n",num,data[0],len);\r
#endif\r
if(!Read_Health_BIN_file_buf_send_bin_Data(data[0],num,0x40))\r
- send_big_data(1,NULL,0,0,1,1,0x40,1);\r
+ {\r
+ ble_data_type type_={0x01,0x40,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ }\r
+ //send_big_data(1,NULL,0,0,1,1,0x40,1);\r
\r
break;\r
case 0x41://同步血氧历史数据\r
num=(ble_nus_max_data_len-18);\r
if(num>482)num=482;\r
if(!Read_Health_BIN_file_buf_send_bin_Data(data[0],num,0x41))\r
- send_big_data(1,NULL,0,0,1,1,0x41,1);\r
+ {\r
+ ble_data_type type_={0x01,0x41,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ }\r
\r
break;\r
case 0x43: //同步步数历史数据\r
{\r
memset_s(data,pack_size+1,0,pack_size+1);\r
read_size=fread(data,1,pack_size,fp);\r
+ if(read_size!=0)\r
+ {\r
+ ble_data_type type_={0x05,id,read_size,pack,pack_id};\r
+ send_big_data(type_,(char *)&data,read_size);\r
+ }\r
\r
- send_big_data(1,data,read_size,file_size,pack_id,pack,id,5);\r
+\r
+ //send_big_data(1,data,read_size,file_size,pack_id,pack,id,5);\r
pack_id++;\r
msleep(50);\r
} while (read_size==pack_size);\r
send_buf=tar_dir_to_json_buf_malloc_(file_name,&file_size);\r
if( send_buf!=NULL)\r
{\r
- send_big_data(1,send_buf,strlen(send_buf),strlen(send_buf),1,1,0x26,0x04);\r
+ //send_big_data(1,send_buf,strlen(send_buf),strlen(send_buf),1,1,0x26,0x04);\r
+ ble_data_type type_={0x04,0x26,strlen(send_buf),1,1};\r
+ send_big_data(type_,(char *)&send_buf,strlen(send_buf));\r
+\r
free(send_buf);\r
return true;\r
}\r