#942 心率出值后,过一会又会显示--
authorCaisking <3449750381@qq.com>
Sat, 12 Oct 2024 10:48:32 +0000 (18:48 +0800)
committerCaisking <3449750381@qq.com>
Sat, 12 Oct 2024 10:48:32 +0000 (18:48 +0800)
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp

index 7f0f087..2c17fa1 100644 (file)
@@ -29,9 +29,9 @@ extern "C" {
 #endif\r
 \r
 #define MAX_UNWEAR_COUNT 2\r
-#define MAX_VALID_HRS_COUNT 60\r
-#define MAX_DISVALID_HRS_COUNT 70\r
-#define MIN_DISPLAY_HEART 60\r
+#define MAX_VALID_HRS_COUNT 20\r
+#define MAX_DISVALID_HRS_COUNT 10\r
+#define MIN_DISPLAY_HEART 10\r
 #define DISPLAY_COUNT 0\r
 #define HEARTTEST 1 //[0 开启测试 1 关闭]\r
 \r
@@ -401,7 +401,8 @@ void HeartModel::Heart_Control(HeartState state, HeartCheck check) {
     checkstate = HeartCheck::RESTSTSTE;\r
     LOS_Msleep(500);\r
     uapi_dev_runtime_set_hrs_passivity(0);\r
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_dev_runtime_set_hrs_passivity(0)");\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+                  "uapi_dev_runtime_set_hrs_passivity(0)");\r
   } else if (state == HeartState::Start && heartstate == false) {\r
     /*充电状态下不进行检测*/\r
     bool isCharging = get_charge_stat(); // 获取充电状态\r
@@ -415,24 +416,20 @@ void HeartModel::Heart_Control(HeartState state, HeartCheck check) {
     heartstate = true;\r
     checkstate = check;\r
     //被动\r
-    if(checkstate==HeartCheck::PASSIVITY)\r
-    {\r
-        uapi_dev_runtime_set_hrs_passivity(1);\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_dev_runtime_set_hrs_passivity(1)");\r
+    if (checkstate == HeartCheck::PASSIVITY) {\r
+      uapi_dev_runtime_set_hrs_passivity(1);\r
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+                    "uapi_dev_runtime_set_hrs_passivity(1)");\r
     }\r
-  \r
   }\r
 }\r
 // 开始检测\r
 void HeartModel::Heart_Start() {\r
-  displayheart = 0;\r
-  // displayheart_max=0;// 显示最大心率 [每次检测进行清除]\r
-  // displayheart_min=0;// 显示最小心率 [每次检测进行清除]\r
-\r
-  SetResult(HeartResult::NOT_TESTED); // 重置检测\r
-                                      // 进行初始化操作\r
   if (!sensorstate) {\r
+    displayheart = 0;\r
+    SetResult(HeartResult::NOT_TESTED); // 重置检测\r
     Heart_Control(HeartState::Start, HeartCheck::INITIATIVE);\r
+    ScreenTurnOn(60 * 1000); // 亮屏操作 600000ms 60秒关闭\r
     sensorstate = true;\r
   }\r
 }\r
@@ -442,11 +439,15 @@ void HeartModel::Heart_Stop() {
   valid_counter_ = 0;\r
   disvalid_counter_ = 0;\r
   unwear_counter_ = 0;\r
-  display_counter_ = 0;\r
-  displayheart = 0;\r
+\r
+  // display_counter_ = 0; 取消再次检测的--操作\r
+  // displayheart = 0;\r
+\r
+  ScreenTurnOff(); //恢复正常亮屏\r
 \r
   /*主界面卡片检测 或者 被动检测*/\r
-  if ( checkstate == HeartCheck::PASSIVITY) {\r
+  if (checkstate == HeartCheck::PASSIVITY ||\r
+      checkstate == HeartCheck::CARDCHECK) {\r
     if (heartresult_ == HeartResult::SUCCESS) {\r
       Heart_Save();\r
       /*更新曲线*/\r
@@ -554,15 +555,14 @@ void HeartModel::Heart_Result() {
     break;\r
   }\r
 }\r
- void HeartModel::SetWearStatus()\r
-  {\r
-    // 如果处于训练模式,提前返回\r
-    if (uapi_dev_runtime_get_train_status() == 1)\r
-      return;\r
-    // 设置佩戴状态\r
-    SetResult(HeartResult::NOT_WORN);\r
-    Heart_Stop();\r
-  } \r
+void HeartModel::SetWearStatus() {\r
+  // 如果处于训练模式,提前返回\r
+  if (uapi_dev_runtime_get_train_status() == 1)\r
+    return;\r
+  // 设置佩戴状态\r
+  SetResult(HeartResult::NOT_WORN);\r
+  Heart_Stop();\r
+}\r
 \r
 void HeartModel::UpHeartdata(uint16_t heart) {\r
   // 如果处于训练模式,提前返回\r
@@ -576,13 +576,10 @@ void HeartModel::UpHeartdata(uint16_t heart) {
       displayheart = 0;\r
     }\r
     display_counter_++;\r
-  }\r
-  else\r
-  {\r
+  } else {\r
     displayheart = 0;\r
   }\r
 \r
-\r
   // 更新心率和计数器\r
   if (displayheart != 0) {\r
     currentheart = displayheart; // 更新当前心率\r