${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
${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
#include <stdint.h>
#include <string>
+#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
// #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 <cmsis_os.h>
#include <cmsis_os2.h>
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()
}
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:
{
/*
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); // 后期 周期被动状态 需要做区别
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;
}
}
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;
+++ /dev/null
-#ifndef FATIGUE_MODEL_H
-#define FATIGUE_MODEL_H
-
-#include <stdint.h>
-#include <string>
-
-
-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
#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
{
+++ /dev/null
-#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 <cmsis_os.h>
-#include <cmsis_os2.h>
-#include <service/graphic_service.h>
-
-#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
{
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;
}
if (keyID == static_cast<uint16_t>(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;
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);
}
+++ /dev/null
-#ifndef STRESS_MODEL_H
-#define STRESS_MODEL_H
-
-#include <stdint.h>
-#include <string>
-
-
-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
#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
{
+++ /dev/null
-#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 <cmsis_os.h>
-#include <cmsis_os2.h>
-#include <service/graphic_service.h>
-
-#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
{
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;
}
if (keyID == static_cast<uint16_t>(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;
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);
}