增加心率控制接口。实现主界面心率检测
authorCaisking <3449750381@qq.com>
Thu, 13 Jun 2024 02:10:09 +0000 (10:10 +0800)
committerCaisking <3449750381@qq.com>
Thu, 13 Jun 2024 02:10:09 +0000 (10:10 +0800)
code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp

index b3e2503..d7a1572 100644 (file)
@@ -75,7 +75,12 @@ extern "C"
 #define NUM_7 7\r
 #define NUM_16 16\r
 #define NUM_99 99\r
-\r
+        // 心率检测状态\r
+        enum class HeartState\r
+        {\r
+            End = 0,\r
+            Start,\r
+        };\r
         typedef struct\r
         {\r
             uint32_t heartRatePerSec;\r
@@ -132,6 +137,7 @@ extern "C"
             void SetCheckTime(uint64_t time); // 设置本次测试完的时间\r
             uint16_t GetIndex();              // 测试点位\r
             void SetIndex(uint16_t index);\r
+            void Heart_Control(HeartState state);\r
 \r
         private:\r
             HealthAllDatas healthDatas;\r
@@ -157,6 +163,7 @@ extern "C"
             uint64 TIME_;         // 检测时间(存(时、分),大于24小时,改为1天前,小于1分钟为刚刚)\r
 \r
             bool initstatus = true;\r
+            bool heartstate = false;\r
             uint8_t wear_;\r
             uint8_t valid_counter_ = 0;    // 有效数计数器\r
             uint8_t disvalid_counter_ = 0; // 无效数计数器\r
index 089e68c..dd5f1e9 100644 (file)
@@ -12,6 +12,7 @@
 #include "DialModelHeartRate.h"\r
 #include "health_service.h"\r
 #include "custom_utils.h"\r
+#include "ppg_service.h"\r
 \r
 #ifdef __cplusplus\r
 extern "C"\r
@@ -188,7 +189,7 @@ namespace OHOS
         ResultView = false;\r
         CheckStatus = false;\r
         wearStatus = true;\r
-        // 初始化血氧值\r
+        // 初始化心率值\r
         HeartRateData *data;\r
         data = HealthService::GetInstance()->ReadHeartRateData();\r
         Heart_ = data->Heart;\r
@@ -465,6 +466,24 @@ namespace OHOS
     }\r
     /* ---------------------------------- 状态检测 ---------------------------------- */\r
 \r
+    // 控制心率检测\r
+    void HeartModel::Heart_Control(HeartState state)\r
+    {\r
+        if (state == HeartState::End && heartstate == true)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartState End");\r
+            uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;\r
+            send_ppg_cmd_msg(md);\r
+            heartstate = false;\r
+        }\r
+        else if (state == HeartState::Start && heartstate == false)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartState Start");\r
+            uint8_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST;\r
+            send_ppg_cmd_msg(md);\r
+            heartstate = true;\r
+        }\r
+    }\r
     void HeartModel::Heart_Start()\r
     {\r
         // 进行初始化操作\r
@@ -559,7 +578,7 @@ namespace OHOS
     {\r
         return CheckStatus;\r
     }\r
-\r
+    // 获取心率数据\r
     uint16_t HeartModel::GetHeartdata()\r
     {\r
         return Heart_;\r
index 3d15238..96f51d4 100644 (file)
@@ -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<std::string, AppViewId> g_jumpView = {
+    std::map<std::string, AppViewId> 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<MainClockView *>(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)