{
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
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
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)
uint32_t EACH_DATA_LEN=0;//每种数据类型的的长度\r
\r
\r
-void Send_Sleep_Bin_Data(uint8_t day, uint8_t num)\r
+void Send_Sleep_Bin_Data(uint8_t day, uint16_t num)\r
{\r
\r
char *data=NULL;\r
}\r
\r
\r
-bool Read_JSON_file_buf_send_bin_Data(uint8_t day, uint8_t num,uint16_t id,char *data_item)\r
+bool Read_Health_BIN_file_buf_send_bin_Data(uint8_t day, uint16_t num,uint16_t id)\r
{\r
\r
// send_big_data(1,NULL,0,0,1,1,id,1);\r
// return;\r
\r
char *buf=NULL;\r
- const char *path=NULL;\r
+ char path[128];\r
uint8_t timeBit = 4;//默认是4个字节的时间戳\r
uint8_t dataBit = 1;//默认是1个字节的数据\r
switch (id)\r
{\r
case 0x40://同步心率历史数据\r
- path=get_health_HEART_data_path(day);\r
+ get_health_HEART_data_path(path,day,128);\r
dataBit = 1;//心率数据字节1个字节 uint8_t\r
break;\r
case 0x41://同步血氧历史数据\r
- path=get_health_OXYGEN_data_path(day);\r
+ get_health_OXYGEN_data_path(path,day,128);\r
dataBit = 1;//血氧数据字节1个字节 uint8_t\r
break;\r
}\r
- if(path==NULL)\r
- {\r
- return false;\r
- }\r
+ \r
+ uint32_t file_size=0;\r
FILE *fp= fopen(path,"r+");\r
if(fp==NULL)\r
{\r
- #ifdef BLE_LOG\r
- printf("打开文件失败 %s \r\n",path);\r
- #endif\r
- if(path)\r
- {\r
- ym_free(path);\r
- path = NULL;\r
- }\r
+ printf("打开文件失败 %s \r\n",path);\r
return false;\r
}\r
+ fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾\r
+ file_size = ftell(fp); // 获取当前文件指针位置,即文件大小\r
+ fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头\r
+ \r
+ buf = (char *)ym_malloc(sizeof(char)*num+1);\r
+ if(buf==NULL)return false;\r
\r
- buf = (char *)ym_malloc(sizeof(char)*512);\r
- if(buf==NULL)\r
+ uint16_t pack=1;\r
+ if(file_size%num==0)\r
+ pack=data_len/num;\r
+ else\r
+ pack=data_len/num+1;\r
+ uint8_t pack_id=1;\r
+ uint32_t read_size=0;\r
+ do\r
{\r
- return false;\r
- }\r
- int ret=fread(buf,1,512,fp);\r
- uint8_t count=1;\r
- while (ret==512)\r
- { \r
- buf=realloc(buf,512*count+512);\r
- ret=fread(buf+512*count,1,512,fp);\r
- count++;\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
+ pack_id++;\r
+ } while (read_size==num);\r
\r
fclose(fp);\r
-\r
- if(path)\r
- {\r
- ym_free(path);\r
- path = NULL;\r
- }\r
-\r
- cJSON *heart_data=cJSON_Parse(buf);\r
-\r
- if(buf)\r
free(buf);\r
- \r
- #ifdef BLE_LOG\r
- printf("读文件\r\n");\r
- #endif\r
- if(heart_data==NULL)\r
- return false; \r
- cJSON * heart_data_list=cJSON_GetObjectItem(heart_data,data_item);\r
- if(heart_data_list==NULL)\r
- return false;\r
- int item_num=cJSON_GetArraySize(heart_data_list);\r
- if(item_num==0)\r
- return false;\r
-\r
- char *send_buf=(char *)ym_malloc(sizeof(char)*HEART_DATA_LEN);\r
- if(send_buf==NULL)\r
- {\r
- cJSON_Delete(heart_data);\r
- return false;\r
- }\r
- \r
- int send_len=0;\r
- uint32_t Packet_id=1;\r
- uint16_t packet_total;\r
- if(item_num%num==0)\r
- {\r
- packet_total=item_num/num;\r
- }\r
- else\r
- {\r
- packet_total=item_num/num+1;\r
- }\r
- for(int i=0;i<item_num;i++)\r
- {\r
- cJSON * heart_data_item=cJSON_GetArrayItem(heart_data_list,i);\r
- uint32_t timestamp=cJSON_GetObjectItem(heart_data_item,"timestamp")->valueint;\r
- uint8_t value=cJSON_GetObjectItem(heart_data_item,"value")->valueint;\r
- // value =450;\r
- #ifdef BLE_LOG\r
- printf("value :%d\r\n",value);\r
- printf("timestamp :%d\r\n",timestamp);\r
- #endif\r
- memcpy(send_buf+send_len,×tamp,timeBit);\r
- send_len+=timeBit;\r
- memcpy(send_buf+send_len,&value,dataBit);\r
- send_len+=dataBit;\r
- \r
- if(((i+1)%num==0 && i!=0) || (item_num-1==i))\r
- {\r
- //发送数据\r
- if(item_num-1==i)\r
- {\r
- #ifdef BLE_LOG\r
- printf("sendbuf :%s sendbuf_len%d\r\n",send_buf,send_len);\r
- #endif\r
- send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,id,1);\r
- if(send_buf)\r
- {\r
- ym_free(send_buf);\r
- send_buf = NULL;\r
- }\r
-\r
- }else\r
- {\r
- send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,id,1);\r
- if(send_buf)\r
- {\r
- ym_free(send_buf);\r
- send_buf = NULL;\r
- }\r
- \r
- send_buf=(char *)ym_malloc(sizeof(char)*HEART_DATA_LEN);\r
- send_len=0;\r
- Packet_id++;\r
- }\r
- }\r
- send_buf=realloc(send_buf,i*5+10);\r
- }\r
- if(send_buf)\r
- {\r
- ym_free(send_buf);\r
- send_buf = NULL;\r
- }\r
- cJSON_Delete(heart_data);\r
return true;\r
}\r
\r
case 0x40://同步心率历史数据\r
\r
\r
- EACH_DATA_LEN = HEART_DATA_LEN;\r
- num=(ble_nus_max_data_len-18)/HEART_DATA_LEN;\r
- if(num>96)num=96;\r
+ num=(ble_nus_max_data_len-18);\r
+ if(num>482)num=482;\r
#ifdef BLE_LOG\r
- printf("å\90\8cæ¥å¿\83ç\8e\87æ\95°æ\8d®ï¼\8cæ¯\8få\8c\85æ\9c\80å¤\9aï¼\9a%d æ\9d¡æ\95°æ\8d® data:%d %d\r\n",num,data[0],len);\r
+ printf("同步心率数据,每包最多:%d 数据 data:%d %d\r\n",num,data[0],len);\r
#endif\r
- if(!Read_JSON_file_buf_send_bin_Data(data[0],num,0x40,"heart_data_list"))\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
break;\r
case 0x41://同步血氧历史数据\r
- EACH_DATA_LEN = SPO2_DATA_LEN;\r
- num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
- if(num>96)num=96;\r
- if(!Read_JSON_file_buf_send_bin_Data(data[0],num,0x41,"spo2_data_list"))\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
break;\r
case 0x43: //同步步数历史数据\r
\r
num=(ble_nus_max_data_len-18);\r
- if(num>482)\r
- {\r
- num=482;\r
- }\r
+ if(num>482)num=482;\r
+ \r
Read_BIN_file_buf_send_bin_Data(data[0],num,0x43);\r
\r
break;\r
case 0x44://同步燃脂时间数据\r
- num=(ble_nus_max_data_len-18);\r
- if(num>482)\r
- {\r
- num=482;\r
- }\r
+ num=(ble_nus_max_data_len-18);\r
+ if(num>482)num=482;\r
Read_BIN_file_buf_send_bin_Data(data[0],num,0x44);\r
break;\r
case 0x45://同步站立历史数据\r
EACH_DATA_LEN = DIS_DATA_LEN;\r
num=(ble_nus_max_data_len-18);\r
if(num>482)num=482;\r
- Send_Sleep_Bin_Data(data[0],num);\r
+ Send_Sleep_Bin_Data(data[0],50);\r
break;\r
case 0x21://文件目录\r
EACH_DATA_LEN = DIS_DATA_LEN;\r