From: Caisking <3449750381@qq.com> Date: Mon, 25 Nov 2024 03:24:51 +0000 (+0800) Subject: 睡眠:增加睡眠数据判断 X-Git-Tag: fd230_release_V1.3.102~32 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=35b19d710358700b4899601d9d8ca281ce3408e4;p=mirrors%2FFD230.git 睡眠:增加睡眠数据判断 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp index d0db63df4..89cdf29e1 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp @@ -603,7 +603,7 @@ void HeartModel::handleHighHeartRate() { // 设置佩戴状态 void HeartModel::SetWearStatus() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "佩戴状态 %d %d", + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "佩戴状态 %d %d", uapi_dev_runtime_get_heartrate_detect_status(), unwear_counter_); diff --git a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp index d1765d515..80a4ae000 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepView.cpp @@ -25,72 +25,80 @@ SleepView::~SleepView() { g_pSleepView = nullptr; } -void SleepView::SleepDataRefresh() { - // 获取睡眠数据内存 - SleepModel &sleepModel = SleepModel::GetInstance(); - sleepModel.ReInitData(); - - int sleep_hour = sleepModel.get_sleep_hour(); - int sleep_min = sleepModel.get_sleep_min(); - int total_sleep = sleepModel.get_sleep_total(); - int sleep_goal = sleepModel.get_sleep_goal(); - - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, - "SleepDataRefresh %d %d sleep_goal:%d total_sleep:%d", - sleep_hour, sleep_min, sleep_goal * 60, total_sleep); - - // 补零操作 - std::string hour_str = (sleep_hour < 10) ? "0" + std::to_string(sleep_hour) - : std::to_string(sleep_hour); - std::string min_str = (sleep_min < 10) ? "0" + std::to_string(sleep_min) - : std::to_string(sleep_min); - - // 有数据才刷新 - if (sleep_hour != 0 || sleep_min != 0) { - // 更新时间显示 - if (time_hour != nullptr) { - time_hour->SetText(hour_str.c_str()); - } - if (time_minute != nullptr) { - time_minute->SetText(min_str.c_str()); - } - - // 计算进度百分比,确保目标睡眠时间不为零 - float progress_value = 0.0f; - if (sleep_goal > 0) { - progress_value = - static_cast(total_sleep) / (sleep_goal * 60); // 计算进度 - } - - // 日志输出进度百分比 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Progress value: %.2f%%", - progress_value * 100); // 显示为百分比 - - // 更新进度条 - circleProgress_->SetValue(progress_value * - 100); // 更新进度条值,范围为 0 到 100 - circleProgress_->SetCapType(CAP_ROUND); - } - // 更新时间 - if (sleep_update_time != nullptr) { - std::string update_time = sleepModel.GetUpdateSleepTime(); - if (!update_time.empty()) // 检查返回值是否有效 - { - std::string update_time_str; - // TODO:多国语言 - if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) { - update_time_str = update_time + " 更新"; - } - else { - update_time_str = update_time + " update"; - } - sleep_update_time->SetText(update_time_str.c_str()); - // UpdateLabel(sleep_update_time, sleep_goal, STR_SLEEPMGOAL); // TODO: - // 多国语言支持 - } - } - // 刷新视图 - RootView::GetInstance()->Invalidate(); +void SleepView::SleepDataRefresh() { + // 获取睡眠数据内存 + SleepModel &sleepModel = SleepModel::GetInstance(); + sleepModel.ReInitData(); + + int sleep_hour = sleepModel.get_sleep_hour(); + int sleep_min = sleepModel.get_sleep_min(); + int total_sleep = sleepModel.get_sleep_total(); + int sleep_goal = sleepModel.get_sleep_goal(); + + // 检查是否超过24小时 + if (sleep_hour >= 24) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "异常:睡眠时长超过24小时"); + return; + } + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "SleepDataRefresh %d %d sleep_goal:%d total_sleep:%d", + sleep_hour, sleep_min, sleep_goal * 60, total_sleep); + + // 补零操作 + std::string hour_str = (sleep_hour < 10) ? "0" + std::to_string(sleep_hour) + : std::to_string(sleep_hour); + std::string min_str = (sleep_min < 10) ? "0" + std::to_string(sleep_min) + : std::to_string(sleep_min); + + // 有数据才刷新 + if (sleep_hour != 0 || sleep_min != 0) { + // 更新时间显示 + if (time_hour != nullptr) { + time_hour->SetText(hour_str.c_str()); + } + if (time_minute != nullptr) { + time_minute->SetText(min_str.c_str()); + } + + // 计算进度百分比,确保目标睡眠时间不为零 + float progress_value = 0.0f; + if (sleep_goal > 0) { + progress_value = + static_cast(total_sleep) / (sleep_goal * 60); // 计算进度 + } + + // 日志输出进度百分比 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Progress value: %.2f%%", + progress_value * 100); // 显示为百分比 + + // 更新进度条 + circleProgress_->SetValue(progress_value * + 100); // 更新进度条值,范围为 0 到 100 + circleProgress_->SetCapType(CAP_ROUND); + } + + // 更新时间 + if (sleep_update_time != nullptr) { + std::string update_time = sleepModel.GetUpdateSleepTime(); + if (!update_time.empty()) // 检查返回值是否有效 + { + std::string update_time_str; + // TODO:多国语言 + if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN) { + update_time_str = update_time + " 更新"; + } + else { + update_time_str = update_time + " update"; + } + sleep_update_time->SetText(update_time_str.c_str()); + // UpdateLabel(sleep_update_time, sleep_goal, STR_SLEEPMGOAL); // TODO: + // 多国语言支持 + } + } + + // 刷新视图 + RootView::GetInstance()->Invalidate(); } void SleepView::ClearAll() { 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 52851c7a9..10326b15d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -129,6 +129,9 @@ static void Training_Notify(void *args, const Topic topic, Request *request) { "memcpy_s cywee_activity_result_t fail ret = %d", rets); return; } + // GraphicService::GetInstance()->PostGraphicEvent( + // std::bind(&TraingCardPresenter::send_sport_cmd, + // TraingCardPresenter::GetInstance(), traingbleInfo)); TraingCardPresenter::GetInstance()->send_sport_cmd(traingbleInfo); delete traingbleInfo; } @@ -605,7 +608,7 @@ void TraingModel::SetTimestamp() { // 设置训练 runtime 为 1 训练中 uapi_dev_runtime_set_train_status(1); if (Openingway) { - uapi_ble_connect_param_update(10); + // uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH); } // 更新用户数据 @@ -647,7 +650,7 @@ void TraingModel::SetTimestamp() { // 设置训练 runtime 为 0 训练结束 uapi_dev_runtime_set_train_status(0); if (Openingway) { - uapi_ble_connect_param_update(50); + // uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW); } sportdata->endtime = time; 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 441612136..58526bbfb 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 @@ -413,6 +413,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) { if (cmdstate == ExerciseState::Start) { if ((currentState == ExerciseState::General)) { if (TraingCardView::GetInstance() == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble 开启运动"); uapi_set_screen_on_api(); // 亮屏 NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD); // 设置目标类型和项目有且只有一次 @@ -439,6 +440,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) { handleStartState(); return true; } else { + reply_APP_OpenSportModeCmd(false); // return false; } @@ -447,6 +449,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) { if (cmdstate == ExerciseState::Pause) { if (currentState == ExerciseState::Start || currentState == ExerciseState::Continue) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble 暂停运动"); reply_APP_SportPasueResetCmd(TraingModel::GetInstance()->GetSportTime()); handlePauseState(); return true; @@ -456,6 +459,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) { // 仅在暂停状态下允许恢复运动 if (cmdstate == ExerciseState::Continue && currentState == ExerciseState::Pause) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble 恢复运动"); reply_APP_SportPasueResetCmd(TraingModel::GetInstance()->GetSportTime()); handleContinueState(); return true; @@ -466,6 +470,7 @@ bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) { (currentState == ExerciseState::Start || currentState == ExerciseState::Continue || currentState == ExerciseState::Pause)) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble 结束运动"); uint32_t sport_time = TraingModel::GetInstance()->GetSportTime(); reply_APP_SportStopModeCmd(sport_time); handleEndState(); 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 444ffe56a..65b56fd69 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -424,7 +424,7 @@ void send_big_data(ble_data_type type,char *data, uint16 datalen) buf = ym_malloc(17 + datalen + 1); memset_s(buf,ble_nus_max_data_len,0,17 + datalen + 1); if (buf == NULL && datalen!=0) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"内存分配失败\n"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"内存分配失败\n"); return; } if(type.Packet_id>=2) @@ -536,7 +536,7 @@ void sendtraningstatedata(uint8_t state ,uint16_t time) uint32_t data_len=3; data[0]=state; memcpy(&data[1],&time,2); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"发送训练状态数据%d %d\r\n",data[0],time); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"发送训练状态数据%d %d\r\n",data[0],time); ble_data_type type={0x05,0x50,data_len,1,1}; send_big_data(type,data,data_len); @@ -548,7 +548,7 @@ void sendtraningstateend(void) char data[1]={0}; uint32_t data_len=1; data[0]=0; //[0 结束] - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"发送训练状态结束%d\r\n",data[0]); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"发送训练状态结束%d\r\n",data[0]); ble_data_type type={0x05,0x51,data_len,1,1}; send_big_data(type,data,data_len); @@ -4361,7 +4361,7 @@ static void OpenSportModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to { training_ble_data.sportType= data[0];//运动类型 0 健走 1跑步 2骑行 3 training_ble_data.controlmd= START; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开启指定运动%d\r\n",data[0]); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"开启指定运动%d\r\n",data[0]); CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,sizeof(training_ble)); // value[17] = 1; //1 操作成功 2 操作失败 @@ -4382,7 +4382,7 @@ void reply_APP_SportStopModeCmd(uint16_t time) uint32_t data_len=3; data[0]=1; memcpy(&data[1],&time,2); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"发送训练状态数据%d %d\r\n",data[0],time); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"发送训练状态数据%d %d\r\n",data[0],time); ble_data_type type={0x01,0x0B,data_len,1,1}; send_big_data(type,data,data_len); } @@ -4405,7 +4405,7 @@ static void StopSportModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to training_ble_data.sportType= 4;//运动类型 0 健走 1跑步 2骑行 3 training_ble_data.controlmd= END; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束运动\r\n"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"结束运动\r\n"); CustomEventPublish(TOPIC_EVENT_BLE_TRAINING,(uint8_t*)&training_ble_data,sizeof(training_ble)); // value[17] = 1; //1 操作成功 2 操作失败