BP_CALIBRATING_FIRSTTIME,
//第二次校准血压中 30s
BP_CALIBRATING_SECONDTIME,
+ //校准分析中 5s
+ BP_CALIBRATING_ANGLYSIS,
//检测血压中 30s
BP_DETECTING,
//普通状态
};
#define BP_CHECK_TIME_MAX 30
+#define BP_ANLYSISI_TIME_MAX 5
class BPModel {
public:
BPModel();
~BPModel();
static BPModel *GetInstance();
-
+ //获取第几次校准
+ int16_t GetCalibrationFlag();
//获取当前时间年月日时分字符串
std::string GetCurrentTimeStr();
//当前状态管理
bool BPCalibrationErrorView::InitLable()
{
- InitLabel(titleLable, 165, 38, 165, 45, "titleLable", "校准失败", DEFAULT_VECTOR_FONT_FILENAME, 36);
+ InitLabel(titleLable, 145, 38, 165, 45, "titleLable", "校准失败", DEFAULT_VECTOR_FONT_FILENAME, 36);
InitLabel(resultremindLable, 64, 113, 337, 70, "resultremindLable", "校准失败,请重新校准", DEFAULT_VECTOR_FONT_FILENAME, 32);
resultremindLable->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
resultremindLable->SetTextColor(Color::Red());
bool BPCalibrationErrorView::Initbackground()
{
error = new UIImageView();
- error->SetPosition(125, 160, 200, 200);
+ error->SetPosition(125, 170, 200, 200);
error->SetSrc(BPBACKPATH);
group->Add(error);
return true;
bool BPCalibrationPassView::AddButton()
{
InitLabelButton(checkButton, 125, 365, 217, 63, "passcheckButton", "确认", 35);
- checkButton->SetViewId("passcheckButton");
+ checkButton->SetViewId(PASSCAECKBUTTON);
checkButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); // 设置按键颜色
checkButton->SetTextColor(Color::White());
// 设置按键监听
bool BPCalibrationPassView::InitLable()
{
- InitLabel(titleLable, 165, 38, 165, 45, "titleLable", "校准完成", DEFAULT_VECTOR_FONT_FILENAME, 36);
+ InitLabel(titleLable, 145, 38, 165, 45, "titleLable", "校准完成", DEFAULT_VECTOR_FONT_FILENAME, 36);
InitLabel(resultremindLable, 64, 113, 337, 70, "resultremindLable", "校准结果已上传,30天后可重新校准", DEFAULT_VECTOR_FONT_FILENAME, 32);
resultremindLable->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
resultremindLable->SetTextColor(Color::Red());
bool BPCalibrationPassView::Initbackground()
{
pass = new UIImageView();
- pass->SetPosition(125, 160, 200, 200);
+ pass->SetPosition(125, 170, 200, 200);
pass->SetSrc(BPBACKPATH);
group->Add(pass);
return true;
{
static constexpr uint16_t PROGRESS_VALUE_MIN = 0;
static constexpr uint16_t PROGRESS_VALUE_MAX = 10;
+ static uint16_t passflag = 0; //第几次校准成功标志位
+
static BPMainPresenter *g_pBPMainPresenter;
std::map<std::string, std::pair<int16_t, int16_t>> viewIdMap = {
{MINDCHECKBUTTON, {BPCALIBRATIONMINDVIEW, BPVALUEVIEW}}, // 提醒界面到血压值界面
{ERRORCHECKBUTTON, {BPCALIBRATIONERRORVIEW, BPUNDERCALIBRATIONVIEW}}, // 失败界面到校准界面
- {VALUECHECKBUTTON, {BPVALUEVIEW, BPRESULTANALYSISVIEW}}, // 血压值界面到结果分析界面
};
auto it = viewIdMap.find(viewId);
BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_FIRSTTIME);
BPMainView::GetInstance()->ChangeView(BPCALPOSREQVIEW, BPUNDERCALIBRATIONVIEW);
}
-
else if (strcmp(view.GetViewId(),CALIBRATIONBUTTON) == 0) // 上次校准时间界面到二次校准界面
{
BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_SECONDTIME);
BPMainView::GetInstance()->ChangeView(BPLASTCALIBRATIONTIME, BPSECUNDERCALIBRATIONVIEW);
}
+ else if (strcmp(view.GetViewId(), VALUECHECKBUTTON) == 0) // 血压值界面到结果分析界面
+ {
+ BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_ANGLYSIS);
+ BPMainView::GetInstance()->ChangeView(BPVALUEVIEW, BPRESULTANALYSISVIEW);
+ }
+ else if (strcmp(view.GetViewId(), PASSCAECKBUTTON) == 0) //校准成功界面
+ {
+ if(passflag == 0)
+ {
+ BPMainView::GetInstance()->ChangeView(BPCALIBRATIONPASSVIEW, BPLASTCALIBRATIONTIME);
+ passflag = 1;
+ }
+ else
+ {
+ //退出
+ passflag = 0;
+ }
+
+ }
else if (strcmp(view.GetViewId(), "SBPLeft") == 0)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SBPLeft_BP");
#include "bloodpressure/include/BPMainPresenter.h"
#include "bloodpressure/include/BPMainView.h"
+#include "bloodpressure/include/BPModel.h"
#include "wearable_log.h"
namespace OHOS
{
container_->SetTouchable(true);
container_->SetOnDragListener(presenter_);
+ if( BPModel::GetInstance()->GetCalibrationFlag() == 0)
// 切换到第一个界面
ChangeView(MAX_BPVIEW, BPCALPOSREQVIEW);
+ else
+ ChangeView(MAX_BPVIEW, BPLASTCALIBRATIONTIME);
// 增加按键监听
RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::BPMainPresenter::GetInstance();
#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;
}
+ int16_t BPModel::GetCalibrationFlag()
+ {
+
+ return CalibrationFlag;
+ }
// 获取当前时间戳字符串
std::string BPModel::GetCurrentTimeStr()
break;
}
+ case BPState::BP_CALIBRATING_ANGLYSIS:
+ {
+ BP_StartTimer();
+ ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+
+ if (Time != BP_ANLYSISI_TIME_MAX)
+ Time = BP_ANLYSISI_TIME_MAX; // 重置时间
+ break;
+ }
+
default:
/*未知状态,全部状态重置*/
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BP_Control: Invalid state");
}
/////////////////////////////////////////////////////////
// 机器校准收缩压与舒张压的数值
- void BPModel::BP_SetValue(BP_VALUE_TYPE type, bool set_value)
+ void BPModel::BP_SetValue(BP_VALUE_TYPE type, bool set_value)
{
- if(set_value)
+ if (set_value)
{
- if(type == BP_VALUE_TYPE::SBP)
- custom_sbp++;
+ if (type == BP_VALUE_TYPE::SBP)
+ custom_sbp++;
else
- custom_dbp++;
+ custom_dbp++;
}
else
{
- if(type == BP_VALUE_TYPE::SBP)
- custom_sbp--;
+ if (type == BP_VALUE_TYPE::SBP)
+ custom_sbp--;
else
- custom_dbp--;
+ custom_dbp--;
}
}
- int16_t BPModel::GetValue(BP_VALUE_TYPE type)
+ int16_t BPModel::GetValue(BP_VALUE_TYPE type)
{
- if(type == BP_VALUE_TYPE::SBP)
+ if (type == BP_VALUE_TYPE::SBP)
return custom_sbp;
else
return custom_dbp;
/*定时器到期时的处理*/
static void BP_TimerCallbackProc(int data)
{
- static uint16 CalibrationFlag = 0;
+
// 倒计时
Time--;
{
BPModel::GetInstance()->BP_StopTimer();
BPModel::GetInstance()->BP_SetState(BPState::BP_NORMAL);
- BPMainView *mainView = BPMainView::GetInstance();
- if (BPMainView::GetInstance() && CalibrationFlag == 0)
+ if (BPMainView::GetInstance() && CalibrationFlag == 0) // 第一次校准完
{
BPMainView::GetInstance()->ChangeView(BPUNDERCALIBRATIONVIEW, BPCALIBRATIONMINDVIEW);
CalibrationFlag++;
}
- else if (BPMainView::GetInstance() && CalibrationFlag == 1)
+ else if (BPMainView::GetInstance() && ( CalibrationFlag == 1 || CalibrationFlag == 3)) // 分析完
+ {
+ // 校准成功
+ BPMainView::GetInstance()->ChangeView(BPRESULTANALYSISVIEW, BPCALIBRATIONPASSVIEW);
+ // 校准失败
+
+ if (CalibrationFlag == 1)
+ CalibrationFlag++;
+ else
+ CalibrationFlag = 0;
+ }
+ else if (BPMainView::GetInstance() && BPSecUnderCalibrationView::GetInstance() && CalibrationFlag == 2) // 第二次校准完
{
BPMainView::GetInstance()->ChangeView(BPSECUNDERCALIBRATIONVIEW, BPCALIBRATIONMINDVIEW);
- CalibrationFlag = 0;
+ CalibrationFlag++;
}
else if (BPDetectionView::GetInstance())
{
- //测试成功 -> 进入结果界面
+ // 测试成功 -> 进入结果界面
BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, RESULT_BPVIEW);
- //测试失败 -> 进入错误界面
- // BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, ERROR_BPVIEW);
+ // 测试失败 -> 进入错误界面
+ // BPDetectionView::GetInstance()->ChangeView(CALIBRATION_BPVIEW, ERROR_BPVIEW);
}
return;
}
-
BPState current_state_time = BPModel::GetInstance()->GetCurrentState();
// 根据状态处理
switch (current_state_time)
}
break;
}
+ case BPState::BP_CALIBRATING_ANGLYSIS:
+ {
+ break;
+ }
default:
BPModel::GetInstance()->BP_StopTimer();