return true;
}
- return healthTypePath + currentDate + ".bin";
-}
+ // 存储心率
+ bool HealthService::UpdateHealthData(const HeartRateData &data)
+ {
+ // 判断文件夹是否存在
+ if (!CreateHealthFolder())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file");
+ return false;
+ }
+
+ // 判断文件是否存在 不存在即创建 并打开以输出模式
+ std::ofstream outFile(HEART_JSON_PATH, std::ios::trunc);
+ if (!outFile.is_open())
+ {
+ // 文件创建失败
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create or open JSON file for writing");
+ return false;
+ }
+
+ // 创建一个 JSON 对象
+ cJSON *heart_root = cJSON_CreateObject();
+ if (heart_root == NULL)
+ {
+ outFile.close();
+ return false;
+ }
+
+ cJSON_AddItemToObject(heart_root, "value", cJSON_CreateNumber(data.Heart));
+ cJSON_AddItemToObject(heart_root, "timestamp", cJSON_CreateNumber(data.timestamp));
+
+ char *jsonData = cJSON_Print(heart_root);
+ if (jsonData == NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to generate JSON data");
+ cJSON_free(heart_root);
+ outFile.close();
+ return false;
+ }
+
+ // 写入 JSON 数据到文件
+ outFile << jsonData;
+
+ cJSON_free(heart_root);
+ free(jsonData);
+ outFile.close();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData Heart JSON is ok");
+
+ // 写入文件到当天历史数据
+ UpdateHourlyHeartRate(data.timestamp, data.Heart);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHourlyHeartRate is ok");
+ SaveDailyHeartRate();//进行心率历史数据文件存储
+
+ /* 存储bin文件[协议使用] */
+ std::string binFilePath = GetBinFilePath(HEALTH_TYPE_HEART);
+ FILE *fp = fopen(binFilePath.c_str(), "ab+");
+ if (fp == NULL)
+ {
+ return false;
+ }
+
+ fwrite(&data.timestamp, 4, 1, fp);
+ fwrite(&data.Heart, 1, 1, fp);
+
+ fclose(fp);
+
+ return true;
+ }
+ // 清空健康数据
+ bool HealthService::CleanHealthData()
+ {
+ ClearHourlyHeartRates();
+ HeartModel::GetInstance()->ClearDisplayData();
+ BloodOxygenModel::GetInstance()->ClearDisplayData();
/* --------------------------------- json操作 ---------------------------------
*/