From: Caisking <3449750381@qq.com> Date: Wed, 28 Feb 2024 11:00:21 +0000 (+0800) Subject: 1.UI接通血氧检测流程,可以开启服务;2.更新星空表盘,KUMI表盘 X-Git-Tag: release_V1.2.70_20241020_135402~1274^2~50^2~2 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=a8c68ba5d3bc0d735cc1dc23d72356e1d66037aa;p=mirrors%2FFD230.git 1.UI接通血氧检测流程,可以开启服务;2.更新星空表盘,KUMI表盘 --- diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index a68e953fd..41701ddee 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -65,7 +65,7 @@ typedef enum : uint16_t /* ---------------------------------- 测试界面 ---------------------------------- */ VIEW_DIAL, // 切换表盘 VIEW_MESSAGE, // 信息通知 - VIEW_BLOODO, // 血氧监测 + VIEW_BLOOD, // 血氧监测 VIEW_ROTATE, // 模拟表冠 /* -------------------------------------------------------------------------- */ VIEW_MAIN_TEMP, // 体温界面(暂时不用) diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp index 0949112c6..fd3303f3c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp @@ -12,140 +12,174 @@ #include "components/ui_label.h" #include "BloodBandoffView.h" #include "ChangeSliceListener.h" +#include "broadcast_service.h" +#include +#include "iostream" +#include +#include +#include +#include +#include "wearable_log.h" +#include "cmsis_os.h" +#include "securec.h" +#include "broadcast_service.h" +#include "graphic_service.h" +#include +#include +#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::OnStart(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::On Start "); + } -void BloodOxygenPresenter::OnStart() -{ - Presenter::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(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(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 diff --git a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp index 269575950..a8eb34a12 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/src/BloodOxygenView.cpp @@ -1,421 +1,3 @@ -/* - * 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::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::OnSetUpView(); - Draw(); - } - - void BloodOxygenView::OnTearDownView() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnTearDownView"); - View::OnTearDownView(); - return; - } - - void BloodOxygenView::OnStop() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStop"); - View::OnStop(); - RootView::GetInstance()->RemoveAll(); - return; - } -} -#endif /* * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. * Description: bloodOxygen view diff --git a/code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp b/code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp index d5afbdcb3..315e0343a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp @@ -22,6 +22,7 @@ uint16_t ignore_slice_ids[] = { VIEW_INVALID, VIEW_SETTING, VIEW_UISAMPLE, + VIEW_BLOODOXY,//血氧功能 #ifdef SUPPORT_ALIPAY_SEC // VIEW_MAIN_ALIPAY, #endif diff --git a/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h b/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h index f21907548..b7889feb6 100755 --- a/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h +++ b/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h @@ -51,6 +51,10 @@ typedef enum { #endif #ifdef SUPPORT_SPO2_NOTIFICATION TOPIC_EVENT_SPO2_UPDATE, + TOPIC_EVENT_START_HRS_MONITORING, + TOPIC_EVENT_STOP_HRS_MONITORING, + TOPIC_EVENT_START_SPO2_MONITORING, + TOPIC_EVENT_STOP_SPO2_MONITORING, #endif #ifdef SUPPORT_CAT1_MODEM TOPIC_EVENT_CAT1_INCOMMING, diff --git a/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c b/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c index 7f4cc3780..bd4bac04d 100755 --- a/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c +++ b/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c @@ -28,6 +28,10 @@ static const TopicToCore topicToCoreArray[] = { {TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1}, #ifdef SUPPORT_SPO2_NOTIFICATION {TOPIC_EVENT_SPO2_UPDATE, A_CORE_MASK, 1}, + {TOPIC_EVENT_START_HRS_MONITORING, A_CORE_MASK, 1}, + {TOPIC_EVENT_STOP_HRS_MONITORING, A_CORE_MASK, 1}, + {TOPIC_EVENT_START_SPO2_MONITORING, A_CORE_MASK, 1}, + {TOPIC_EVENT_STOP_SPO2_MONITORING, A_CORE_MASK, 1}, #endif {TOPIC_EVENT_HFP_INCOMMING, A_CORE_MASK, 1}, {TOPIC_EVENT_HFP_PHONE_ACTIVE, A_CORE_MASK, 1}, diff --git a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp index e79fde60f..e9b5b5a8e 100755 --- a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp @@ -19,6 +19,7 @@ #include "DialModelCharge.h" #include "DialModelHeartRate.h" #include "DialModelSPO2.h" +#include "ppg_service.h" #include "CallerLogModel.h" #include "notification_manager.h" #include "NativeAbility.h" @@ -59,6 +60,10 @@ const PriorityMapper g_pri_mapper[] = { #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 }; @@ -97,6 +102,10 @@ void MsgCenterSubscribe() 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); @@ -201,7 +210,7 @@ void MsgCenterNotifyHfpWatchProc(const Topic topic, Request* req) } } #ifdef SUPPORT_SPO2_NOTIFICATION_TEST - +uint32_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST; //血氧 void MsgCenterNotifySPO2hProc(const Topic topic, Request* req) { @@ -209,8 +218,8 @@ 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); } } //穿戴状态 @@ -228,12 +237,57 @@ void MsgCenterNotifyHeartRateProc(const Topic topic, Request* req) { 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) @@ -285,6 +339,10 @@ static msg_center_notify_table_t g_msg_center_notify_table[] = { {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}, diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dials/KUMI.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dials/KUMI.bin index a1b6c792a..05fdb0b19 100644 Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dials/KUMI.bin and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dials/KUMI.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dials/galaxy.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dials/galaxy.bin index 3ee99efe9..48af26f24 100644 Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dials/galaxy.bin and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dials/galaxy.bin differ diff --git a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp index 56863195b..0a4545f6e 100644 --- a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp +++ b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp @@ -109,10 +109,9 @@ void CustomEventPublish(uint16_t topic, uint8_t *data , uint32_t size) } - +//血氧 errcode_t update_spo2_event_notify(uint8_t spo2) { - CustomEventPublish(TOPIC_EVENT_SPO2_UPDATE,(uint8_t*)&spo2,sizeof(spo2)); return 0; } @@ -123,31 +122,45 @@ errcode_t update_spo2_event_sendmsg_toUI(uint8_t spo2) return ERRCODE_SUCC; } +//心率 +errcode_t update_hrs_event_notify(uint8_t hrs) +{ + CustomEventPublish(TOPIC_EVENT_HEARTRATE_UPDATA,(uint8_t*)&hrs,sizeof(hrs)); + return 0; +} +errcode_t update_hrs_event_sendmsg_toUI(uint8_t hrs) +{ + /**通过UI事件发送Notify*/ + GraphicService::GetInstance()->PostGraphicEvent(std::bind(update_hrs_event_notify, hrs)); + return ERRCODE_SUCC; +} + #include "hx3695_hal.h" void hx3695_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "hx3695_msg_callback"); FT_CUSTOM_RESULTS_t sensor_data; // 使用更通用的名称 sensor_data +#if 1 + if (msg_datalen < sizeof(FT_CUSTOM_RESULTS_t)) { + // 数据长度不足以填充整个结构体 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid data length for SPO2 update"); + //return; + } +#endif + memcpy(&sensor_data, msg_data, sizeof(FT_CUSTOM_RESULTS_t)); switch(msg_type) { case HX3695_MSG_TYPE_HRS_UPDATE: + //每秒心率 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HX3695_MSG_TYPE_HRS_UPDATE = %d", sensor_data.lastesthrs); + update_hrs_event_sendmsg_toUI(sensor_data.lastesthrs); break; case HX3695_MSG_TYPE_HRV_UPDATE: break; case HX3695_MSG_TYPE_SPO2_UPDATE: - { - #if 1 - if (msg_datalen < sizeof(FT_CUSTOM_RESULTS_t)) { - // 数据长度不足以填充整个结构体 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid data length for SPO2 update"); - break; - } - #endif - memcpy(&sensor_data, msg_data, sizeof(FT_CUSTOM_RESULTS_t)); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HX3695_MSG_TYPE_SPO2_UPDATE = %d", sensor_data.lastestspo2); - update_spo2_event_sendmsg_toUI(sensor_data.lastestspo2); - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HX3695_MSG_TYPE_SPO2_UPDATE = %d", sensor_data.lastestspo2); + update_spo2_event_sendmsg_toUI(sensor_data.lastestspo2); break; case HX3695_MSG_TYPE_LEAKLIGHT_UPDATE: break; @@ -156,6 +169,7 @@ void hx3695_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datale case HX3695_MSG_TYPE_WEARSTAT_UPDATE: break; default: + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Unknown sensor message type"); break; } }