+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-09 17:01:31
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/bloodoxygen/include/BloodOxygenModel.h
+ */
/***
* @Date: 2024-04-15 10:55:58
* @LastEditors: Caisking 3449750381@qq.com
uint8_t GetShowSPO2data();
// Methods for handling check time
- uint64_t GetCheckTime();
- void SetCheckTime(uint64_t time);
+ uint32_t GetCheckTime();
+ void SetCheckTime(uint32_t time);
// Methods for wear status
void SetWearStatus(int32_t wear);
void Blood_Start();
void Blood_Control(BloodState state);
+ void ReInit();
private:
bool OxygenView;
bool wearStatus;
uint16_t Show_SPO2_;
uint16_t SPO2_;
- uint64_t timestamp_ms;
+ uint32_t timestamp_ms;
int32_t wear_;
bool startspo2{false};
#include "wearable_log.h"
#include "heart_blood/health_service/health_service.h"
#include "custom_utils.h"
-extern "C" errcode_t uapi_get_timestamp_ms(uint64_t *tm);
+extern "C" errcode_t uapi_get_timestamp_ms(uint32_t *tm);
#include "custom_utils.h"
#include "ppg_service.h"
return &instance;
}
/* ---------------------------------- 状态检测 ---------------------------------- */
+ // 重新初始化
+ void BloodOxygenModel::ReInit()
+ {
+ SPO2_ = 0;
+ timestamp_ms = 0;
+ }
// 血氧监控
void BloodOxygenModel::Blood_Control(BloodState state)
return Show_SPO2_;
}
- uint64_t BloodOxygenModel::GetCheckTime()
+ uint32_t BloodOxygenModel::GetCheckTime()
{
return timestamp_ms;
}
- void BloodOxygenModel::SetCheckTime(uint64_t time)
+ void BloodOxygenModel::SetCheckTime(uint32_t time)
{
timestamp_ms = time;
}
#include <sstream>
#include <string>
#include <cstdint>
+#include "heartrate/include/HeartModel.h"
+#include "bloodoxygen/include/BloodOxygenModel.h"
namespace OHOS
{
cJSON_free(oxygen_root);
free(jsonData);
outFile.close();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData JSON is ok");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData SPO2 JSON is ok");
/* 存储bin文件[协议使用] */
std::string binFilePath = GetBinFilePath(HEALTH_TYPE_OXYGEN);
cJSON_free(heart_root);
free(jsonData);
outFile.close();
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData JSON is ok");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData Heart JSON is ok");
/* 存储bin文件[协议使用] */
std::string binFilePath = GetBinFilePath(HEALTH_TYPE_HEART);
return true;
}
-
+ // 清空健康数据
+ bool HealthService::CleanHealthData()
+ {
+ HeartRateData heartdata;
+ heartdata.Heart = 0;
+ heartdata.timestamp = 0;
+ BloodOxygenData blooddata;
+ blooddata.SPO2 = 0;
+ blooddata.timestamp = 0;
+ if (!UpdateHealthData(heartdata))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData heartdata is error");
+ return false;
+ }
+ if (!UpdateHealthData(blooddata))
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData blooddata is error");
+ return false;
+ }
+ HeartModel::GetInstance()->ReInit();
+ BloodOxygenModel::GetInstance()->ReInit();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CleanHealthData is ok");
+ return true;
+ }
}
\ No newline at end of file
+/***
+ * @Date: 2024-06-14 11:34:19
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-09 16:25:59
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/heart_blood/health_service/health_service.h
+ */
/***
* @Date: 2024-06-14 11:34:19
* @LastEditors: Caisking 3449750381@qq.com
~HealthService();
static HealthService *GetInstance(void);
bool CreateHealthFolder();
- bool LoadJsonData(uint8_t type); // 加载json
- BloodOxygenData *ReadBloodOxygenData(); // 读取血氧数据
- HeartRateData *ReadHeartRateData(); // 读取心率数据
+ bool LoadJsonData(uint8_t type); // 加载json
+ BloodOxygenData *ReadBloodOxygenData(); // 读取血氧数据
+ HeartRateData *ReadHeartRateData(); // 读取心率数据
bool UpdateHealthData(const HeartRateData &data); // 更新心率数据
bool UpdateHealthData(const BloodOxygenData &data);
void ReleaseJsonData(uint8_t type); // 释放json
bool UpdateJsonData(uint8_t type); // 更新json
+ bool CleanHealthData();
};
}
#endif // HEALTH_MODEL_H
\ No newline at end of file
uint16_t GetIndex(); // 测试点位\r
void SetIndex(uint16_t index);\r
void Heart_Control(HeartState state, HeartCheck check);\r
+ void ReInit();\r
\r
private:\r
HealthAllDatas healthDatas;\r
bool CheckStatus; // 检测状态标志\r
uint16_t Show_Heart_; // 显示心率\r
uint16_t Heart_; // 保存心率\r
- uint64 TIME_; // 检测时间(存(时、分),大于24小时,改为1天前,小于1分钟为刚刚)\r
+ uint32 TIME_; // 检测时间(存(时、分),大于24小时,改为1天前,小于1分钟为刚刚)\r
\r
bool initstatus = true;\r
bool heartstate = false;\r
}\r
/* ---------------------------------- 状态检测 ---------------------------------- */\r
\r
+ // 重新初始化\r
+ void HeartModel::ReInit()\r
+ {\r
+ Heart_ = 0;\r
+ TIME_ = 0;\r
+ }\r
+\r
// 控制心率检测\r
void HeartModel::Heart_Control(HeartState state, HeartCheck check)\r
{\r
if (disvalid_counter_ >= MAX_DISVALID_HRS_COUNT)\r
{\r
// 结束本次测试\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"MAX_DISVALID_HRS_COUNT");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MAX_DISVALID_HRS_COUNT");\r
Heart_Stop();\r
// 关闭自动检测心率 如果有其他高级心率检测在进行,则不会进行关闭[低优先级]\r
HeartModel::GetInstance()->Heart_Control(HeartState::End, HeartCheck::PASSIVITY);\r
${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativelauncher/include
${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativelauncher/include
${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/goal/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/heart_blood/health_service/
${CMAKE_CURRENT_SOURCE_DIR}/../../ohos_deps
${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
#include <cywee_hal.h>
#include "goalview.h"
+#include "heart_blood/health_service/health_service.h"
//#include "Systemupgrade.h"
namespace OHOS {
static uint32_t day_timestamp = 0;
#endif
+/*NextDay*/
void MsgCenterNotifyNextDayProc(const Topic topic, Request* req)
{
unused(topic);
- unused(req);
+ unused(req);
+
+ AlarmClockModel::GetInstance()->NextDayNotify();
#ifdef FD230
day_timestamp = 0;
-#endif
- AlarmClockModel::GetInstance()->NextDayNotify();
+
if(!ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP))
{
//未设置睡眠监控 nextday进行清除消息。
SleepModel::GetInstance().DeleteSleepData();
}
+ //清空当日的健康数据
+ if(!HealthService::GetInstance()->CleanHealthData())
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CleanHealthData fail!");
+ }
+#endif
}
void MsgCenterNotifyHfpIncomingProc(const Topic topic, Request* req)