return data_arryJSON;
}
+//通过时间戳获取训练数据
+cJSON* ble_get_Trainingdata_by_timetamp(uint32_t timetamp)
+{
+ struct Trainingdata * data=NULL;
+ int i=0;
+
+ time_t currtime=timetamp;
+ struct tm *timeinfo;
+ timeinfo = localtime(&currtime);
+ int y=timeinfo->tm_year+ 1900;
+ int m=timeinfo->tm_mon+1;
+ int d=timeinfo->tm_mday;
+ int h=timeinfo->tm_hour;
+ int min=timeinfo->tm_min;
+
+ char timeday[24]={0};
+ sprintf_s(timeday,24,"%d_%02d_%02d",y,m,d);
+
+ printf("%s\r\n",timeday);
+
+ while(data=read_Trainingdata_data(timeday, i))
+ {
+ if(data!=NULL)
+ {
+ printf("%d,%d\r\n",timetamp,data->st);
+ int time_error= timetamp>data->st ? timetamp-data->st:data->st-timetamp;
+ if(time_error<=2)
+ {
+ cJSON* itemJSON = cJSON_CreateObject();
+
+ 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);
+ free(data);
+ return itemJSON;
+ }
+
+ free(data);
+ data=NULL;
+ }
+ else{
+ break;
+ }
+ i++;
+ }
+ return NULL;
+}
Tag_Trailer_t Mp3Trailer;
Tag_ID3V2_TAG_T TAG_T;
set_goal_durationcount(target_fattime);\r
\r
set_goal_caloriescount(target_kcal);\r
- \r
+\r
set_SilentMode(ring);\r
set_vibrationremiander(vibratior);\r
\r
}\r
\r
\r
+//通过时间戳来获取训练数据\r
+\r
+void SYN_train_datatCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//同步训练数据\r
+{\r
+\r
+ if(Check_CRC(data,len,crcvalue))\r
+ {\r
+ if(len==4)\r
+ {\r
+ uint32_t timetamp=0;\r
+ memcpy_s((void*)&timetamp,4,data,4);\r
+ cJSON *json_data = ble_get_Trainingdata_by_timetamp(timetamp);\r
+ if(json_data==NULL)\r
+ {\r
+ ble_data_type type_={0x02,0x19,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ return;\r
+ }\r
+ char *json_str=cJSON_PrintUnformatted(json_data);\r
+ uint32_t json_len= strlen(json_str);\r
+ cJSON_Delete(json_data);\r
+\r
+\r
+ uint32_t surplus_len=json_len;\r
+ uint32_t offset=0;\r
+\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(json_len%pack_size==0)\r
+ {\r
+ pack=json_len/pack_size;\r
+ }\r
+ else\r
+ { \r
+ pack=json_len/pack_size+1;\r
+ }\r
+ uint32_t pack_id=1;\r
+ while (surplus_len!=0)\r
+ {\r
+ if(surplus_len>=pack_size)\r
+ {\r
+ surplus_len=surplus_len-pack_size;\r
+\r
+ ble_data_type type_={0x02,0x19,json_len,pack,pack_id};\r
+ send_big_data(type_,(char *)json_str+offset,pack_size);\r
+ offset+=pack_size;\r
+ }\r
+ else\r
+ {\r
+ \r
+ printf("%d %d %d %d\r\n",json_len,surplus_len,pack_id,pack);\r
+ ble_data_type type_={0x02,0x19,json_len,pack,pack_id};\r
+ send_big_data(type_,(char *)json_str+offset,surplus_len);\r
+ break;\r
+ }\r
+ pack_id++;\r
+ }\r
+\r
+ cJSON_free(json_str);\r
+\r
+ }\r
+ \r
+ }\r
+ else\r
+ {\r
+ ble_data_type type_={0x02,0x19,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ }\r
+}\r
+\r
+\r
+void SYN_train_heart_datatCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//同步训练数据\r
+{\r
+\r
+ if(Check_CRC(data,len,crcvalue))\r
+ {\r
+ if(len==4)\r
+ {\r
+ uint32_t timetamp=0;\r
+ memcpy_s((void*)&timetamp,4,data,4);\r
+ ble_data_type type_={0x02,0x4B,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ }\r
+ \r
+ }\r
+ else\r
+ {\r
+ ble_data_type type_={0x02,0x4B,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ }\r
+}\r
\r
+void SYN_train_speed_datatCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//同步训练数据\r
+{\r
\r
+ if(Check_CRC(data,len,crcvalue))\r
+ {\r
+ if(len==4)\r
+ {\r
+ uint32_t timetamp=0;\r
+ memcpy_s((void*)&timetamp,4,data,4);\r
+ ble_data_type type_={0x02,0x18,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ }\r
+ \r
+ }\r
+ else\r
+ {\r
+ ble_data_type type_={0x02,0x18,0,1,1};\r
+ send_big_data(type_,NULL,0);\r
+ }\r
+}\r
\r
//APP设置步数目标\r
void SetsteptargetParamCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)\r
\r
}\r
\r
- if( cm_custom_ble_service_on_flag() && cm_get_HFP_switch())\r
+ if( uapi_dev_runtime_get_bt_powerstat() && cm_get_HFP_switch())\r
uapi_pbap_cmd_start_client();\r
\r
bd_addr_t bdaddr={0};\r
uapi_get_br_address(&bdaddr);\r
- if( cm_custom_ble_service_on_flag() && (cm_get_HFP_switch()||cm_get_A2DP_switch()))\r
+ if( uapi_dev_runtime_get_bt_powerstat() && (cm_get_HFP_switch()||cm_get_A2DP_switch()))\r
{\r
if (false==bt_is_acl_connected(&bdaddr))\r
{\r
int ret = gap_reconnect_media_device(&bdaddr);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " gap_reconnect_media_device ret = %u", ret);\r
} \r
-\r
}\r
\r
\r
case DELETE_FILE_CMD:\r
break;\r
case SYN_BASIC_REAL_HEATR_CMD:\r
+ SYN_train_heart_datatCmd(typeID,data,datalen,totalData,crcvalue);\r
+ break;\r
+ case SYN_TRAIN_DATA_CMD:\r
+ SYN_train_datatCmd(typeID,data,datalen,totalData,crcvalue);\r
break;\r
+ case SYN_TRAIN_SPEED_CMD:\r
+ SYN_train_speed_datatCmd(typeID,data,datalen,totalData,crcvalue);\r
+ break;\r
+ \r
case SYN_TODAY_BASIC_TRAIN_TXT_CMD:\r
break;\r
case SYN_WATCH_LCD_PARAM_CMD://app下发的同步屏幕参数到手表\r
sendBleData(value,19);\r
}\r
}\r
+\r
+void reply_APP_StopSportModeCmd(uint16_t time)\r
+{\r
+ char data[3]={0};\r
+ uint32_t data_len=3;\r
+ data[0]=1;\r
+ memcpy(&data[1],&time,2);\r
+ printf("发送训练状态数据%d %d\r\n",data[0],time);\r
+ ble_data_type type={0x01,0x0B,data_len,1,1};\r
+ send_big_data(type,data,data_len);\r
+}\r
//结束运动模式\r
static void StopSportModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
{\r
printf("结束运动\r\n");\r
\r
CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,sizeof(training_ble));\r
- value[17] = 1; //1 操作成功 2 操作失败\r
- value[18] = Calculate_CRC(value,18);\r
- sendBleData(value,19);\r
+ // value[17] = 1; //1 操作成功 2 操作失败\r
+ // value[18] = Calculate_CRC(value,18);\r
+ // sendBleData(value,19);\r
}else\r
{\r
value[17] = 0;\r
}\r
\r
}\r
+\r
+void reply_APP_SportPasueResetCmd(uint16_t time)\r
+{\r
+ char data[3]={0};\r
+ uint32_t data_len=3;\r
+ data[0]=1;\r
+ memcpy(&data[1],&time,2);\r
+ printf("发送训练状态数据%d %d\r\n",data[0],time);\r
+ ble_data_type type={0x01,0x16,data_len,1,1};\r
+ send_big_data(type,data,data_len);\r
+}\r
+\r
+\r
//训练暂停/恢复\r
static void GetSportPasueResetCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
{\r
CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,sizeof(training_ble));\r
\r
}\r
- value[17] = 1;\r
- value[18] = Calculate_CRC(value,18);\r
- sendBleData(value,19);\r
+ // value[17] = 1;\r
+ // value[18] = Calculate_CRC(value,18);\r
+ // sendBleData(value,19);\r
}else\r
{\r
value[17] = 0;\r