#include "custom_utils.h"
#include "ppg_service.h"
+#include "ConfigModel.h"
+
#ifdef ENABLE_BN02
#include "bp_service.h"
#include "bp_tcp_server.h"
// 进行图表清空;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()
{