From f67a08e570da073cd81c4fee33fd7fafa329132a Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sun, 28 Apr 2024 21:07:03 +0800 Subject: [PATCH] =?utf8?q?=E8=93=9D=E7=89=99=E8=AE=BE=E7=BD=AE=E8=8E=B7?= =?utf8?q?=E5=8F=96=E5=AE=9E=E6=97=B6=E8=AE=AD=E7=BB=83=E9=A2=91=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/config/include/ConfigModel.h | 2 +- .../nativeui/traing/src/TraingModel.cpp | 3 +- .../training_card/src/TraingCardPresenter.cpp | 7 - .../service/ble_service/blemoder/bletest.cpp | 8 + .../service/ble_service/blemoder/bletest.h | 159 +++++++++--------- .../service/ble_service/bleservice/bleEvent.c | 53 +++--- 6 files changed, 117 insertions(+), 115 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h index 9778300f3..7a8ffade2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h @@ -73,11 +73,11 @@ namespace OHOS CONFIGMODEL_ITEM_TRANING_FREQ,//训练实时数据上传频率 CONFIGMODEL_ITEM_TRANING_AUTO,//开启关闭自动获取实时数据 + CONFIGMODEL_ITEM_TRAINING_HEART_MAX,//训练最高心率 CONFIFMOFEL_ITEM_HEARTRATE_DETECTED,//心率周期频率 0(关闭) 1 5 10 CONFIFMOFEL_ITEM_HEARTRATE_MAX,//最大心率 CONFIFMOFEL_ITEM_HEARTRATE_MIN,//最小心率 - CONFIGMODEL_ITEM_TRAINING_HEART_MAX,//训练最高心率 CONFIGMODEL_ITEM_MAX, } ; 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 d9eec5349..6760261b8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -171,7 +171,6 @@ namespace OHOS TraingModel ::TraingModel() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::TraingModel()"); - freq = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ); // sportdata->Initialize(); // 初始化结构体 } TraingModel ::~TraingModel() @@ -709,6 +708,8 @@ namespace OHOS /*判断是否开启自动获取*/ if (ConfigModel::GetInstance()->get_configData_bool(ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO)) { + freq = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ); + PRINT("freq%d\r\n", freq); // 获取实时数据频率 if (sportdata->duration % freq == 0) { PRINT("SendLiveData\r\n"); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp index e78cc37f2..44fd89f69 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp @@ -292,13 +292,6 @@ namespace OHOS TraingModel::GetInstance()->SendLiveData(); // 发送实时数据 [单指令,执行后退出] PRINT("SendLiveData is succeed!\r\n"); return true; - - case SETAUTO: - // 设置开启关闭获取实时数据 [单指令,执行后退出] - ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO, cmd->controlauto); - PRINT("SendTrainingAuto is succeed!\r\n"); - return true; - default: break; } 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 cee04da9f..edcf14975 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -173,7 +173,15 @@ void set_SilentMode(uint8_t falg) p_ConfigModel->SetSilentMode(falg); return; } +/*设置自动获取实时数据开关*/ +void set_traning_updata_auto(uint8_t traingauto) +{ + OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance(); + p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO,traingauto); + return; +} +/*设置获取实时数据频率*/ void set_traning_updata_freq(uint8_t freq) { OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance(); diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h index fbac84801..92b53854e 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h @@ -27,90 +27,83 @@ extern "C" #include "errcode.h" #include "bleEvent.h" -struct ancs_data_info_t -{ - int uid;//uid 消息唯一编号 - int appid;//消息类型:1:微信 2:QQ 3:短信 4:其他 - char title[256];//消息发送者 - char msg[300];//消息内容 - char time[20];//时间戳"20240417T102400" 用T分隔日期和时间,显示需要注意 - int hasCode;//消息hash code -}; - -enum PAIRING -{ - DEVICEBIND = 0,// - DEVICEUNBIND,//设备解绑通知 - DeviceUnBindingRequest,//设备解绑请求(与新设备连接)通知 - REBOOT, - SHUTDOWN -}; -// enum class ExerciseState -// { -// Start = 0, -// End, -// Pause, -// Continue, -// General, -// }; - -/* -0:结束 -1:开始 -2:暂停 -3:恢复 -*/ -enum TRANING -{ - END=0, - START, - STOP, - RECOVER, - SETGOAL,//设置训练目标 - SENDDATA,//获取实时训练数据 - SETAUTO,//开启关闭自动获取实时数据 -}; - -typedef struct -{ - uint8_t sportType; //训练项目 - uint8_t sportTagType; //训练目标类型 - uint32_t sportTag; //训练目标 - uint8_t controlauto; //开启关闭自动获取实时数据 - uint8_t controlmd; //训练控制md -} training_ble; - -void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight); - -void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon); -void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x); - -uint8_t ble_is_ready(void); -void set_ble_falg(bool falg); -uint8_t ble_is_connect_ready(void); -char *addressbook(void); -void addressbookToRead(char*); -void addressbookTowrite(void); -const char *get_health_data_path(void); -void add_addressbookToRead(char *data); - -void set_user_data(msg_user_info_t data); - -int get_goal_stepcount(void); - -int get_vibrationremiander(void); - -int get_SilentMode(void); - -void set_goal_stepcount(uint32_t step); - -void set_vibrationremiander(uint8_t falg); - -void set_SilentMode(uint8_t falg); - -void set_traning_updata_freq(uint8_t freq); + struct ancs_data_info_t + { + int uid; // uid 消息唯一编号 + int appid; // 消息类型:1:微信 2:QQ 3:短信 4:其他 + char title[256]; // 消息发送者 + char msg[300]; // 消息内容 + char time[20]; // 时间戳"20240417T102400" 用T分隔日期和时间,显示需要注意 + int hasCode; // 消息hash code + }; + + enum PAIRING + { + DEVICEBIND = 0, + DEVICEUNBIND, // 设备解绑通知 + DeviceUnBindingRequest, // 设备解绑请求(与新设备连接)通知 + REBOOT, + SHUTDOWN + }; + + /* + 0:结束 + 1:开始 + 2:暂停 + 3:恢复 + */ + enum TRANING + { + END = 0, // 结束训练 + START, // 开始训练 + STOP, // 暂停训练 + RECOVER, // 恢复训练 + SETGOAL, // 设置训练目标 + SENDDATA, // 获取实时训练数据 + }; + + typedef struct + { + uint8_t sportType; // 训练项目 + uint8_t sportTagType; // 训练目标类型 + uint32_t sportTag; // 训练目标 + uint8_t controlmd; // 训练控制md + } training_ble; + + void set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight); + + void set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon); + void set_weather_one_data(int tempMin, int iconDay, int fxDate, int tempMax, char *textDay, int x); + + uint8_t ble_is_ready(void); + void set_ble_falg(bool falg); + uint8_t ble_is_connect_ready(void); + char *addressbook(void); + void addressbookToRead(char *); + void addressbookTowrite(void); + const char *get_health_data_path(void); + void add_addressbookToRead(char *data); + + void set_user_data(msg_user_info_t data); + + int get_goal_stepcount(void); + + int get_vibrationremiander(void); + + int get_SilentMode(void); + + void set_goal_stepcount(uint32_t step); + + void set_vibrationremiander(uint8_t falg); + + void set_SilentMode(uint8_t falg); + /*设置自动获取实时数据开关*/ + void set_traning_updata_auto(uint8_t traingauto); + /*设置获取实时训练数据频率*/ + void set_traning_updata_freq(uint8_t freq); + /*设置训练最高心率*/ + void set_traning_heart_max(uint8_t data); -void set_traning_heart_max(uint8_t data); #ifdef __cplusplus #if __cplusplus } 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 21786e496..10a22468c 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -2528,14 +2528,13 @@ static void SetRealTimeDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t if(Check_CRC(crcnum,len,crcvalue)) { uint8_t autoSportData = crcnum[0];//开关 1开启 0关闭 + /*进行开启关闭操作*/ + printf("进行开启关闭操作 %d\r\n", autoSportData); + set_traning_updata_auto( autoSportData); + value[17] = 1; //1 操作成功 2 操作失败 value[18] = Calculate_CRC(value,18); sendBleData(value,19); - /*进行开启关闭操作*/ - training_ble_data.controlmd = SETAUTO; - training_ble_data.controlauto = autoSportData; - printf("开启自动获取 %d\r\n", training_ble_data.controlauto); - CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,sizeof(training_ble)); }else { value[17] = 0; @@ -2543,7 +2542,7 @@ static void SetRealTimeDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t sendBleData(value,19); } } -//设置训练试试数据采集频率 +//设置训练数据采集频率 static void SetRTDataFreCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) { uint8_t value[19]; @@ -2560,11 +2559,13 @@ static void SetRTDataFreCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *t if(Check_CRC(crcnum,len,crcvalue)) { uint8_t Frequence = crcnum[0];//频率单位是s + /*设置获取频率*/ + printf("设置获取频率 %d\r\n", Frequence); set_traning_updata_freq(Frequence); + value[17] = 1; //1 操作成功 2 操作失败 value[18] = Calculate_CRC(value,18); sendBleData(value,19); - /*设置获取频率*/ }else { value[17] = 0; @@ -3951,21 +3952,26 @@ uint32_t EACH_DATA_LEN=0;//每种数据类型的的长度 -void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len,char *data_item) +void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,char *data_item) { sendbigDataBufState = true;//分包同步数据不允许打断 char *buf=(char *)malloc(sizeof(char)*512); const char *path=NULL; + uint8_t timeBit = 4;//默认是4个字节的时间戳 + uint8_t dataBit = 1;//默认是1个字节的数据 switch (id) { case 0x40://同步心率历史数据 path=get_health_data_path(); + dataBit = 1;//心率数据字节1个字节 uint8_t break; case 0x41://同步血氧历史数据 path=NULL; + dataBit = 1;//血氧数据字节1个字节 uint8_t break; case 0x43: //同步步数历史数据 path=NULL; + dataBit = 4;//心率数据字节4个字节 uint32_t break; case 0x44://同步燃脂时间数据 path=NULL; @@ -4036,13 +4042,14 @@ void Read_file_buf_send_bin_Data(uint8_t num,uint16_t id,uint8_t single_data_len { cJSON * heart_data_item=cJSON_GetArrayItem(heart_data_list,i); uint32 timestamp=cJSON_GetObjectItem(heart_data_item,"timestamp")->valueint; - uint8_t value=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint; - printf("heart_value :%d\r\n",value); + uint32_t value=cJSON_GetObjectItem(heart_data_item,"heart_value")->valueint; + // value =450; + printf("value :%d\r\n",value); printf("timestamp :%d\r\n",timestamp); - memcpy(send_buf+send_len,×tamp,4); - send_len+=4; - memcpy(send_buf+send_len,&value,1); - send_len+=1; + memcpy(send_buf+send_len,×tamp,timeBit); + send_len+=timeBit; + memcpy(send_buf+send_len,&value,dataBit); + send_len+=dataBit; if(((i+1)%num==0 && i!=0) || (item_num-1==i)) { @@ -4083,49 +4090,49 @@ void readDevDataBle(uint8_t *crcnum,uint16_t len,uint8_t crcvalue) EACH_DATA_LEN = HEART_DATA_LEN; num=(ble_nus_max_data_len-18)/HEART_DATA_LEN; printf("同步心率数据,每包最多:%d 条数据\r\n",num); - Read_file_buf_send_bin_Data(num,0x40,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x40,"heart_data_list"); break; case 0x41://同步血氧历史数据 printf("同步血氧数据\r\n"); EACH_DATA_LEN = SPO2_DATA_LEN; num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - Read_file_buf_send_bin_Data(num,0x41,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x41,"heart_data_list"); break; case 0x43: //同步步数历史数据 EACH_DATA_LEN = STEP_DATA_LEN; num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - Read_file_buf_send_bin_Data(num,0x43,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x43,"heart_data_list"); break; case 0x44://同步燃脂时间数据 EACH_DATA_LEN = FATTIME_DATA_LEN; num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - Read_file_buf_send_bin_Data(num,0x44,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x44,"heart_data_list"); break; case 0x45://同步站立历史数据 EACH_DATA_LEN = STAND_DATA_LEN; num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - Read_file_buf_send_bin_Data(num,0x45,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x45,"heart_data_list"); break; case 0x46://同步卡路里历史数据 EACH_DATA_LEN = KCAL_DATA_LEN; num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - Read_file_buf_send_bin_Data(num,0x46,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x46,"heart_data_list"); break; case 0x47://同步距离历史数据 EACH_DATA_LEN = DIS_DATA_LEN; num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - Read_file_buf_send_bin_Data(num,0x47,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x47,"heart_data_list"); 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,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x49,"heart_data_list"); break; case 0x4b://睡眠历史数据 EACH_DATA_LEN = DIS_DATA_LEN; num=(ble_nus_max_data_len-18)/EACH_DATA_LEN; - Read_file_buf_send_bin_Data(num,0x4b,EACH_DATA_LEN,"heart_data_list"); + Read_file_buf_send_bin_Data(num,0x4b,"heart_data_list"); break; default: -- 2.17.1