From: hcj <1224667075@qq.com> Date: Fri, 28 Jun 2024 09:40:51 +0000 (+0800) Subject: 修改心率数据同步协议 X-Git-Tag: release_V1.2.70_20241020_135402~895^2~23 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=b2421fee86ce4a4620f8a8e1ba1448383a5497e8;p=mirrors%2FFD230.git 修改心率数据同步协议 --- 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 84692952f..930eef597 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -1196,9 +1196,8 @@ void set_ble_falg(bool falg) { ble_falg=falg; } -static char* JSON_F_buf=NULL; -#define PATH_MAX_LEN 124 -const char *get_health_HEART_data_path( uint8_t day) + +void get_health_HEART_data_path(char *path, uint8_t day,uint16_t max_size) { #ifdef FD230 @@ -1206,29 +1205,14 @@ const char *get_health_HEART_data_path( uint8_t day) uapi_get_YYMMDD_Time_extend(timeday,'\0',day); printf("%s\r\n",timeday); - char buf[PATH_MAX_LEN]={0}; - sprintf_s(buf,PATH_MAX_LEN-1,"%s%s.json",OHOS::GET_HEALTH_JSON_PATH_C_STR_HEART(),timeday); - if(JSON_F_buf != NULL) - { - free(JSON_F_buf); - JSON_F_buf=NULL; - - } - WEARABLE_LOGD(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_LOGD(WEARABLE_LOG_MODULE_APP, "%s",JSON_F_buf); + sprintf_s(path,max_size,"%s%s.bin",OHOS::GET_HEALTH_JSON_PATH_C_STR_HEART(),timeday); + #endif - return JSON_F_buf; + return ; } -const char *get_health_OXYGEN_data_path(uint8_t day) +void get_health_OXYGEN_data_path(char *path, uint8_t day,uint16_t max_size) { #ifdef FD230 @@ -1236,25 +1220,9 @@ const char *get_health_OXYGEN_data_path(uint8_t day) uapi_get_YYMMDD_Time_extend(timeday,'\0',day); printf("%s\r\n",timeday); - char buf[PATH_MAX_LEN]={0}; - sprintf_s(buf,PATH_MAX_LEN-1,"%s%s.json",OHOS::GET_HEALTH_JSON_PATH_C_STR_OXYGEN(),timeday); - if(JSON_F_buf != NULL) - { - free(JSON_F_buf); - JSON_F_buf=NULL; - - } - WEARABLE_LOGD(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_LOGD(WEARABLE_LOG_MODULE_APP, "%s",JSON_F_buf); + sprintf_s(path,max_size,"%s%s.bin",OHOS::GET_HEALTH_JSON_PATH_C_STR_OXYGEN(),timeday); #endif - return JSON_F_buf; + return ; } void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight) 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 bcbca3444..b87b1dedc 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h @@ -121,8 +121,8 @@ char *addressbook(void); void addressbookToRead(char*); void addressbookTowrite(void); -const char *get_health_HEART_data_path(uint8_t day); -const char *get_health_OXYGEN_data_path(uint8_t day); +void get_health_HEART_data_path(char *,uint8_t day,uint16_t); +void get_health_OXYGEN_data_path(char *,uint8_t day,uint16_t); void add_addressbookToRead(char *data); 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 da63cb8de..bda04bfce 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -4730,7 +4730,7 @@ uint16_t max_mtu_szie_data_len = 200; uint32_t EACH_DATA_LEN=0;//每种数据类型的的长度 -void Send_Sleep_Bin_Data(uint8_t day, uint8_t num) +void Send_Sleep_Bin_Data(uint8_t day, uint16_t num) { char *data=NULL; @@ -4797,154 +4797,59 @@ void Send_Sleep_Bin_Data(uint8_t day, uint8_t num) } -bool Read_JSON_file_buf_send_bin_Data(uint8_t day, uint8_t num,uint16_t id,char *data_item) +bool Read_Health_BIN_file_buf_send_bin_Data(uint8_t day, uint16_t num,uint16_t id) { // send_big_data(1,NULL,0,0,1,1,id,1); // return; char *buf=NULL; - const char *path=NULL; + char path[128]; uint8_t timeBit = 4;//默认是4个字节的时间戳 uint8_t dataBit = 1;//默认是1个字节的数据 switch (id) { case 0x40://同步心率历史数据 - path=get_health_HEART_data_path(day); + get_health_HEART_data_path(path,day,128); dataBit = 1;//心率数据字节1个字节 uint8_t break; case 0x41://同步血氧历史数据 - path=get_health_OXYGEN_data_path(day); + get_health_OXYGEN_data_path(path,day,128); dataBit = 1;//血氧数据字节1个字节 uint8_t break; } - if(path==NULL) - { - return false; - } + + uint32_t file_size=0; FILE *fp= fopen(path,"r+"); if(fp==NULL) { - #ifdef BLE_LOG - printf("打开文件失败 %s \r\n",path); - #endif - if(path) - { - ym_free(path); - path = NULL; - } + printf("打开文件失败 %s \r\n",path); return false; } + fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾 + file_size = ftell(fp); // 获取当前文件指针位置,即文件大小 + fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头 + + buf = (char *)ym_malloc(sizeof(char)*num+1); + if(buf==NULL)return false; - buf = (char *)ym_malloc(sizeof(char)*512); - if(buf==NULL) + uint16_t pack=1; + if(file_size%num==0) + pack=data_len/num; + else + pack=data_len/num+1; + uint8_t pack_id=1; + uint32_t read_size=0; + do { - return false; - } - int ret=fread(buf,1,512,fp); - uint8_t count=1; - while (ret==512) - { - buf=realloc(buf,512*count+512); - ret=fread(buf+512*count,1,512,fp); - count++; - } + memset_s(buf,num+1,0,num+1); + read_size=fread(buf,1,num,fp); + send_big_data(1,buf,read_size,file_size,pack_id,pack,id,1); + pack_id++; + } while (read_size==num); fclose(fp); - - if(path) - { - ym_free(path); - path = NULL; - } - - cJSON *heart_data=cJSON_Parse(buf); - - if(buf) free(buf); - - #ifdef BLE_LOG - printf("读文件\r\n"); - #endif - if(heart_data==NULL) - return false; - cJSON * heart_data_list=cJSON_GetObjectItem(heart_data,data_item); - if(heart_data_list==NULL) - return false; - int item_num=cJSON_GetArraySize(heart_data_list); - if(item_num==0) - return false; - - char *send_buf=(char *)ym_malloc(sizeof(char)*HEART_DATA_LEN); - if(send_buf==NULL) - { - cJSON_Delete(heart_data); - return false; - } - - int send_len=0; - uint32_t Packet_id=1; - uint16_t packet_total; - if(item_num%num==0) - { - packet_total=item_num/num; - } - else - { - packet_total=item_num/num+1; - } - for(int i=0;ivalueint; - uint8_t value=cJSON_GetObjectItem(heart_data_item,"value")->valueint; - // value =450; - #ifdef BLE_LOG - printf("value :%d\r\n",value); - printf("timestamp :%d\r\n",timestamp); - #endif - memcpy(send_buf+send_len,×tamp,timeBit); - send_len+=timeBit; - memcpy(send_buf+send_len,&value,dataBit); - send_len+=dataBit; - - if(((i+1)%num==0 && i!=0) || (item_num-1==i)) - { - //发送数据 - if(item_num-1==i) - { - #ifdef BLE_LOG - printf("sendbuf :%s sendbuf_len%d\r\n",send_buf,send_len); - #endif - send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,id,1); - if(send_buf) - { - ym_free(send_buf); - send_buf = NULL; - } - - }else - { - send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,id,1); - if(send_buf) - { - ym_free(send_buf); - send_buf = NULL; - } - - send_buf=(char *)ym_malloc(sizeof(char)*HEART_DATA_LEN); - send_len=0; - Packet_id++; - } - } - send_buf=realloc(send_buf,i*5+10); - } - if(send_buf) - { - ym_free(send_buf); - send_buf = NULL; - } - cJSON_Delete(heart_data); return true; } @@ -5030,40 +4935,33 @@ void readDevDataBle(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,u case 0x40://同步心率历史数据 - EACH_DATA_LEN = HEART_DATA_LEN; - num=(ble_nus_max_data_len-18)/HEART_DATA_LEN; - if(num>96)num=96; + num=(ble_nus_max_data_len-18); + if(num>482)num=482; #ifdef BLE_LOG - printf("同步心率数据,每包最多:%d 条数据 data:%d %d\r\n",num,data[0],len); + printf("同步心率数据,每包最多:%d 数据 data:%d %d\r\n",num,data[0],len); #endif - if(!Read_JSON_file_buf_send_bin_Data(data[0],num,0x40,"heart_data_list")) + if(!Read_Health_BIN_file_buf_send_bin_Data(data[0],num,0x40)) send_big_data(1,NULL,0,0,1,1,0x40,1); break; case 0x41://同步血氧历史数据 - EACH_DATA_LEN = SPO2_DATA_LEN; - num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - if(num>96)num=96; - if(!Read_JSON_file_buf_send_bin_Data(data[0],num,0x41,"spo2_data_list")) + num=(ble_nus_max_data_len-18); + if(num>482)num=482; + if(!Read_Health_BIN_file_buf_send_bin_Data(data[0],num,0x41)) send_big_data(1,NULL,0,0,1,1,0x41,1); break; case 0x43: //同步步数历史数据 num=(ble_nus_max_data_len-18); - if(num>482) - { - num=482; - } + if(num>482)num=482; + Read_BIN_file_buf_send_bin_Data(data[0],num,0x43); break; case 0x44://同步燃脂时间数据 - num=(ble_nus_max_data_len-18); - if(num>482) - { - num=482; - } + num=(ble_nus_max_data_len-18); + if(num>482)num=482; Read_BIN_file_buf_send_bin_Data(data[0],num,0x44); break; case 0x45://同步站立历史数据 @@ -5114,7 +5012,7 @@ void readDevDataBle(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,u EACH_DATA_LEN = DIS_DATA_LEN; num=(ble_nus_max_data_len-18); if(num>482)num=482; - Send_Sleep_Bin_Data(data[0],num); + Send_Sleep_Bin_Data(data[0],50); break; case 0x21://文件目录 EACH_DATA_LEN = DIS_DATA_LEN;