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()
{
return true;
}
- // 存储心率
- bool HealthService::UpdateHealthData(const HeartRateData &data)
- {
- // 判断文件夹是否存在
- if (!CreateHealthFolder())
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file");
- return false;
- }
+ //存储心率
+ bool HealthService::UpdateHealthData(const HeartRateData &data)
+ {
+ // 配置心率存储状态
+ uapi_dev_runtime_set_heartrate_storage_status(1);
- // 判断文件是否存在 不存在即创建 并打开以输出模式
- 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;
- }
+ // 判断文件夹是否存在
+ if (!CreateHealthFolder())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file");
+ uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态
+ return false;
+ }
- // 创建一个 JSON 对象
- cJSON *heart_root = cJSON_CreateObject();
- if (heart_root == NULL)
- {
- outFile.close();
- 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");
+ uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态
+ return false;
+ }
+
+ // 创建一个 JSON 对象
+ cJSON *heart_root = cJSON_CreateObject();
+ if (heart_root == NULL)
+ {
+ outFile.close();
+ uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态
+ return false;
+ }
- cJSON_AddItemToObject(heart_root, "value", cJSON_CreateNumber(data.Heart));
- cJSON_AddItemToObject(heart_root, "timestamp", cJSON_CreateNumber(data.timestamp));
+ 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;
- }
+ char *jsonData = cJSON_Print(heart_root);
+ if (jsonData == NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to generate JSON data");
+ cJSON_Delete(heart_root); // 使用 cJSON_Delete 释放内存
+ outFile.close();
+ uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态
+ return false;
+ }
- // 写入 JSON 数据到文件
- outFile << jsonData;
+ // 写入 JSON 数据到文件
+ outFile << jsonData;
- cJSON_free(heart_root);
- free(jsonData);
- outFile.close();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData Heart JSON is ok");
+ // 释放资源
+ cJSON_Delete(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;
- }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHourlyHeartRate is ok");
+
+ if (!SaveDailyHeartRate()) // 进行心率历史数据文件存储
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveDailyHeartRate failed");
+ uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态
+ return false;
+ }
+
+ /* 存储 bin 文件 [协议使用] */
+ std::string binFilePath = GetBinFilePath(HEALTH_TYPE_HEART);
+ FILE *fp = fopen(binFilePath.c_str(), "ab+");
+ if (fp == NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open binary file for writing");
+ uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态
+ return false;
+ }
- fwrite(&data.timestamp, 4, 1, fp);
- fwrite(&data.Heart, 1, 1, fp);
+ // 写入数据
+ if (fwrite(&data.timestamp, sizeof(data.timestamp), 1, fp) != 1 ||
+ fwrite(&data.Heart, sizeof(data.Heart), 1, fp) != 1)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to write data to binary file");
+ fclose(fp);
+ uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态
+ return false;
+ }
- fclose(fp);
+ fclose(fp);
- return true;
+ uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态
+ return true;
}
// 清空健康数据
bool HealthService::CleanHealthData()