心率血氧:关机存储修改为测量完存储
authorCaisking <3449750381@qq.com>
Wed, 2 Oct 2024 08:32:30 +0000 (16:32 +0800)
committerSnickerSun <snickersun@163.com>
Thu, 10 Oct 2024 07:04:42 +0000 (15:04 +0800)
code/sdk/application/wearable/fd230app/nativeui/heart_blood/health_service/health_service.cpp

index ebe6d22..2eb5eb0 100644 (file)
@@ -315,8 +315,79 @@ bool HealthService::CreateHealthFolder() {
         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操作 ---------------------------------
  */