Skip to content

Commit 6dcd127

Browse files
Jiyun-Yanggmarull
authored andcommitted
fw/apps/prf/hrm_obelix: update GH3x2x factory CTR and leakage test pass criteria
Signed-off-by: Yang Jiyun <[email protected]>
1 parent e91f1ff commit 6dcd127

File tree

1 file changed

+40
-13
lines changed

1 file changed

+40
-13
lines changed

src/fw/apps/prf_apps/mfg_hrm_ctr_leakage_obelix_app.c

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,24 @@
2828
#include <stdint.h>
2929
#include <stdio.h>
3030

31+
#define HRM_ALGO_TUNING_MODE 0
32+
3133
#define STATUS_STRING_LEN 32
3234
#define CTR_STRING_LEN 128
3335
#define LEAKAGE_STRING_LEN 128
3436

35-
#define PPG_GR_CTR_THS (28.0f)
36-
#define PPG_IR_CTR_THS (36.0f)
37-
#define PPG_RED_CTR_THS (36.0f)
38-
#define PPG_GR_LEAK_THS (1.03f)
39-
#define PPG_IR_LEAK_THS (0.8f)
40-
#define PPG_RED_LEAK_THS (0.8f)
37+
#define PPG_GR_CTR_THS0 (423.0f)
38+
#define PPG_GR_CTR_THS1 (441.0f)
39+
#define PPG_IR_CTR_THS0 (339.0f)
40+
#define PPG_IR_CTR_THS1 (336.0f)
41+
#define PPG_RED_CTR_THS0 (564.0f)
42+
#define PPG_RED_CTR_THS1 (597.0f)
43+
#define PPG_GR_LEAK_THS0 (1.87f)
44+
#define PPG_GR_LEAK_THS1 (2.4f)
45+
#define PPG_IR_LEAK_THS0 (10.2f)
46+
#define PPG_IR_LEAK_THS1 (9.8f)
47+
#define PPG_RED_LEAK_THS0 (7.0f)
48+
#define PPG_RED_LEAK_THS1 (9.6f)
4149

4250
typedef struct {
4351
Window window;
@@ -58,10 +66,21 @@ static void prv_handle_hrm_data(PebbleEvent *e, void *context) {
5866
AppData *app_data = app_state_get_user_data();
5967

6068
if (e->type == PEBBLE_HRM_EVENT) {
69+
#if HRM_ALGO_TUNING_MODE
70+
if (e->hrm.event_type == HRMEvent_BPM) {
71+
memset(app_data->ctr_string, 0, CTR_STRING_LEN);
72+
snprintf(app_data->ctr_string, CTR_STRING_LEN, "HR:%d Q:%d", e->hrm.bpm.bpm, e->hrm.bpm.quality);
73+
PBL_LOG(LOG_LEVEL_DEBUG, "%s", app_data->ctr_string);
74+
} else if (e->hrm.event_type == HRMEvent_SpO2) {
75+
memset(app_data->leak_string, 0, LEAKAGE_STRING_LEN);
76+
snprintf(app_data->leak_string, CTR_STRING_LEN, "SPO2:%d Q:%d", e->hrm.spo2.percent, e->hrm.spo2.quality);
77+
PBL_LOG(LOG_LEVEL_DEBUG, "%s", app_data->leak_string);
78+
}
79+
#else
6180
if (e->hrm.event_type == HRMEvent_CTR) {
62-
bool rst = (e->hrm.ctr->ctr[0] >= PPG_GR_CTR_THS) && (e->hrm.ctr->ctr[1] >= PPG_GR_CTR_THS)
63-
&& (e->hrm.ctr->ctr[2] >= PPG_IR_CTR_THS) && (e->hrm.ctr->ctr[3] >= PPG_IR_CTR_THS)
64-
&& (e->hrm.ctr->ctr[4] >= PPG_RED_CTR_THS) && (e->hrm.ctr->ctr[5] >= PPG_RED_CTR_THS);
81+
bool rst = (e->hrm.ctr->ctr[0] >= PPG_GR_CTR_THS0) && (e->hrm.ctr->ctr[1] >= PPG_GR_CTR_THS1)
82+
&& (e->hrm.ctr->ctr[2] >= PPG_IR_CTR_THS0) && (e->hrm.ctr->ctr[3] >= PPG_IR_CTR_THS1)
83+
&& (e->hrm.ctr->ctr[4] >= PPG_RED_CTR_THS0) && (e->hrm.ctr->ctr[5] >= PPG_RED_CTR_THS1);
6584
memset(app_data->ctr_string, 0, CTR_STRING_LEN);
6685
snprintf(app_data->ctr_string, CTR_STRING_LEN,
6786
"CTR:(%s)\n%4d.%02d %4d.%02d %4d.%02d\n%4d.%02d %4d.%02d %4d.%02d",
@@ -74,9 +93,9 @@ static void prv_handle_hrm_data(PebbleEvent *e, void *context) {
7493
(int)e->hrm.ctr->ctr[5], (int)(e->hrm.ctr->ctr[5]*100)%100);
7594
PBL_LOG(LOG_LEVEL_DEBUG, "%s", app_data->ctr_string);
7695
} else if (e->hrm.event_type == HRMEvent_Leakage) {
77-
bool rst = (e->hrm.leakage->leakage[0] <= PPG_GR_LEAK_THS) && (e->hrm.leakage->leakage[1] <= PPG_GR_LEAK_THS)
78-
&& (e->hrm.leakage->leakage[2] <= PPG_IR_LEAK_THS) && (e->hrm.leakage->leakage[3] <= PPG_IR_LEAK_THS)
79-
&& (e->hrm.leakage->leakage[4] <= PPG_RED_LEAK_THS) && (e->hrm.leakage->leakage[5] <= PPG_RED_LEAK_THS);
96+
bool rst = (e->hrm.leakage->leakage[0] <= PPG_GR_LEAK_THS0) && (e->hrm.leakage->leakage[1] <= PPG_GR_LEAK_THS1)
97+
&& (e->hrm.leakage->leakage[2] <= PPG_IR_LEAK_THS0) && (e->hrm.leakage->leakage[3] <= PPG_IR_LEAK_THS1)
98+
&& (e->hrm.leakage->leakage[4] <= PPG_RED_LEAK_THS0) && (e->hrm.leakage->leakage[5] <= PPG_RED_LEAK_THS1);
8099
memset(app_data->leak_string, 0, LEAKAGE_STRING_LEN);
81100
snprintf(app_data->leak_string, LEAKAGE_STRING_LEN,
82101
"Leak:(%s)\n%4d.%02d %4d.%02d %4d.%02d\n%4d.%02d %4d.%02d %4d.%02d",
@@ -89,7 +108,7 @@ static void prv_handle_hrm_data(PebbleEvent *e, void *context) {
89108
(int)e->hrm.leakage->leakage[5], (int)(e->hrm.leakage->leakage[5]*100)%100);
90109
PBL_LOG(LOG_LEVEL_DEBUG, "%s", app_data->leak_string);
91110
}
92-
111+
#endif
93112
layer_mark_dirty(&app_data->window.layer);
94113
}
95114
}
@@ -99,6 +118,9 @@ static void prv_update_status(void* param) {
99118
}
100119

101120
static void prv_select_click_handler(ClickRecognizerRef recognizer, void *data) {
121+
#if HRM_ALGO_TUNING_MODE
122+
return;
123+
#endif
102124
AppData *app_data = app_state_get_user_data();
103125
if (app_data->test_type) {
104126
gh3x2x_start_ft_ctr();
@@ -169,8 +191,13 @@ static void prv_handle_init(void) {
169191

170192
// Use app data as session ref
171193
AppInstallId app_id = 1;
194+
#if HRM_ALGO_TUNING_MODE
195+
data->hrm_session = sys_hrm_manager_app_subscribe(app_id, 1, SECONDS_PER_HOUR,
196+
HRMFeature_BPM | HRMFeature_SpO2);
197+
#else
172198
data->hrm_session = sys_hrm_manager_app_subscribe(app_id, 1, SECONDS_PER_HOUR,
173199
HRMFeature_CTR | HRMFeature_Leakage);
200+
#endif
174201

175202
app_window_stack_push(window, true);
176203
}

0 commit comments

Comments
 (0)