From: DXY <1731678236@qq.com> Date: Tue, 14 May 2024 08:01:35 +0000 (+0800) Subject: 优化蓝牙相关协议内存死机问题:还有一个问题需要胡传军看一下这个函数set_user_data会大概率死机 X-Git-Tag: release_V1.2.70_20241020_135402~1108^2~8 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=c5c83a995ece964fd42775b213ba9248200bf449;p=mirrors%2FFD230.git 优化蓝牙相关协议内存死机问题:还有一个问题需要胡传军看一下这个函数set_user_data会大概率死机 --- diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp index 46311d2f8..09b326ab7 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -406,28 +406,29 @@ void addressbookTowrite(void)//转化用于·c文件 // }; 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); @@ -646,23 +647,29 @@ void set_ble_falg(bool falg) 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; } diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h index 8c5315c84..4a7dd3616 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h @@ -106,7 +106,7 @@ void addressbookTowrite(void); const char *get_health_data_path(void); void add_addressbookToRead(char *data); -void set_user_data(msg_user_info_t data); +void set_user_data(msg_user_info_t *data); int get_goal_stepcount(void); 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 f5434be57..d02674b33 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -167,7 +167,7 @@ int ble_recv_msg_callback(uint8_t writ_read,uint16_t msg_typeID, uint8_t *msg_da break; case USER_INFOR_CMD: - set_user_data(user_info); + break; @@ -306,7 +306,6 @@ 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) { // 动态分配内存空间,防止堆栈溢出 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "send_big_data!!!\r\n"); uint8_t *buf = ym_malloc(17 + datalen + 1); if (buf == NULL) { printf("内存分配失败\n"); @@ -339,7 +338,6 @@ void send_big_data(uint8_t flag, char *data, int datalen, int total, uint32_t Pa } ym_free(buf); // 释放内存空间 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "send_big_data1111!!!\r\n"); } //发送训练状态[app发起的运动] void sendtraningstatedata(uint8_t state ,uint16_t time) @@ -425,66 +423,10 @@ void sendConfirmParieSucess(void) } uint8_t phoneType = 0; -static uint8_t jsonCheck_phoneinfor(uint8_t *buf,uint8_t *mac_data,char *devname)//解析手机信息json -{ - uint8_t len = 0; - uint8_t mac_tmp[6]; - memset(mac_tmp,0,6); - uint8_t type = 0; - uint8_t count1 = 0; - uint8_t count2 = 0; - uint8_t *json; - json = buf; - cJSON* root = cJSON_Parse((const char *)json); - if (root == NULL) { - printf("JSON解析错误\n"); - return 0; - } - cJSON* pn = cJSON_GetObjectItem(root, "pn"); - if (cJSON_IsString(pn)) { - len = strlen(pn->valuestring)+1; - if(len -1 > 0){ - pn->valuestring[len-1]='\0'; - memcpy((uint8_t *)devname,(uint8_t *)pn->valuestring,strlen(pn->valuestring)); - } - - // printf("设备名称: %s\n", pn->valuestring); - } - - cJSON* tp = cJSON_GetObjectItem(root, "tp"); - if (cJSON_IsNumber(tp)) { - printf("类型: %d\n", tp->valueint); - type = tp->valueint; - phoneType = type; - } - - cJSON* mac = cJSON_GetObjectItem(root, "mac"); - if (cJSON_IsArray(mac)) { - printf("MAC地址: "); - cJSON* macElement = NULL; - cJSON_ArrayForEach(macElement, mac) { - if (cJSON_IsNumber(macElement)) { - printf("%d", macElement->valueint); - if (macElement->prev != NULL) { - phone_mac[count1++] = macElement->valueint; - mac_tmp[count2++] = macElement->valueint; - printf(", "); - } - } - } - printf("\n"); - } - 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) - { - memcpy(mac_data,0,6); - }else{ - memcpy(mac_data,mac_tmp,6); - } - cJSON_Delete(root); - return len; - -} + + + errcode_t UnbindSucessCmd(uint8_t flag)//发送解绑指令,解绑界面调用这个函数 如果点了✓调用这个函数 返回成功后延迟10s再重启设备 { errcode_t sendok = ERRCODE_FAIL; @@ -604,83 +546,7 @@ void alarmData(void) { } -//phonemac 手机app下发手机的mac地址 -//name 手机设备名称 -//*len 手机设备名称长度 -//*mac_type 手机蓝牙mac地址类型 共有还是私有的 -static void getRecvPhoneInfo(uint8_t *phonemac,uint8_t *name,uint8_t *len,uint8_t *mac_type) -{ - uint8_t datalen = 0; - uint8_t mac[6]; - memset(mac,0,6); - uint8_t count = 0; - FILE *jsfile = fopen(PHONE_WATCH_CONFIG_PATH, "r"); - if(jsfile == NULL) - { - return; - } - if (jsfile != NULL) { - printf("succes opening file\n"); - fseek(jsfile, 0, SEEK_END); - long fileSize = ftell(jsfile); - fseek(jsfile, 0, SEEK_SET); - char *jsonData = (char *)ym_malloc(fileSize + 1); - fread(jsonData, 1, fileSize, jsfile); - jsonData[fileSize] = '\0'; - fclose(jsfile); - - // 解析JSON数据 - cJSON *root = cJSON_Parse(jsonData); - ym_free(jsonData); - - if (root != NULL) { - cJSON *modifiedJson = cJSON_GetObjectItem(root,"mac"); - if (cJSON_IsArray(modifiedJson)) { - printf("MAC地址: "); - cJSON* macElement = NULL; - cJSON_ArrayForEach(macElement, modifiedJson) { - if (cJSON_IsNumber(macElement)) { - if ((macElement->prev != NULL)) { - mac[count] = macElement->valueint; - count++; - } - - } - } - printf("\n"); - } - if(mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && mac[4] == 0 && mac[5] == 0) - { - memcpy(phonemac,0,6); - }else - { - memcpy(phonemac,mac,6); - - } - - cJSON *pn = cJSON_GetObjectItem(root,"pn"); - if(cJSON_IsString(pn)) - { - datalen = strlen(pn->valuestring)+1; - if(datalen-1 > 0){ - pn->valuestring[datalen-1]='\0'; - memcpy(name,(uint8_t *)pn->valuestring,strlen(pn->valuestring)); - datalen = strlen(pn->valuestring); - memcpy(&len,&datalen,1); - } - } - cJSON *mactype = cJSON_GetObjectItem(root,"mac_type"); - if(cJSON_IsNumber(mac_type)) - { - memcpy(&mac_type,&mactype->valueint,1); - } - } - // 释放资源 - cJSON_Delete(root); - } - -} void getPhoneNameLen(uint8_t *crcnum,uint8_t *datalen)//获取手机设备名称长度 { @@ -695,15 +561,14 @@ void getPhoneNameLen(uint8_t *crcnum,uint8_t *datalen)//获取手机设备名称 len = strlen(pn->valuestring)+1; printf("设备名称: %s len:%d\n", pn->valuestring,len); } - memcpy(datalen,&len,1); + *datalen = len; cJSON_Delete(root); } else{ len = 0; - - memcpy(datalen,&len,1); + *datalen = len; } } - +#define PHONE_NAME_MAX_LEN 50 static uint8_t *getPhoneName(uint8_t *crcnum)//获取手机设备名称 { uint8_t *json = crcnum; @@ -713,16 +578,22 @@ static uint8_t *getPhoneName(uint8_t *crcnum)//获取手机设备名称 { cJSON* pn = cJSON_GetObjectItem(root, "pn"); if (cJSON_IsString(pn)) { - uint8_t datalen = strlen(pn->valuestring)+1; + uint8_t datalen = strlen(pn->valuestring)+1; + if(datalen > PHONE_NAME_MAX_LEN) // + { + datalen = PHONE_NAME_MAX_LEN; + } if(datalen - 1 > 0){ - pn->valuestring[datalen-1]='\0'; + pn->valuestring[datalen]='\0'; str = ym_malloc(sizeof(char)*datalen); + if(str != NULL) + { + memcpy(str,(uint8_t *)pn->valuestring,datalen+1); + } savephonename = ym_malloc(sizeof(char)*datalen); - memcpy(str,(uint8_t *)pn->valuestring,datalen); - // strcpy(str,pn->valuestring); - memcpy(savephonename,(uint8_t *)pn->valuestring,datalen); - // strcpy(savephonename,pn->valuestring); - // printf("str:%s savephonename:%s\n",str,savephonename); + if(savephonename != NULL){ + memcpy(savephonename,(uint8_t *)pn->valuestring,datalen+1); + } } printf("设备名称: %s\n", pn->valuestring); } @@ -766,7 +637,7 @@ void getPhoneMac(uint8_t *crcnum,uint8_t *phoneMac)//获取手机设备mac这个 cJSON_Delete(root); } else{ - memcpy(phoneMac,phone_tmp,6); + memcpy(phoneMac,0,6); } } @@ -811,7 +682,7 @@ void GetwatchSaveMac(uint8_t *mac,uint8_t *mactype)//获取手表本地保存的 cJSON *mac_type = cJSON_GetObjectItem(root,"mac_type"); if(cJSON_IsNumber(mac_type)) { - memcpy(&mactype,&mac_type->valueint,1); + *mactype = mac_type->valueint; } } 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){ @@ -825,8 +696,7 @@ void GetwatchSaveMac(uint8_t *mac,uint8_t *mactype)//获取手表本地保存的 { memset(mac_tmp,0,6); memcpy(mac,mac_tmp,6); - uint8_t type = 0; - memcpy(&mactype,&type,1); + *mactype = 0; } } static void GetwatchSaveNameLen(uint8_t *datalen)//获取手表本地保存的手机设备名称长度 @@ -855,12 +725,13 @@ static void GetwatchSaveNameLen(uint8_t *datalen)//获取手表本地保存的 printf("GetwatchSaveNameLen;%d",len); } }; - memcpy(datalen,&len,1); + *datalen = len; + // memcpy(datalen,&len,1); // 释放资源 cJSON_Delete(root); }else{ len = 0; - memcpy(datalen,&len,1); + *datalen = len; } } static uint8_t *GetwatchSaveName(void)//获取手表本地保存的手机设备名称 @@ -888,12 +759,18 @@ static uint8_t *GetwatchSaveName(void)//获取手表本地保存的手机设备 if(cJSON_IsString(pn)) { uint8_t showname_len = strlen(pn->valuestring)+1; + if(showname_len > 50) + { + showname_len = PHONE_NAME_MAX_LEN; + } if(showname_len-1 > 0){ str = ym_malloc(sizeof(char)*showname_len); - pn->valuestring[showname_len-1]='\0'; - str[showname_len]=0; - memcpy(str,(uint8_t *)pn->valuestring,showname_len); - // strcpy(str,pn->valuestring); + if(str != NULL) + { + pn->valuestring[showname_len]='\0'; + memcpy(str,(uint8_t *)pn->valuestring,showname_len+1); + } + printf("GetwatchSaveName:%s",pn->valuestring); } } @@ -1915,7 +1792,6 @@ uint8_t jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析 天气 fputs((char *)buf,fp); fclose(fp); #endif - printf("开始解析天气数据 %x\n",json); cJSON* root = cJSON_Parse((const char *)json); if (root == NULL) { printf("天气 JSON解析错误\n"); @@ -1963,8 +1839,7 @@ uint8_t jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析 天气 set_weather_one_data(tempMin,iconDay,fxDate,tempMax,textDay,i); } cJSON_Delete(root); - flag = 1; - memcpy(check,&flag,1); + *check = 1; return 1; } @@ -2015,33 +1890,39 @@ void getUserInfo(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,ui if(Check_CRC(crcnum,len,crcvalue)) { - + printf("getUserInfo:!!!!!!!!\r\n"); + msg_user_info_t user_info={0}; ble_recv_msg_callback_t func = ble_recv_get_send_msg_callback_func(); memset(&user_info,0,sizeof(msg_user_info_t)); - if(func != NULL) + + for(uint8_t i = 0;i482) - { - num=482; - } - Send_json_Data_Cmd(num,typeid); -} //手机app下发读设备数据指令 -void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue) +void readDevDataBle(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue) { - if(Check_CRC(crcnum+17,len-18,crcvalue)) + uint8_t sendBuf[19]; + memset(sendBuf,0,19); + uint8_t type = cmd/256; + uint8_t typeID = cmd-((cmd/256)*256); + uint32_t totaldata_pack = 1; + uint32_t totaldata_packlen = 0; + uint32_t pack_count = 0; + uint16_t pack_datalen = 0; + sendBuf[0]=0x72; + sendBuf[1]=type; + sendBuf[2]=typeID; + memcpy(sendBuf+3,&totaldata_pack,4);//总的数据包 + memcpy(sendBuf+7,&totaldata_packlen,4);//总的数据包长度 + memcpy(sendBuf+11,&pack_count,4);//分包索引号 + memcpy(sendBuf+15,&pack_datalen,2);//分包数据长度 + + if(Check_CRC(crcnum,len,crcvalue)) { - bleSendTypeID=crcnum[2]; + bleSendTypeID=cmd-((cmd/256)*256); + // printf("同步第%d天的数据\r\n",crcnum[0]); int num; - switch (crcnum[2]) + switch (bleSendTypeID) { case 0x40://同步心率历史数据 EACH_DATA_LEN = HEART_DATA_LEN; @@ -4382,7 +4277,7 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue) { num=96; } - printf("同步心率数据,每包最多:%d 条数据\r\n",num); + printf("同步心率数据,每包最多:%d 条数据 crcnum:%d\r\n",num,crcnum[0]); Read_file_buf_send_bin_Data(num,0x40,"heart_data_list"); break; case 0x41://同步血氧历史数据 @@ -4446,10 +4341,8 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue) } //sendReadData(); }else{ - crcnum[0] = 0x72; - crcnum[len-1] = 0; - crcnum[len] = 0; - sendBleData(crcnum,len); + sendBuf[18] = 0; + sendBleData(sendBuf,19); } } @@ -4772,7 +4665,7 @@ uint8_t jscheck_ancs(uint8_t *data) hasCode_t = hasCode->valueint; } cJSON_Delete(root); - // message_data(uid_t,appid_t,titleBuf,msgBuf,hasCode_t); + message_data(uid_t,appid_t,titleBuf,msgBuf,hasCode_t); if(titleBuf != NULL){ ym_free(titleBuf); titleBuf = NULL; @@ -4897,19 +4790,19 @@ void bleDataRecv(uint8_t *totalData, uint16_t event_size,uint16_t handle) packdataLen = event_size-17;//多包数据第一包数据不带CRC校验和的 handle_l[i].data = ym_malloc(totalDataLen+1); if(handle_l[i].data != NULL){ - printf("bleDataRecv!!!!!!!%d\r\n",totalDataLen); + printf("bleDataRecv long data %d\r\n",totalDataLen); if(handle_l[i].totalDataLen < packdataLen) { printf("packdataLen error!!!!!!!%d\r\n",packdataLen); packdataLen=handle_l[i].totalDataLen; } memcpy(handle_l[i].data,totalData+17,packdataLen);//从第十七个字节开始接收数据data - handle_l[i].data_len = packdataLen; + handle_l[i].data_len = packdataLen;//当前包的数据长度 memset(handle_l[i].cmd_data,0,17); memcpy(handle_l[i].cmd_data,totalData,17); } }else{//一包数据 - printf("bleDataRecv one %d\r\n",totalDataLen); + printf("bleDataRecv short data %d\r\n",totalDataLen); packdataLen = event_size-18; if(totalDataLen != 0) { @@ -4925,11 +4818,12 @@ void bleDataRecv(uint8_t *totalData, uint16_t event_size,uint16_t handle) }else//多包数据存储 { - uint32_t packStartAddrLen = handle_l[i].data_len;// + uint32_t packStartAddrLen = handle_l[i].data_len;//每一包接收的数据长度起始地址 handle_l[i].data_len = handle_l[i].data_len+event_size; printf("muilt 133333 handle_l[i].data_len:%d\r\n",handle_l[i].data_len); if(handle_l[i].data_len >= handle_l[i].totalDataLen)//接收完整的数据 { + handle_l[i].data_len = handle_l[i].data_len -1;//最后一包要减去最后的CRC的那一位 //这是最后一包的起始地址 if(handle_l[i].totalDataLen -packStartAddrLen < event_size-1) { @@ -4939,7 +4833,7 @@ void bleDataRecv(uint8_t *totalData, uint16_t event_size,uint16_t handle) memcpy(handle_l[i].data+packStartAddrLen,totalData,event_size-1);//为了不把CRC copy到data所以多一步操作 handle_l[i].crcvalue = totalData[event_size-1];//最后一个字节为总的数据包的CRC read_data_tmp = &handle_l[i]; - }else{ + }else{ //还没接收完 有 3 4 5包......... if(handle_l[i].totalDataLen -packStartAddrLen < event_size) { printf("event_size error!!!!!!!%d\r\n",event_size); @@ -4978,6 +4872,7 @@ void bleDataRecv(uint8_t *totalData, uint16_t event_size,uint16_t handle) } void free_ble_data(void)//以防断开蓝牙没有释放数据类型 { + return; totalpack = 0; muiltFlag = 0; packdataLen = 0; diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h index 900f0015e..461390396 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h @@ -547,7 +547,7 @@ typedef struct uint8_t timeformat;//时间制 0 24小时制 1 12小时制 }msg_user_info_t;//获取用户信息 身高体重 - +#pragma pack() /****************************************** * */ @@ -625,7 +625,7 @@ void cameraSend(uint8_t flag);//发送拍照指令给app 2进行拍照 3退出 void senfindphoneSend(uint8_t flag); -void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue); +void readDevDataBle(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue); void free_ble_data(void);