From 8e852f055068d10c2a7c919c91851ae05b5bb4b0 Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Wed, 25 Jun 2025 13:49:04 +0800 Subject: [PATCH] =?utf8?q?=E5=88=A0=E9=99=A4model=E5=86=97=E4=BD=99?= =?utf8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../wearable/fd230app/CMakeLists.txt | 2 - .../nativeui/bloodpressure/include/BPModel.h | 147 +++++----- .../nativeui/bloodpressure/src/BPModel.cpp | 63 ++++- .../fatiguelevel/include/FatigueModel.h | 60 ----- .../fatiguelevel/include/FatiguePresenter.h | 2 +- .../fatiguelevel/src/FatigueModel.cpp | 251 ------------------ .../fatiguelevel/src/FatiguePresenter.cpp | 11 +- .../nativeui/stress/include/StressModel.h | 60 ----- .../nativeui/stress/include/StressPresenter.h | 2 +- .../nativeui/stress/src/StressModel.cpp | 251 ------------------ .../nativeui/stress/src/StressPresenter.cpp | 11 +- 11 files changed, 150 insertions(+), 710 deletions(-) delete mode 100644 code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueModel.h delete mode 100644 code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueModel.cpp delete mode 100644 code/sdk/application/wearable/fd230app/nativeui/stress/include/StressModel.h delete mode 100644 code/sdk/application/wearable/fd230app/nativeui/stress/src/StressModel.cpp diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 1d6f51836..9d7b92efb 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -277,7 +277,6 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressMeasureView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressUnderMeasureView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressAnalysisView.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressModel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressResultView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressWearView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/stress/src/StressFailView.cpp @@ -288,7 +287,6 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueMeasureView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueUnderMeasureView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueAnalysisView.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueModel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueResultView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueWearView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/fatiguelevel/src/FatigueFailView.cpp diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h index 25815fc82..84f44b948 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h @@ -5,76 +5,95 @@ #include #include +#define SBP_VALUE 120 +#define DBP_VALUE 80 -#define SBP_VALUE 120 -#define DBP_VALUE 80 +namespace OHOS +{ + // 检测状态 + enum class BPState + { + // 结束检测 + BP_End = 0, + // 第一次校准血压中 30s + BP_CALIBRATING_FIRSTTIME, + // 第二次校准血压中 30s + BP_CALIBRATING_SECONDTIME, + // 校准分析中 5s + BP_CALIBRATING_ANGLYSIS, + // 检测血压中 30s + BP_DETECTING, + // 压力测量中 + STRESS_MEASURE, + // 疲劳度测量中 + FATIGUE_MEASURE, + // ECG测量中 + ECG_MEASURE, + // 情绪测量中 + EMO_MEASURE, + // 压力分析中 + STRESS_ANALYSIS, + // 疲劳度分析中 + FATIGUE_ANALYSIS, + // ECG分析中 + ECG_ANALYSIS, + // 情绪分析中 + EMO_ANALYSIS, + // 普通状态 + BP_NORMAL, + // 暂停检测 + BP_PAUSE, -namespace OHOS { -// 血压检测状态 -enum class BPState { - //结束检测 - BP_End = 0, - //第一次校准血压中 30s - BP_CALIBRATING_FIRSTTIME, - //第二次校准血压中 30s - BP_CALIBRATING_SECONDTIME, - //校准分析中 5s - BP_CALIBRATING_ANGLYSIS, - //检测血压中 30s - BP_DETECTING, - //普通状态 - BP_NORMAL, - //暂停检测 - BP_PAUSE, + BP_STATE_MAX, + }; + // 血压检测结果 + enum class BPRESULT + { + NOT_TESTED = 0, // 未检测 + SUCCESS, // 检测成功 + NOT_WORN, // 未佩戴检测 + TIMEOUT, // 检测超时 + HIGH_RESULT, // 检测结果过高 + LOW_RESULT, // 检测结果过低 + INVALID_DATA // 无效数据 + }; - BP_STATE_MAX, -}; -// 血压检测结果 -enum class BPRESULT { - NOT_TESTED = 0, // 未检测 - SUCCESS, // 检测成功 - NOT_WORN, // 未佩戴检测 - TIMEOUT, // 检测超时 - HIGH_RESULT, // 检测结果过高 - LOW_RESULT, // 检测结果过低 - INVALID_DATA // 无效数据 -}; + enum class BP_VALUE_TYPE + { + SBP = 0, + DBP, + }; -enum class BP_VALUE_TYPE { - SBP = 0, - DBP, -}; +#define BP_CHECK_TIME_MAX 30 //测量所需时间 +#define BP_ANLYSISI_TIME_MAX 5 //分析所需时间 + class BPModel + { + public: + BPModel(); + ~BPModel(); + static BPModel *GetInstance(); + // 获取第几次校准 + int16_t GetCalibrationFlag(); + void SetCalibrationFlag(int value); + // 获取当前时间年月日时分字符串 + std::string GetCurrentTimeStr(); + // 当前状态管理 + void BP_SetState(BPState state); + BPState GetCurrentState(); + // 控制血压检测 + void BP_Control(BPState state); + void BP_SetValue(BP_VALUE_TYPE type, bool set_value); + int16_t GetValue(BP_VALUE_TYPE type); -#define BP_CHECK_TIME_MAX 30 -#define BP_ANLYSISI_TIME_MAX 5 -class BPModel { -public: - BPModel(); - ~BPModel(); - static BPModel *GetInstance(); - //获取第几次校准 - int16_t GetCalibrationFlag(); - void SetCalibrationFlag(int value); - //获取当前时间年月日时分字符串 - std::string GetCurrentTimeStr(); - //当前状态管理 - void BP_SetState(BPState state); - BPState GetCurrentState(); - //控制血压检测 - void BP_Control(BPState state); - void BP_SetValue(BP_VALUE_TYPE type, bool set_value); - int16_t GetValue(BP_VALUE_TYPE type); + /////////////////////////////////////////////// + void BP_StartTimer(uint32_t interval = 1 * 1000); // 1s定时器 + void BP_StopTimer(void); - /////////////////////////////////////////////// - void BP_StartTimer(uint32_t interval = 1*1000);// 1s定时器 - void BP_StopTimer(void); - - -private: - BPState current_state = BPState::BP_NORMAL; - int16_t custom_sbp = SBP_VALUE; - int16_t custom_dbp = DBP_VALUE; -}; + private: + BPState current_state = BPState::BP_NORMAL; + int16_t custom_sbp = SBP_VALUE; + int16_t custom_dbp = DBP_VALUE; + }; } // namespace OHOS #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp index 6c4de65f9..f0e6f5fab 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp @@ -10,6 +10,11 @@ // #include "bloodpressure/include/BPDetectResultView.h" // #include "bloodpressure/include/BPDetectEndView.h" +#include "stress/include/StressMainView.h" +#include "stress/include/StressAnalysisView.h" +#include "fatiguelevel/include/FatigueMainView.h" +#include "fatiguelevel/include/FatigueAnalysisView.h" + #include "wearable_log.h" #include #include @@ -59,7 +64,7 @@ namespace OHOS return &instance; } int16_t BPModel::GetCalibrationFlag() { return CalibrationFlag; } - void BPModel::SetCalibrationFlag(int value) { CalibrationFlag = value; } + void BPModel::SetCalibrationFlag(int value) { CalibrationFlag = value; } // 获取当前时间戳字符串 std::string BPModel::GetCurrentTimeStr() @@ -118,6 +123,10 @@ namespace OHOS } case BPState::BP_CALIBRATING_FIRSTTIME: case BPState::BP_CALIBRATING_SECONDTIME: + case BPState::STRESS_MEASURE: + case BPState::FATIGUE_MEASURE: + case BPState::ECG_MEASURE: + case BPState::EMO_MEASURE: case BPState::BP_DETECTING: { /* @@ -134,6 +143,10 @@ namespace OHOS break; } case BPState::BP_CALIBRATING_ANGLYSIS: + case BPState::STRESS_ANALYSIS: + case BPState::FATIGUE_ANALYSIS: + case BPState::ECG_ANALYSIS: + case BPState::EMO_ANALYSIS: { BP_StartTimer(); ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 @@ -204,37 +217,63 @@ namespace OHOS if (Time < 0) { BPModel::GetInstance()->BP_StopTimer(); - BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL); - if (BPMainView::GetInstance() && CalibrationFlag == 0) // 第一次校准完 + if (BPMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::BP_CALIBRATING_FIRSTTIME) // 血压第一次校准完 { - BPMainView::GetInstance()->ChangeView(BPUNDERCALIBRATIONVIEW,BPCALIBRATIONMINDVIEW); + BPMainView::GetInstance()->ChangeView(BPUNDERCALIBRATIONVIEW, BPCALIBRATIONMINDVIEW); + BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL); CalibrationFlag++; } - else if (BPMainView::GetInstance() &&(CalibrationFlag == 1 || CalibrationFlag == 3)) // 分析完 + else if (BPMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::BP_CALIBRATING_ANGLYSIS) // 血压分析完 { // 校准成功 BPMainView::GetInstance()->ChangeView(BPRESULTANALYSISVIEW, BPCALIBRATIONPASSVIEW); + BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL); // 校准失败 if (CalibrationFlag == 1) CalibrationFlag++; else CalibrationFlag = 0; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CalibrationFlag:%d",CalibrationFlag); } - else if (BPMainView::GetInstance() && CalibrationFlag == 2) // 第二次校准完 + else if (BPMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::BP_CALIBRATING_SECONDTIME) // 血压第二次校准完 { BPMainView::GetInstance()->ChangeView(BPSECUNDERCALIBRATIONVIEW, BPCALIBRATIONMINDVIEW); + BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL); CalibrationFlag++; } - else if (BPDetectionView::GetInstance()) + else if (BPDetectionView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::BP_DETECTING) // 血压检测完 { // 测试成功 -> 进入结果界面 BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, RESULT_BPVIEW); + BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL); // 测试失败 -> 进入错误界面 // BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, // ERROR_BPVIEW); } + else if (StressMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::STRESS_MEASURE) // 压力检测完 + { + BPModel::GetInstance()->BP_Control(BPState::STRESS_ANALYSIS); + StressMainView::GetInstance()->ChangeView(STRESSUNDERMEASUREVIEW, STRESSANALYSISEVIEW); + StressAnalysisView::GetInstance()->startorstopAnalysisAni(true); + } + else if (StressMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::STRESS_ANALYSIS) // 压力分析完 + { + StressMainView::GetInstance()->ChangeView(STRESSANALYSISEVIEW, STRESSRESULTVIEW); + BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL); + StressAnalysisView::GetInstance()->startorstopAnalysisAni(false); + } + else if (FatigueMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::STRESS_ANALYSIS) // 疲劳度检测完 + { + BPModel::GetInstance()->BP_Control(BPState::FATIGUE_ANALYSIS); + FatigueMainView::GetInstance()->ChangeView(FATIGUEUNDERMEASUREVIEW, FATIGUEANALYSISEVIEW); + FatigueAnalysisView::GetInstance()->startorstopAnalysisAni(true); + } + else if (FatigueMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::STRESS_ANALYSIS) // 疲劳度分析完 + { + FatigueMainView::GetInstance()->ChangeView(FATIGUEANALYSISEVIEW, FATIGUERESULTVIEW); + BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL); + FatigueAnalysisView::GetInstance()->startorstopAnalysisAni(false); + } return; } @@ -275,6 +314,14 @@ namespace OHOS } break; } + case BPState::STRESS_MEASURE: + case BPState::FATIGUE_MEASURE: + case BPState::ECG_MEASURE: + case BPState::EMO_MEASURE: + case BPState::STRESS_ANALYSIS: + case BPState::FATIGUE_ANALYSIS: + case BPState::ECG_ANALYSIS: + case BPState::EMO_ANALYSIS: case BPState::BP_CALIBRATING_ANGLYSIS: { break; diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueModel.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueModel.h deleted file mode 100644 index daedc2dd6..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatigueModel.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef FATIGUE_MODEL_H -#define FATIGUE_MODEL_H - -#include -#include - - -namespace OHOS { -// 血压检测状态 -enum class FatigueState { - //结束 - FATIGUE_END = 0, - //疲劳度检测中 - FATIGUE_MEASURE, - //结果分析中 - FATIGUE_ANALYSIS, - //普通状态 - FATIGUE_NORMAL, - //暂停 - FATIGUE_PAUSE, - - FATIGUE_STATE_MAX, -}; -// 疲劳度检测结果 -enum class FatigueRESULT { - NOT_TESTED = 0, // 未检测 - SUCCESS, // 检测成功 - NOT_WORN, // 未佩戴检测 - TIMEOUT, // 检测超时 - HIGH_RESULT, // 检测结果过高 - LOW_RESULT, // 检测结果过低 - INVALID_DATA // 无效数据 -}; - -#define Fatigue_ANLYSISI_TIME_MAX 5 - -class FatigueModel { -public: - FatigueModel(); - ~FatigueModel(); - static FatigueModel *GetInstance(); - static FatigueState statefalg; - - //当前状态管理 - void Fatigue_SetState(FatigueState state); - FatigueState GetCurrentState(); - //控制血压检测 - void Fatigue_Control(FatigueState state); - - /////////////////////////////////////////////// - void Fatigue_StartTimer(uint32_t interval = 1*1000);// 1s定时器 - void Fatigue_StopTimer(void); - - -private: - FatigueState current_state = FatigueState::FATIGUE_NORMAL; -}; -} // namespace OHOS - -#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatiguePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatiguePresenter.h index 246bd02ae..7935c1562 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatiguePresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/include/FatiguePresenter.h @@ -10,7 +10,7 @@ #include "KeyInputListener.h" #include "common/key_code.h" #include "fatiguelevel/include/FatigueMainView.h" -#include "fatiguelevel/include/FatigueModel.h" +#include "bloodpressure/include/BPModel.h" namespace OHOS { diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueModel.cpp deleted file mode 100644 index 99bfb0546..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatigueModel.cpp +++ /dev/null @@ -1,251 +0,0 @@ -#include "fatiguelevel/include/FatigueModel.h" -#include "fatiguelevel/include/FatiguePresenter.h" -#include "fatiguelevel/include/FatigueMainView.h" -#include "fatiguelevel/include/FatigueAnalysisView.h" - - - - -#include "wearable_log.h" -#include -#include -#include - -#include "AppViewIDs.h" -#include "ConfigModel.h" -#include "NativeAbility.h" - -#include "battery_hal.h" -#include "custom_utils.h" -#include "ppg_service.h" - -namespace OHOS -{ -/** - * @brief Constructor for the FatigueModel class. - */ - -#define FATIGUE_MEASURE_TIME_MAX 30 -#define FATIGUE_ANALYSIS_TIME_MAX 5 - - // 声明定时器变量 - static osTimerId_t g_timer = nullptr; - static int Time = 30; - FatigueState FatigueModel::statefalg= FatigueState::FATIGUE_MEASURE; - - FatigueModel::FatigueModel() {} - FatigueModel::~FatigueModel() {} - FatigueModel *FatigueModel::GetInstance(void) - { - static FatigueModel instance; - return &instance; - } - - - // 管理当前状态 - void FatigueModel::Fatigue_SetState(FatigueState state) { current_state = state; } - FatigueState FatigueModel::GetCurrentState() { return current_state; } - - // 进行传感器、定时器等控制 - void FatigueModel::Fatigue_Control(FatigueState state) - { - if (state == current_state) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Fatigue_Control: Already in current state"); - return; - } - switch (state) - { - case FatigueState::FATIGUE_NORMAL: - { - /* - 关闭定时器 - 关闭传感器 - 关闭常亮 - */ - Fatigue_StopTimer(); - ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); - Time = FATIGUE_MEASURE_TIME_MAX; - break; - } - case FatigueState::FATIGUE_MEASURE: - { - /* - 开启定时器 - 开启传感器 - 开启常亮 - */ - Fatigue_StartTimer(); - ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 - - if (Time != FATIGUE_MEASURE_TIME_MAX) - Time = FATIGUE_MEASURE_TIME_MAX; // 重置时间 - - break; - } - case FatigueState::FATIGUE_ANALYSIS: - { - /* - 开启定时器 - 开启传感器 - 开启常亮 - */ - Fatigue_StartTimer(); - ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 - - if (Time != FATIGUE_ANALYSIS_TIME_MAX) - Time = FATIGUE_ANALYSIS_TIME_MAX; // 重置时间 - - break; - } - - default: - /*未知状态,全部状态重置*/ - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Fatigue_Control: Invalid state"); - Fatigue_SetState(FatigueState::FATIGUE_NORMAL); - Fatigue_StopTimer(); - Time = FATIGUE_MEASURE_TIME_MAX; - return; - } - // 更新状态 - Fatigue_SetState(state); - } - /////////////////////////////////////////////////////////////////////////////////////// - - /*定时器到期时的处理*/ - static void Fatigue_TimerCallbackProc(int data) - { - - // 倒计时 - Time--; - // 提前检查无效时间 - if (Time < 0) - { - FatigueModel::GetInstance()->Fatigue_StopTimer(); - FatigueModel::GetInstance()->Fatigue_SetState(FatigueState::FATIGUE_NORMAL); - if ( FatigueModel::statefalg == FatigueState::FATIGUE_ANALYSIS) //在分析中 - { - FatigueMainView::GetInstance()->ChangeView(FATIGUEANALYSISEVIEW,FATIGUERESULTVIEW); - FatigueAnalysisView::GetInstance()->startorstopAnalysisAni(false); - FatigueModel::statefalg = FatigueState::FATIGUE_MEASURE; - } - else if( FatigueModel::statefalg == FatigueState::FATIGUE_MEASURE)//在检测中 - { - // 测量成功 - FatigueModel::GetInstance()->Fatigue_Control(FatigueState::FATIGUE_ANALYSIS); - FatigueMainView::GetInstance()->ChangeView(FATIGUEUNDERMEASUREVIEW, FATIGUEANALYSISEVIEW); - FatigueAnalysisView::GetInstance()->startorstopAnalysisAni(true); - FatigueModel::statefalg = FatigueState::FATIGUE_ANALYSIS; - - - // 测量失败 - - } - return; - } - - FatigueState current_state_time = FatigueModel::GetInstance()->GetCurrentState(); - // 根据状态处理 - switch (current_state_time) - { - case FatigueState::FATIGUE_NORMAL: - FatigueModel::GetInstance()->Fatigue_StopTimer(); - FatigueModel::GetInstance()->Fatigue_SetState(FatigueState::FATIGUE_NORMAL); - return; - - case FatigueState::FATIGUE_MEASURE: - { - break; - } - case FatigueState::FATIGUE_ANALYSIS: - { - break; - } - - default: - FatigueModel::GetInstance()->Fatigue_StopTimer(); - // 显示错误界面提示 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current_state is error!!"); - return; - } - } - - /* - * @brief 回调函数 - */ - static void Fatigue_TimerCallback(int data) - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Fatigue_TimerCallback %d", data); - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(Fatigue_TimerCallbackProc, data)); - } - - /* - * @brief 开启定时器函数 - * @param interval 时间间隔,单位ms - */ - void FatigueModel::Fatigue_StartTimer(uint32_t interval) - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FatigueModel::Fatigue_StartTimer"); - /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 - * ------------------------- */ - if (g_timer != nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer already exists!!"); - return; - } - - /* --------------------------------- 2.创建定时器 - * -------------------------------- */ - g_timer = osTimerNew((osTimerFunc_t)Fatigue_TimerCallback, osTimerPeriodic, - nullptr, nullptr); - // 检查定时器创建是否成功 - if (g_timer == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!"); - return; - } - - /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 - * ---------------------------- */ - int tick = osMs2Tick(interval); - - /* --------------------------------- 4.启动定时器 - * -------------------------------- */ - osStatus_t ret = osTimerStart(g_timer, tick); - /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 - * nullptr -------------------- */ - if (ret != osOK) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", - ret); - if (g_timer != nullptr) - { - ret = osTimerDelete(g_timer); - } - g_timer = nullptr; - return; - } - } - /* - * @brief 停止定时器 - */ - void FatigueModel::Fatigue_StopTimer(void) - { - // 检查定时器是否存在 - if (g_timer != nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FatigueModel::Fatigue_StopTimer"); - osTimerStop(g_timer); - // 删除定时器并置为 nullptr - osStatus_t ret = osTimerDelete(g_timer); - if (ret != osOK) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, - "osTimerDelete failed, ret = %lx!!", ret); - } - g_timer = nullptr; - } - } - -} // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatiguePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatiguePresenter.cpp index 6eeb62922..707ac9342 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatiguePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/fatiguelevel/src/FatiguePresenter.cpp @@ -86,8 +86,8 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - FatigueModel::GetInstance()->Fatigue_Control(FatigueState::FATIGUE_END); - FatigueModel::GetInstance()->Fatigue_StopTimer(); + BPModel::GetInstance()->BP_Control(BPState::BP_NORMAL); + BPModel::GetInstance()->BP_StopTimer(); NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); return true; } @@ -101,8 +101,8 @@ namespace OHOS if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0) { - FatigueModel::GetInstance()->Fatigue_Control(FatigueState::FATIGUE_END); - FatigueModel::GetInstance()->Fatigue_StopTimer(); + BPModel::GetInstance()->BP_Control(BPState::BP_NORMAL); + BPModel::GetInstance()->BP_StopTimer(); NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); } return true; @@ -113,8 +113,7 @@ namespace OHOS if (strcmp(view.GetViewId(), STARTBUTTON_FATIGUE) == 0) { - FatigueModel::statefalg = FatigueState::FATIGUE_MEASURE;//定时器标志位 - FatigueModel::GetInstance()->Fatigue_Control(FatigueState::FATIGUE_MEASURE); + BPModel::GetInstance()->BP_Control(BPState::FATIGUE_MEASURE); FatigueMainView::GetInstance()->ChangeView(FATIGUEMEASUREVIEW, FATIGUEUNDERMEASUREVIEW); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressModel.h b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressModel.h deleted file mode 100644 index 82e0e8cb4..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressModel.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef STRESS_MODEL_H -#define STRESS_MODEL_H - -#include -#include - - -namespace OHOS { -// 血压检测状态 -enum class StressState { - //结束 - STRESS_END = 0, - //压力检测中 - STRESS_MEASURE, - //结果分析中 - STRESS_ANALYSIS, - //普通状态 - STRESS_NORMAL, - //暂停 - STRESS_PAUSE, - - STRESS_STATE_MAX, -}; -// 压力检测结果 -enum class StressRESULT { - NOT_TESTED = 0, // 未检测 - SUCCESS, // 检测成功 - NOT_WORN, // 未佩戴检测 - TIMEOUT, // 检测超时 - HIGH_RESULT, // 检测结果过高 - LOW_RESULT, // 检测结果过低 - INVALID_DATA // 无效数据 -}; - -#define Stress_ANLYSISI_TIME_MAX 5 - -class StressModel { -public: - StressModel(); - ~StressModel(); - static StressModel *GetInstance(); - static StressState statefalg ;//定时器标志位 - - //当前状态管理 - void Stress_SetState(StressState state); - StressState GetCurrentState(); - //控制血压检测 - void Stress_Control(StressState state); - - /////////////////////////////////////////////// - void Stress_StartTimer(uint32_t interval = 1*1000);// 1s定时器 - void Stress_StopTimer(void); - - -private: - StressState current_state = StressState::STRESS_NORMAL; -}; -} // namespace OHOS - -#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h index f49c5a801..6e4ae9f90 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/include/StressPresenter.h @@ -10,7 +10,7 @@ #include "KeyInputListener.h" #include "common/key_code.h" #include "stress/include/StressMainView.h" -#include "stress/include/StressModel.h" +#include "bloodpressure/include/BPModel.h" namespace OHOS { diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressModel.cpp deleted file mode 100644 index edb64688c..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressModel.cpp +++ /dev/null @@ -1,251 +0,0 @@ -#include "stress/include/StressModel.h" -#include "stress/include/StressPresenter.h" -#include "stress/include/StressMainView.h" -#include "stress/include/StressAnalysisView.h" - - - - -#include "wearable_log.h" -#include -#include -#include - -#include "AppViewIDs.h" -#include "ConfigModel.h" -#include "NativeAbility.h" - -#include "battery_hal.h" -#include "custom_utils.h" -#include "ppg_service.h" - -namespace OHOS -{ -/** - * @brief Constructor for the StressModel class. - */ - -#define STRESS_MEASURE_TIME_MAX 30 -#define STRESS_ANALYSIS_TIME_MAX 5 - - // 声明定时器变量 - static osTimerId_t g_timer = nullptr; - static int Time = 30; - StressState StressModel::statefalg = StressState::STRESS_MEASURE; - - StressModel::StressModel() {} - StressModel::~StressModel() {} - StressModel *StressModel::GetInstance(void) - { - static StressModel instance; - return &instance; - } - - - // 管理当前状态 - void StressModel::Stress_SetState(StressState state) { current_state = state; } - StressState StressModel::GetCurrentState() { return current_state; } - - // 进行传感器、定时器等控制 - void StressModel::Stress_Control(StressState state) - { - if (state == current_state) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Stress_Control: Already in current state"); - return; - } - switch (state) - { - case StressState::STRESS_NORMAL: - { - /* - 关闭定时器 - 关闭传感器 - 关闭常亮 - */ - Stress_StopTimer(); - ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); - Time = STRESS_MEASURE_TIME_MAX; - break; - } - case StressState::STRESS_MEASURE: - { - /* - 开启定时器 - 开启传感器 - 开启常亮 - */ - Stress_StartTimer(); - ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 - - if (Time != STRESS_MEASURE_TIME_MAX) - Time = STRESS_MEASURE_TIME_MAX; // 重置时间 - - break; - } - case StressState::STRESS_ANALYSIS: - { - /* - 开启定时器 - 开启传感器 - 开启常亮 - */ - Stress_StartTimer(); - ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别 - - if (Time != STRESS_ANALYSIS_TIME_MAX) - Time = STRESS_ANALYSIS_TIME_MAX; // 重置时间 - - break; - } - - default: - /*未知状态,全部状态重置*/ - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Stress_Control: Invalid state"); - Stress_SetState(StressState::STRESS_NORMAL); - Stress_StopTimer(); - Time = STRESS_MEASURE_TIME_MAX; - return; - } - // 更新状态 - Stress_SetState(state); - } - /////////////////////////////////////////////////////////////////////////////////////// - - /*定时器到期时的处理*/ - static void Stress_TimerCallbackProc(int data) - { - - // 倒计时 - Time--; - // 提前检查无效时间 - if (Time < 0) - { - StressModel::GetInstance()->Stress_StopTimer(); - StressModel::GetInstance()->Stress_SetState(StressState::STRESS_NORMAL); - if (StressModel::statefalg == StressState::STRESS_ANALYSIS) //在分析中 - { - StressMainView::GetInstance()->ChangeView(STRESSANALYSISEVIEW,STRESSRESULTVIEW); - StressAnalysisView::GetInstance()->startorstopAnalysisAni(false); - StressModel::statefalg = StressState::STRESS_MEASURE; - } - else if(StressModel::statefalg == StressState::STRESS_MEASURE)//在检测中 - { - // 测量成功 - StressModel::GetInstance()->Stress_Control(StressState::STRESS_ANALYSIS); - StressMainView::GetInstance()->ChangeView(STRESSUNDERMEASUREVIEW, STRESSANALYSISEVIEW); - StressAnalysisView::GetInstance()->startorstopAnalysisAni(true); - StressModel::statefalg = StressState::STRESS_ANALYSIS; - - - // 测量失败 - - } - return; - } - - StressState current_state_time = StressModel::GetInstance()->GetCurrentState(); - // 根据状态处理 - switch (current_state_time) - { - case StressState::STRESS_NORMAL: - StressModel::GetInstance()->Stress_StopTimer(); - StressModel::GetInstance()->Stress_SetState(StressState::STRESS_NORMAL); - return; - - case StressState::STRESS_MEASURE: - { - break; - } - case StressState::STRESS_ANALYSIS: - { - break; - } - - default: - StressModel::GetInstance()->Stress_StopTimer(); - // 显示错误界面提示 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current_state is error!!"); - return; - } - } - - /* - * @brief 回调函数 - */ - static void Stress_TimerCallback(int data) - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stress_TimerCallback %d", data); - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(Stress_TimerCallbackProc, data)); - } - - /* - * @brief 开启定时器函数 - * @param interval 时间间隔,单位ms - */ - void StressModel::Stress_StartTimer(uint32_t interval) - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StressModel::Stress_StartTimer"); - /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 - * ------------------------- */ - if (g_timer != nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer already exists!!"); - return; - } - - /* --------------------------------- 2.创建定时器 - * -------------------------------- */ - g_timer = osTimerNew((osTimerFunc_t)Stress_TimerCallback, osTimerPeriodic, - nullptr, nullptr); - // 检查定时器创建是否成功 - if (g_timer == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!"); - return; - } - - /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 - * ---------------------------- */ - int tick = osMs2Tick(interval); - - /* --------------------------------- 4.启动定时器 - * -------------------------------- */ - osStatus_t ret = osTimerStart(g_timer, tick); - /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 - * nullptr -------------------- */ - if (ret != osOK) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", - ret); - if (g_timer != nullptr) - { - ret = osTimerDelete(g_timer); - } - g_timer = nullptr; - return; - } - } - /* - * @brief 停止定时器 - */ - void StressModel::Stress_StopTimer(void) - { - // 检查定时器是否存在 - if (g_timer != nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StressModel::Stress_StopTimer"); - osTimerStop(g_timer); - // 删除定时器并置为 nullptr - osStatus_t ret = osTimerDelete(g_timer); - if (ret != osOK) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, - "osTimerDelete failed, ret = %lx!!", ret); - } - g_timer = nullptr; - } - } - -} // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp index 6f9600ae4..fb6888420 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/stress/src/StressPresenter.cpp @@ -86,8 +86,8 @@ namespace OHOS { if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - StressModel::GetInstance()->Stress_Control(StressState::STRESS_END); - StressModel::GetInstance()->Stress_StopTimer();//停止定时器 + BPModel::GetInstance()->BP_Control(BPState::BP_NORMAL); + BPModel::GetInstance()->BP_StopTimer(); NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); return true; } @@ -101,8 +101,8 @@ namespace OHOS if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0) { - StressModel::GetInstance()->Stress_Control(StressState::STRESS_END); - StressModel::GetInstance()->Stress_StopTimer(); + BPModel::GetInstance()->BP_Control(BPState::BP_NORMAL); + BPModel::GetInstance()->BP_StopTimer(); NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); } return true; @@ -113,8 +113,7 @@ namespace OHOS if (strcmp(view.GetViewId(), STARTBUTTON) == 0) { - StressModel::statefalg == StressState::STRESS_MEASURE;//重置标志位 - StressModel::GetInstance()->Stress_Control(StressState::STRESS_MEASURE); + BPModel::GetInstance()->BP_Control(BPState::STRESS_MEASURE); StressMainView::GetInstance()->ChangeView(STRESSMEASUREVIEW, STRESSUNDERMEASUREVIEW); } -- 2.17.1