272:添加压力测试hrv映射
authorluozheng <1732036298@qq.com>
Mon, 17 Nov 2025 03:56:58 +0000 (11:56 +0800)
committerluozheng <1732036298@qq.com>
Mon, 17 Nov 2025 03:56:58 +0000 (11:56 +0800)
code/sdk/application/wearable/fd272/nativeapp/nativeui/stress/include/stressTestUIConfig.h
code/sdk/application/wearable/fd272/nativeapp/nativeui/stress/src/stressTestModel.cpp

index 4b7d0ba..31bc44e 100644 (file)
@@ -11,9 +11,9 @@ namespace OHOS
     // NORMAL:      (STRESS_THRESHOLD_EXCELLENT_MAX, STRESS_THRESHOLD_NORMAL_MAX]
     // WARNING:     (STRESS_THRESHOLD_NORMAL_MAX, STRESS_THRESHOLD_WARNING_MAX]
     // OVERLOAD:    > STRESS_THRESHOLD_WARNING_MAX
-    static constexpr uint16_t STRESS_THRESHOLD_EXCELLENT_MAX = 30;  // 优秀上限
-    static constexpr uint16_t STRESS_THRESHOLD_NORMAL_MAX    = 50;  // 正常上限
-    static constexpr uint16_t STRESS_THRESHOLD_WARNING_MAX   = 70;  // 注意上限
+    static constexpr uint16_t STRESS_THRESHOLD_EXCELLENT_MAX = 20;  // 优秀上限
+    static constexpr uint16_t STRESS_THRESHOLD_NORMAL_MAX    = 40;  // 正常上限
+    static constexpr uint16_t STRESS_THRESHOLD_WARNING_MAX   = 60;  // 注意上限
 
     // 压力测试结果视图背景图片:
     //  压力过载
index 9cbb1b7..5232745 100644 (file)
@@ -145,19 +145,19 @@ namespace OHOS
         // 使用可配置阈值进行分档
         if (value > STRESS_THRESHOLD_WARNING_MAX)
         {
-            currentResultType = RESULT_TYPE_OVERLOAD; // > 70
+            currentResultType = RESULT_TYPE_EXCELLENT; // > 60
         }
         else if (value > STRESS_THRESHOLD_NORMAL_MAX)
         {
-            currentResultType = RESULT_TYPE_WARNING; // 51-70
+            currentResultType = RESULT_TYPE_NORMAL; // 40-60
         }
         else if (value > STRESS_THRESHOLD_EXCELLENT_MAX)
         {
-            currentResultType = RESULT_TYPE_NORMAL; // 31-50
+            currentResultType = RESULT_TYPE_WARNING; // 20-40
         }
         else
         {
-            currentResultType = RESULT_TYPE_EXCELLENT; // 0-30
+            currentResultType = RESULT_TYPE_OVERLOAD; // <20
         }
         SaveResultToFile();
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StressTestModel::HandleResultValue: %d", currentResultType);
@@ -168,15 +168,15 @@ namespace OHOS
 #define MAX_VALID_STRESS_COUNT 40    // 最大有效数据个数(60秒内至少需要40个有效数据)
 #define MAX_DISVALID_STRESS_COUNT 15 // 最大无效数据个数(连续15次无效则停止)
 #define MAX_UNWEAR_COUNT 2           // 最大未佩戴次数
-#define STRESS_TEST_DURATION_SEC 120  // 压力测试持续时间(秒)
+#define STRESS_TEST_DURATION_SEC 100  // 压力测试持续时间(秒)
 
     // 压力测量状态变量
     static uint16_t valid_counter_ = 0;     // 有效数据计数器
     static uint16_t disvalid_counter_ = 0;  // 无效数据计数器
     static uint16_t unwear_counter_ = 0;    // 未佩戴计数器
     static uint16_t test_duration_sec_ = 0; // 测试持续时间(秒)
-    static uint16_t stress_value_ = 0;      // 当前压力值
-    static uint16_t ringBuffer[60]{0};      // 压力测试结果环形缓冲区
+    static uint8_t stress_value_ = 0;      // 当前压力值
+    static uint8_t ringBuffer[60]{0};      // 压力测试结果环形缓冲区
     static uint16_t ringBufferIndex = 0;    // 环形缓冲区索引
 
     GraphicTimer *g_stressTestTimer = nullptr;
@@ -249,10 +249,13 @@ namespace OHOS
             // 计算最终结果,有效值的均值
             uint16_t sum = 0;
             uint16_t count = (ringBufferIndex < 60) ? ringBufferIndex : 60;
+            printf("测试结果:\n");
             for (int i = 0; i < count; i++)
             {
                 sum += ringBuffer[i];
+                printf("%d ",ringBuffer[i]);
             }
+            printf("\n");
             uint16_t finalMs = sum / count;
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "压力测试完成: 最终结果 %dms, 有效数据个数: %d", finalMs, count);
             // 停止压力测试
@@ -267,6 +270,7 @@ namespace OHOS
                 StressTestPresenter::GetInstance()->ChangeViewOperation(
                     StressTestModel::GetInstance().GetCurrentView(), STRESSTESTRESULTVIEW);
             }
+            uapi_set_screen_on_api();
         }
         // 检查是否达到测试时长且有效数据足够
         if ((test_duration_sec_ >= STRESS_TEST_DURATION_SEC) && ringBufferIndex < MAX_VALID_STRESS_COUNT)