优化ECG血压校准信息存储
author1624952103 <pl@DESKTOP-EN9LKR5.localdomain>
Sat, 13 Jun 2026 06:25:10 +0000 (14:25 +0800)
committer1624952103 <pl@DESKTOP-EN9LKR5.localdomain>
Sat, 13 Jun 2026 06:25:10 +0000 (14:25 +0800)
code/sdk/zhihui/drivers/ppg/pah831x/PXI_ALG/ECG_PPG_BP/v3070/pah_ecg_bp_alg.c
code/sdk/zhihui/drivers/ppg/pah831x/pah_sensor/pah831x_main.c

index 6fa70ee..7ffcd84 100644 (file)
@@ -79,7 +79,7 @@ int ppg_pf_output;
 //static bool bp_cal_ready = true ;\r
 //int calibration_bp[4] = {-1,-22,28,64};\r
 static bool bp_cal_ready = false ;\r
-int calibration_bp[4] = {0};\r
+static int calibration_bp[4] = {0};\r
 uint16_t    omron_sbp = 0;\r
 uint16_t    omron_dbp = 0;\r
 uint8_t     cal_mode = 0;\r
@@ -546,6 +546,9 @@ void pah_ecg_bp_get_bp(int *sbp, int *dbp)
 \r
 bool get_bp_cal_data(int* cal_data)\r
 {\r
+    if(cal_data == NULL)\r
+        return false;\r
+\r
     cal_data[0]=calibration_bp[0];\r
     cal_data[1]=calibration_bp[1];\r
     cal_data[2]=calibration_bp[2];\r
index fa3ac46..94d79d0 100644 (file)
@@ -2313,6 +2313,10 @@ void pah831x_read_calidata(void)
     CalValue1_in = cali_data[3];\r
     bp_cali_cnt = cali_data[4];\r
 \r
+    printf("pah831x_read_calidata\n");\r
+\r
+    printf("cal_sbp_in:%d, cal_dbp_in:%d, CalValue_in:%d, CalValue1_in:%d, bp_cali_cnt:%d\n", cal_sbp_in, cal_dbp_in, CalValue_in, CalValue1_in, bp_cali_cnt);\r
+\r
     printf("read cali data success\n");\r
 }\r
 \r
@@ -2321,23 +2325,18 @@ void pah831x_read_calidata(void)
  */\r
 void pah831x_save_calidata(void)\r
 {\r
+    int cali_data[5] = {0};\r
+    get_bp_cal_data(cali_data);\r
 \r
-    if(!cal_sbp_in && !cal_dbp_in && !CalValue_in && !CalValue1_in)\r
+    if(cali_data[0] == 0 && cali_data[1] == 0 && cali_data[2] == 0 && cali_data[3] == 0)\r
     {\r
         printf("error cali param!\n");\r
         return;\r
     }\r
 \r
-    // C89 规范:所有变量定义在函数开头\r
-    int cali_data[5] = {0};\r
     FILE *fp = NULL;\r
     size_t ret = 0;\r
 \r
-    // 填充校准数据\r
-    cali_data[0] = cal_sbp_in;\r
-    cali_data[1] = cal_dbp_in;\r
-    cali_data[2] = CalValue_in;\r
-    cali_data[3] = CalValue1_in;\r
     cali_data[4] = ++bp_cali_cnt;  // 先保存当前计数值\r
 \r
     fp = fopen(FILEPATH, "wb");  // 二进制写入,避免文本模式转义\r
@@ -2357,11 +2356,17 @@ void pah831x_save_calidata(void)
         return;\r
     }\r
 \r
+    printf("pah831x_save_calidata\n");\r
+\r
+    printf("cali_data[0]:%d, cali_data[1]:%d, cali_data[2]:%d, cali_data[2]:%d, bp_cali_cnt:%d\n", cali_data[0], cali_data[1], cali_data[2], cali_data[3], cali_data[4]);\r
+\r
 }\r
 \r
 bool is_pah831x_need_cali(void)\r
 {\r
-    pah831x_read_calidata();\r
+    // pah831x_read_calidata();\r
+\r
+    // return bp_cali_cnt >= 10 ? 0 : 1;\r
 \r
-    return bp_cali_cnt >= 10 ? 0 : 1;\r
+    return 1;\r
 }
\ No newline at end of file