血压:添加是否需要重新测量函数,待验证 1943/1 1943/head 1944/target/1
authorluozheng <1732036298@qq.com>
Tue, 8 Jul 2025 07:02:04 +0000 (15:02 +0800)
committerluozheng <1732036298@qq.com>
Tue, 8 Jul 2025 07:02:04 +0000 (15:02 +0800)
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/include/BPModel.h
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp

index 9c80cee..6d5ca2e 100644 (file)
@@ -142,6 +142,8 @@ namespace OHOS
     uint8_t mapValue(uint8_t value);
     void mapDataArray(uint8_t value);
     bool CleanBPData(void);
+    bool needMeasure(int validityDays = 30);
+
     // 获取过程值数据
     std::vector<uint8_t> GetBPCheckDataArray(void);
 
index 642d5d7..4df6d55 100644 (file)
@@ -34,6 +34,8 @@
 #include "custom_utils.h"
 #include "ppg_service.h"
 
+#include "ConfigModel.h"
+
 #ifdef ENABLE_BN02
 #include "bp_service.h"
 #include "bp_tcp_server.h"
@@ -533,7 +535,48 @@ namespace OHOS
     // 进行图表清空;model数组清空
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CleanBPData success");
     return true;
-  } //////////////////////////////////time处理////////////////////////////////////
+  }
+
+  /**
+   * @brief 判断是否需要进行新的测量
+   * @param validityDays 校准有效期(天),默认30天
+   * @return true 需要测量(校准无效),false 无需测量(校准有效)
+   */
+  bool BPModel::needMeasure(int validityDays)
+  {
+    int firstCalibTime = 0;
+    int secondCalibTime = 0;
+#if defined(BOARD_W9)
+    firstCalibTime = ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BP_CALIBRATION_FIRST_TIME);
+    secondCalibTime = ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BP_CALIBRATION_SECOND_TIME);
+#endif
+    // 2. 获取当前时间(秒级时间戳)
+    uint32_t now = 0;
+    uapi_get_timestampe_ss(&now);
+    // 3. 计算有效期(秒)
+    const int64_t validitySeconds = validityDays * 24 * 3600;
+
+    // 4. 检查两次校准是否均在有效期内
+    bool firstValid = (now - firstCalibTime) <= validitySeconds;
+    bool secondValid = (now - secondCalibTime) <= validitySeconds;
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "now:%d,firstCalibTime:%d,secondCalibTime:%d", now, firstCalibTime, secondCalibTime);
+
+    if (!firstValid)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "第一次校准已过期,需要测量");
+      return true;
+    }
+    if (!secondValid)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "第二次校准已过期,需要测量");
+      return true;
+    }
+
+    // 5. 两次校准均有效,无需测量
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "两次校准均在有效期内,无需测量");
+    return false;
+  }
+  //////////////////////////////////time处理////////////////////////////////////
   // time到时的处理
   void BPModel::BP_timer_callback_out()
   {