增加pah8311所有功能测量公共接口 3431/1 3431/head 3432/target/1
author1624952103 <pl@DESKTOP-EN9LKR5.localdomain>
Mon, 1 Jun 2026 02:57:21 +0000 (10:57 +0800)
committer1624952103 <pl@DESKTOP-EN9LKR5.localdomain>
Mon, 1 Jun 2026 02:57:21 +0000 (10:57 +0800)
code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c
code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h
code/sdk/zhihui/drivers/ppg/pah831x/PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.h
code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.c
code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.h
code/sdk/zhihui/drivers/ppg/service/ppg_service.cpp
code/sdk/zhihui/drivers/ppg/service/ppg_service.h

index 55e221a..eccb764 100644 (file)
@@ -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)
 {
index 1e433f2..25fd739 100644 (file)
@@ -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
 }
index bb7fbef..9ecc16b 100644 (file)
@@ -54,7 +54,6 @@ void ecg_bp_algorithm_close(void);
 \r
 bool get_bp_cal_data(int* cal_data);\r
 \r
-void pah8311_get_bp(int *sbp,int *dbp);\r
 \r
 #endif  // header guard\r
 \r
index 680804d..eebd3ff 100644 (file)
@@ -1760,7 +1760,15 @@ void pah831x_control(char *mode,uint8_t enable)
             // demo_factory_mode(Check_ECG_WAVEFORM_TEST);\r
             work_mode = 4;\r
             time_out = 200;\r
-        }else if (strcmp(mode, "leaklight") == 0) {\r
+        } else if (strcmp(mode, "ecgbp_cali") == 0) {\r
+            // md = HRV_MODE;\r
+            // pah831x_hrv_start();\r
+            pah831x_ecg_bp_start(0);\r
+            // demo_factory_mode(Check_ECG_WAVEFORM_TEST);\r
+            work_mode = 4;\r
+            time_out = 200;\r
+        } \r
+        else if (strcmp(mode, "leaklight") == 0) {\r
             // md = FT_LEAK_LIGHT_MODE;\r
             // factory_test_mode(factory_test_leak_light_target_sample, 0, 0, 0, 0);\r
             // extern void test_library_HRD(void);\r
index 4103db3..1be7eea 100644 (file)
@@ -367,4 +367,7 @@ uint8_t pah831x_get_hrs(void);
 \r
 uint8_t pah831x_get_spo2(void);\r
 \r
-uint8_t pah831x_get_hrv(void);
\ No newline at end of file
+uint8_t pah831x_get_hrv(void);\r
+\r
+\r
+void pah8311_get_bp(int *sbp,int *dbp);
\ No newline at end of file
index 407ae64..7b2d33b 100644 (file)
@@ -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)
 // {
index 3f9e3b1..1bdd4a0 100644 (file)
@@ -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
 }