// 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; // 注意上限
// 压力测试结果视图背景图片:
// 压力过载
// 使用可配置阈值进行分档
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);
#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;
// 计算最终结果,有效值的均值
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);
// 停止压力测试
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)