// #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 "emotion/include/EmoView.h"
-#include "emotion/include/EmoPresenter.h"
-#include "ecg/include/EcgView.h"
#include "ecg/include/EcgPresenter.h"
#include "ecg/include/EcgTestingView.h"
+#include "ecg/include/EcgView.h"
+#include "emotion/include/EmoPresenter.h"
+#include "emotion/include/EmoView.h"
+#include "fatiguelevel/include/FatigueAnalysisView.h"
+#include "fatiguelevel/include/FatigueMainView.h"
+#include "stress/include/StressAnalysisView.h"
+#include "stress/include/StressMainView.h"
#include "wearable_log.h"
#include <cmsis_os.h>
3、低血压:收缩压<90 mmHg 且 舒张压<60 mmHg。
----------------------------
*/
-namespace OHOS
-{
+namespace OHOS {
/**
* @brief Constructor for the BPModel class.
*/
#define MAX_UNWARE_COUNT 10
#define MAX_VALID_SPO2_COUNT 30
#define MAX_DISVALID_SPO2_COUNT 100
- static uint16 CalibrationFlag = 0;
-
- // 声明定时器变量
- static osTimerId_t g_timer = nullptr;
- static int Time = 30;
-
- BPModel::BPModel() {}
- BPModel::~BPModel() {}
- BPModel *BPModel::GetInstance(void)
- {
- static BPModel instance;
- return &instance;
+static uint16 CalibrationFlag = 0;
+
+// 声明定时器变量
+static osTimerId_t g_timer = nullptr;
+static int Time = 30;
+
+BPModel::BPModel() {}
+BPModel::~BPModel() {}
+BPModel *BPModel::GetInstance(void) {
+ static BPModel instance;
+ return &instance;
+}
+// 获取当前时间戳字符串
+std::string BPModel::GetCurrentTimeStr() {
+ uint32_t timeStamp = 0;
+
+ if (uapi_get_timestampe_ss(&timeStamp) != ERRCODE_SUCC) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get timestamp");
+ return "----/--/-- \n --/--";
}
- int16_t BPModel::GetCalibrationFlag() { return CalibrationFlag; }
- void BPModel::SetCalibrationFlag(int value) { CalibrationFlag = value; }
-
- // 获取当前时间戳字符串
- std::string BPModel::GetCurrentTimeStr()
- {
- uint32_t timeStamp = 0;
-
- if (uapi_get_timestampe_ss(&timeStamp) != ERRCODE_SUCC)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get timestamp");
- return "----/--/-- \n --/--";
- }
- // 将时间戳转换为 time_t 类型
- time_t rawtime = static_cast<time_t>(timeStamp);
- struct tm *timeinfo = localtime(&rawtime);
-
- if (timeinfo == NULL)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to convert time");
- return "----/--/-- \n --/--";
- }
+ // 将时间戳转换为 time_t 类型
+ time_t rawtime = static_cast<time_t>(timeStamp);
+ struct tm *timeinfo = localtime(&rawtime);
- // 格式化时间为字符串
- char buffer[20]; // 格式: YYYY-MM-DD HH:MM
- std::strftime(buffer, sizeof(buffer), "%Y-%m-%d \n %H:%M", timeinfo);
-
- return std::string(buffer);
+ if (timeinfo == NULL) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to convert time");
+ return "----/--/-- \n --/--";
}
- // 管理当前状态
- void BPModel::BP_SetState(BPState state) { current_state = state; }
- BPState BPModel::GetCurrentState() { return current_state; }
-
- // 进行传感器、定时器等控制
- void BPModel::BP_Control(BPState state)
- {
- if (state == current_state)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "BP_Control: Already in current state");
- return;
- }
- switch (state)
- {
- case BPState::BP_NORMAL:
- {
- /*
- 关闭定时器
- 关闭传感器
- 关闭常亮
- */
- BP_StopTimer();
- ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
- Time = BP_CHECK_TIME_MAX;
- break;
- }
- 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:
- {
- /*
- 开启定时器
- 开启传感器
- 开启常亮
- */
- BP_StartTimer();
- ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
-
- if (Time != BP_CHECK_TIME_MAX)
- Time = BP_CHECK_TIME_MAX; // 重置时间
-
- 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); // 后期 周期被动状态 需要做区别
+ // 格式化时间为字符串
+ char buffer[20]; // 格式: YYYY-MM-DD HH:MM
+ std::strftime(buffer, sizeof(buffer), "%Y-%m-%d \n %H:%M", timeinfo);
+
+ return std::string(buffer);
+}
+/////////////////////////状态管理//////////////////////////////////////////
+int16_t BPModel::GetCalibrationFlag() { return CalibrationFlag; }
+void BPModel::SetCalibrationFlag(int value) { CalibrationFlag = value; }
+
+// 管理当前状态
+void BPModel::BP_SetState(BPState state) { current_state = state; }
+BPState BPModel::GetCurrentState() { return current_state; }
+
+// 进行传感器、定时器等控制
+void BPModel::BP_Control(BPState state) {
+ if (state == current_state) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "BP_Control: Already in current state");
+ return;
+ }
+ switch (state) {
+ case BPState::BP_NORMAL: {
+ /*
+ 关闭定时器
+ 关闭传感器
+ 关闭常亮
+ */
+ BP_StopTimer();
+ ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
+ Time = BP_CHECK_TIME_MAX;
+ break;
+ }
+ 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: {
+ /*
+ 开启定时器
+ 开启传感器
+ 开启常亮
+ */
+ BP_StartTimer();
+ ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+
+ if (Time != BP_CHECK_TIME_MAX)
+ Time = BP_CHECK_TIME_MAX; // 重置时间
+
+ 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 != BP_ANLYSISI_TIME_MAX)
+ Time = BP_ANLYSISI_TIME_MAX; // 重置时间
+ break;
+ }
+ case BPState::ECG_REMIND:
+ case BPState::ECG_RESULT: {
+ BP_StartTimer();
+ ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+
+ if (Time != BP_REMIND_TIME_MAX)
+ Time = BP_REMIND_TIME_MAX; // 重置时间
+ break;
+ }
- if (Time != BP_ANLYSISI_TIME_MAX)
- Time = BP_ANLYSISI_TIME_MAX; // 重置时间
- break;
+ default:
+ /*未知状态,全部状态重置*/
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BP_Control: Invalid state");
+ BP_SetState(BPState::BP_NORMAL);
+ BP_StopTimer();
+ Time = BP_CHECK_TIME_MAX;
+ return;
+ }
+ // 更新状态
+ BP_SetState(state);
+}
+/////////////////////////////////////////////////////////
+// 机器校准收缩压与舒张压的数值
+void BPModel::BP_SetValue(BP_VALUE_TYPE type, bool set_value) {
+ if (set_value) {
+ if (type == BP_VALUE_TYPE::SBP) {
+ if (custom_sbp < 250)
+ custom_sbp++;
+ } else if (type == BP_VALUE_TYPE::DBP) {
+ if (custom_dbp < 150)
+ custom_dbp++;
}
- case BPState::ECG_REMIND:
- case BPState::ECG_RESULT:
- {
- BP_StartTimer();
- ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
-
- if (Time != BP_REMIND_TIME_MAX)
- Time = BP_REMIND_TIME_MAX; // 重置时间
- break;
+ } else {
+ if (type == BP_VALUE_TYPE::SBP) {
+ if (custom_sbp > 50)
+ custom_sbp--;
+ } else if (type == BP_VALUE_TYPE::DBP) {
+ if (custom_dbp > 30)
+ custom_dbp--;
}
-
- default:
- /*未知状态,全部状态重置*/
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BP_Control: Invalid state");
+ }
+}
+int16_t BPModel::GetValue(BP_VALUE_TYPE type) {
+ if (type == BP_VALUE_TYPE::SBP)
+ return custom_sbp;
+ else
+ return custom_dbp;
+}
+//////////////////////////////////time处理////////////////////////////////////
+// time到时的处理
+ void BPModel::BP_timer_callback_out() {
+
+ BP_StopTimer();
+
+ // 提前获取各视图实例
+ auto *bpMainView = BPMainView::GetInstance();
+ auto *bpDetectionView = BPDetectionView::GetInstance();
+ auto *stressMainView = StressMainView::GetInstance();
+ auto *stressAnalysisView = StressAnalysisView::GetInstance();
+ auto *fatigueMainView = FatigueMainView::GetInstance();
+ auto *fatigueAnalysisView = FatigueAnalysisView::GetInstance();
+ auto *emoView = EmoView::GetInstance();
+ auto *ecgView = EcgView::GetInstance();
+
+ // 处理血压校准相关状态
+ if (current_state == BPState::BP_CALIBRATING_FIRSTTIME ||
+ current_state == BPState::BP_CALIBRATING_SECONDTIME) {
+ if (bpMainView) {
+ bpMainView->ChangeView(current_state == BPState::BP_CALIBRATING_FIRSTTIME
+ ? BPUNDERCALIBRATIONVIEW
+ : BPSECUNDERCALIBRATIONVIEW,
+ BPCALIBRATIONMINDVIEW);
+ }
BP_SetState(BPState::BP_NORMAL);
- BP_StopTimer();
- Time = BP_CHECK_TIME_MAX;
+ CalibrationFlag++;
return;
}
- // 更新状态
- BP_SetState(state);
- }
- /////////////////////////////////////////////////////////
- // 机器校准收缩压与舒张压的数值
- void BPModel::BP_SetValue(BP_VALUE_TYPE type, bool set_value)
- {
- if (set_value)
- {
- if (type == BP_VALUE_TYPE::SBP)
- {
- if (custom_sbp < 250)
- custom_sbp++;
- }
- else if (type == BP_VALUE_TYPE::DBP)
- {
- if (custom_dbp < 150)
- custom_dbp++;
+ // 处理血压分析状态
+ if (current_state == BPState::BP_CALIBRATING_ANGLYSIS) {
+ if (bpMainView) {
+ bpMainView->ChangeView(BPRESULTANALYSISVIEW, BPCALIBRATIONPASSVIEW);
}
+ BP_SetState(BPState::BP_NORMAL);
+ if (CalibrationFlag == 1)
+ CalibrationFlag++;
+ else
+ CalibrationFlag = 0;
+ return;
}
- else
- {
- if (type == BP_VALUE_TYPE::SBP)
- {
- if (custom_sbp > 50)
- custom_sbp--;
- }
- else if (type == BP_VALUE_TYPE::DBP)
- {
- if (custom_dbp > 30)
- custom_dbp--;
+ // 处理血压检测状态
+ if (current_state == BPState::BP_DETECTING) {
+ if (bpDetectionView) {
+ bpDetectionView->ChangeView(CALIBRATION_BPVIEW, RESULT_BPVIEW);
}
+ BP_SetState(BPState::BP_NORMAL);
+ return;
}
- }
- int16_t BPModel::GetValue(BP_VALUE_TYPE type)
- {
- if (type == BP_VALUE_TYPE::SBP)
- return custom_sbp;
- else
- return custom_dbp;
- }
- ///////////////////////////////////////////////////////////////////////////////////////
- /*定时器到期时的处理*/
- static void BP_TimerCallbackProc(int data)
- {
-
- // 倒计时
- Time--;
- // 提前检查无效时间
- if (Time < 0)
- {
- BPModel::GetInstance()->BP_StopTimer();
- if (BPMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::BP_CALIBRATING_FIRSTTIME) // 血压第一次校准完
- {
- BPMainView::GetInstance()->ChangeView(BPUNDERCALIBRATIONVIEW, BPCALIBRATIONMINDVIEW);
- BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL);
- CalibrationFlag++;
- }
- 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;
- }
- 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() && 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);
+ // 处理压力检测与分析
+ if (current_state == BPState::STRESS_MEASURE) {
+ if (stressMainView) {
+ stressMainView->ChangeView(STRESSUNDERMEASUREVIEW, STRESSANALYSISEVIEW);
}
- 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);
+ BP_Control(BPState::STRESS_ANALYSIS);
+ if (stressAnalysisView) {
+ stressAnalysisView->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);
+ return;
+ }
+ if (current_state == BPState::STRESS_ANALYSIS) {
+ if (stressMainView) {
+ stressMainView->ChangeView(STRESSANALYSISEVIEW, STRESSRESULTVIEW);
}
- else if (FatigueMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::FATIGUE_MEASURE) // 疲劳度检测完
- {
- BPModel::GetInstance()->BP_Control(BPState::FATIGUE_ANALYSIS);
- FatigueMainView::GetInstance()->ChangeView(FATIGUEUNDERMEASUREVIEW, FATIGUEANALYSISEVIEW);
- FatigueAnalysisView::GetInstance()->startorstopAnalysisAni(true);
+ BP_SetState(BPState::BP_NORMAL);
+ if (stressAnalysisView) {
+ stressAnalysisView->startorstopAnalysisAni(false);
}
- else if (FatigueMainView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::FATIGUE_ANALYSIS) // 疲劳度分析完
- {
- FatigueMainView::GetInstance()->ChangeView(FATIGUEANALYSISEVIEW, FATIGUERESULTVIEW);
- BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL);
- FatigueAnalysisView::GetInstance()->startorstopAnalysisAni(false);
+ return;
+ }
+
+ // 处理疲劳度检测与分析
+ if (current_state == BPState::FATIGUE_MEASURE) {
+ if (fatigueMainView) {
+ fatigueMainView->ChangeView(FATIGUEUNDERMEASUREVIEW,
+ FATIGUEANALYSISEVIEW);
}
- else if (EmoView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::EMO_MEASURE) // 情绪检测完
- {
- EmoPresenter::GetInstance()->ChangeViewOperator(EMOTIONTESTVIEW, EMOTIONTESTANALYSISVIEW);
+ BP_Control(BPState::FATIGUE_ANALYSIS);
+ if (fatigueAnalysisView) {
+ fatigueAnalysisView->startorstopAnalysisAni(true);
}
- else if (EmoView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::EMO_ANALYSIS) // 情绪分析完
- {
- EmoPresenter::GetInstance()->ChangeViewOperator(EMOTIONTESTANALYSISVIEW, EMOTIONTESTRESULTVIEW);
- BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL);
+ return;
+ }
+ if (current_state == BPState::FATIGUE_ANALYSIS) {
+ if (fatigueMainView) {
+ fatigueMainView->ChangeView(FATIGUEANALYSISEVIEW, FATIGUERESULTVIEW);
}
- else if (EcgView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::ECG_REMIND) // ECG提示完
- {
- EcgPresenter::GetInstance()->ChangeViewOperator(ECGTESTREMINDERVIEW, ECGTESTINGVIEW);
+ BP_SetState(BPState::BP_NORMAL);
+ if (fatigueAnalysisView) {
+ fatigueAnalysisView->startorstopAnalysisAni(false);
}
- else if (EcgView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::ECG_MEASURE) // ECG测量完
- {
- EcgPresenter::GetInstance()->ChangeViewOperator(ECGTESTINGVIEW, ECGTESTANALYSISVIEW);
+ return;
+ }
+
+ // 处理情绪检测与分析
+ if (current_state == BPState::EMO_MEASURE) {
+ if (emoView) {
+ EmoPresenter::GetInstance()->ChangeViewOperator(EMOTIONTESTVIEW,
+ EMOTIONTESTANALYSISVIEW);
}
- else if (EcgView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::ECG_ANALYSIS) // ECG分析完
- {
- EcgPresenter::GetInstance()->ChangeViewOperator(ECGTESTANALYSISVIEW, ECGTESTRESULTVIEW);
+ return;
+
+ if (current_state == BPState::EMO_ANALYSIS) {
+ if (emoView) {
+ EmoPresenter::GetInstance()->ChangeViewOperator(EMOTIONTESTANALYSISVIEW,
+ EMOTIONTESTRESULTVIEW);
+ }
+ BP_SetState(BPState::BP_NORMAL);
+ return;
}
- else if (EcgView::GetInstance() && BPModel::GetInstance()->GetCurrentState() == BPState::ECG_RESULT) // ECG结果显示完
- {
- EcgPresenter::GetInstance()->ChangeViewOperator(ECGTESTRESULTVIEW, ECGRESETTESTOFSUCCVIEW);
- BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL);
+
+ // 处理ECG相关状态
+ if (ecgView) {
+ if (current_state == BPState::ECG_REMIND) {
+ EcgPresenter::GetInstance()->ChangeViewOperator(ECGTESTREMINDERVIEW,
+ ECGTESTINGVIEW);
+ return;
+ }
+
+ if (current_state == BPState::ECG_MEASURE) {
+ EcgPresenter::GetInstance()->ChangeViewOperator(ECGTESTINGVIEW,
+ ECGTESTANALYSISVIEW);
+ return;
+ }
+
+ if (current_state == BPState::ECG_ANALYSIS) {
+ EcgPresenter::GetInstance()->ChangeViewOperator(ECGTESTANALYSISVIEW,
+ ECGTESTRESULTVIEW);
+ return;
+ }
+ if (current_state == BPState::ECG_RESULT) {
+
+ EcgPresenter::GetInstance()->ChangeViewOperator(ECGTESTRESULTVIEW,
+ ECGRESETTESTOFSUCCVIEW);
+ BP_SetState(BPState::BP_NORMAL);
+ }
}
- return;
}
+ }
+ //每秒的处理
+ void BPModel::BP_timer_callback_proc(int data) {
- BPState current_state_time = BPModel::GetInstance()->GetCurrentState();
// 根据状态处理
- switch (current_state_time)
- {
+ switch (current_state) {
case BPState::BP_NORMAL:
- BPModel::GetInstance()->BP_StopTimer();
- BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL);
+ BP_StopTimer();
+ BP_SetState(BPState::BP_NORMAL);
return;
- case BPState::BP_DETECTING:
- {
+ case BPState::BP_DETECTING: {
BPDetectBeginView *view = BPDetectBeginView::GetInstance();
- if (view)
- {
- view->UpdateTimeText(Time);
+ if (view) {
+ view->UpdateTimeText(data);
}
break;
}
- case BPState::BP_CALIBRATING_FIRSTTIME:
- {
+ case BPState::BP_CALIBRATING_FIRSTTIME: {
BPUnderCalibrationView *view = BPUnderCalibrationView::GetInstance();
- if (view)
- {
- view->UpdateTimeText(Time);
+ if (view) {
+ view->UpdateTimeText(data);
}
break;
}
- case BPState::BP_CALIBRATING_SECONDTIME:
- {
- BPSecUnderCalibrationView *view = BPSecUnderCalibrationView::GetInstance();
- if (view)
- {
- view->UpdateTimeText(Time);
+ case BPState::BP_CALIBRATING_SECONDTIME: {
+ BPSecUnderCalibrationView *view =
+ BPSecUnderCalibrationView::GetInstance();
+ if (view) {
+ view->UpdateTimeText(data);
}
break;
}
- case BPState::ECG_MEASURE:
- {
- EcgTestingView::GetInstance()->UpdateTimeLabel(Time);
+ case BPState::ECG_MEASURE: {
+ EcgTestingView *view = EcgTestingView::GetInstance();
+ if (view) {
+ view->UpdateTimeLabel(Time);
+ }
+ break;
}
case BPState::STRESS_MEASURE:
case BPState::EMO_ANALYSIS:
case BPState::BP_CALIBRATING_ANGLYSIS:
case BPState::ECG_REMIND:
- case BPState::ECG_RESULT:
- {
+ case BPState::ECG_RESULT: {
break;
}
default:
- BPModel::GetInstance()->BP_StopTimer();
+ BP_StopTimer();
// 显示错误界面提示
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "current_state is error!!");
return;
}
}
+ /////////////////////////////////////定时器处理 不要修改//////////////////////////////////////////////////
+ /*定时器到期时的处理*/
+ static void BP_TimerCallbackProc(int data) {
+ // 倒计时
+ Time--;
+ // 到时的处理
+ if (Time < 0) {
+ BPModel::GetInstance()->BP_timer_callback_out();
+ return;
+ }
+ BPModel::GetInstance()->BP_timer_callback_proc(Time);
+ }
/*
* @brief 回调函数
*/
- static void BP_TimerCallback(int data)
- {
+ static void BP_TimerCallback(int data) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BP_TimerCallback %d", data);
GraphicService::GetInstance()->PostGraphicEvent(
std::bind(BP_TimerCallbackProc, data));
* @brief 开启定时器函数
* @param interval 时间间隔,单位ms
*/
- void BPModel::BP_StartTimer(uint32_t interval)
- {
+ void BPModel::BP_StartTimer(uint32_t interval) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BPModel::BP_StartTimer");
/* -------------------------- 1.检查定时器是否已经存在,如果存在则返回
* ------------------------- */
- if (g_timer != nullptr)
- {
+ if (g_timer != nullptr) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer already exists!!");
return;
}
g_timer = osTimerNew((osTimerFunc_t)BP_TimerCallback, osTimerPeriodic,
nullptr, nullptr);
// 检查定时器创建是否成功
- if (g_timer == nullptr)
- {
+ if (g_timer == nullptr) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!");
return;
}
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)
- {
+ 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;
/*
* @brief 停止定时器
*/
- void BPModel::BP_StopTimer(void)
- {
+ void BPModel::BP_StopTimer(void) {
// 检查定时器是否存在
- if (g_timer != nullptr)
- {
+ if (g_timer != nullptr) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BPModel::BP_StopTimer");
osTimerStop(g_timer);
// 删除定时器并置为 nullptr
osStatus_t ret = osTimerDelete(g_timer);
- if (ret != osOK)
- {
+ if (ret != osOK) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
"osTimerDelete failed, ret = %lx!!", ret);
}