From 4841cbb5e7b8bf8a4c589584f83a2f61ca29a778 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Thu, 13 Jun 2024 10:10:09 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E5=BF=83=E7=8E=87=E6=8E=A7?= =?utf8?q?=E5=88=B6=E6=8E=A5=E5=8F=A3=E3=80=82=E5=AE=9E=E7=8E=B0=E4=B8=BB?= =?utf8?q?=E7=95=8C=E9=9D=A2=E5=BF=83=E7=8E=87=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/heartrate/include/HeartModel.h | 9 +++++++- .../nativeui/heartrate/src/HeartModel.cpp | 23 +++++++++++++++++-- .../nativeui/main/src/MainPresenterSample.cpp | 17 +++++++++++++- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h b/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h index b3e250358..d7a157254 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h @@ -75,7 +75,12 @@ extern "C" #define NUM_7 7 #define NUM_16 16 #define NUM_99 99 - + // 心率检测状态 + enum class HeartState + { + End = 0, + Start, + }; typedef struct { uint32_t heartRatePerSec; @@ -132,6 +137,7 @@ extern "C" void SetCheckTime(uint64_t time); // 设置本次测试完的时间 uint16_t GetIndex(); // 测试点位 void SetIndex(uint16_t index); + void Heart_Control(HeartState state); private: HealthAllDatas healthDatas; @@ -157,6 +163,7 @@ extern "C" uint64 TIME_; // 检测时间(存(时、分),大于24小时,改为1天前,小于1分钟为刚刚) bool initstatus = true; + bool heartstate = false; uint8_t wear_; uint8_t valid_counter_ = 0; // 有效数计数器 uint8_t disvalid_counter_ = 0; // 无效数计数器 diff --git a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp index 089e68c40..dd5f1e993 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp @@ -12,6 +12,7 @@ #include "DialModelHeartRate.h" #include "health_service.h" #include "custom_utils.h" +#include "ppg_service.h" #ifdef __cplusplus extern "C" @@ -188,7 +189,7 @@ namespace OHOS ResultView = false; CheckStatus = false; wearStatus = true; - // 初始化血氧值 + // 初始化心率值 HeartRateData *data; data = HealthService::GetInstance()->ReadHeartRateData(); Heart_ = data->Heart; @@ -465,6 +466,24 @@ namespace OHOS } /* ---------------------------------- 状态检测 ---------------------------------- */ + // 控制心率检测 + void HeartModel::Heart_Control(HeartState state) + { + if (state == HeartState::End && heartstate == true) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartState End"); + uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST; + send_ppg_cmd_msg(md); + heartstate = false; + } + else if (state == HeartState::Start && heartstate == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartState Start"); + uint8_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST; + send_ppg_cmd_msg(md); + heartstate = true; + } + } void HeartModel::Heart_Start() { // 进行初始化操作 @@ -559,7 +578,7 @@ namespace OHOS { return CheckStatus; } - + // 获取心率数据 uint16_t HeartModel::GetHeartdata() { return Heart_; diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp index 3d1523812..96f51d48d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp @@ -24,6 +24,7 @@ #include "PresenterTask.h" #include "DialModelTime.h" #include "DialModelPower.h" +#include "heartrate/include/HeartModel.h" #include "gfx_utils/mem_check.h" #include "custom_utils.h" #include "traing/training_card/include/Training_CardView.h" @@ -36,7 +37,7 @@ namespace OHOS { - std:: map g_jumpView = { + std::map g_jumpView = { {DROPDOWN_CLICK_SETTING, VIEW_SETTING}, // 设置 {DROPDOWN_CLICK_LIGHTING, VIEW_CLASSIC_BLUETOOTH}, // 蓝牙 {DROPDOWN_CLICK_DNOTDISTURB, VIEW_DNOTDISTURB}, // 勿扰 @@ -344,14 +345,17 @@ namespace OHOS void MainPresenterSample::Notify(void) { CardId cardId = view_->GetHorCurrentCard(); + // 指南针卡片 if (cardId == COMPASS) { SetCompassRotate(); } + // 音乐卡片 else if (cardId == MUSIC_PLAYER) { SetCircleProgress(); } + // 主界面 else if (cardId == WATCH_FACE) { DialSetting &setting = GetDialSetting(); @@ -365,6 +369,17 @@ namespace OHOS dynamic_cast(view_->GetViewById(WATCH_FACE))->UpdateTime(); } } + // 心率卡片 + else if (cardId == HEART_RATE) + { + // 开启心率检测 + HeartModel::GetInstance()->Heart_Control(HeartState::Start); + } + else if (cardId != HEART_RATE) + { + // 关闭心率检测 + HeartModel::GetInstance()->Heart_Control(HeartState::End); + } } void MainPresenterSample::InitCardSettings(void) -- 2.17.1