sendBleData(sendBuf,19);\r
}\r
\r
-static void jsonCheck_time(uint8_t *buf)//json 格式解析\r
+static uint8_t jsonCheck_time(uint8_t *buf)//json 格式解析\r
{\r
char time_data[24];\r
memset(time_data,0,24);\r
cJSON* root = cJSON_Parse((const char *)json);\r
if (root == NULL) {\r
printf("时间 JSON解析错误\n");\r
- return;\r
+ return 1;\r
}\r
char *locations;\r
int year = 1970;\r
sprintf((char *)time_data,"%d-%d-%d %d:%d:%d",year+2000,month,day,hour,minute,second);\r
set_system_time(time_data);\r
cJSON_Delete(root);\r
+ return 2;\r
}\r
\r
\r
\r
if(Check_CRC(crcnum,len,crcvalue))\r
{\r
- sendBuf[17] = 1;\r
+ \r
+ uint8_t *data;\r
+ data = crcnum;\r
+ uint8_t set_ok = 1;\r
+ set_ok = jsonCheck_time(data);\r
+ sendBuf[17] = set_ok;\r
+ sendBuf[18] = Calculate_CRC(sendBuf,18);\r
+ sendBleData(sendBuf,19);\r
+ }\r
+ else\r
+ {\r
+ sendBuf[17] = 0;\r
sendBuf[18] = Calculate_CRC(sendBuf,18);\r
sendBleData(sendBuf,19);\r
+ }\r
+ \r
+}\r
+\r
+static uint8_t jsonCheck_targetparam(uint8_t *buf)//训练目标参数\r
+{\r
+ \r
+ uint8_t *json;\r
+ json = buf;\r
+ cJSON* root = cJSON_Parse((const char *)json);\r
+ if (root == NULL) {\r
+ printf("时间 JSON解析错误\n");\r
+ return 1;\r
+ }\r
+ // {\r
+ // "ty":0,\r
+ // "di":5000,\r
+ // }\r
+ cJSON* ty = cJSON_GetObjectItem(root, "ty");//目标类型\r
+ if (cJSON_IsNumber(ty)) {\r
+ printf("ty: %d\n", ty->valueint);\r
+ \r
+ }\r
+ cJSON* di = cJSON_GetObjectItem(root, "di");//目标距离\r
+ if (cJSON_IsNumber(di)) {\r
+ printf("di: %d\n", di->valueint);\r
+ \r
+ }\r
+ cJSON* ca = cJSON_GetObjectItem(root, "ca");//目标卡路里\r
+ if (cJSON_IsNumber(di)) {\r
+ printf("ca: %d\n", ca->valueint);\r
+ \r
+ }\r
+ cJSON* tm = cJSON_GetObjectItem(root, "tm");//目标时间\r
+ if (cJSON_IsNumber(tm)) {\r
+ printf("tm: %d\n", tm->valueint);\r
+ \r
+ }\r
+ cJSON* st = cJSON_GetObjectItem(root, "st");//目标步数\r
+ if (cJSON_IsNumber(st)) {\r
+ printf("st: %d\n", st->valueint);\r
+ }\r
+ cJSON_Delete(root);\r
+ return 2;\r
+}\r
+\r
+\r
+\r
+void GetTarinTarget(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取时间\r
+{\r
+ uint32_t tmp = 1;\r
+ uint16_t tmp_data = 1;\r
+ uint8_t sendBuf[19];\r
+ memset(sendBuf,0,19);\r
+ sendBuf[0] = 0x72;\r
+ sendBuf[1] = 0x02;\r
+ sendBuf[2] = 0x04;\r
+ memcpy(sendBuf+3,&tmp,4);\r
+ memcpy(sendBuf+7,&tmp,4);\r
+ memcpy(sendBuf+11,&tmp,4);\r
+ memcpy(sendBuf+15,&tmp_data,2);\r
+ \r
+ if(Check_CRC(crcnum,len,crcvalue))\r
+ {\r
uint8_t *data;\r
data = crcnum;\r
- jsonCheck_time(data);\r
+ uint8_t set_ok = 1;\r
+ set_ok = jsonCheck_targetparam(data);\r
+ sendBuf[17] = set_ok;\r
+ sendBuf[18] = Calculate_CRC(sendBuf,18);\r
+ sendBleData(sendBuf,19);\r
}\r
else\r
{\r
}\r
\r
}\r
+\r
+\r
static void jsonCheck_alarm(uint8_t *buf)//json 解析闹钟数据\r
{\r
uint8_t *json;\r
\r
}\r
\r
-static void jsonCheck_weather(uint8_t *buf)//json 格式解析 天气数据\r
+static uint8_t jsonCheck_weather(uint8_t *buf)//json 格式解析 天气数据\r
{\r
uint8_t *json;\r
json = buf;\r
cJSON* root = cJSON_Parse((const char *)json);\r
if (root == NULL) {\r
printf("天气 JSON解析错误\n");\r
- return;\r
+ return 1;\r
}\r
cJSON *now_cjson = cJSON_GetObjectItem(root, "now");\r
\r
// }\r
cJSON_Delete(root);\r
printf("weather data!!!!!!!!!!end\r\n");\r
+ return 2;\r
}\r
\r
\r
\r
if(Check_CRC(crcnum,len,crcvalue))\r
{\r
- sendBuf[17] = 1;\r
+ uint8_t check = 1;\r
+ check = jsonCheck_weather(crcnum);\r
+ sendBuf[17] = check;\r
sendBuf[18] = Calculate_CRC(sendBuf,18);\r
sendBleData(sendBuf,19);\r
- \r
- jsonCheck_weather(crcnum);\r
}\r
else\r
{\r
case SET_BLE_NAME_CMD:\r
getPhoneInfo_test();\r
break;\r
- case SET_TRAIN_TARGET_CMD:\r
-\r
+ case SET_TRAIN_TARGET_CMD://训练目标\r
+ GetTarinTarget(typeID,data,datalen,totalData,crcvalue);\r
break;\r
case SET_address_book_CMD:\r
getAPPaddressbook(typeID,data,datalen,totalData,crcvalue);\r
memcpy(value+7,&tmp,4);\r
memcpy(value+11,&tmp,4);\r
memcpy(value+15,&tmp_data,2);\r
- if(Check_CRC(crcnum,len,crcvalue))\r
+ if(1)\r
{\r
msg_drink_param_info_t drink_on_t;\r
memset(&drink_on_t,0,sizeof(msg_drink_param_info_t));\r
value[17] = drink_on_t.drink_on;// \r
value[18] = Calculate_CRC(value,18);\r
sendBleData(value,19);\r
- }else\r
- {\r
- value[17] = 0;\r
- value[18] = Calculate_CRC(value,18);\r
- sendBleData(value,19);\r
}\r
}\r
\r
memcpy(value+7,&datalen,4);\r
memcpy(value+11,&tmp,4);\r
memcpy(value+15,&tmp_data,2);\r
- if(Check_CRC(crcnum,len,crcvalue))\r
+ if(1)\r
{\r
uint8_t sleepTime = 0;//作息时间设定 0关闭 1开启\r
uint8_t bedTimeHour = 0;//就寝时间\r
memcpy(value+7,&tmp,4);\r
memcpy(value+11,&tmp,4);\r
memcpy(value+15,&tmp_data,2);\r
- if(Check_CRC(crcnum,len,crcvalue))\r
+ if(1)\r
{\r
uint8_t sleepTime = 0;//作息时间设定 0关闭 1开启\r
uint8_t bedTimeHour = 0;//就寝时间\r
memcpy(value+7,&datalen,4);\r
memcpy(value+11,&tmp,4);\r
memcpy(value+15,&tmp_data,2);\r
- if(Check_CRC(crcnum,len,crcvalue))\r
+ if(1)\r
{\r
uint32_t targetStep = 10000;//目标步数 4字节\r
uint8_t ringOn = 0;//铃声提醒\r
memcpy(value+7,&datalen,4);\r
memcpy(value+11,&tmp,4);\r
memcpy(value+15,&tmp_data,2);\r
- if(Check_CRC(crcnum,len,crcvalue))\r
+ if(1)\r
{\r
uint16_t targetKcal = 4556;//目标卡路里\r
uint8_t targetKm = 0;//目标里程\r
uint8_t bleSendTypeID=0; //发送的数据类型\r
//发送读出来的设备数据to APP\r
uint16_t max_mtu_szie_data_len = 200;\r
-\r
+uint32_t EACH_DATA_LEN=0;//每种数据类型的的长度\r
void sendReadData(void)\r
{\r
sendbigDataBufState = true;//分包同步数据不允许打断\r
\r
//498\r
// printf("startDataLen:%d totalEnd:%d ble_nus_max_data_len %d\r\n",startDataLen,totalEnd,ble_nus_max_data_len);\r
- if( startDataLen+STEP_DATA_LEN > ble_nus_max_data_len-3){\r
+ if( startDataLen+EACH_DATA_LEN > ble_nus_max_data_len-3){\r
// printf("startDataLen111111111111:%d totalEnd:%d crcvalue:%d\r\n",startDataLen,totalEnd,crcvalue);\r
totalEnd = totalEnd+startDataLen;//240 300-240 \r
\r
else{\r
if(packCount > 0)\r
{\r
- totalEnd = totalEnd+STEP_DATA_LEN;//第二包开始只加每个数据类型的总的字节数据大小 比如步数 数据类型 时间 步数 总共是8个就加8\r
+ totalEnd = totalEnd+EACH_DATA_LEN;//第二包开始只加每个数据类型的总的字节数据大小 比如步数 数据类型 时间 步数 总共是8个就加8\r
// printf("pack1 startDataLen22222222222:%d totalEnd:%d crcvalue:%x\r\n",startDataLen,totalEnd,crcvalue);\r
if((totalEnd-17) >= dataLen && totalEnd > 17)\r
{\r
if(Check_CRC(crcnum+17,len-18,crcvalue))\r
{\r
bleSendTypeID=crcnum[2];\r
-\r
+ switch (crcnum[2])\r
+ {\r
+ case 0x40://同步心率历史数据\r
+ EACH_DATA_LEN = HEART_DATA_LEN;\r
+ break;\r
+ case 0x41://同步血氧历史数据\r
+ EACH_DATA_LEN = SPO2_DATA_LEN;\r
+ break;\r
+ case 0x43: //同步步数历史数据\r
+ EACH_DATA_LEN = STEP_DATA_LEN;\r
+ break;\r
+ case 0x44://同步燃脂时间数据\r
+ EACH_DATA_LEN = FATTIME_DATA_LEN;\r
+ break;\r
+ case 0x45://同步站立历史数据\r
+ EACH_DATA_LEN = STAND_DATA_LEN;\r
+ break;\r
+ case 0x46://同步卡路里历史数据\r
+ EACH_DATA_LEN = KCAL_DATA_LEN;\r
+ break;\r
+ case 0x47://同步距离历史数据\r
+ EACH_DATA_LEN = DIS_DATA_LEN;\r
+ break;\r
+ case 0x49://同步基础训练历史数据\r
+ EACH_DATA_LEN = DIS_DATA_LEN;\r
+ break;\r
+ case 0x4b://睡眠历史数据\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
sendReadData();\r
- // switch (crcnum[2])\r
- // {\r
- // case 0x40://同步心率历史数据\r
- // heartDataCmd(crcnum,len);\r
- // break;\r
- // case 0x41://同步血氧历史数据\r
- // spo2DataCmd(crcnum,len);\r
- // break;\r
- // case 0x43: //同步步数历史数据\r
- // stepDataCmd(crcnum,len);\r
- // break;\r
- // case 0x44://同步燃脂时间数据\r
- // burntimeDataCmd(crcnum,len);\r
- // break;\r
- // case 0x45://同步站立历史数据\r
- // standDataCmd(crcnum,len);\r
- // break;\r
- // case 0x46://同步卡路里历史数据\r
- // kcalDataCmd(crcnum,len);\r
- // break;\r
- // case 0x47://同步距离历史数据\r
- // disDataCmd(crcnum,len);\r
- // break;\r
- // case 0x49://同步基础训练历史数据\r
- // trainiHistoryDataCmd(crcnum,len);\r
- // break;\r
- // case 0x4b://睡眠历史数据\r
- // sleepDataCmd(crcnum,len);\r
- // break;\r
- // default:\r
- // break;\r
- // }\r
- \r
-\r
}else{\r
crcnum[0] = 0x72;\r
crcnum[len-1] = 0;\r