From: hcj_ <1224667075@qq.com> Date: Wed, 1 May 2024 13:37:54 +0000 (+0800) Subject: 基础训练记录同步 X-Git-Tag: release_V1.2.70_20241020_135402~1113^2~18^2~3^2~6 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=refs%2Fchanges%2F119%2F1;p=mirrors%2FFD230.git 基础训练记录同步 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h index 6a396a41b..53f7cbf79 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h @@ -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" { diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp index f5fee7eb3..518f923d6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -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 } } 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 b18d50ca9..36fdbb45c 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -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) 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 ff58c4214..6bf5a2d42 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -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); // 总包数 memcpy(buf + 7, &total, 4); // 总数据长度 memcpy(buf + 11, &Packet_id, 4); // 数据包ID - memcpy(buf + 15, &datalen, 2); // 数据长度 + memcpy(buf + 15, &datalen, 2); // 包数据长度 // 处理数据和计算CRC if (data == NULL) { @@ -313,7 +313,7 @@ void send_big_data(uint8_t flag, char *data, int datalen, int total, uint32_t Pa if (flag) { sendDataNow(buf, 17 + datalen + 1); // 直接发送数据 } else { - sendBleData(buf, 17 + datalen + 1); // 使用BLE发送数据 + sendBleData(buf, 17 + datalen + 1); // 判断是否在传输或接收多包数据 } free(buf); // 释放内存空间 @@ -3507,65 +3507,43 @@ static void disDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totald } } //同步基础训练历史数据 training history data -static void trainiHistoryDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) +static void trainiHistoryDataCmd(uint16_t pack_size) { - - cJSON *dataJSON = cJSON_CreateObject(); - cJSON* data_arryJSON = cJSON_CreateArray(); - - for(uint8_t i =0;i<2;i++) - { - cJSON* itemJSON = cJSON_CreateObject(); - - cJSON_AddNumberToObject(itemJSON,"src",i); - cJSON_AddNumberToObject(itemJSON,"ty",2+20*i); - cJSON_AddNumberToObject(itemJSON,"st",30+i*0); - cJSON_AddNumberToObject(itemJSON,"sp",1); - cJSON_AddNumberToObject(itemJSON,"tgt",1); - cJSON_AddNumberToObject(itemJSON,"tg",1); - cJSON_AddNumberToObject(itemJSON,"pg",1); - cJSON_AddNumberToObject(itemJSON,"du",1); - cJSON_AddNumberToObject(itemJSON,"ca",1); - cJSON_AddNumberToObject(itemJSON,"di",1); - cJSON_AddNumberToObject(itemJSON,"hr",1); - cJSON_AddNumberToObject(itemJSON,"stp",1); - cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON); - } - cJSON_AddItemToObject(dataJSON,"recs",data_arryJSON); - - char *json_format = cJSON_PrintUnformatted(dataJSON); - int pSize = cJSON_GetArraySize(dataJSON); - - printf("%d pSize:%d\n",strlen(json_format),pSize); - cJSON_Delete(dataJSON); - printf("%s\n",json_format); - uint32_t data_len = strlen(json_format); - uint8_t value[18+data_len]; - memset(value,0,18+data_len); - uint32_t tmp = 1; - uint32_t tmpToall = 40; - uint16_t tmp_data = 40; - value[0] = 0x72; - value[1] = 0x01; - value[2] = 0x49; - memcpy(value+3,&tmp,4); - memcpy(value+7,&tmpToall,4); - memcpy(value+11,&tmp,4); - memcpy(value+15,&tmp_data,2); - if(Check_CRC(crcnum,len,crcvalue)) - { - - memcpy(value+17,json_format,data_len); - // value[17] = 1;// - value[17+data_len] = Calculate_CRC(value,data_len+17); - sendBleData(value,data_len+17+1); - }else - { - value[17] = 0; - value[18] = Calculate_CRC(value,18); - sendBleData(value,19); - } + + char *json_format = struct_to_json_buf_malloc_(); + uint32_t data_len = strlen(json_format); + char *data=(char *)malloc(pack_size+17); + uint32_t surplus_len=data_len; + uint32_t pack; + if(data_len%pack_size==0) + { + pack=data_len/pack_size; + } + else + { + pack=data_len/pack_size+1; + } + uint32_t pack_id=1; + uint32_t offset=0; + while (surplus_len!=0) + { + if(surplus_len>=pack_size) + { + surplus_len=surplus_len-pack_size; + send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,0x49,1); + offset+=pack_size; + } + else + { + + printf("%d %d %d %d\r\n",data_len,surplus_len,pack_id,pack); + send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,0x49,1); + break; + } + pack_id++; + } + free(json_format); } //同步睡眠数据 static void sleepDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) @@ -4089,6 +4067,10 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue) case 0x40://同步心率历史数据 EACH_DATA_LEN = HEART_DATA_LEN; num=(ble_nus_max_data_len-18)/HEART_DATA_LEN; + if(num>96) + { + num=96; + } printf("同步心率数据,每包最多:%d 条数据\r\n",num); Read_file_buf_send_bin_Data(num,0x40,"heart_data_list"); break; @@ -4126,8 +4108,12 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue) break; case 0x49://同步基础训练历史数据 EACH_DATA_LEN = DIS_DATA_LEN; - num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - Read_file_buf_send_bin_Data(num,0x49,"heart_data_list"); + num=(ble_nus_max_data_len-18); + if(num>482) + { + num=482; + } + trainiHistoryDataCmd(200); break; case 0x4b://睡眠历史数据 EACH_DATA_LEN = DIS_DATA_LEN;