基础训练记录同步 119/1 119/head
authorhcj_ <1224667075@qq.com>
Wed, 1 May 2024 13:37:54 +0000 (21:37 +0800)
committerhcj_ <1224667075@qq.com>
Wed, 1 May 2024 13:37:54 +0000 (21:37 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 6a396a4..53f7cbf 100644 (file)
@@ -30,6 +30,8 @@
 #define GILROY_BOLD_FONT "./font_library/gilroy-bold-4.ttf"
 #define GILROY_MEDIUM_FONT "./font_library/gilroy-medium-2.ttf"
 
+#define TRAINING_PATH "user/userdata/" //sport/TrainingData/"
+
 #ifdef __cplusplus
 extern "C"
 {
index f5fee7e..518f923 100644 (file)
@@ -35,7 +35,7 @@
 #define BLETEST 0
 #define HARD_OFF 1
 #define READTEST 0
-#define TRAINING_PATH "user/userdata/sport/TrainingData/"
+
 
 #define MAX_HEART_RATE 220
 #define AGE_THRESHOLD 59
@@ -870,7 +870,7 @@ namespace OHOS
             sprintf(file_path, "%s%s.bin", TRAINING_PATH, timeday);
 
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s", file_path);
-            FILE *fp = fopen(file_path, "ab");
+            FILE *fp = fopen(file_path, "ab+");
             if (fp == NULL)
             {
                 // 未存储分配函数funcName的返回值
@@ -879,7 +879,7 @@ namespace OHOS
                 if (fp == NULL)
                 {
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open file for write");
-                    return -1; // Return an error code to indicate file open failure
+                    return -1; // Return an error code to indicate file open failur
                 }
             }
 
index b18d50c..36fdbb4 100644 (file)
@@ -53,9 +53,51 @@ extern "C" {
 #include "bletest.h"
 
 
-char *  struct_to_json_buf_malloc_()
+char *  struct_to_json_buf_malloc_(void)
 {
-    cJSON *data;
+   
+    cJSON *dataJSON = cJSON_CreateObject();
+    cJSON* data_arryJSON = cJSON_CreateArray();
+    struct Trainingdata * data=NULL;
+    int i=0;
+    //char file_path[128] = {0};
+    char timeday[12] = {0};
+    uapi_get_YYMMDD_Time(timeday, '_');
+    printf("%s\r\n",timeday);
+    //sprintf(file_path, "%s%s.bin", TRAINING_PATH_BLE, timeday);
+
+    while(data=read_Trainingdata_data(timeday, i))
+    {
+        cJSON* itemJSON = cJSON_CreateObject();
+        if(data!=NULL)
+        {
+            cJSON_AddNumberToObject(itemJSON,"src",data->src);
+            cJSON_AddNumberToObject(itemJSON,"ty",data->ty);
+            cJSON_AddNumberToObject(itemJSON,"st",data->st);
+            cJSON_AddNumberToObject(itemJSON,"sp",data->sp);
+            cJSON_AddNumberToObject(itemJSON,"tgt",data->tgt);
+            cJSON_AddNumberToObject(itemJSON,"tg",data->tg);
+            cJSON_AddNumberToObject(itemJSON,"pg",data->pg);
+            cJSON_AddNumberToObject(itemJSON,"du",data->du);
+            cJSON_AddNumberToObject(itemJSON,"ca",data->ca);
+            cJSON_AddNumberToObject(itemJSON,"di",data->di);
+            cJSON_AddNumberToObject(itemJSON,"hr",data->hr);
+            cJSON_AddNumberToObject(itemJSON,"stp",data->stp);
+            cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
+            free(data);
+        }
+        else{
+            break;
+        }
+        i++;
+    }
+    cJSON_AddItemToObject(dataJSON,"recs",data_arryJSON);
+
+    char *json_format = cJSON_PrintUnformatted(dataJSON);
+    cJSON_Delete(dataJSON);
+    int pSize = cJSON_GetArraySize(dataJSON);
+    printf("训练历史数据:%s\r\n",json_format);
+    return json_format;
 }
 
 void add_addressbookToRead(char *data) 
index ff58c42..6bf5a2d 100644 (file)
@@ -298,7 +298,7 @@ void send_big_data(uint8_t flag, char *data, int datalen, int total, uint32_t Pa
     memcpy(buf + 3, &packet_total, 4); // 总包数\r
     memcpy(buf + 7, &total, 4); // 总数据长度\r
     memcpy(buf + 11, &Packet_id, 4); // 数据包ID\r
-    memcpy(buf + 15, &datalen, 2); // 数据长度\r
+    memcpy(buf + 15, &datalen, 2); // 包数据长度\r
 \r
     // 处理数据和计算CRC\r
     if (data == NULL) {\r
@@ -313,7 +313,7 @@ void send_big_data(uint8_t flag, char *data, int datalen, int total, uint32_t Pa
     if (flag) {\r
         sendDataNow(buf, 17 + datalen + 1); // 直接发送数据\r
     } else {\r
-        sendBleData(buf, 17 + datalen + 1); // 使用BLE发送数据\r
+        sendBleData(buf, 17 + datalen + 1); // 判断是否在传输或接收多包数据\r
     }\r
 \r
     free(buf); // 释放内存空间\r
@@ -3507,65 +3507,43 @@ static void disDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totald
     }\r
 }\r
 //同步基础训练历史数据 training history data\r
-static void trainiHistoryDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
+static void trainiHistoryDataCmd(uint16_t pack_size)\r
 {\r
-    \r
-    cJSON *dataJSON = cJSON_CreateObject();\r
-    cJSON* data_arryJSON = cJSON_CreateArray();\r
-    \r
-    for(uint8_t i =0;i<2;i++)\r
-    {\r
-        cJSON* itemJSON = cJSON_CreateObject();\r
-        \r
-        cJSON_AddNumberToObject(itemJSON,"src",i);\r
-        cJSON_AddNumberToObject(itemJSON,"ty",2+20*i);\r
-        cJSON_AddNumberToObject(itemJSON,"st",30+i*0);\r
-        cJSON_AddNumberToObject(itemJSON,"sp",1);\r
-        cJSON_AddNumberToObject(itemJSON,"tgt",1);\r
-        cJSON_AddNumberToObject(itemJSON,"tg",1);\r
-        cJSON_AddNumberToObject(itemJSON,"pg",1);\r
-        cJSON_AddNumberToObject(itemJSON,"du",1);\r
-        cJSON_AddNumberToObject(itemJSON,"ca",1);\r
-        cJSON_AddNumberToObject(itemJSON,"di",1);\r
-        cJSON_AddNumberToObject(itemJSON,"hr",1);\r
-        cJSON_AddNumberToObject(itemJSON,"stp",1);\r
-        cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);\r
-    }\r
-    cJSON_AddItemToObject(dataJSON,"recs",data_arryJSON);\r
-\r
-    char *json_format = cJSON_PrintUnformatted(dataJSON);\r
-    int pSize = cJSON_GetArraySize(dataJSON);\r
-\r
-       printf("%d pSize:%d\n",strlen(json_format),pSize);\r
-    cJSON_Delete(dataJSON);\r
-    printf("%s\n",json_format);\r
-    uint32_t data_len = strlen(json_format);\r
 \r
-    uint8_t value[18+data_len];\r
-    memset(value,0,18+data_len);\r
-    uint32_t tmp = 1;\r
-    uint32_t tmpToall = 40;\r
-    uint16_t tmp_data = 40;\r
-    value[0] = 0x72;\r
-    value[1] = 0x01;\r
-    value[2] = 0x49;\r
-    memcpy(value+3,&tmp,4);\r
-    memcpy(value+7,&tmpToall,4);\r
-    memcpy(value+11,&tmp,4);\r
-    memcpy(value+15,&tmp_data,2);\r
-    if(Check_CRC(crcnum,len,crcvalue))\r
-    {\r
-        \r
-        memcpy(value+17,json_format,data_len);\r
-        // value[17] = 1;// \r
-        value[17+data_len] = Calculate_CRC(value,data_len+17);\r
-        sendBleData(value,data_len+17+1);\r
-    }else\r
-    {\r
-        value[17] = 0;\r
-        value[18] = Calculate_CRC(value,18);\r
-        sendBleData(value,19);\r
-    }\r
+    \r
+        char *json_format = struct_to_json_buf_malloc_();\r
+        uint32_t data_len = strlen(json_format);\r
+        char *data=(char *)malloc(pack_size+17);\r
+        uint32_t surplus_len=data_len;\r
+        uint32_t pack;\r
+        if(data_len%pack_size==0)\r
+        {\r
+            pack=data_len/pack_size;\r
+        }\r
+        else\r
+        {   \r
+            pack=data_len/pack_size+1;\r
+        }\r
+        uint32_t pack_id=1;\r
+        uint32_t offset=0;\r
+        while (surplus_len!=0)\r
+        {\r
+           if(surplus_len>=pack_size)\r
+           {\r
+                surplus_len=surplus_len-pack_size;\r
+                send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,0x49,1);\r
+                offset+=pack_size;\r
+           }\r
+           else\r
+           {\r
+                \r
+                printf("%d %d %d %d\r\n",data_len,surplus_len,pack_id,pack);\r
+                send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,0x49,1);\r
+                break;\r
+           }\r
+           pack_id++;\r
+        }\r
+        free(json_format);\r
 }\r
 //同步睡眠数据\r
 static void sleepDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
@@ -4089,6 +4067,10 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue)
             case 0x40://同步心率历史数据\r
                 EACH_DATA_LEN = HEART_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18)/HEART_DATA_LEN;\r
+                if(num>96)\r
+                {\r
+                    num=96;\r
+                }\r
                 printf("同步心率数据,每包最多:%d 条数据\r\n",num);\r
                 Read_file_buf_send_bin_Data(num,0x40,"heart_data_list");\r
                 break;\r
@@ -4126,8 +4108,12 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue)
                 break;\r
             case 0x49://同步基础训练历史数据\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
-                num=(ble_nus_max_data_len-18)/EACH_DATA_LEN;\r
-                Read_file_buf_send_bin_Data(num,0x49,"heart_data_list");\r
+                num=(ble_nus_max_data_len-18);\r
+                if(num>482)\r
+                {\r
+                    num=482;\r
+                }\r
+                trainiHistoryDataCmd(200);\r
                 break;\r
             case 0x4b://睡眠历史数据\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r