// 测量结束状态处理
void BPModel::BPControlStopMeasure()
{
- if (lastData.last_check_sbp_value >= 140 || lastData.last_check_dbp_value >= 90) // 高血压:收缩压≥140 mmHg 或 舒张压≥90 mmHg。
+ if (bp_resullt == BPRESULT::SUCCESS)
{
- BP_SetResultState(BPRESULT::HIGH_RESULT);
- UpdateHealthData(lastData, BP_STORAGE_TYPE::TODAY_DATA); // 存储到文件
- UpdateHealthData(lastData, BP_STORAGE_TYPE::LAST_MEASURE_DATA); // 存储上次测量数据
- }
- else if (lastData.last_check_sbp_value < 90 || lastData.last_check_dbp_value < 60) // 低血压:收缩压<90 mmHg 且 舒张压<60 mmHg。
- {
- BP_SetResultState(BPRESULT::LOW_RESULT);
- UpdateHealthData(lastData, BP_STORAGE_TYPE::TODAY_DATA);
- UpdateHealthData(lastData, BP_STORAGE_TYPE::LAST_MEASURE_DATA);
- }
- else if (lastData.last_check_sbp_value < 120 || lastData.last_check_dbp_value < 80) // 正常血压:收缩压(高压)<120 mmHg 且 舒张压(低压)<80 mmHg。
- {
- BP_SetResultState(BPRESULT::SUCCESS);
- UpdateHealthData(lastData, BP_STORAGE_TYPE::TODAY_DATA);
- UpdateHealthData(lastData, BP_STORAGE_TYPE::LAST_MEASURE_DATA);
+ if (lastData.last_check_sbp_value >= 140 || lastData.last_check_dbp_value >= 90) // 高血压:收缩压≥140 mmHg 或 舒张压≥90 mmHg。
+ {
+ BP_SetResultState(BPRESULT::HIGH_RESULT);
+ UpdateHealthData(lastData, BP_STORAGE_TYPE::TODAY_DATA); // 存储到文件
+ UpdateHealthData(lastData, BP_STORAGE_TYPE::LAST_MEASURE_DATA); // 存储上次测量数据
+ }
+ else if (lastData.last_check_sbp_value < 90 || lastData.last_check_dbp_value < 60) // 低血压:收缩压<90 mmHg 且 舒张压<60 mmHg。
+ {
+ BP_SetResultState(BPRESULT::LOW_RESULT);
+ UpdateHealthData(lastData, BP_STORAGE_TYPE::TODAY_DATA);
+ UpdateHealthData(lastData, BP_STORAGE_TYPE::LAST_MEASURE_DATA);
+ }
+ else if (lastData.last_check_sbp_value < 120 || lastData.last_check_dbp_value < 80) // 正常血压:收缩压(高压)<120 mmHg 且 舒张压(低压)<80 mmHg。
+ {
+ BP_SetResultState(BPRESULT::SUCCESS);
+ UpdateHealthData(lastData, BP_STORAGE_TYPE::TODAY_DATA);
+ UpdateHealthData(lastData, BP_STORAGE_TYPE::LAST_MEASURE_DATA);
+ }
}
else // 数据异常
{
// 校准分析状态处理
void BPModel::BPControlCalibratingAnalysis()
{
- BP_StartTimer();
- ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
if (Time != BP_ANLYSISI_TIME_MAX)
Time = BP_ANLYSISI_TIME_MAX; // 重置时间
+ CalibrationresultFlag = false; // 重置校准结果判断标志位
+ BP_StartTimer();
+ ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
}
// 压力测量状态处理
void BPModel::BPControlStressMeasure()
{
BP_StartTimer();
+ BP_SetResultState(BPRESULT::NOT_TESTED); // 重置测量结果标志位
ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
if (Time != BP_CHECK_TIME_MAX)
void BPModel::BP_GetData(uint8_t *sbp, uint8_t *dbp)
{
#ifdef ENABLE_BN02
+ // 打印指针地址(调试用)
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BP_GetData: input pointers - sbp=%p, dbp=%p", sbp, dbp);
+
if (sbp && dbp)
{
+ // 打印调用前的值(如果有)
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BP_GetData: before call - sbp=%d, dbp=%d", *sbp, *dbp);
+
int temp_sbp = 0, temp_dbp = 0;
bp_get_data(&temp_sbp, &temp_dbp);
- // 添加范围检查,避免数据截断
+ // 范围检查与赋值
if (temp_sbp >= 0 && temp_sbp <= UINT8_MAX)
{
- *sbp = static_cast<uint8_t>(temp_sbp);
+ *sbp = temp_sbp;
}
else
{
- *sbp = 0; // 默认值
+ *sbp = 0;
}
if (temp_dbp >= 0 && temp_dbp <= UINT8_MAX)
{
- *dbp = static_cast<uint8_t>(temp_dbp);
+ *dbp = temp_dbp;
}
else
{
*dbp = 0;
}
+
+ // 打印处理后的值
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BP_GetData: after call - sbp=%d, dbp=%d", *sbp, *dbp);
+ }
+ else
+ {
+ // 记录错误:调用者传入了空指针
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BP_GetData: invalid input! sbp=%p, dbp=%p", sbp, dbp);
}
#endif
}
bpMainView->ChangeView(current_state == BPState::BP_CALIBRATING_FIRSTTIME
? BPUNDERCALIBRATIONVIEW
: BPSECUNDERCALIBRATIONVIEW,
- BPCALIBRATIONMINDVIEW);
+ BPRESULTANALYSISVIEW);
}
BP_STOP();
- BP_SetState(BPState::BP_IDLE);
CalibrationFlag++;
+ BP_Control(BPState::BP_CALIBRATING_ANGLYSIS);
return;
}
// 处理校准分析状态
{
if (bpMainView)
{
- if (1) // 获取到数据,成功
+ if (CalibrationresultFlag) // 获取到数据,成功
{
bpMainView->ChangeView(BPRESULTANALYSISVIEW, BPCALIBRATIONPASSVIEW);
int configValue = static_cast<int>(GetCurrentTime());
uint8_t sbp = 0;
uint8_t dbp = 0;
BP_GetData(&sbp, &dbp);
- if (Time == 1) // 测试数据用于验证
- {
- lastData.timestamp = BPModel::GetCurrentTime(); // 获取时间戳
- lastData.last_check_sbp_value = rand() % 40 + 90;
- lastData.last_check_dbp_value = rand() % 40 + 60;
- // 测量完成
- bp_resullt == BPRESULT::SUCCESS;
- }
if (bp_resullt == BPRESULT::NOT_TESTED && sbp > 0 && dbp > 0) // 检测到数据
{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BPDetectBeginViewData sbp:%d,dbp:%d", sbp, dbp);
lastData.timestamp = BPModel::GetCurrentTime(); // 获取时间戳
lastData.last_check_sbp_value = sbp;
lastData.last_check_dbp_value = dbp;
BP_GetData(&sbp, &dbp);
if (bp_resullt == BPRESULT::NOT_TESTED && sbp > 0 && dbp > 0) // 检测到数据
{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BPUnderCalibrationViewData sbp:%d,dbp:%d", sbp, dbp);
lastData.timestamp = BPModel::GetCurrentTime(); // 获取时间戳
lastData.last_check_sbp_value = sbp;
lastData.last_check_dbp_value = dbp;
// 测量完成
+ CalibrationresultFlag = true;
bp_resullt == BPRESULT::SUCCESS;
}
}
BP_GetData(&sbp, &dbp);
if (bp_resullt == BPRESULT::NOT_TESTED && sbp > 0 && dbp > 0) // 检测到数据
{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BPSecUnderCalibrationViewData sbp:%d,dbp:%d", sbp, dbp);
lastData.timestamp = BPModel::GetCurrentTime(); // 获取时间戳
lastData.last_check_sbp_value = sbp;
- lastData.last_check_dbp_value = dbp;
+ lastData.last_check_dbp_value = sbp;
// 测量完成
+ CalibrationresultFlag = true;
bp_resullt == BPRESULT::SUCCESS;
}
}
{
lastData = data; // 加载上次测量时间
}
-#if 1
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "timestamp:%d", data.timestamp);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "last_check_sbp_value:%d", data.last_check_sbp_value);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "last_check_dbp_value:%d", data.last_check_dbp_value);
-#endif
}
// 关闭文件
ifs.close();