Merge #119 into xts_origin from refs/changes/119/head 122/target/1 123/target/1
author胡传军 <1224667075@qq.com>
Thu, 2 May 2024 16:19:39 +0000 (16:19 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Thu, 2 May 2024 16:19:39 +0000 (16:19 +0000)
Code review from 胡传军

* refs/changes/119/head: (3 commits squashed)

  - 将strtok改为strtok_r

  - Merge branch &#39;xts_origin&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin

  - 基础训练记录同步

Signed-off-by: aliyun8003852482 <1224667075@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/119
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
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp

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
index 366c2a0..476463e 100755 (executable)
@@ -380,14 +380,21 @@ void MsgCenterNotifyCardProc(const Topic topic, Request* req)
     //green,red,ir
     int green,red,ir;
     char* str= (char *)req->data;
+    char *pchStrTmpIn = NULL;
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",str);
     char *tokbuf=NULL;
-    tokbuf=strtok(str,",");
+    tokbuf=strtok_r(str,",",&pchStrTmpIn);
+    if(tokbuf!=NULL)
     green=atoi(tokbuf);
-    tokbuf=strtok(NULL,",");
-    red=atoi(tokbuf);   
-    tokbuf=strtok(NULL,"\0");
+
+    tokbuf=strtok_r(NULL,",",&pchStrTmpIn);
+    if(tokbuf!=NULL)
+    red=atoi(tokbuf); 
+
+    tokbuf=strtok_r(NULL,"\0",&pchStrTmpIn);
+    if(tokbuf!=NULL)
     ir=atoi(tokbuf);
+
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d,%d,%d",green,red,ir);
 
     testhrsenson1View * t= testhrsenson1View::GetInstance();
@@ -406,14 +413,23 @@ void MsgCenterNotifyleaklightProc(const Topic topic, Request* req)
     //green,red,ir
     int green,red,ir;
     char* str= (char *)req->data;
+    char *pchStrTmpIn = NULL;
+    
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",str);
+
     char *tokbuf=NULL;
-    tokbuf=strtok(str,",");
+    tokbuf=strtok_r(str,",",&pchStrTmpIn);
+    if(tokbuf!=NULL)
     green=atoi(tokbuf);
-    tokbuf=strtok(NULL,",");
-    red=atoi(tokbuf);   
-    tokbuf=strtok(NULL,"\0");
+
+    tokbuf=strtok_r(NULL,",",&pchStrTmpIn);
+    if(tokbuf!=NULL)
+    red=atoi(tokbuf); 
+
+    tokbuf=strtok_r(NULL,"\0",&pchStrTmpIn);
+    if(tokbuf!=NULL)
     ir=atoi(tokbuf);
+    
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d,%d,%d",green,red,ir);
 
     testhrsenson1View * t= testhrsenson1View::GetInstance();