// };
uint8_t ble_falg=0;
-void set_user_data(msg_user_info_t data)
+void set_user_data(msg_user_info_t *data)
{
-
+ //1.设置用户信息中 设置目标站立会大概率死机 复现方法就 set_user_data@胡传军
+ return;
OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
- printf("高:%d\r\n",data.height);
- p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT,data.height);
- printf("重:%d\r\n",data.weight);
- p_ConfigModel->set_condigData_Double(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_WEIGHT,(double)data.weight);
- printf("性别:%d\r\n",data.gender);
- p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_SEX,data.gender);
- printf("年纪:%d\r\n",data.age);
- p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data.age);
- printf("目标步数:%d\r\n",data.target_step);
- p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,data.target_step);
+ printf("高:%d\r\n",data->height);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT,data->height);
+ printf("重:%d\r\n",data->weight);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_WEIGHT,data->weight);
+ printf("性别:%d\r\n",data->gender);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_SEX,data->gender);
+ printf("年纪:%d\r\n",data->age);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data->age);
+ printf("目标步数:%d\r\n",data->target_step);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,data->target_step);
//目标站立
- printf("目标站立\r\n");
- p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES,data.target_stand);
+ printf("目标站立 %d\r\n",data->target_stand);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES,data->target_stand);
//目标燃脂
- printf("目标燃脂\r\n");
- p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION,data.fat_time);
+ printf("目标燃脂 %d\r\n",data->fat_time);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION,data->fat_time);
/*
时制
p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data.timeformat);
ble_falg=falg;
}
static char* JSON_F_buf=NULL;
+#define PATH_MAX_LEN 124
const char *get_health_data_path(void)
{
time_t now = time(0);
tm *ltm = localtime(&now);
char day[20];
strftime(day, sizeof(day), "%Y%m%d", ltm);
- char buf[124]={0};
- sprintf(buf,"%s%s.json",OHOS::GET_HEALTH_JSON_PATH_C_STR(),day);
- if(JSON_F_buf!=NULL)
+ char buf[PATH_MAX_LEN]={0};
+ sprintf_s(buf,PATH_MAX_LEN-1,"%s%s.json",OHOS::GET_HEALTH_JSON_PATH_C_STR(),day);
+ if(JSON_F_buf != NULL)
{
free(JSON_F_buf);
JSON_F_buf=NULL;
}
- JSON_F_buf=(char *)malloc(strlen(buf)+1);
- strcpy(JSON_F_buf,buf);
-
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "!!!!!!!!!!!%x strlen(buf):%d",JSON_F_buf,strlen(buf));
+ uint8_t len = PATH_MAX_LEN+1;
+ JSON_F_buf=(char *)malloc(len);
+ memset(JSON_F_buf,0,len);
+ if(JSON_F_buf != NULL)//
+ {
+ strcpy(JSON_F_buf,buf);
+ }
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",JSON_F_buf);
return JSON_F_buf;
}
break;\r
\r
case USER_INFOR_CMD:\r
- set_user_data(user_info);\r
+ \r
break;\r
\r
\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
// 动态分配内存空间,防止堆栈溢出\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "send_big_data!!!\r\n");\r
uint8_t *buf = ym_malloc(17 + datalen + 1); \r
if (buf == NULL) {\r
printf("内存分配失败\n");\r
}\r
\r
ym_free(buf); // 释放内存空间\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "send_big_data1111!!!\r\n");\r
}\r
//发送训练状态[app发起的运动]\r
void sendtraningstatedata(uint8_t state ,uint16_t time)\r
}\r
\r
uint8_t phoneType = 0;\r
-static uint8_t jsonCheck_phoneinfor(uint8_t *buf,uint8_t *mac_data,char *devname)//解析手机信息json\r
-{\r
- uint8_t len = 0;\r
- uint8_t mac_tmp[6];\r
- memset(mac_tmp,0,6);\r
- uint8_t type = 0;\r
- uint8_t count1 = 0;\r
- uint8_t count2 = 0;\r
- uint8_t *json;\r
- json = buf;\r
- cJSON* root = cJSON_Parse((const char *)json);\r
- if (root == NULL) {\r
- printf("JSON解析错误\n");\r
- return 0;\r
- }\r
\r
- cJSON* pn = cJSON_GetObjectItem(root, "pn");\r
- if (cJSON_IsString(pn)) {\r
- len = strlen(pn->valuestring)+1; \r
- if(len -1 > 0){\r
- pn->valuestring[len-1]='\0';\r
- memcpy((uint8_t *)devname,(uint8_t *)pn->valuestring,strlen(pn->valuestring));\r
- }\r
- \r
- // printf("设备名称: %s\n", pn->valuestring);\r
- }\r
-\r
- cJSON* tp = cJSON_GetObjectItem(root, "tp");\r
- if (cJSON_IsNumber(tp)) {\r
- printf("类型: %d\n", tp->valueint);\r
- type = tp->valueint;\r
- phoneType = type;\r
- }\r
-\r
- cJSON* mac = cJSON_GetObjectItem(root, "mac");\r
- if (cJSON_IsArray(mac)) {\r
- printf("MAC地址: ");\r
- cJSON* macElement = NULL;\r
- cJSON_ArrayForEach(macElement, mac) {\r
- if (cJSON_IsNumber(macElement)) {\r
- printf("%d", macElement->valueint);\r
- if (macElement->prev != NULL) {\r
- phone_mac[count1++] = macElement->valueint;\r
- mac_tmp[count2++] = macElement->valueint;\r
- printf(", ");\r
- }\r
- }\r
- }\r
- printf("\n");\r
- }\r
- if(mac_tmp[0] == 0 && mac_tmp[1] == 0 && mac_tmp[2] == 0 && mac_tmp[3] == 0 && mac_tmp[4] == 0 && mac_tmp[5] == 0)\r
- {\r
- memcpy(mac_data,0,6);\r
- }else{\r
- memcpy(mac_data,mac_tmp,6);\r
- }\r
- cJSON_Delete(root);\r
- return len;\r
- \r
-}\r
+\r
+\r
+\r
errcode_t UnbindSucessCmd(uint8_t flag)//发送解绑指令,解绑界面调用这个函数 如果点了✓调用这个函数 返回成功后延迟10s再重启设备 \r
{\r
errcode_t sendok = ERRCODE_FAIL;\r
{\r
\r
}\r
-//phonemac 手机app下发手机的mac地址 \r
-//name 手机设备名称\r
-//*len 手机设备名称长度\r
-//*mac_type 手机蓝牙mac地址类型 共有还是私有的\r
-static void getRecvPhoneInfo(uint8_t *phonemac,uint8_t *name,uint8_t *len,uint8_t *mac_type)\r
-{\r
- uint8_t datalen = 0;\r
- uint8_t mac[6];\r
- memset(mac,0,6);\r
- uint8_t count = 0;\r
- FILE *jsfile = fopen(PHONE_WATCH_CONFIG_PATH, "r");\r
- if(jsfile == NULL)\r
- {\r
- return;\r
- }\r
- if (jsfile != NULL) {\r
- printf("succes opening file\n");\r
- fseek(jsfile, 0, SEEK_END);\r
- long fileSize = ftell(jsfile);\r
- fseek(jsfile, 0, SEEK_SET);\r
\r
- char *jsonData = (char *)ym_malloc(fileSize + 1);\r
- fread(jsonData, 1, fileSize, jsfile);\r
- jsonData[fileSize] = '\0';\r
- fclose(jsfile);\r
-\r
- // 解析JSON数据\r
- cJSON *root = cJSON_Parse(jsonData);\r
- ym_free(jsonData);\r
-\r
- if (root != NULL) {\r
- cJSON *modifiedJson = cJSON_GetObjectItem(root,"mac");\r
- if (cJSON_IsArray(modifiedJson)) {\r
- printf("MAC地址: ");\r
- cJSON* macElement = NULL;\r
- cJSON_ArrayForEach(macElement, modifiedJson) {\r
- if (cJSON_IsNumber(macElement)) {\r
- if ((macElement->prev != NULL)) {\r
- mac[count] = macElement->valueint;\r
- count++;\r
- }\r
- \r
- }\r
- }\r
- printf("\n");\r
- }\r
- if(mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && mac[4] == 0 && mac[5] == 0)\r
- {\r
- memcpy(phonemac,0,6);\r
- }else\r
- {\r
- memcpy(phonemac,mac,6);\r
-\r
- }\r
- \r
- cJSON *pn = cJSON_GetObjectItem(root,"pn");\r
- if(cJSON_IsString(pn))\r
- {\r
- datalen = strlen(pn->valuestring)+1;\r
- if(datalen-1 > 0){\r
- pn->valuestring[datalen-1]='\0';\r
- memcpy(name,(uint8_t *)pn->valuestring,strlen(pn->valuestring));\r
- datalen = strlen(pn->valuestring);\r
- memcpy(&len,&datalen,1);\r
- }\r
- }\r
- cJSON *mactype = cJSON_GetObjectItem(root,"mac_type");\r
- if(cJSON_IsNumber(mac_type))\r
- {\r
- memcpy(&mac_type,&mactype->valueint,1);\r
- }\r
- }\r
- // 释放资源\r
- cJSON_Delete(root);\r
- }\r
- \r
-}\r
\r
void getPhoneNameLen(uint8_t *crcnum,uint8_t *datalen)//获取手机设备名称长度\r
{\r
len = strlen(pn->valuestring)+1; \r
printf("设备名称: %s len:%d\n", pn->valuestring,len);\r
}\r
- memcpy(datalen,&len,1);\r
+ *datalen = len;\r
cJSON_Delete(root);\r
} else{\r
len = 0;\r
-\r
- memcpy(datalen,&len,1);\r
+ *datalen = len;\r
}\r
}\r
-\r
+#define PHONE_NAME_MAX_LEN 50\r
static uint8_t *getPhoneName(uint8_t *crcnum)//获取手机设备名称\r
{\r
uint8_t *json = crcnum;\r
{\r
cJSON* pn = cJSON_GetObjectItem(root, "pn");\r
if (cJSON_IsString(pn)) {\r
- uint8_t datalen = strlen(pn->valuestring)+1; \r
+ uint8_t datalen = strlen(pn->valuestring)+1; \r
+ if(datalen > PHONE_NAME_MAX_LEN) //\r
+ {\r
+ datalen = PHONE_NAME_MAX_LEN;\r
+ }\r
if(datalen - 1 > 0){\r
- pn->valuestring[datalen-1]='\0';\r
+ pn->valuestring[datalen]='\0';\r
str = ym_malloc(sizeof(char)*datalen);\r
+ if(str != NULL)\r
+ {\r
+ memcpy(str,(uint8_t *)pn->valuestring,datalen+1);\r
+ }\r
savephonename = ym_malloc(sizeof(char)*datalen);\r
- memcpy(str,(uint8_t *)pn->valuestring,datalen);\r
- // strcpy(str,pn->valuestring);\r
- memcpy(savephonename,(uint8_t *)pn->valuestring,datalen);\r
- // strcpy(savephonename,pn->valuestring);\r
- // printf("str:%s savephonename:%s\n",str,savephonename);\r
+ if(savephonename != NULL){\r
+ memcpy(savephonename,(uint8_t *)pn->valuestring,datalen+1);\r
+ }\r
}\r
printf("设备名称: %s\n", pn->valuestring);\r
}\r
cJSON_Delete(root);\r
} \r
else{\r
- memcpy(phoneMac,phone_tmp,6);\r
+ memcpy(phoneMac,0,6);\r
}\r
}\r
\r
cJSON *mac_type = cJSON_GetObjectItem(root,"mac_type");\r
if(cJSON_IsNumber(mac_type))\r
{\r
- memcpy(&mactype,&mac_type->valueint,1);\r
+ *mactype = mac_type->valueint;\r
}\r
}\r
if(mac_tmp[0] == 0 && mac_tmp[1] == 0 && mac_tmp[2] == 0 && mac_tmp[3] == 0 && mac_tmp[4] == 0 && mac_tmp[5] == 0){\r
{\r
memset(mac_tmp,0,6);\r
memcpy(mac,mac_tmp,6);\r
- uint8_t type = 0;\r
- memcpy(&mactype,&type,1);\r
+ *mactype = 0;\r
}\r
}\r
static void GetwatchSaveNameLen(uint8_t *datalen)//获取手表本地保存的手机设备名称长度\r
printf("GetwatchSaveNameLen;%d",len);\r
}\r
};\r
- memcpy(datalen,&len,1);\r
+ *datalen = len;\r
+ // memcpy(datalen,&len,1);\r
// 释放资源\r
cJSON_Delete(root);\r
}else{\r
len = 0;\r
- memcpy(datalen,&len,1); \r
+ *datalen = len;\r
}\r
}\r
static uint8_t *GetwatchSaveName(void)//获取手表本地保存的手机设备名称\r
if(cJSON_IsString(pn))\r
{\r
uint8_t showname_len = strlen(pn->valuestring)+1;\r
+ if(showname_len > 50)\r
+ {\r
+ showname_len = PHONE_NAME_MAX_LEN;\r
+ }\r
if(showname_len-1 > 0){\r
str = ym_malloc(sizeof(char)*showname_len);\r
- pn->valuestring[showname_len-1]='\0';\r
- str[showname_len]=0;\r
- memcpy(str,(uint8_t *)pn->valuestring,showname_len);\r
- // strcpy(str,pn->valuestring);\r
+ if(str != NULL)\r
+ {\r
+ pn->valuestring[showname_len]='\0';\r
+ memcpy(str,(uint8_t *)pn->valuestring,showname_len+1);\r
+ }\r
+ \r
printf("GetwatchSaveName:%s",pn->valuestring);\r
}\r
}\r
fputs((char *)buf,fp);\r
fclose(fp);\r
#endif\r
- printf("开始解析天气数据 %x\n",json);\r
cJSON* root = cJSON_Parse((const char *)json);\r
if (root == NULL) {\r
printf("天气 JSON解析错误\n");\r
set_weather_one_data(tempMin,iconDay,fxDate,tempMax,textDay,i);\r
}\r
cJSON_Delete(root);\r
- flag = 1;\r
- memcpy(check,&flag,1);\r
+ *check = 1;\r
return 1;\r
}\r
\r
\r
if(Check_CRC(crcnum,len,crcvalue))\r
{\r
- \r
+ printf("getUserInfo:!!!!!!!!\r\n");\r
+ msg_user_info_t user_info={0};\r
ble_recv_msg_callback_t func = ble_recv_get_send_msg_callback_func();\r
memset(&user_info,0,sizeof(msg_user_info_t));\r
- if(func != NULL)\r
+ \r
+ for(uint8_t i = 0;i<len;i++)\r
{\r
- func(READ_FLASH_DATA,cmd,&user_info,sizeof(msg_user_info_t));\r
+ printf("%x ",crcnum[i]);\r
}\r
user_info.age = crcnum[0];\r
user_info.gender = crcnum[1];\r
user_info.height = crcnum[2];\r
+ printf("getUserInfo:!!!!!!!!5555\r\n");\r
memcpy(&user_info.weight,crcnum+3,2);\r
//memcpy(crcnum+3,&user_info.weight,2);\r
memcpy(&user_info.target_step,crcnum+5,4);\r
+ printf("getUserInfo:!!!!!!!!666\r\n");\r
//memcpy(crcnum+5,&user_info.target_step,4);\r
memcpy(&user_info.fat_time,crcnum+9,2);\r
user_info.target_stand = crcnum[11];\r
user_info.timeformat = crcnum[12];\r
- uint16_t target_kcal = 0;\r
- memcpy(&target_kcal,&crcnum[13],2);\r
+ uint32_t target_kcal = 0;\r
+ memcpy(&target_kcal,crcnum+13,2);\r
+ printf("getUserInfo:!!!!!!!!99\r\n");\r
set_goal_caloriescount(target_kcal);\r
+ printf("getUserInfo:!!!!!!!!22\r\n");\r
uint8_t target_km = crcnum[15];\r
+ printf("getUserInfo:!!!!!!!!22\r\n");\r
set_goal_discount(target_km);\r
- if(func != NULL)\r
- {\r
- func(WRITE_FLASH_DATA,cmd,&user_info,sizeof(msg_user_info_t));\r
- }\r
-\r
+ printf("getUserInfo:!!!!!!!!333\r\n",user_info.age,user_info.gender,user_info.height,user_info.weight,user_info.target_step,user_info.fat_time,user_info.target_stand,\r
+ user_info.timeformat,user_info.timeformat);\r
+ set_user_data(&user_info);\r
+ printf("getUserInfo:!!!!!!!!444\r\n");\r
value[17] = 0x01;\r
value[18] = Calculate_CRC(value,18);\r
sendBleData(value,19);\r
void type2AE4Data(uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *totalData,uint8_t crcvalue)\r
{\r
uint16_t typeID = buf_cmd[1]*256+buf_cmd[2];\r
- // printf("type2AE4Data typeID:0x%x\r\n",typeID);\r
+ printf("type2AE4Data typeID:0x%x\r\n",typeID);\r
switch (typeID) //ID\r
{\r
case USER_INFOR_CMD://app下发的获取用户信息\r
if(Check_CRC(crcnum,len,crcvalue))\r
{\r
memcpy(value+17,(uint8_t *)json_format,data_len);//17+69 = 86\r
- cJSON_free(json_format);\r
+ \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
value[18] = lrc;\r
sendBleData(value,19);\r
}\r
- \r
+ cJSON_free(json_format);\r
}\r
//查找手表 01 04\r
//设置查找手表的状态,1 校验成 2手表已找到,停止查找手表\r
if(Check_CRC(crcnum,len,crcvalue))\r
{\r
memcpy(value+17,(uint8_t *)json_format,data_len);\r
- cJSON_free(json_format);\r
+ \r
uint8_t lrc = Calculate_CRC(value,data_len+17);\r
printf("lrc:%d",lrc);\r
value[data_len+18] = lrc;\r
value[18] = lrc;\r
sendBleData(value,19);\r
}\r
+ cJSON_free(json_format);\r
}\r
//获取当手表电池电量\r
static void GetBatteryLevelCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
case SYN_BASIC_TRANIN_HISTORY_DATA_CMD://同步基础训练历史数据\r
case SYN_SLEEP_HISTORY_DATA_CMD://睡眠历史数据\r
case ALARM_CMD://获取手表闹钟//同步闹钟\r
- readDevDataBle(totaldata,datalen+18,crcvalue);\r
+ readDevDataBle(cmd,data,datalen,totaldata,crcvalue);\r
break;\r
\r
default:\r
if(fp==NULL)\r
{\r
send_big_data(1,NULL,0,0,1,1,id,1);\r
- printf("打开文件失败%s\r\n",path);\r
+ printf("打开文件失败 %s \r\n",path);\r
if(path)\r
{\r
free(path);\r
path = NULL;\r
}\r
+\r
sendbigDataBufState = false;//分包同步数据不允许打断\r
return;\r
}\r
ret=fread(buf+512*count,1,512,fp);\r
count++;\r
}\r
+ fclose(fp);\r
+ if(path)\r
+ {\r
+ free(path);\r
+ path = NULL;\r
+ }\r
cJSON *heart_data=cJSON_Parse(buf);\r
ym_free(buf);\r
\r
cJSON_Delete(heart_data);\r
\r
}\r
-//type\r
-void realSyncSportData(uint8_t typeid)\r
-{\r
- int num;\r
- num=(ble_nus_max_data_len-18);\r
- if(num>482)\r
- {\r
- num=482;\r
- }\r
- Send_json_Data_Cmd(num,typeid);\r
-}\r
\r
//手机app下发读设备数据指令\r
-void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue)\r
+void readDevDataBle(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)\r
{\r
- if(Check_CRC(crcnum+17,len-18,crcvalue))\r
+ uint8_t sendBuf[19];\r
+ memset(sendBuf,0,19);\r
+ uint8_t type = cmd/256;\r
+ uint8_t typeID = cmd-((cmd/256)*256);\r
+ uint32_t totaldata_pack = 1;\r
+ uint32_t totaldata_packlen = 0;\r
+ uint32_t pack_count = 0;\r
+ uint16_t pack_datalen = 0;\r
+ sendBuf[0]=0x72;\r
+ sendBuf[1]=type;\r
+ sendBuf[2]=typeID;\r
+ memcpy(sendBuf+3,&totaldata_pack,4);//总的数据包\r
+ memcpy(sendBuf+7,&totaldata_packlen,4);//总的数据包长度\r
+ memcpy(sendBuf+11,&pack_count,4);//分包索引号\r
+ memcpy(sendBuf+15,&pack_datalen,2);//分包数据长度\r
+\r
+ if(Check_CRC(crcnum,len,crcvalue))\r
{\r
- bleSendTypeID=crcnum[2];\r
+ bleSendTypeID=cmd-((cmd/256)*256);\r
+ // printf("同步第%d天的数据\r\n",crcnum[0]);\r
int num;\r
- switch (crcnum[2])\r
+ switch (bleSendTypeID)\r
{\r
case 0x40://同步心率历史数据\r
EACH_DATA_LEN = HEART_DATA_LEN;\r
{\r
num=96;\r
}\r
- printf("同步心率数据,每包最多:%d 条数据\r\n",num);\r
+ printf("同步心率数据,每包最多:%d 条数据 crcnum:%d\r\n",num,crcnum[0]);\r
Read_file_buf_send_bin_Data(num,0x40,"heart_data_list");\r
break;\r
case 0x41://同步血氧历史数据\r
}\r
//sendReadData();\r
}else{\r
- crcnum[0] = 0x72;\r
- crcnum[len-1] = 0;\r
- crcnum[len] = 0;\r
- sendBleData(crcnum,len);\r
+ sendBuf[18] = 0;\r
+ sendBleData(sendBuf,19);\r
}\r
}\r
\r
hasCode_t = hasCode->valueint;\r
}\r
cJSON_Delete(root);\r
- // message_data(uid_t,appid_t,titleBuf,msgBuf,hasCode_t);\r
+ message_data(uid_t,appid_t,titleBuf,msgBuf,hasCode_t);\r
if(titleBuf != NULL){\r
ym_free(titleBuf);\r
titleBuf = NULL;\r
packdataLen = event_size-17;//多包数据第一包数据不带CRC校验和的\r
handle_l[i].data = ym_malloc(totalDataLen+1);\r
if(handle_l[i].data != NULL){\r
- printf("bleDataRecv!!!!!!!%d\r\n",totalDataLen);\r
+ printf("bleDataRecv long data %d\r\n",totalDataLen);\r
if(handle_l[i].totalDataLen < packdataLen)\r
{\r
printf("packdataLen error!!!!!!!%d\r\n",packdataLen);\r
packdataLen=handle_l[i].totalDataLen;\r
}\r
memcpy(handle_l[i].data,totalData+17,packdataLen);//从第十七个字节开始接收数据data\r
- handle_l[i].data_len = packdataLen;\r
+ handle_l[i].data_len = packdataLen;//当前包的数据长度\r
memset(handle_l[i].cmd_data,0,17);\r
memcpy(handle_l[i].cmd_data,totalData,17);\r
} \r
}else{//一包数据\r
- printf("bleDataRecv one %d\r\n",totalDataLen);\r
+ printf("bleDataRecv short data %d\r\n",totalDataLen);\r
packdataLen = event_size-18;\r
if(totalDataLen != 0)\r
{\r
}else//多包数据存储\r
{\r
\r
- uint32_t packStartAddrLen = handle_l[i].data_len;//\r
+ uint32_t packStartAddrLen = handle_l[i].data_len;//每一包接收的数据长度起始地址\r
handle_l[i].data_len = handle_l[i].data_len+event_size;\r
printf("muilt 133333 handle_l[i].data_len:%d\r\n",handle_l[i].data_len);\r
if(handle_l[i].data_len >= handle_l[i].totalDataLen)//接收完整的数据\r
{\r
+ handle_l[i].data_len = handle_l[i].data_len -1;//最后一包要减去最后的CRC的那一位\r
//这是最后一包的起始地址\r
if(handle_l[i].totalDataLen -packStartAddrLen < event_size-1)\r
{\r
memcpy(handle_l[i].data+packStartAddrLen,totalData,event_size-1);//为了不把CRC copy到data所以多一步操作\r
handle_l[i].crcvalue = totalData[event_size-1];//最后一个字节为总的数据包的CRC\r
read_data_tmp = &handle_l[i];\r
- }else{\r
+ }else{ //还没接收完 有 3 4 5包.........\r
if(handle_l[i].totalDataLen -packStartAddrLen < event_size)\r
{\r
printf("event_size error!!!!!!!%d\r\n",event_size);\r
}\r
void free_ble_data(void)//以防断开蓝牙没有释放数据类型\r
{\r
+ return;\r
totalpack = 0;\r
muiltFlag = 0; \r
packdataLen = 0;\r