namespace OHOS
{
- extern "C"
- {
- void uapi_dev_runtime_set_bloodoxygen_storage_status(uint8_t status);
- void uapi_dev_runtime_set_heartrate_storage_status(uint8_t status);
-
- void save_heart_data()
- {
- printf("save_heart_data\r\n");
- OHOS::HealthService::GetInstance()->SaveDailyHeartRate();
- return;
- }
- }
+extern "C" {
+void uapi_dev_runtime_set_bloodoxygen_storage_status(uint8_t status);
+void uapi_dev_runtime_set_heartrate_storage_status(uint8_t status);
+
+void save_heart_data() {
+ printf("save_heart_data\r\n");
+ OHOS::HealthService::GetInstance()->SaveDailyHeartRate();
+ return;
+}
+
+void save_heart_maxmin() {
+ printf("save_heart_maxmin\r\n");
+ uint16_t max_heart_data = OHOS::HeartModel::GetInstance()->GetShowMaxHeartdata();
+ uint16_t min_heart_data = OHOS::HeartModel::GetInstance()->GetShowMinHeartdata();
+ OHOS::HealthService::GetInstance()->SaveHeartMaxMin(max_heart_data,
+ min_heart_data);
+ return;
+}
+}
static HealthService *g_pHealthService = nullptr;
/*获取日期*/
std::string GetCurrentDate() {
}
// 获取当前小时
- uint16_t HealthService::GetCurrentHour() {
- return currenthour;
- }
+ uint16_t HealthService::GetCurrentHour() { return currenthour; }
+ /*
+ 心率最大最小值存储
+ 关机存储
+*/
+#define HEART_MAX_MIN_PATH "/user/userdata/health/heart_max_min.bin"
+// 保存最大最小值
+bool HealthService::SaveHeartMaxMin(uint16_t max, uint16_t min) {
+ std::ofstream outFile(HEART_MAX_MIN_PATH, std::ios::binary | std::ios::trunc);
+ if (!outFile.is_open()) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open file");
+ return false;
+ }
+
+ outFile.write(reinterpret_cast<const char *>(&max), sizeof(max));
+ if (!outFile) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to write max value");
+ return false;
+ }
+
+ outFile.write(reinterpret_cast<const char *>(&min), sizeof(min));
+ if (!outFile) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to write min value");
+ return false;
+ }
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveHeartMaxMin is ok max %d, min %d",
+ max, min);
+ return true;
+}
+// 加载最大最小值
+void HealthService::LoadHeartMaxMin(uint16_t &max, uint16_t &min) {
+ std::ifstream inFile(HEART_MAX_MIN_PATH, std::ios::binary);
+ if (!inFile.is_open()) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open file %s",
+ HEART_MAX_MIN_PATH);
+ return;
+ }
+
+ inFile.read(reinterpret_cast<char *>(&max), sizeof(max));
+ if (!inFile) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to read max value");
+ return;
+ }
+
+ inFile.read(reinterpret_cast<char *>(&min), sizeof(min));
+ if (!inFile) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to read min value");
+ return;
+ }
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LoadHeartMaxMin is ok max %d, min %d",
+ max, min);
+}
} // namespace OHOS
};\r
static void ProcessHeartRateUpdate(Request *request);\r
static void RefreshHeartData();\r
+void save_heart_maxmin();\r
void HeartDataSubscribeTopic(Topic topic) {\r
BroadcastApi *broadcastApi = nullptr;\r
IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME,\r
currentheart = 0;\r
timestamp_ms = 0;\r
}\r
+ //读取最大最小值\r
+ HealthService::GetInstance()->LoadHeartMaxMin(displayheart_max,\r
+ displayheart_min);\r
// 配置动态数组\r
SetArrayData();\r
}\r
}\r
\r
// 检查无效计数器是否达标\r
- if(uapi_dev_runtime_get_sleep_monitoring_status()) //睡眠监测模式下,增加未佩戴个数最大值,避免误判\r
- max_valid_count = MAX_DISVALID_HRS_COUNT * 2;\r
+ if (uapi_dev_runtime_get_sleep_monitoring_status()) //睡眠监测模式下,增加未佩戴个数最大值,避免误判\r
+ max_valid_count = MAX_DISVALID_HRS_COUNT * 2;\r
else\r
- max_valid_count = MAX_DISVALID_HRS_COUNT;\r
- \r
+ max_valid_count = MAX_DISVALID_HRS_COUNT;\r
+\r
if (disvalid_counter_ >= max_valid_count) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
"检测结果:无效数达标 disvalid_counter:%d", disvalid_counter_);\r