#include "components/ui_label.h"
#include "BloodBandoffView.h"
#include "ChangeSliceListener.h"
+#include "broadcast_service.h"
+#include <fstream>
+#include "iostream"
+#include <sstream>
+#include <string>
+#include <cstdlib>
+#include <ctime>
+#include "wearable_log.h"
+#include "cmsis_os.h"
+#include "securec.h"
+#include "broadcast_service.h"
+#include "graphic_service.h"
+#include <chrono>
+#include <thread>
+#include "ppg_service.h"
+
+namespace OHOS
+{
+ static BloodOxygenPresenter *g_pMainView = nullptr;
+ static constexpr uint16_t PROGRESS_VALUE_MIN = 0;
+ static constexpr uint16_t PROGRESS_VALUE_MAX = 100;
-namespace OHOS {
-static BloodOxygenPresenter *g_pMainView = nullptr;
-static constexpr uint16_t PROGRESS_VALUE_MIN = 0;
-static constexpr uint16_t PROGRESS_VALUE_MAX = 100;
+ BloodOxygenPresenter::BloodOxygenPresenter()
+ {
+ count = PROGRESS_VALUE_MAX;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::new BloodOxygenPresenter");
+ g_pMainView = this;
+ }
-BloodOxygenPresenter::BloodOxygenPresenter()
-{
- count = PROGRESS_VALUE_MAX;
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::new BloodOxygenPresenter");
- g_pMainView = this;
-}
+ BloodOxygenPresenter::~BloodOxygenPresenter()
+ {
+ g_pMainView = nullptr;
+ }
-BloodOxygenPresenter::~BloodOxygenPresenter()
-{
- g_pMainView = nullptr;
-}
+ BloodOxygenPresenter *BloodOxygenPresenter::GetInstance()
+ {
+ return g_pMainView;
+ }
-BloodOxygenPresenter* BloodOxygenPresenter::GetInstance()
-{
- return g_pMainView;
-}
+ void BloodOxygenPresenter::OnStart()
+ {
+ Presenter<BloodOxygenView>::OnStart();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::On Start ");
+ }
-void BloodOxygenPresenter::OnStart()
-{
- Presenter<BloodOxygenView>::OnStart();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::On Start ");
-}
+ void BloodOxygenPresenter::OnPause(void) {}
-void BloodOxygenPresenter::OnPause(void) {}
+ void BloodOxygenPresenter::OnResume(void) {}
-void BloodOxygenPresenter::OnResume(void) {}
+ void BloodOxygenPresenter::OnStop(void) {}
-void BloodOxygenPresenter::OnStop(void) {}
+ bool BloodOxygenPresenter::CheckPointersValue()
+ {
+ if (BloodOxygenView::GetInstance() == nullptr)
+ {
+ return false;
+ }
-bool BloodOxygenPresenter::CheckPointersValue()
-{
- if (BloodOxygenView::GetInstance() == nullptr) {
- return false;
- }
+ if (BloodBandoffView::GetInstance() == nullptr)
+ {
+ return false;
+ }
- if (BloodBandoffView::GetInstance() == nullptr) {
- return false;
+ if (BloodOxygenModel::GetInstance() == nullptr)
+ {
+ return false;
+ }
+ return true;
}
- if (BloodOxygenModel::GetInstance() == nullptr) {
+ bool BloodOxygenPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+ UNUSED(view);
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+ {
+ BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false);
+ BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true);
+ NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
return false;
}
- return true;
-}
-
-bool BloodOxygenPresenter::OnDrag(UIView& view, const DragEvent& event)
-{
- UNUSED(view);
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
- BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false);
- BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true);
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ bool BloodOxygenPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ UNUSED(view);
+ UNUSED(event);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::OnClick");
+ if (CheckPointersValue() == false)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty");
+ return false;
+ }
+ BloodOxygenView::GetInstance()->GetPercent()->SetText("");
+ BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(false);
+ BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(true);
+ BloodBandoffView::GetInstance()->GetImageAnimator()->Stop();
+#ifdef SUPPORT_SPO2_NOTIFICATION
+ uint32_t md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST;
+ send_ppg_cmd_msg(md);
+ // 增加测试时间,大概20秒,测试期间,循环播放
+ BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeatTimes(20);
+#else
+ BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeatTimes(1);
+#endif
+ BloodBandoffView::GetInstance()->GetImageAnimator()->Start();
+ BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(true);
+ BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(false);
+ return true;
}
- return false;
-}
-
-bool BloodOxygenPresenter::OnClick(UIView& view, const ClickEvent& event)
-{
- UNUSED(view);
- UNUSED(event);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::OnClick");
- if (CheckPointersValue() == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty");
- return false;
- }
- BloodOxygenView::GetInstance()->GetPercent()->SetText("");
- BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(false);
- BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(true);
- BloodBandoffView::GetInstance()->GetImageAnimator()->Stop();
- BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeat(false);
- BloodBandoffView::GetInstance()->GetImageAnimator()->Start();
- BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(true);
- BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(false);
- return true;
-}
-
-//增加按键事件
-bool BloodOxygenPresenter::OnKeyAct(UIView& view, const KeyEvent& event)
-{
- WEARABLE_LOGD("","into the view is: %s\n", typeid(view).name());
- uint16 keyID = event.GetKeyId();
- WEARABLE_LOGD("","into key! keyID %u\n",keyID);
- //如果是power键就返回上一级
- if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
+ // 增加按键事件
+ bool BloodOxygenPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
{
- //uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
- }
- return true;
-}
-void BloodOxygenPresenter::ProgressNotify(void)
-{
- if (CheckPointersValue() == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty");
- return;
+ WEARABLE_LOGD("", "into the view is: %s\n", typeid(view).name());
+ uint16 keyID = event.GetKeyId();
+ WEARABLE_LOGD("", "into key! keyID %u\n", keyID);
+ // 如果是power键就返回上一级
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
+ {
+ // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+ return true;
}
-
- if (BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true) {
- count--;
- BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count);
- if (count == PROGRESS_VALUE_MIN) {
- BloodOxygenView::GetInstance()->GetPercent()->SetText("98%");
- BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false);
- count = PROGRESS_VALUE_MAX;
+ void BloodOxygenPresenter::ProgressNotify(void)
+ {
+ if (CheckPointersValue() == false)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty");
+ return;
+ }
+ if (BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true)
+ {
+ count--;
BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count);
- BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true);
+ if (count == PROGRESS_VALUE_MIN)
+ {
+ BloodOxygenView::GetInstance()->GetPercent()->SetText("98%");
+ BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false);
+ count = PROGRESS_VALUE_MAX;
+ BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count);
+ BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true);
+ }
}
}
-}
-void BloodOxygenPresenter::ReturnInterface()
-{
- if (BloodOxygenModel::GetInstance()->GetBloodBandoffViewStatus() == true) {
- if (BloodBandoffView::GetInstance()->GetImageAnimator()->GetState() == false) {
- BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(false);
- BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(true);
-
- BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);
- BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(true);
+ void BloodOxygenPresenter::ReturnInterface()
+ {
+ if (BloodOxygenModel::GetInstance()->GetBloodBandoffViewStatus() == true)
+ {
+ if (BloodBandoffView::GetInstance()->GetImageAnimator()->GetState() == false)
+ {
+ BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(false);
+ BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(true);
+
+ BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);
+ BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(true);
+#ifdef SUPPORT_SPO2_NOTIFICATION
+ uint32_t md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST;
+ send_ppg_cmd_msg(md);
+#endif
+ }
}
}
-}
-void BloodOxygenPresenter::Notify(void)
-{
- ProgressNotify();
- ReturnInterface();
-}
+ void BloodOxygenPresenter::Notify(void)
+ {
+ ProgressNotify();
+ ReturnInterface();
+ }
}
\ No newline at end of file
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: bloodOxygen view
- * Author:
- * Create: 2021-08-01
- */
-#if 0
-#include "BloodOxygenView.h"
-#include "BloodOxygenModel.h"
-
-namespace OHOS
-{
- // 按钮设置
- static constexpr uint16_t TESTBUTTON_ZERO = 0;
- static constexpr uint16_t TESTBUTTON_X = 118;
- static constexpr uint16_t TESTBUTTON_Y = 336;
-
- // 进度条参数设置
- static constexpr uint16_t CIRCLE_PROGRESS_VALUE = 100;
- static constexpr uint16_t CIRCLE_PROGRESS_RADIUS = 43;
- static constexpr uint16_t CIRCLE_PROGRESS_STARTANGLE = 360;
- static constexpr uint16_t CIRCLE_PROGRESS_ENDANGLE = 0;
- static constexpr uint16_t CIRCLE_PROGRESS_WIDTH = 10;
- static constexpr uint16_t CIRCLE_PROGRESS_POSITION_X = 10;
- static constexpr uint16_t CIRCLE_PROGRESS_POSITION_Y = 10;
- static constexpr uint16_t CIRCLE_PROGRESS_CENTER_X = 195;
- static constexpr uint16_t CIRCLE_PROGRESS_CENTER_Y = 37;
- static constexpr uint16_t CIRCLE_PROGRESS_POSITION_WIDTH = 275;
- static constexpr uint16_t CIRCLE_PROGRESS_POSITION_HEIGHT = 130;
- static constexpr uint16_t CIRCLE_PROGRESS_LEFT = 10;
- static constexpr uint16_t CIRCLE_PROGRESS_TOP = 5;
-
- // 动态刷新设置
- static constexpr uint16_t IMAGE_SIZE = 60;
- static constexpr uint16_t IMAGE_POSITION_X = 186;
- static constexpr uint16_t IMAGE_POSITION_Y = 23;
- static constexpr uint16_t IMAGEANIMATORVIEW_SIZE = 31;
- static constexpr uint16_t IMAGEANIMATORVIEW_SPEED = 40;
-
- // 血氧主图设置
- static constexpr uint16_t IMAGE_PROGRESS_POSITION_X = 176;
- static constexpr uint16_t IMAGE_PROGRESS_POSITION_Y = 13;
-
- // 血氧%显示
- static constexpr uint16_t LABEL_PERCENT_POSITION_X = 258;
- static constexpr uint16_t LABEL_PERCENT_POSITION_Y = 40;
-
- // 血氧柱状图
- static constexpr int16 VIEW_MAX_X = 415;
- static constexpr int16 VIEW_MIN_X = 35;
- static constexpr int16 VIEW_MAX_Y = 150;
- static constexpr int16 VIEW_MIN_Y = 0;
- static constexpr int16 VIEW_WIDTH = 7;
- static constexpr int16 VIEW_HEIGHT = 300;
- static constexpr uint16_t VIEW_BACKGROUND_OPA = 127;
- static constexpr uint16_t VIEW_BORDER_RADIUS = 5;
- static constexpr uint16_t BORDER_OPA = 127;
- static constexpr uint16_t BORDER_WIDTH = 20;
-
- static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
- static constexpr uint16_t FONT_DEFAULT_SIZE = 20;
- static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
- static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
- static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
- static constexpr uint16_t BUTTON_LABEL_SIZE = 26;
- static constexpr uint8_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 20;
- static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xff0b1928;
- static constexpr uint16_t BUTTON_WIDHT2 = 230;
- static constexpr uint16_t BUTTON_HEIGHT2 = 80;
-
- // 字体大小
- static constexpr uint16_t PERCENT_FONT_SIZE = 25;
-
- static constexpr uint16_t MATH_ZERO = 0;
-
- static BloodOxygenView *g_pMainView = nullptr;
- static ImageAnimatorInfo g_imageAnimatorInfo_new[31] = {
- {PNG_BLOOD_FLOW_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- };
-
- BloodOxygenView::BloodOxygenView()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::BloodOxygenView");
- imageViewMain = nullptr;
- imageViewProgress = nullptr;
- group = nullptr;
- percent = nullptr;
- testButton = nullptr;
- circleProgress = nullptr;
- imageAnimator = nullptr;
- g_pMainView = this;
- bloodbandoff = new BloodBandoffView();
- if (bloodbandoff == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new BloodBandoffView fail");
- }
- }
-
- BloodOxygenView::~BloodOxygenView()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::~BloodOxygenView");
- group->RemoveAll();
- delete imageViewMain;
- delete imageViewProgress;
- delete group;
- delete testButton;
- delete percent;
- delete circleProgress;
- delete imageAnimator;
- delete bloodbandoff;
- imageViewMain = nullptr;
- imageViewProgress = nullptr;
- group = nullptr;
- percent = nullptr;
- testButton = nullptr;
- circleProgress = nullptr;
- imageAnimator = nullptr;
- g_pMainView = nullptr;
- bloodbandoff = nullptr;
- }
-
- BloodOxygenView *BloodOxygenView::GetInstance(void)
- {
- return g_pMainView;
- }
-
- UILabel *BloodOxygenView::GetPercent()
- {
- return percent;
- }
-
- UIViewGroup *BloodOxygenView::GetBloodOxygenGroup()
- {
- return group;
- }
-
- UILabelButton *BloodOxygenView::GetTestButton()
- {
- return testButton;
- }
-
- UICircleProgress *BloodOxygenView::GetCircleProgress()
- {
- return circleProgress;
- }
-
- UILabelButton *BloodOxygenView::CreateAndSetUIButton(const char *title)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIButton");
- UILabelButton *btn = new UILabelButton();
- if (btn == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UILabelButton fail");
- return nullptr;
- }
- btn->SetPosition(TESTBUTTON_X, TESTBUTTON_Y, BUTTON_WIDHT2, BUTTON_HEIGHT2);
- btn->SetText(title);
- btn->SetTextColor(Color::White());
- btn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_LABEL_SIZE);
- btn->SetAlign(TEXT_ALIGNMENT_CENTER);
- btn->SetStyle(STYLE_BACKGROUND_COLOR, 0xffCD492C);
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
-#if 0
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
-#endif
- UIView::OnClickListener *clickLeftListener = (UIView::OnClickListener *)OHOS::BloodOxygenPresenter::GetInstance();
- if (clickLeftListener == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeftListener fail");
- return nullptr;
- }
- btn->SetOnClickListener(clickLeftListener);
- return btn;
- }
-
- bool BloodOxygenView::SetOnDragListener()
- {
- UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::BloodOxygenPresenter::GetInstance();
- if (dragListener == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnDragListener fail");
- return false;
- }
- group->SetDraggable(true);
- group->SetTouchable(true);
- group->SetOnDragListener(dragListener);
- return true;
- }
-
- UIView *BloodOxygenView::CreateAndSetUIView(int16 x, int16 y) const
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIView");
- UIView *view = new UIView();
- if (view == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new View fail");
- return nullptr;
- }
- if (x > VIEW_MAX_X || x < VIEW_MIN_X)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::X error");
- return nullptr;
- }
- if (y < VIEW_MIN_Y || y > VIEW_MAX_Y)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::Y error");
- return nullptr;
- }
- view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
- view->SetStyle(STYLE_BACKGROUND_OPA, VIEW_BACKGROUND_OPA); // 127 : background opacity
- view->SetStyle(STYLE_BORDER_RADIUS, VIEW_BORDER_RADIUS); // 5 : radius value
- view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);
- view->SetStyle(STYLE_BORDER_OPA, BORDER_OPA); // 127 : border opacity
- view->SetStyle(STYLE_BORDER_WIDTH, BORDER_WIDTH); // 20 : border width
- view->SetStyle(STYLE_PADDING_LEFT, MATH_ZERO);
- view->SetStyle(STYLE_PADDING_RIGHT, MATH_ZERO);
- view->SetStyle(STYLE_PADDING_TOP, MATH_ZERO);
- view->SetStyle(STYLE_PADDING_BOTTOM, MATH_ZERO);
- view->SetStyle(STYLE_MARGIN_LEFT, MATH_ZERO);
- view->SetStyle(STYLE_MARGIN_RIGHT, MATH_ZERO);
- view->SetStyle(STYLE_MARGIN_TOP, MATH_ZERO);
- view->SetStyle(STYLE_MARGIN_BOTTOM, MATH_ZERO);
-
- view->SetPosition(x, VIEW_HEIGHT - y);
- view->SetStyle(STYLE_BORDER_WIDTH, MATH_ZERO);
- view->SetStyle(STYLE_BORDER_RADIUS, MATH_ZERO); // 2 : half width 10 : offset
- view->Resize(VIEW_WIDTH, y);
- return view;
- }
-
- UICircleProgress *BloodOxygenView::CreateAndSetUICircleProgress()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUICircleProgress");
- UICircleProgress *circle = new UICircleProgress();
- circle->SetPosition(CIRCLE_PROGRESS_POSITION_X, CIRCLE_PROGRESS_POSITION_Y,
- CIRCLE_PROGRESS_POSITION_WIDTH, CIRCLE_PROGRESS_POSITION_HEIGHT);
- circle->SetCenterPosition(CIRCLE_PROGRESS_CENTER_X, CIRCLE_PROGRESS_CENTER_Y);
- circle->SetRadius(CIRCLE_PROGRESS_RADIUS);
- circle->SetValue(CIRCLE_PROGRESS_VALUE);
- circle->SetBackgroundStyle(STYLE_LINE_WIDTH,
- circle->GetBackgroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
- circle->SetForegroundStyle(STYLE_LINE_WIDTH,
- circle->GetForegroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
- circle->SetStyle(STYLE_PADDING_LEFT, CIRCLE_PROGRESS_LEFT);
- circle->SetStyle(STYLE_PADDING_TOP, CIRCLE_PROGRESS_TOP);
- circle->SetStartAngle(CIRCLE_PROGRESS_STARTANGLE);
- circle->SetEndAngle(CIRCLE_PROGRESS_ENDANGLE);
- circle->SetImage(nullptr, PNG_PROGRESS_BAR_TMAGE);
- circle->SetLineColor(Color::Black());
-
- return circle;
- }
-
- bool BloodOxygenView::InitImageDisplay()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay");
- imageViewMain = new UIImageView();
- if (imageViewMain == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
- return false;
- }
- imageViewMain->SetPosition(MATH_ZERO, MATH_ZERO); // 30 : offset
- imageViewMain->SetSrc(PNG_BLOODOXYGEN_IMAGE_PATH);
- group->Add(imageViewMain);
-
- imageAnimator = new UIImageAnimatorView();
- if (imageAnimator == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageAnimatorView fail");
- return false;
- }
- imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_new, IMAGEANIMATORVIEW_SIZE, IMAGEANIMATORVIEW_SPEED);
- imageAnimator->Start();
- imageAnimator->SetRepeat(true);
- group->Add(imageAnimator);
-
- imageViewProgress = new UIImageView();
- if (imageViewProgress == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
- return false;
- }
- imageViewProgress->SetPosition(IMAGE_PROGRESS_POSITION_X, IMAGE_PROGRESS_POSITION_Y); // 30 : offset
- imageViewProgress->SetSrc(PNG_PROGRESS_BAR_TMAGE);
- group->Add(imageViewProgress);
-
- return true;
- }
-
- void BloodOxygenView::OnStart()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStart");
- View<BloodOxygenPresenter>::OnStart();
-
- group = new UIViewGroup();
- if (group == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new group fail");
- return;
- }
- group->SetPosition(MATH_ZERO, MATH_ZERO);
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-
- // 增加按键监听
- RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::BloodOxygenPresenter::GetInstance();
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
- if (InitImageDisplay() == false)
- {
- return;
- }
-
- if (SetOnDragListener() == false)
- {
- return;
- }
-
- circleProgress = CreateAndSetUICircleProgress();
- if (circleProgress == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new circleProgress fail");
- return;
- }
- group->Add(circleProgress);
-
- percent = new UILabel();
- if (percent == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Label fail");
- return;
- }
- percent->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);
- percent->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
- percent->SetText("%97");
- percent->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PERCENT_FONT_SIZE);
- percent->SetTextColor(Color::White());
- group->Add(percent);
-
- testButton = CreateAndSetUIButton("开始检测");
- if (testButton == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Button fail");
- return;
- }
- group->Add(testButton);
-
- if (OHOS::BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true)
- {
- testButton->SetTouchable(false);
- percent->SetText("");
- }
-
- BloodBandoffView::GetInstance()->CreateUIViewGroup();
-
- RootView::GetInstance()->Add(group);
- RootView::GetInstance()->Add(BloodBandoffView::GetInstance()->GetBandoffViewGroup());
- BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);
- }
-
- void BloodOxygenView::OnSetUpView()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnSetUpView");
- View<BloodOxygenPresenter>::OnSetUpView();
- Draw();
- }
-
- void BloodOxygenView::OnTearDownView()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnTearDownView");
- View<BloodOxygenPresenter>::OnTearDownView();
- return;
- }
-
- void BloodOxygenView::OnStop()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStop");
- View<BloodOxygenPresenter>::OnStop();
- RootView::GetInstance()->RemoveAll();
- return;
- }
-}
-#endif
/*
* Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
* Description: bloodOxygen view
#include "DialModelCharge.h"
#include "DialModelHeartRate.h"
#include "DialModelSPO2.h"
+#include "ppg_service.h"
#include "CallerLogModel.h"
#include "notification_manager.h"
#include "NativeAbility.h"
#ifdef SUPPORT_SPO2_NOTIFICATION
{TOPIC_EVENT_SPO2_UPDATE, PRIORITY_TWO},
{TOPIC_EVENT_HEARTRATE_UPDATA, PRIORITY_TWO},
+ {TOPIC_EVENT_START_HRS_MONITORING, PRIORITY_TWO},
+ {TOPIC_EVENT_STOP_HRS_MONITORING, PRIORITY_TWO},
+ {TOPIC_EVENT_START_SPO2_MONITORING, PRIORITY_TWO},
+ {TOPIC_EVENT_STOP_SPO2_MONITORING, PRIORITY_TWO},
#endif
};
MsgCenterSubscribeTopic(TOPIC_EVENT_SPO2_UPDATE);
MsgCenterSubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);
MsgCenterSubscribeTopic(TOPIC_EVENT_WEARSTATE_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_START_HRS_MONITORING);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_STOP_HRS_MONITORING);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_START_SPO2_MONITORING);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_STOP_SPO2_MONITORING);
#endif
#ifdef SUPPORT_CAT1_MODEM
MsgCenterSubscribeTopic(TOPIC_EVENT_CAT1_INCOMMING);
}
}
#ifdef SUPPORT_SPO2_NOTIFICATION_TEST
-
+uint32_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST;
//血氧
void MsgCenterNotifySPO2hProc(const Topic topic, Request* req)
{
unused(req);
if (topic == TOPIC_EVENT_SPO2_UPDATE && req != nullptr && req->data != nullptr)
{
- //u_int8_t sp02 = *((u_int8_t*)(req->data)); // 进行类型转换
- //DialModelSPO2::::GetInstance()->UpdateSPO2(sp02);
+ u_int8_t sp02 = *((u_int8_t*)(req->data)); // 进行类型转换
+ DialModelSPO2::GetInstance()->UpdateSPO2(sp02);
}
}
//穿戴状态
{
unused(topic);
unused(req);
- if (topic == TOPIC_EVENT_HEARTRATE_UPDATA && req != nullptr && req->data != nullptr)
+ if (topic == TOPIC_EVENT_HEARTRATE_UPDATA)
+ {
+ u_int8_t heart = *((u_int8_t*)(req->data)); // 进行类型转换
+ DialModelHeartRate::GetInstance()->UpdateHeartRate(heart);
+ }
+}
+//开始检测心率
+void MsgCenterNotifyStartHRMonitoringProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+ if (topic == TOPIC_EVENT_START_HRS_MONITORING)
+ {
+ md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST;
+ send_ppg_cmd_msg(md);
+ }
+}
+//结束检测心率
+void MsgCenterNotifyStopHRMonitoringProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+ if (topic == TOPIC_EVENT_STOP_HRS_MONITORING)
{
- //u_int8_t heart = *((u_int8_t*)(req->data)); // 进行类型转换
- //DialModelHeartRate::GetInstance()->UpdateHeartRate(heart);
+ md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
+ send_ppg_cmd_msg(md);
}
}
+//开始检测血氧
+void MsgCenterNotifyStartSPO2MonitoringProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+ if (topic == TOPIC_EVENT_START_SPO2_MONITORING)
+ {
+ md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST;
+ send_ppg_cmd_msg(md);
+ }
+}
+//结束检测血氧
+void MsgCenterNotifyStopSPO2MonitoringProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+ if (topic == TOPIC_EVENT_STOP_SPO2_MONITORING && req != nullptr && req->data != nullptr)
+ {
+ md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST;
+ send_ppg_cmd_msg(md);
+ }
+}
+
#endif
#ifdef SUPPORT_CAT1_MODEM
void MsgCenterNotifyCatIncomingCallProc(const Topic topic, Request* req)
{TOPIC_EVENT_SPO2_UPDATE, MsgCenterNotifySPO2hProc},
{TOPIC_EVENT_WEARSTATE_UPDATE, MsgCenterNotifyWearStateProc},
{TOPIC_EVENT_HEARTRATE_UPDATA, MsgCenterNotifyHeartRateProc},
+ {TOPIC_EVENT_START_HRS_MONITORING, MsgCenterNotifyStartHRMonitoringProc},
+ {TOPIC_EVENT_STOP_HRS_MONITORING, MsgCenterNotifyStopHRMonitoringProc},
+ {TOPIC_EVENT_START_SPO2_MONITORING, MsgCenterNotifyStartSPO2MonitoringProc},
+ {TOPIC_EVENT_STOP_SPO2_MONITORING, MsgCenterNotifyStopSPO2MonitoringProc},
#endif
#ifdef SUPPORT_CAT1_MODEM
{TOPIC_EVENT_CAT1_INCOMMING, MsgCenterNotifyCatIncomingCallProc},