OHOS::AiVoiceModel::GetInstance().SetAiAnswerStrStr(std::string(buf));
}
+uint8_t ble_get_heart_data()
+{
+ OHOS::HeartRateData *data=(OHOS::HeartRateData*)malloc(sizeof(OHOS::HeartRateData));
+ data=OHOS::HealthService ::GetInstance()->ReadHeartRateData();
+ uint8_t heart=0;
+ if(data==NULL)
+ heart=0;
+ else
+ heart=data->Heart;
+
+ free(data);
+ return heart;
+}
+
+uint8_t ble_get_oxygen_data()
+{
+ OHOS::BloodOxygenData *data=(OHOS::BloodOxygenData*)malloc(sizeof(OHOS::BloodOxygenData));
+ data=OHOS::HealthService ::GetInstance()->ReadBloodOxygenData();
+ uint8_t spo2=0;
+ if(data==NULL)
+ spo2=0;
+ else
+ spo2=data->SPO2;
+
+ free(data);
+ return spo2;
+}
+
+
+cJSON* ble_get_recs_data()
+{
+ 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_extend(timeday, '_',0);
+ 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_AddNumberToObject(itemJSON,"ti",data->ti);
+ cJSON_AddNumberToObject(itemJSON,"cir",data->cir);
+ cJSON_AddNumberToObject(itemJSON,"alt",data->alt);
+ cJSON_AddNumberToObject(itemJSON,"fpc",data->fpc);
+ cJSON_AddNumberToObject(itemJSON,"spc",data->spc);
+ cJSON_AddNumberToObject(itemJSON,"std",data->std);
+ cJSON_AddNumberToObject(itemJSON,"cdc",data->cdc);
+
+ cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
+ free(data);
+ data=NULL;
+ }
+ else{
+ break;
+ }
+ i++;
+ }
+ return data_arryJSON;
+}
+
// {
// "type":3,
// "list":[
} \r
}\r
//获取当前数据\r
-static void GetCurDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
+void GetCurDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
{\r
+ if(!Check_CRC(data,len,crcvalue))\r
+ {\r
+ send_big_data(1,NULL,0,0,1,1,0x06,1);\r
+ return;\r
+ }\r
cJSON *dataJSON = cJSON_CreateObject();\r
- const char *string_value[8]={"hr","spo2","stress","steps","duration","standup","calories","distance"};\r
- for(uint8_t i = 0;i<8;i++)\r
+ const char *string_value[7]={"hr","spo2","steps","duration","standup","calories","distance"};\r
+ for(uint8_t i = 0;i<7;i++)\r
{\r
cJSON* data_arryJSON = cJSON_CreateObject();\r
- \r
- cJSON_AddNumberToObject(data_arryJSON,"value",80);\r
- cJSON_AddNumberToObject(data_arryJSON,"time",1633686477);\r
- cJSON_AddItemToObject(dataJSON,string_value[i],data_arryJSON);\r
- } \r
+ uint32_t value=0;\r
+ if(i==0)\r
+ {\r
+ value=ble_get_heart_data();\r
+ }\r
+ else if(i==1)\r
+ {\r
+ value=ble_get_oxygen_data();\r
+ }\r
+ else if(i==2)\r
+ {\r
+ value=get_step_data();\r
+ }\r
+ else if(i==3)\r
+ {\r
+ value=get_fat_time_data();\r
+ }\r
+ else if(i==4)\r
+ {\r
+ value=1;\r
+ }\r
+ else if(i==5)\r
+ {\r
+ value=get_calories_data();\r
+ }\r
+ else if(i==6)\r
+ {\r
+ value=get_distance_data();\r
+ }\r
+\r
\r
+ cJSON_AddNumberToObject(data_arryJSON,"value",value);\r
+ uint32_t creationTime;\r
+ int ret =uapi_get_timestampe_ss(&creationTime);\r
+ cJSON_AddNumberToObject(data_arryJSON,"time",creationTime);\r
+\r
+ cJSON_AddItemToObject(dataJSON,string_value[i],data_arryJSON);\r
+ }\r
+ cJSON *recJSON= ble_get_recs_data();\r
+ cJSON_AddItemToObject(dataJSON,"recs",recJSON);\r
char *json_format = cJSON_PrintUnformatted(dataJSON);\r
- printf("%d\n",strlen(json_format));\r
+ printf("GetCurDataCmd %d %s\n",strlen(json_format),json_format);\r
cJSON_Delete(dataJSON);\r
- printf("%s\n",json_format);\r
+\r
uint32_t data_len = strlen(json_format);\r
- uint8_t value[data_len+18];\r
- memset(value,0,data_len+18);\r
- uint32_t tmp = 1;\r
- uint16_t tmp_data = data_len;\r
- uint32_t dataLen = data_len;\r
- value[0] = 0x72;\r
- value[1] = 0x01;\r
- value[2] = 0x06;\r
- memcpy(value+3,&tmp,4);\r
- memcpy(value+7,&dataLen,4);\r
- memcpy(value+11,&tmp,4);\r
- memcpy(value+15,&tmp_data,2);\r
- \r
- // uint8_t buf[22] = {0x7b,0x22,0x74,0x70,0x22,0x3a,0x31,0x2c,0x22,0x70,0x6e,0x22,0x3a,0x22,0x69,0x50,0x68,0x6f,0x6e,0x65,0x22,0x7d};\r
- \r
- if(Check_CRC(data,len,crcvalue))\r
+ uint32_t surplus_len=data_len;\r
+ uint32_t pack;\r
+ uint16_t pack_size=(ble_nus_max_data_len-18);\r
+ if(pack_size>482)pack_size=482;\r
+\r
+ if(data_len%pack_size==0)\r
{\r
- memcpy(value+17,(uint8_t *)json_format,data_len);\r
- \r
- uint8_t lrc = Calculate_CRC(value,data_len+17);\r
- printf("lrc:%d",lrc);\r
- value[data_len+18] = lrc;\r
- sendBleData(value,data_len+18);\r
- }else\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
- value[17] = 0;\r
- uint8_t lrc = Calculate_CRC(value,18);\r
- value[18] = lrc;\r
- sendBleData(value,19);\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,0x06,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,0x06,1);\r
+ break;\r
+ }\r
+ pack_id++;\r
}\r
cJSON_free(json_format);\r
+ \r
}\r
//获取当手表电池电量\r
static void GetBatteryLevelCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r