修改心率数据同步协议
authorhcj <1224667075@qq.com>
Fri, 28 Jun 2024 09:40:51 +0000 (17:40 +0800)
committerhcj <1224667075@qq.com>
Fri, 28 Jun 2024 09:40:51 +0000 (17:40 +0800)
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 8469295..930eef5 100644 (file)
@@ -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)
index bcbca34..b87b1de 100644 (file)
@@ -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);
 
index da63cb8..bda04bf 100644 (file)
@@ -4730,7 +4730,7 @@ uint16_t max_mtu_szie_data_len = 200;
 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
@@ -4797,154 +4797,59 @@ void Send_Sleep_Bin_Data(uint8_t day, uint8_t num)
 }\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,&timestamp,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
@@ -5030,40 +4935,33 @@ void readDevDataBle(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,u
             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
@@ -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;\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