From e5cbef1c727dc93fb445c7c6a63f1c7295a163cb Mon Sep 17 00:00:00 2001 From: 1624952103 Date: Mon, 1 Jun 2026 10:57:21 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0pah8311=E6=89=80=E6=9C=89?= =?utf8?q?=E5=8A=9F=E8=83=BD=E6=B5=8B=E9=87=8F=E5=85=AC=E5=85=B1=E6=8E=A5?= =?utf8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c | 7 +++ code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h | 2 + .../PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.h | 1 - .../ppg/pah831x/pah_sensor/pah831x_main.c | 10 ++- .../ppg/pah831x/pah_sensor/pah831x_main.h | 5 +- .../drivers/ppg/service/ppg_service.cpp | 62 +++++++++++++++++++ .../zhihui/drivers/ppg/service/ppg_service.h | 23 +++++++ 7 files changed, 107 insertions(+), 3 deletions(-) diff --git a/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c b/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c index 55e221a2b..eccb764eb 100644 --- a/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c +++ b/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c @@ -136,6 +136,13 @@ uint8_t ppg_get_hrv(void) return hrv; } +void ppg_get_bp(int *sbp,int *dbp) +{ +#if defined PPG_PAH831X + pah8311_get_bp(sbp,dbp); +#endif +} + uint8_t ppg_get_wear_status(void) { diff --git a/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h b/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h index 1e433f25a..25fd7391c 100644 --- a/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h +++ b/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h @@ -68,6 +68,8 @@ void ppg_set_factory_log_switch(uint8_t cmd); uint8_t ppg_get_factory_log_switch(void); uint8_t ppg_get_hrv(void); +void ppg_get_bp(int *sbp,int *dbp); + #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/zhihui/drivers/ppg/pah831x/PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.h b/code/sdk/zhihui/drivers/ppg/pah831x/PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.h index bb7fbef40..9ecc16b03 100644 --- a/code/sdk/zhihui/drivers/ppg/pah831x/PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.h +++ b/code/sdk/zhihui/drivers/ppg/pah831x/PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.h @@ -54,7 +54,6 @@ void ecg_bp_algorithm_close(void); bool get_bp_cal_data(int* cal_data); -void pah8311_get_bp(int *sbp,int *dbp); #endif // header guard diff --git a/code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.c b/code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.c index 680804ddb..eebd3ff03 100644 --- a/code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.c +++ b/code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.c @@ -1760,7 +1760,15 @@ void pah831x_control(char *mode,uint8_t enable) // demo_factory_mode(Check_ECG_WAVEFORM_TEST); work_mode = 4; time_out = 200; - }else if (strcmp(mode, "leaklight") == 0) { + } else if (strcmp(mode, "ecgbp_cali") == 0) { + // md = HRV_MODE; + // pah831x_hrv_start(); + pah831x_ecg_bp_start(0); + // demo_factory_mode(Check_ECG_WAVEFORM_TEST); + work_mode = 4; + time_out = 200; + } + else if (strcmp(mode, "leaklight") == 0) { // md = FT_LEAK_LIGHT_MODE; // factory_test_mode(factory_test_leak_light_target_sample, 0, 0, 0, 0); // extern void test_library_HRD(void); diff --git a/code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.h b/code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.h index 4103db3f8..1be7eeaf2 100644 --- a/code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.h +++ b/code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.h @@ -367,4 +367,7 @@ uint8_t pah831x_get_hrs(void); uint8_t pah831x_get_spo2(void); -uint8_t pah831x_get_hrv(void); \ No newline at end of file +uint8_t pah831x_get_hrv(void); + + +void pah8311_get_bp(int *sbp,int *dbp); \ No newline at end of file diff --git a/code/sdk/zhihui/drivers/ppg/service/ppg_service.cpp b/code/sdk/zhihui/drivers/ppg/service/ppg_service.cpp index 407ae64d6..7b2d33b99 100644 --- a/code/sdk/zhihui/drivers/ppg/service/ppg_service.cpp +++ b/code/sdk/zhihui/drivers/ppg/service/ppg_service.cpp @@ -205,6 +205,16 @@ static void ppg_service_check_task(void *arg) cmd = "ecgraw"; enable = 0; } + else if(mail == PPG_SERVICE_CMD_TYPE_DO_ECGBPCALI_TEST) + { + cmd = "ecgbp_cali"; + enable = 1; + } + else if(mail == PPG_SERVICE_CMD_TYPE_STOP_ECGBPCALI_TEST) + { + cmd = "ecgbp_cali"; + enable = 0; + } else if (mail == PPG_SERVICE_CMD_TYPE_INT_HANDLER){ ppg_int_handler(); continue; @@ -336,6 +346,58 @@ void ppg_hrv_stop(void) send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_HRV_TEST); } +void ppg_bp_start(uint8_t mode) +{ + if(mode == 0) + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_ECGBPCALI_TEST); + else if(mode == 1) + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_ECGBP_TEST); +} + +void ppg_bp_stop(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_ECGBP_TEST); +} + +void ppg_afib_start(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_ECGAFIB_TEST); +} + +void ppg_afib_stop(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_ECGAFIB_TEST); +} + +void ppg_stress_start(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_STRESS_TEST); +} + +void ppg_stress_stop(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_STRESS_TEST); +} + +void ppg_rr_start(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_RR_TEST); +} + +void ppg_rr_stop(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_RR_TEST); +} + +void ppg_ecg_raw_start(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_ECGRAW_TEST); +} + +void ppg_ecg_raw_stop(void) +{ + send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_ECGRAW_TEST); +} // void ppg_service_service_resume(void) // { diff --git a/code/sdk/zhihui/drivers/ppg/service/ppg_service.h b/code/sdk/zhihui/drivers/ppg/service/ppg_service.h index 3f9e3b127..1bdd4a098 100644 --- a/code/sdk/zhihui/drivers/ppg/service/ppg_service.h +++ b/code/sdk/zhihui/drivers/ppg/service/ppg_service.h @@ -60,6 +60,8 @@ extern "C" { #define PPG_SERVICE_CMD_TYPE_STOP_RR_TEST 0x31 #define PPG_SERVICE_CMD_TYPE_DO_ECGRAW_TEST 0x32 #define PPG_SERVICE_CMD_TYPE_STOP_ECGRAW_TEST 0x33 +#define PPG_SERVICE_CMD_TYPE_DO_ECGBPCALI_TEST 0x34 +#define PPG_SERVICE_CMD_TYPE_STOP_ECGBPCALI_TEST 0x35 errcode_t uapi_ppg_service_init(void); @@ -106,6 +108,27 @@ void ppg_spo2_stop(void); void ppg_hrv_start(void); void ppg_hrv_stop(void); +//mode:0 校准模式 1:正常测量 +void ppg_bp_start(uint8_t mode); +void ppg_bp_stop(void); + +//房颤测量 +void ppg_afib_start(void); +void ppg_afib_stop(void); + +//压力测量 +void ppg_stress_start(void); +void ppg_stress_stop(void); + +//呼吸率测量 +void ppg_rr_start(void); +void ppg_rr_stop(void); + +//ECG心电原始数据 +void ppg_ecg_raw_start(void); +void ppg_ecg_raw_stop(void); + + #ifdef __cplusplus #if __cplusplus } -- 2.17.1