#define MIN_DISPLAY_HEART 60\r
#define HEARTTEST 1 //[0 开启测试 1 关闭]\r
\r
-/* 佩戴检测结果 */\r
+/*佩戴检测结果*/\r
enum {\r
SENSOR_WEAR_ON = 0,\r
SENSOR_WEAR_OFF,\r
}\r
int ret = broadcastApi->SubscribeTopic((IUnknown *)broadcastApi, topic,\r
&heartSubscirber);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
- "HeartSubscribeTopic ret = %d, topic = %u", ret, topic);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartSubscribeTopic ret=%d,topic=%u",\r
+ ret, topic);\r
broadcastApi->Release((IUnknown *)broadcastApi);\r
}\r
\r
\r
switch (request->msgId) {\r
case TOPIC_EVENT_HEARTRATE_UPDATA:\r
+ // 主界面刷新\r
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(\r
+ &HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance()));\r
// ProcessHeartRateUpdate(request);\r
break;\r
\r
/*最大最小值不为0*/\r
heartInfo->maxValue = preheart;\r
heartInfo->minValue = preheart;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "heartRateData = %d %d",\r
- heartInfo->index, preheart);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "heartRateData=%d%d", heartInfo->index,\r
+ preheart);\r
OHOS::HeartModel::GetInstance()->HeartRatePros(heartInfo);\r
\r
free(heartInfo); // 释放内存\r
HeartRateView::GetInstance()->ClearElectrocardiogram();\r
}\r
SetAveHeartRateCount(0);\r
- GraphicService::GetInstance()->PostGraphicEvent(\r
- std::bind(&HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance(),\r
- healthDatas.heartRatePerSec, healthDatas.heartRateRest,\r
- healthDatas.heartRateMax.y, healthDatas.heartRateMin.y));\r
+ // GraphicService::GetInstance()->PostGraphicEvent(\r
+ // std::bind(&HeartModel::RefreshHeartRateScreen,\r
+ // HeartModel::GetInstance(),\r
+ // healthDatas.heartRatePerSec,healthDatas.heartRateRest,\r
+ // healthDatas.heartRateMax.y,healthDatas.heartRateMin.y));\r
}\r
\r
HeartModel::HeartModel() {\r
currentheart = 0;\r
timestamp_ms = 0;\r
}\r
- //配置动态数组\r
+ // 配置动态数组\r
SetArrayData();\r
}\r
\r
healthDatas.heartRatePerSec = perSecHeartRate;\r
}\r
\r
- GraphicService::GetInstance()->PostGraphicEvent(\r
- std::bind(&HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance(),\r
- healthDatas.heartRatePerSec, healthDatas.heartRateRest,\r
- healthDatas.heartRateMax.y, healthDatas.heartRateMin.y));\r
+ // GraphicService::GetInstance()->PostGraphicEvent(\r
+ // std::bind(&HeartModel::RefreshHeartRateScreen,\r
+ // HeartModel::GetInstance(),\r
+ // healthDatas.heartRatePerSec,healthDatas.heartRateRest,\r
+ // healthDatas.heartRateMax.y,healthDatas.heartRateMin.y));\r
}\r
\r
uint16_t HeartModel::GetAveHeartRateCount(void) { return aveCount; }\r
\r
void HeartModel::SetAveHeartRateCount(uint16_t value) { aveCount = value; }\r
\r
-void HeartModel::RefreshHeartRateScreen(uint16_t perSec, uint16_t rest,\r
- uint16_t maxRate, uint16_t minRate) {\r
- uint16_t currentViewId = NativeAbility::GetInstance().GetCurSliceId();\r
- /*主界面刷新心率*/\r
- if (currentViewId == VIEW_MAIN && MainClockView::GetInstance() != nullptr) {\r
- MainClockView::GetInstance()->RefreshHeartRate(perSec);\r
- }\r
- /*心率卡片刷新心率数据*/\r
+void HeartModel::RefreshHeartRateScreen() {\r
if (MainViewSample::GetInstance() != nullptr &&\r
- HeartRateView::GetInstance() != nullptr) {\r
+ HeartChartView::GetInstance() != nullptr) {\r
if (MainViewSample::GetInstance()->GetHorCurrentCard() == HEART_RATE) {\r
- HeartRateView::GetInstance()->RefreshHeartRatePerSec(perSec);\r
- HeartRateView::GetInstance()->RefreshHeartRateMax(maxRate);\r
- HeartRateView::GetInstance()->RefreshHeartRateMin(minRate);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+ "HeartChartView::GetInstance() start");\r
+ HeartChartView::GetInstance()->UpdateShowHeart();\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+ "HeartChartView::GetInstance() end");\r
}\r
}\r
- /*applist心率刷新心率数据*/\r
- if (HeartChartView::GetInstance() != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartChartView::GetInstance() start");\r
- HeartChartView::GetInstance()->UpdateShowHeart();\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartChartView::GetInstance() end");\r
- }\r
}\r
-/* ---------------------------------- 状态检测\r
- * ---------------------------------- */\r
+/*----------------------------------状态检测\r
+ *----------------------------------*/\r
\r
// 重新初始化\r
void HeartModel::ClearDisplayData() {\r
// 开始检测\r
void HeartModel::Heart_Start() {\r
displayheart = 0;\r
- // displayheart_max = 0; // 显示最大心率 [每次检测进行清除]\r
- // displayheart_min = 0; // 显示最小心率 [每次检测进行清除]\r
+ // displayheart_max=0;// 显示最大心率 [每次检测进行清除]\r
+ // displayheart_min=0;// 显示最小心率 [每次检测进行清除]\r
\r
SetResult(HeartResult::NOT_TESTED); // 重置检测\r
- // 进行初始化操作\r
+ // 进行初始化操作\r
if (!sensorstate) {\r
Heart_Control(HeartState::Start, HeartCheck::INITIATIVE);\r
sensorstate = true;\r
}\r
\r
if (sensorstate) {\r
- // Heart_Control(HeartState::End, HeartCheck::INITIATIVE); 主动检测心率\r
+ // Heart_Control(HeartState::End,HeartCheck::INITIATIVE);主动检测心率\r
// 不需要关闭\r
sensorstate = false;\r
Heart_Result(); // 处理结果\r
SetCheckTime(data.timestamp);\r
HealthService::GetInstance()->UpdateHealthData(data);\r
\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存的心率数据: %d %ld",\r
- currentheart, data.timestamp);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存的心率数据:%d%ld", currentheart,\r
+ data.timestamp);\r
}\r
\r
// 显示检测结果// 显示检测结果\r
currentheart != 0) {\r
// 当前心率低于阈值\r
heartresult_ = HeartResult::LOW_RESULT;\r
- WEARABLE_LOGE(\r
- WEARABLE_LOG_MODULE_APP,\r
- "检测结果: 低结果情况, currentheart = %d, ThresholdValue = %d",\r
- currentheart, ThresholdValue);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+ "检测结果:低结果情况,currentheart=%d,ThresholdValue=%d",\r
+ currentheart, ThresholdValue);\r
} else if (ThresholdState == 1 && currentheart > ThresholdValue) {\r
// 当前心率高于阈值\r
heartresult_ = HeartResult::HIGH_RESULT;\r
- WEARABLE_LOGE(\r
- WEARABLE_LOG_MODULE_APP,\r
- "检测结果: 高结果情况, currentheart = %d, ThresholdValue = %d",\r
- currentheart, ThresholdValue);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+ "检测结果:高结果情况,currentheart=%d,ThresholdValue=%d",\r
+ currentheart, ThresholdValue);\r
}\r
}\r
\r
// 根据结果进行处理\r
switch (heartresult_) {\r
case HeartResult::SUCCESS:\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果: 成功");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:成功");\r
Heart_Save();\r
/*更新曲线*/\r
GraphicService::GetInstance()->PostGraphicEvent(\r
case HeartResult::NOT_WORN: // 未佩戴状态\r
case HeartResult::TIMEOUT: // 超时情况\r
case HeartResult::INVALID_DATA: // 无效数据情况\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果: %s情况",\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:%s情况",\r
heartresult_ == HeartResult::NOT_WORN\r
? "未佩戴状态"\r
: heartresult_ == HeartResult::TIMEOUT ? "超时"\r
\r
case HeartResult::LOW_RESULT:\r
// 低心率结果处理\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果: 低结果情况");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:低结果情况");\r
HealthState lowHealthState;\r
lowHealthState.checkType = BLOOD_CHECK;\r
lowHealthState.resultStatus = LOW;\r
\r
case HeartResult::HIGH_RESULT:\r
// 高心率结果处理\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果: 高结果情况");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:高结果情况");\r
HealthState highHealthState;\r
highHealthState.checkType = BLOOD_CHECK;\r
highHealthState.resultStatus = HIGH;\r
break;\r
\r
default:\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果: 未知状态");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:未知状态");\r
break;\r
}\r
}\r
// 检查是否达到了最大未佩戴计数限制\r
if (unwear_counter_ >= MAX_UNWEAR_COUNT) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "检测结果: 未佩戴计数最大 unwear_counter: %d",\r
- unwear_counter_);\r
+ "检测结果:未佩戴计数最大 unwear_counter:%d", unwear_counter_);\r
SetResult(HeartResult::NOT_WORN);\r
Heart_Stop();\r
}\r
// 检查无效计数器是否达标\r
if (disvalid_counter_ >= MAX_DISVALID_HRS_COUNT) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "检测结果: 无效数达标 disvalid_counter: %d",\r
- disvalid_counter_);\r
+ "检测结果:无效数达标 disvalid_counter:%d", disvalid_counter_);\r
SetResult(HeartResult::INVALID_DATA); // 标记为无效数据\r
Heart_Stop();\r
return;\r
// 检查有效计数器是否达标\r
if (valid_counter_ >= MAX_VALID_HRS_COUNT) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "检测结果: 成功 valid_counter: %d currentheart: %d",\r
+ "检测结果:成功 valid_counter:%d currentheart:%d",\r
valid_counter_, currentheart);\r
SetResult(HeartResult::SUCCESS); // 标记为成功检测\r
Heart_Stop();\r
\r
// 刷新心率显示\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "[heart data update displayheart %d displayheart_max %d "\r
- "displayheart_min %d]",\r
+ "[heart data update displayheart%d displayheart_max%d "\r
+ "displayheart_min%d]",\r
displayheart, displayheart_max, displayheart_min);\r
- \r
- GraphicService::GetInstance()->PostGraphicEvent(\r
- std::bind(&HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance(),\r
- displayheart, 0, displayheart_max, displayheart_min));\r
+\r
+ // GraphicService::GetInstance()->PostGraphicEvent(\r
+ // std::bind(&HeartModel::RefreshHeartRateScreen,\r
+ // HeartModel::GetInstance(),\r
+ // displayheart));\r
}\r
\r
void HeartModel::Heart_Update_View(void) {\r
}\r
}\r
\r
-//配置5个动态心率数据\r
-//最大 最小\r
+// 配置5个动态心率数据\r
+// 最大 最小\r
void HeartModel::SetArrayData() {\r
// 如果没有进行心率检测,则默认为0-220\r
if (displayheart_max == 0 || displayheart_min == 0) {\r
\r
// 打印动态心率数据\r
for (int i = 0; i < 5; i++) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dynamic_heartrate[%d] = %d", i,\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dynamic_heartrate[%d]=%d", i,\r
dynamic_heartrate[i]);\r
}\r
}\r
-//获取动态心率配置数组\r
+// 获取动态心率配置数组\r
uint16_t *HeartModel::GetArrayData() { return dynamic_heartrate; }\r
\r
// 获取检测字符串\r
// 获取检测数据\r
if (currentheart == 0) {\r
check_string = "暂无检测数据";\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测数据: %s",\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测数据:%s",\r
check_string.c_str()); // 打印无检测数据信息\r
return check_string; // 直接返回,无需继续处理\r
}\r
// 检查时间戳是否有效\r
if (timestamp_ms == 0) {\r
check_string = std::to_string(currentheart) + " " + "时间戳无效,无法检测";\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "时间戳无效,无法检测: %s",\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "时间戳无效,无法检测:%s",\r
check_string.c_str());\r
return check_string; // 直接返回,无需继续处理\r
}\r
uint32_t diff_min = diff / 60; // 计算分钟差\r
uint32_t diff_hour = diff_min / 60; // 计算小时差\r
\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "当前时间: %d, 上次检测时间: %d",\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "当前时间:%d,上次检测时间:%d",\r
currentTime, timestamp_ms); // 打印时间信息\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "时间差 (秒): %d, 时间差 (分钟): %d, 时间差 (小时): %d", diff,\r
- diff_min, diff_hour); // 打印时间差信息\r
+ "时间差(秒):%d,时间差(分钟):%d,时间差(小时):%d", diff, diff_min,\r
+ diff_hour); // 打印时间差信息\r
\r
// 根据时间差生成检测字符串\r
if (diff_min < 1) {\r
check_string = std::to_string(currentheart) + "次/分 " + "超过一个小时前";\r
}\r
\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果: %s",\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "检测结果:%s",\r
check_string.c_str()); // 打印最终检测结果\r
return check_string;\r
}\r