#include "health_service.h"
#include "phoneaddressmodel.h"
#include "LanguageInit.h"
+#include "ConfigModel.h"
+// #include "TraingCardPresenter.h"
+
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#include "custom_utils.h"
#include "string.h"
#include "bleService.h"
-
+#include "bletest.h"
void add_addressbookToRead(char *data)//转化用于·c文件
{
OHOS::read_addressbook_bin_file();
return;
}
+
+void addressbookTowrite(void)//转化用于·c文件
+{
+ OHOS::write_addressbook_bin_flle();
+ return;
+}
+
// struct Weather_data
// {
// int humidity;
// };
uint8_t ble_falg=0;
+void set_user_data(msg_user_info_t data)
+{
+
+ OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
+ printf("高:%d\r\n",data.height);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT,data.height);
+ printf("重:%d\r\n",data.weight);
+ p_ConfigModel->set_condigData_Double(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_WEIGHT,(double)data.weight);
+ printf("性别:%d\r\n",data.gender);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_SEX,data.gender);
+ printf("年纪:%d\r\n",data.age);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data.age);
+ printf("目标步数:%d\r\n",data.target_step);
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,data.target_step);
+
+ /*
+ 目标站立
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data.target_stand);
+ 目标燃脂
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data.fat_time);
+ 时制
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data.timeformat);
+ */
+
+}
+
+int get_goal_stepcount(void)
+{
+ OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
+ return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT);
+}
+
+int get_vibrationremiander(void)
+{
+ OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
+ return p_ConfigModel->GetVibrationReminder();
+}
+
+int get_SilentMode(void)
+{
+ OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
+ return p_ConfigModel->GetSilentMode();
+}
+
+void set_goal_stepcount(uint32_t step)
+{
+ OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
+
+ p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,step);
+ return ;
+}
+
+void set_vibrationremiander(uint8_t falg)
+{
+ OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
+ p_ConfigModel->SetVibrationReminder(falg);
+ return ;
+}
+
+void set_SilentMode(uint8_t falg)
+{
+ OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
+ p_ConfigModel->SetSilentMode(falg);
+ return;
+}
+
+
+
uint8_t ble_is_ready(void)
{
return ble_falg;
drink_on_t.drink_on = 1;\r
memcpy(msg_data,&drink_on_t,sizeof(msg_drink_param_info_t));\r
break;\r
+\r
+ case USER_INFOR_CMD:\r
+ // memset(&user_info,0,sizeof(user_info));\r
+ // memcpy(&user_info,msg_data,sizeof(user_info));\r
+ set_user_data(user_info);\r
+ break;\r
+\r
\r
default:\r
break;\r
svr_ble_bt_gatts_noyify(buf,len);\r
}\r
}\r
+\r
+void send_big_data(uint8_t flag,char *data,int datalen,int total,uint32_t Packet_id,uint32_t packet_total,uint8_t type_id)\r
+{\r
+ uint8_t buf[512]={0};\r
+ buf[0]=0x72;\r
+ buf[1]=0x01;\r
+ buf[2]=type_id;\r
+ memcpy(buf+3,&packet_total,4);\r
+ memcpy(buf+7,&total,4);\r
+ memcpy(buf+11,&Packet_id,4);\r
+ memcpy(buf+15,&datalen,2);\r
+ if(data==NULL)\r
+ {\r
+ buf[17+datalen] = Calculate_CRC_Big((uint8_t *)data,datalen);\r
+ if(flag)\r
+ sendDataNow(buf,17+datalen+1);\r
+ else\r
+ sendBleData(buf,17+datalen+1);\r
+\r
+ }else\r
+ {\r
+ memcpy(buf+17,data,datalen);\r
+ buf[17+datalen] = Calculate_CRC_Big((uint8_t *)data,datalen);\r
+ printf("xxxxxxxxxxxxx\r\n");\r
+ if(flag)\r
+ sendDataNow(buf,17+datalen+1);\r
+ else\r
+ sendBleData(buf,17+datalen+1);\r
+\r
+ }\r
+ \r
+\r
+ // }\r
+ \r
+}\r
+\r
+void sendtraningdata(msg_get_train_data_info_t *data)\r
+{\r
+ cJSON* dataJSON=cJSON_CreateObject();\r
+ cJSON_AddNumberToObject(dataJSON,"st",data->st);\r
+ cJSON_AddNumberToObject(dataJSON,"hr",data->hr);\r
+ cJSON_AddNumberToObject(dataJSON,"ca",data->ca);\r
+ cJSON_AddNumberToObject(dataJSON,"di",data->di);\r
+ cJSON_AddNumberToObject(dataJSON,"stp",data->stp);\r
+ cJSON_AddNumberToObject(dataJSON,"ti",data->ti);\r
+ char *jsonString = cJSON_PrintUnformatted(dataJSON);\r
+ uint32_t data_len=strlen(jsonString);\r
+ printf("发送训练实时数据%d %s\r\n",data_len,jsonString);\r
+ send_big_data(0,jsonString,data_len,data_len,1,1,0x15);\r
+ \r
+ \r
+}\r
//发送ble数据\r
uint8_t phone_mac[6];//手机下发的mac地址 第一次连接为空 \r
uint8_t parie_mac[6];//配对完成之后的的mac地址\r
func(WRITE_FLASH_DATA,SET_DRINK_PARAM_CMD,&drink_info,sizeof(msg_drink_set_param_info_t));\r
}\r
\r
+ sendBuf[17] = 1;\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
+//APP设置步数目标\r
+void SetsteptargetParamCmd(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] = 0x16;\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
+ \r
+ uint32_t targetStep;\r
+ memcpy(&targetStep,crcnum,4);\r
+ uint8_t ringOn=crcnum[5];\r
+ uint8_t vibration=crcnum[6];\r
+ uint8_t notify=crcnum[7];\r
+ printf("设置步数:%d\r\n",targetStep);\r
+ set_goal_stepcount(targetStep);\r
+\r
+ set_vibrationremiander(vibration);\r
+\r
+ set_SilentMode(ringOn);\r
+\r
+\r
sendBuf[17] = 1;\r
sendBuf[18] = Calculate_CRC(sendBuf,18);\r
sendBleData(sendBuf,19);\r
}\r
\r
}\r
-//获取用户数据 app下发的\r
+//APP下发设置用户数据\r
void getUserInfo(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
{\r
uint8_t value[19];\r
user_info.age = crcnum[0];\r
user_info.gender = crcnum[1];\r
user_info.height = crcnum[2];\r
- memcpy(crcnum+3,&user_info.weight,2);\r
- memcpy(crcnum+5,&user_info.target_step,4);\r
- memcpy(crcnum+9,&user_info.fat_time,2);\r
+ memcpy(&user_info.weight,crcnum+3,2);\r
+ //memcpy(crcnum+3,&user_info.weight,2);\r
+ memcpy(&user_info.target_step,crcnum+5,4);\r
+ //memcpy(crcnum+5,&user_info.target_step,4);\r
+ memcpy(&user_info.fat_time,crcnum+9,2);\r
user_info.target_stand = crcnum[11];\r
user_info.timeformat = crcnum[12];\r
if(func != NULL)\r
case SET_DRINK_PARAM_CMD://app下发的喝水提醒设置\r
GetDrinkSetParamCmd(typeID,data,datalen,totalData,crcvalue);\r
break;\r
+ case SET_STEP_TARGET_CMD://app下发的步数目标设置\r
+ SetsteptargetParamCmd(typeID,data,datalen,totalData,crcvalue);\r
+ break;\r
+ \r
case SET_WEATHER_DATA_CMD://app下发的天气数据\r
GetWeatherCmd(typeID,data,datalen,totalData,crcvalue);\r
break;\r
memcpy(value+15,&tmp_data,2);\r
if(1)\r
{\r
- uint32_t targetStep = 10000;//目标步数 4字节\r
- uint8_t ringOn = 0;//铃声提醒\r
- uint8_t vibration = 0;//振动提醒\r
- uint8_t notify = 0;//通知提醒\r
+ uint32_t targetStep = get_goal_stepcount();//目标步数 4字节\r
+ printf("目标步数:%d\r\n",targetStep);\r
+ uint8_t ringOn = get_SilentMode();//铃声提醒\r
+ uint8_t vibration = get_vibrationremiander();//振动提醒\r
+ uint8_t notify = 1;//通知提醒\r
memcpy(&value[17],&targetStep,4);//目标步数\r
value[21] = ringOn;//铃声提醒\r
value[22] = vibration;//振动提醒\r
uint16_t max_mtu_szie_data_len = 200;\r
uint32_t EACH_DATA_LEN=0;//每种数据类型的的长度\r
\r
-void send_big_data(uint8_t flag,char *data,int datalen,int total,uint32_t Packet_id,uint32_t packet_total,uint8_t type_id)\r
-{\r
- uint8_t buf[512]={0};\r
- buf[0]=0x72;\r
- buf[1]=0x01;\r
- buf[2]=type_id;\r
- memcpy(buf+3,&packet_total,4);\r
- memcpy(buf+7,&total,4);\r
- memcpy(buf+11,&Packet_id,4);\r
- memcpy(buf+15,&datalen,2);\r
- // if(flag)\r
- // {\r
- // uint8_t crcvalue=Calculate_CRC_Big((uint8_t *)data,datalen);\r
- // // uint16_t t= ble_nus_max_data_len -17 -crcvalue;\r
- // // memcpy(buf+17,&t,2);\r
- // memcpy(buf+17,data,datalen);\r
- \r
- // buf[17+datalen] = crcvalue;\r
- // sendDataNow(buf,17+datalen+1);\r
-\r
- // }\r
- // else\r
- // {\r
- if(data==NULL)\r
- {\r
- buf[17+datalen] = Calculate_CRC_Big((uint8_t *)data,datalen);\r
- sendDataNow(buf,17+datalen+1);\r
\r
- }else\r
- {\r
- memcpy(buf+17,data,datalen);\r
- buf[17+datalen] = Calculate_CRC_Big((uint8_t *)data,datalen);\r
- printf("xxxxxxxxxxxxx\r\n");\r
- sendDataNow(buf,17+datalen+1);\r
-\r
- }\r
- \r
-\r
- // }\r
- \r
-}\r
\r
void Read_spo2_file_buf_Data(uint8_t num)\r
{\r
FILE *fp= fopen(path,"r+");\r
if(fp==NULL)\r
{\r
- send_big_data(0,NULL,0,0,1,1,0x40);\r
+ send_big_data(1,NULL,0,0,1,1,0x41);\r
printf("打开文件失败%s\r\n",path);\r
return;\r
}\r
if(item_num-1==i)\r
{\r
printf("sendbuf :%s sendbuf_len%d\r\n",send_buf,send_len);\r
- send_big_data(0,send_buf,send_len,item_num*5,Packet_id,packet_total,0x40);\r
+ send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x41);\r
free(send_buf);\r
sendbigDataBufState=false;\r
\r
}else\r
{\r
- send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x40);\r
+ send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x41);\r
free(send_buf);\r
send_buf=(char *)malloc(sizeof(char)*HEART_DATA_LEN);\r
send_len=0;\r
FILE *fp= fopen(path,"r+");\r
if(fp==NULL)\r
{\r
- send_big_data(0,NULL,0,0,1,1,0x40);\r
+ send_big_data(1,NULL,0,0,1,1,0x40);\r
return;\r
}\r
int ret=fread(buf,1,512,fp);\r
if(item_num-1==i)\r
{\r
printf("sendbuf :%s sendbuf_len%d\r\n",send_buf,send_len);\r
- send_big_data(0,send_buf,send_len,item_num*5,Packet_id,packet_total,0x40);\r
+ send_big_data(1,send_buf,send_len,item_num*5,Packet_id,packet_total,0x40);\r
free(send_buf);\r
sendbigDataBufState=false;\r
\r
case 0x41://同步血氧历史数据\r
printf("同步血氧数据\r\n");\r
EACH_DATA_LEN = SPO2_DATA_LEN;\r
- Read_spo2_file_buf_Data(0x41);\r
+ Read_spo2_file_buf_Data(num);\r
break;\r
case 0x43: //同步步数历史数据\r
EACH_DATA_LEN = STEP_DATA_LEN;\r