增加当日历史心率数据处理
authorCaisking <3449750381@qq.com>
Thu, 15 Aug 2024 08:48:25 +0000 (16:48 +0800)
committerCaisking <3449750381@qq.com>
Thu, 15 Aug 2024 08:48:25 +0000 (16:48 +0800)
code/sdk/application/wearable/fd230app/nativeui/heart_blood/health_service/health_service.cpp
code/sdk/application/wearable/fd230app/nativeui/heart_blood/health_service/health_service.h
code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp
code/sdk/application/wearable/fd230app/nativeui/screensetting/src/ScreenModels.cpp
code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp
code/sdk/drivers/peripheral/utils/custom_utils.c

index 415f895..530bd00 100644 (file)
 #include "bloodoxygen/include/BloodOxygenModel.h"
 namespace OHOS
 {
+    extern "C"
+    {
+        void save_heart_data()
+        {
+            printf("save_heart_data\r\n");
+            OHOS::HealthService::GetInstance()->SaveDailyHeartRate();
+            return;
+        }
+    }
 
     static HealthService *g_pHealthService = nullptr;
     /*获取日期*/
@@ -337,6 +346,10 @@ namespace OHOS
         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");
+
         /* 存储bin文件[协议使用] */
         std::string binFilePath = GetBinFilePath(HEALTH_TYPE_HEART);
         FILE *fp = fopen(binFilePath.c_str(), "ab+");
@@ -385,4 +398,132 @@ namespace OHOS
     {
         healthState_ = healthState;
     }
-}
\ No newline at end of file
+    /* ------------------------------- 心率当天历史数据处理 ------------------------------ */
+    static constexpr const char *HEART_DATA_PATH = "/user/userdata/health/heart_history.bin";
+    bool HealthService::LoadDailyHeartRate()
+    {
+        // 初始化心率数组为 0
+        ClearHourlyHeartRates();
+
+        // 获取当前时间
+        time_t currentTime = time(nullptr);
+        tm *currentTm = localtime(&currentTime);
+
+        // 检查是否为同一天
+        std::ifstream file(HEART_DATA_PATH, std::ios::binary);
+        if (!file.is_open())
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Unable to open heart rate data file for reading");
+            return false; // 文件打开失败
+        }
+
+        // 读取时间戳
+        file.read(reinterpret_cast<char *>(&lastLoadTime), sizeof(lastLoadTime));
+
+        // 检查是否为同一天
+        if (lastLoadTime != 0) // 确保 lastLoadTime 有效
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "************************************************");
+            tm *lastTm = localtime(&lastLoadTime);
+            if (currentTm->tm_year == lastTm->tm_year &&
+                currentTm->tm_yday == lastTm->tm_yday)
+            {
+                // 如果是同一天,直接读取心率数据
+                for (int i = 0; i < MAX_HOURS; ++i)
+                {
+                    uint16_t heartRate;
+                    if (!file.read(reinterpret_cast<char *>(&heartRate), sizeof(heartRate))) // 读取心率
+                    {
+                        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Failed to read heart rate data.");
+                        file.close();
+                        return false; // 读取失败
+                    }
+                    dailyHeartRates[i] = heartRate;
+
+                    // 打印心率数据
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Hour %d: Heart Rate %d", i, heartRate);
+                }
+                file.close();
+                return true; // 成功读取
+            }
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "************************************************");
+        }
+
+        // 如果不是同一天,清空文件内容
+        file.close();
+        SaveDailyHeartRate();
+
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Not same-day data");
+        return false; // 不是同一天
+    }
+
+    bool HealthService::SaveDailyHeartRate()
+    {
+        // 判断文件是否存在 不存在即创建 并打开以输出模式
+        std::ofstream outFile(HEART_DATA_PATH, std::ios::trunc);
+        if (!outFile.is_open())
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Unable to open heart rate data file for reading");
+            return false; // 文件打开失败
+        }
+
+        // 存储一个时间戳最前面
+        time_t currentTime = time(nullptr);
+        outFile.write(reinterpret_cast<const char *>(&currentTime), sizeof(currentTime));
+
+        for (int i = 0; i < MAX_HOURS; ++i)
+        {
+            if (!outFile.write(reinterpret_cast<const char *>(&dailyHeartRates[i]), sizeof(dailyHeartRates[i]))) // 保存心率值
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Failed to write heart rate data.");
+                outFile.close();
+                return false; // 写入失败
+            }
+        }
+        outFile.close();
+        return true; // 成功保存
+    }
+    void HealthService::ClearHourlyHeartRates()
+    {
+        // 清空心率数据,将数组置为 0
+        for (int i = 0; i < MAX_HOURS; ++i)
+        {
+            dailyHeartRates[i] = 0;
+        }
+    }
+    void HealthService::UpdateHourlyHeartRate(time_t timestamp, uint16_t heartRate)
+    {
+        // 将时间戳转换为 tm 结构体
+        struct tm *timeInfo = localtime(&timestamp); // 使用 localtime 获取本地时间
+
+        // 提取小时
+        uint8_t hour = static_cast<uint8_t>(timeInfo->tm_hour);
+
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Updating heart rate: 小时 %d, 心率值 %d", hour, heartRate);
+
+        // 确保 hour 在有效范围内,并且心率不是异常值(例如负值)
+        if (hour < MAX_HOURS && heartRate > 0) // 心率不应为负
+        {
+            dailyHeartRates[hour] = heartRate;
+        }
+
+        // 记录目前更新时间点
+        currenthour = hour;
+    }
+
+    uint8_t HealthService::GetHourlyHeartRate(uint8_t hour)
+    {
+        // 返回指定小时的心率
+        if (hour < MAX_HOURS)
+        {
+            return dailyHeartRates[hour]; // 默认为 0 如果未更新
+        }
+        return 0; // 或者返回一个异常值
+    }
+
+    uint8_t HealthService::GetCurrentHour()
+    {
+        // 返回目前小时
+        return currenthour; 
+    }
+}
index a48df95..6760b23 100644 (file)
@@ -10,6 +10,9 @@
 
 #include "stdio.h"
 #include "string"
+#include <fstream>
+#include <ctime>
+#include <cstdint>
 
 #define HEART_MAX_POINTS 360
 namespace OHOS
@@ -92,11 +95,29 @@ namespace OHOS
         bool UpdateJsonData(uint8_t type);  // 更新json
         bool CleanHealthData();
 
+        /*健康状态*/
         HealthState GetHealthCurrent();
         void SetHealthCurrent(HealthState healthState);
 
+        /*
+            当天24个小时的心率处理
+            -心率数组 每个小时存储最新的值 但是没有小时只有一个值
+            -开机读取
+            -关机存储
+        */
+        bool SaveDailyHeartRate();
+        bool LoadDailyHeartRate();
+        void UpdateHourlyHeartRate(time_t timestamp, uint16_t heartRate);
+        uint8_t GetHourlyHeartRate(uint8_t hour);
+        void ClearHourlyHeartRates();
+        uint8_t GetCurrentHour();
+
     private:
+        static const int MAX_HOURS = 24;
+        uint16_t dailyHeartRates[MAX_HOURS]; // 使用数组来存储心率值
         HealthState healthState_;
+        time_t lastLoadTime; // 记录最后加载的时间
+        uint8_t currenthour = 0;
     };
 }
 #endif // HEALTH_MODEL_H
\ No newline at end of file
index 5a453a3..66f0359 100644 (file)
@@ -152,6 +152,8 @@ extern "C"
             void Heart_Control(HeartState state, HeartCheck check);\r
             void ReInit();\r
 \r
+            void Heart_Update_View(void);\r
+\r
         private:\r
             HealthAllDatas healthDatas;\r
             uint16_t pretime{0};\r
index a9b991c..42dac0d 100644 (file)
@@ -20,6 +20,9 @@
 #include <iostream>\r
 #include <memory>\r
 \r
+#include "heartrate/include/HeartRateView.h"\r
+#include "ui_service.h"\r
+\r
 #ifdef __cplusplus\r
 extern "C"\r
 {\r
@@ -198,6 +201,8 @@ namespace OHOS
         /*初始化读取文件*/\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartModel::HeartModel()");\r
         HeartRateData *data = HealthService::GetInstance()->ReadHeartRateData();\r
+        /*初始化历史文件*/\r
+        HealthService::GetInstance()->LoadDailyHeartRate();\r
         if (data != nullptr)\r
         {\r
             currentheart = data->Heart;\r
@@ -472,7 +477,7 @@ namespace OHOS
             if (MainViewSample::GetInstance()->GetHorCurrentCard() == HEART_RATE)\r
             {\r
                 HeartRateView::GetInstance()->SetHeartRateData(rateData, sizeof(Point) * len);\r
-                HeartRateView::GetInstance()->RefreshElectrocardiogram();\r
+                // HeartRateView::GetInstance()->RefreshElectrocardiogram();\r
                 HeartRateView::GetInstance()->RefreshHeartRatePerSec(perSec);\r
                 HeartRateView::GetInstance()->RefreshHeartRateMax(maxRate);\r
                 HeartRateView::GetInstance()->RefreshHeartRateMin(minRate);\r
@@ -568,6 +573,8 @@ namespace OHOS
             if (heartresult_ == HeartResult::SUCCESS)\r
             {\r
                 Heart_Save();\r
+                /*通知进行UI更新*/\r
+                SendMsgToUIService(UI_UPDATE_HEARTRATE_DATA, 0, nullptr, 0);\r
             }\r
             /*关闭被动检测*/\r
             Heart_Control(HeartState::End, HeartCheck::PASSIVITY);\r
@@ -589,7 +596,7 @@ namespace OHOS
         SetCheckTime(data.timestamp);\r
         HealthService::GetInstance()->UpdateHealthData(data);\r
 \r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %ld", currentheart, data.timestamp);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存的心率数据: %d %ld", currentheart, data.timestamp);\r
     }\r
 \r
     // 显示检测结果// 显示检测结果\r
@@ -724,4 +731,17 @@ namespace OHOS
             Heart_Stop();\r
         }\r
     }\r
+\r
+    void HeartModel::Heart_Update_View(void)\r
+    {\r
+        if (HeartRateView::GetInstance())\r
+        {\r
+            int hour = HealthService::GetInstance()->GetCurrentHour();\r
+            if (HeartRateView::GetInstance() != nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "更新主界面卡片");\r
+                HeartRateView::GetInstance()->Update_data_Chart(hour);\r
+            }\r
+        }\r
+    }\r
 }\r
index 33fa873..adb0195 100644 (file)
@@ -1,3 +1,9 @@
+/*** 
+ * @Date: 2024-08-12 10:11:33
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-08-13 16:58:23
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/screensetting/src/ScreenModels.cpp
+ */
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-05 15:20:03
@@ -67,11 +73,11 @@ bool ScreenModels::LoadAppImages(std::string file, UIImageView *view, uint32_t r
 
 void ScreenModels::PreLoadAppimages(void)
 {
-    LoadAppMultiImages(PLAYER_IAMGES, PLAYER_BACKGROUND, PLAYER_UP_66);
     //LoadAppMultiImages(CLOCK_IAMGES, CLOCK_CLOCK0, CLOCK_SECOND);
+    LoadAppMultiImages(PLAYER_IAMGES, PLAYER_BACKGROUND, PLAYER_UP_66);
     LoadAppMultiImages(COMPASS_IAMGES, COMPASS_COMPASS0, COMPASS_COMPASS2);
     LoadAppMultiImages(DROPDOWN_IAMGES, DROPDOWN_BLUETOOTHCONNECTED, DROPDOWN_SETTING);
-    LoadAppMultiImages(HEART_IAMGES, HEART_HEARTRATECOOR, HEART_HEARTRATE_TOP);
+    LoadAppMultiImages(HEART_IAMGES, HEART_RATE_BOTTOM, HEART_RATE_TOP);
     LoadAppMultiImages(BLOOD_IAMGES, BLOODOXYGEN_BACKGOUND, BLOODOXYGEN_BACKGOUND);
     LoadAppMultiImages(TRAINING_IAMGES, TRAINING_BOUTTONGROUND, TRAINING_WALKING_BIG);
     // LoadAppMultiImages(MESSAGE_IAMGES, MESSAGE_MESSAGE, MESSAGE_WECHAT);
index 5abb0e1..1caba98 100644 (file)
@@ -1,7 +1,7 @@
 /*** 
  * @Date: 2024-07-12 19:25:33
  * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-07-25 10:22:03
+ * @LastEditTime: 2024-08-15 14:39:51
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
  */
 /*
@@ -76,6 +76,7 @@ typedef enum {
     UI_UPDATE_WEATHER_DATA,     //天气数据更新
     UI_UPDATE_SLEEP_DATA,       //更新睡眠数据
     UI_UPDATE_MESSAGE_DATA,     //更新消息数据
+    UI_UPDATE_HEARTRATE_DATA,   //更新心率曲线
 
     UI_AI_JUMP_TO_RESULT_VIEW,  //跳转到返回结果视图
     UI_AI_JUMP_TO_LISTENING_VIEW,//跳转到AI聆听界面     
index 46d3ee3..4d5b7c9 100644 (file)
@@ -24,6 +24,7 @@
 #include "player/include/PlayersModel.h"
 #include "sleep/include/SleepModel.h"
 #include "message/include/MessageModel.h"
+#include "heartrate/include/HeartModel.h"
 #include "aivoice/include/AiVoiceModel.h"
 #include "weather/include/WeatherModel.h"
 #include "uiservice/include/ui_service.h"
@@ -50,179 +51,186 @@ extern "C" errcode_t uapi_pm_add_sleep_veto(pm_id_t veto_id);
 extern "C" errcode_t uapi_pm_remove_sleep_veto(pm_id_t veto_id);
 
 #ifdef __cplusplus
-extern "C" {
+extern "C"
+{
 #endif
 
-static const char *GetServiceName(Service *service);
-static BOOL ServiceInitialize(Service *service, Identity identity);
-static TaskConfig GetServiceTaskConfig(Service *service);
-static BOOL ServiceMessageHandle(Service *service, Request *request);
-static void ServiceMsgProcess(Request *request);
-static int32_t SendMsg(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen);
-
-static UiService g_uiService = {
-    .GetName = GetServiceName,
-    .Initialize = ServiceInitialize,
-    .MessageHandle = ServiceMessageHandle,
-    .GetTaskConfig = GetServiceTaskConfig,
-    DEFAULT_IUNKNOWN_ENTRY_BEGIN,
-    .SendMsg = SendMsg,
-    DEFAULT_IUNKNOWN_ENTRY_END,
-    .identity = { -1, -1, nullptr },
-};
-
-const int DATA_DIST_STACK_SIZE = 0xC00;
-const int DATA_DIST_MAIL_LENGTH = 10;
-const int BYTE_OFFSET = 8;
-static uint32_t g_interval = 5;
+    static const char *GetServiceName(Service *service);
+    static BOOL ServiceInitialize(Service *service, Identity identity);
+    static TaskConfig GetServiceTaskConfig(Service *service);
+    static BOOL ServiceMessageHandle(Service *service, Request *request);
+    static void ServiceMsgProcess(Request *request);
+    static int32_t SendMsg(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen);
+
+    static UiService g_uiService = {
+        .GetName = GetServiceName,
+        .Initialize = ServiceInitialize,
+        .MessageHandle = ServiceMessageHandle,
+        .GetTaskConfig = GetServiceTaskConfig,
+        DEFAULT_IUNKNOWN_ENTRY_BEGIN,
+        .SendMsg = SendMsg,
+        DEFAULT_IUNKNOWN_ENTRY_END,
+        .identity = {-1, -1, nullptr},
+    };
+
+    const int DATA_DIST_STACK_SIZE = 0xC00;
+    const int DATA_DIST_MAIL_LENGTH = 10;
+    const int BYTE_OFFSET = 8;
+    static uint32_t g_interval = 5;
+
+    /* -------------------------------------------------------------------------- */
+    // 消息处理程序的函数指针类型
+    typedef void (*MsgHandlerFunc)(Request *);
+    // 定义一个结构来保存消息处理程序
+    typedef struct
+    {
+        int msgId;
+        MsgHandlerFunc handler;
+    } MsgHandlerEntry;
+
+    // 消息处理程序的函数原型
+    static void HandleJSInstallSuccess(Request *request);
+    static void HandleJSUninstallSuccess(Request *request);
+    static void HandlePhoneConnected(Request *request);
+    static void HandlePhoneDisconnected(Request *request);
+    static void HandleEarphoneConnected(Request *request);
+    static void HandleEarphoneDisconnected(Request *request);
+    static void HandleBluetoothConnected(Request *request);
+    static void HandleBluetoothDisconnected(Request *request);
+    static void HandleAddSleepVeto(Request *request);
+    static void HandleRemoveSleepVeto(Request *request);
+    static void HandleUpdateScreenDuration(Request *request);
+    static void HandleUpdateRaiseToBrightness(Request *request);
+    static void HandleUpdateBrightnessValue(Request *request);
+    static void HandleUpdateWeatherData(Request *request);
+    static void HandleUpdateSystemVolume(Request *request);
+    static void HandleUpdateCallVolume(Request *request);
+    static void HandleUpdateVibrationMode(Request *request);
+    static void HandleUpdateSilentMode(Request *request);
+    static void HandleUpdateDontDisturbMode(Request *request);
+    static void HandleUpdateMusicPlayerList(Request *request);
+    static void HandleAiJumpToResultView(Request *request);
+    static void HandleAiJumpToListeningMessage(Request *request);
+    static void HandleUpdateUserQuestionStr(Request *request);
+    static void HandleUpdateAIAnswerStr(Request *request);
+    static void HandleWatchFirstPaired(Request *request);
+    static void HandleUpdateOBUMessage(Request *request);
+    static void HandleUpdateSleep(Request *request);
+    static void HandleUpdateMessage(Request *request);
+    static void HandleUpdateHeartRate(Request *request);
+
+    // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
+    MsgHandlerEntry msgHandlers[] = {
+        {JS_INSTALL_SUCESS_TO_UI, HandleJSInstallSuccess},
+        {JS_UNINSTALL_SUCESS_TO_UI, HandleJSUninstallSuccess},
+        {PHONE_CONNECTED_TO_UI, HandlePhoneConnected},
+        {PHONE_DISCONNECTED_TO_UI, HandlePhoneDisconnected},
+        {EARPHONE_CONNECTED_TO_UI, HandleEarphoneConnected},
+        {EARPHONE_DISCONNECTED_TO_UI, HandleEarphoneDisconnected},
+        {BT_CONNECTED_TO_UI, HandleBluetoothConnected},
+        {BT_DISCONNECTED_TO_UI, HandleBluetoothDisconnected},
+        {UI_ADD_SLEEP_VETO, HandleAddSleepVeto},
+        {UI_RM_SLEEP_VETO, HandleRemoveSleepVeto},
+        {UI_UPDATE_SCREEN_DURATION, HandleUpdateScreenDuration},
+        {UI_UPDATE_RAISETOBRIGHTNESS, HandleUpdateRaiseToBrightness},
+        {UI_UPDATE_BRIGHTNESS_VALUE, HandleUpdateBrightnessValue},
+        {UI_UPDATE_WEATHER_DATA, HandleUpdateWeatherData},
+        {UI_UPDATE_SYSTEM_VOLUME, HandleUpdateSystemVolume},
+        {UI_UPDATE_CALL_VOLUME, HandleUpdateCallVolume},
+        {UI_UPDATE_VIBRATION_MODE, HandleUpdateVibrationMode},
+        {UI_UPDATE_SILENT_MODE, HandleUpdateSilentMode},
+        {UI_UPDATE_DNOTDISTURB_MODE, HandleUpdateDontDisturbMode},
+        {UI_UPDATE_MUSIC_PLAYER_LIST, HandleUpdateMusicPlayerList},
+        {UI_AI_JUMP_TO_RESULT_VIEW, HandleAiJumpToResultView},
+        {UI_UPDATE_USER_QUESTION_STR, HandleUpdateUserQuestionStr},
+        {UI_UPDATE_AI_ANSWER_STR, HandleUpdateAIAnswerStr},
+        {UI_HAND_WATCH_FIRST_PAIRED, HandleWatchFirstPaired},
+        {UI_UPDATE_OBU_MESSAGE, HandleUpdateOBUMessage},
+        {UI_AI_JUMP_TO_LISTENING_VIEW, HandleAiJumpToListeningMessage},
+
+        {UI_UPDATE_SLEEP_DATA, HandleUpdateSleep},
+        {UI_UPDATE_MESSAGE_DATA, HandleUpdateMessage},
+        {UI_UPDATE_HEARTRATE_DATA, HandleUpdateHeartRate},
 
-/* -------------------------------------------------------------------------- */
-// 消息处理程序的函数指针类型
-typedef  void (*MsgHandlerFunc)(Request *);
-// 定义一个结构来保存消息处理程序
-typedef struct
-{
-    int msgId;
-    MsgHandlerFunc handler;
-} MsgHandlerEntry;
-
-// 消息处理程序的函数原型
-static void HandleJSInstallSuccess(Request *request);
-static void HandleJSUninstallSuccess(Request *request);
-static void HandlePhoneConnected(Request *request);
-static void HandlePhoneDisconnected(Request *request);
-static void HandleEarphoneConnected(Request *request);
-static void HandleEarphoneDisconnected(Request *request);
-static void HandleBluetoothConnected(Request *request);
-static void HandleBluetoothDisconnected(Request *request);
-static void HandleAddSleepVeto(Request *request);
-static void HandleRemoveSleepVeto(Request *request);
-static void HandleUpdateScreenDuration(Request *request);
-static void HandleUpdateRaiseToBrightness(Request *request);
-static void HandleUpdateBrightnessValue(Request *request);
-static void HandleUpdateWeatherData(Request *request);
-static void HandleUpdateSystemVolume(Request *request);
-static void HandleUpdateCallVolume(Request *request);
-static void HandleUpdateVibrationMode(Request *request);
-static void HandleUpdateSilentMode(Request *request);
-static void HandleUpdateDontDisturbMode(Request *request);
-static void HandleUpdateMusicPlayerList(Request *request);
-static void HandleAiJumpToResultView(Request *request);
-static void HandleAiJumpToListeningMessage(Request *request);
-static void HandleUpdateUserQuestionStr(Request *request);
-static void HandleUpdateAIAnswerStr(Request *request);
-static void HandleWatchFirstPaired(Request *request);
-static void HandleUpdateOBUMessage(Request *request);
-static void HandleUpdateSleep(Request *request);
-static void HandleUpdateMessage(Request *request);
-
-
-// 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
-MsgHandlerEntry msgHandlers[] = {
-    {JS_INSTALL_SUCESS_TO_UI, HandleJSInstallSuccess},
-    {JS_UNINSTALL_SUCESS_TO_UI, HandleJSUninstallSuccess},
-    {PHONE_CONNECTED_TO_UI, HandlePhoneConnected},
-    {PHONE_DISCONNECTED_TO_UI, HandlePhoneDisconnected},
-    {EARPHONE_CONNECTED_TO_UI, HandleEarphoneConnected},
-    {EARPHONE_DISCONNECTED_TO_UI, HandleEarphoneDisconnected},
-    {BT_CONNECTED_TO_UI, HandleBluetoothConnected},
-    {BT_DISCONNECTED_TO_UI, HandleBluetoothDisconnected},
-    {UI_ADD_SLEEP_VETO, HandleAddSleepVeto},
-    {UI_RM_SLEEP_VETO, HandleRemoveSleepVeto},
-    {UI_UPDATE_SCREEN_DURATION, HandleUpdateScreenDuration},
-    {UI_UPDATE_RAISETOBRIGHTNESS, HandleUpdateRaiseToBrightness},
-    {UI_UPDATE_BRIGHTNESS_VALUE, HandleUpdateBrightnessValue},
-    {UI_UPDATE_WEATHER_DATA, HandleUpdateWeatherData},
-    {UI_UPDATE_SYSTEM_VOLUME, HandleUpdateSystemVolume},
-    {UI_UPDATE_CALL_VOLUME, HandleUpdateCallVolume},
-    {UI_UPDATE_VIBRATION_MODE, HandleUpdateVibrationMode},
-    {UI_UPDATE_SILENT_MODE, HandleUpdateSilentMode},
-    {UI_UPDATE_DNOTDISTURB_MODE,HandleUpdateDontDisturbMode},
-    {UI_UPDATE_MUSIC_PLAYER_LIST,HandleUpdateMusicPlayerList},
-    {UI_AI_JUMP_TO_RESULT_VIEW, HandleAiJumpToResultView},
-    {UI_UPDATE_USER_QUESTION_STR,HandleUpdateUserQuestionStr},
-    {UI_UPDATE_AI_ANSWER_STR, HandleUpdateAIAnswerStr},
-    {UI_HAND_WATCH_FIRST_PAIRED,HandleWatchFirstPaired},
-    {UI_UPDATE_OBU_MESSAGE,HandleUpdateOBUMessage},
-    {UI_AI_JUMP_TO_LISTENING_VIEW,HandleAiJumpToListeningMessage},
-
-    {UI_UPDATE_SLEEP_DATA, HandleUpdateSleep},
-    {UI_UPDATE_MESSAGE_DATA, HandleUpdateMessage},
     };
-/* -------------------------------------------------------------------------- */
-void ScreenTurnOn(int32_t timeout)
-{
-    if (OHOS::HealthModel::GetInstance()->GetBriScrStatus() == 1) {
-        return;
-    }
+    /* -------------------------------------------------------------------------- */
+    void ScreenTurnOn(int32_t timeout)
+    {
+        if (OHOS::HealthModel::GetInstance()->GetBriScrStatus() == 1)
+        {
+            return;
+        }
 #if defined(SUPPORT_POWER_MANAGER)
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurn] timeout = %d", timeout);
-    g_interval = get_back_to_home_interval();
-    set_back_to_home_interval(0xFFFFFFFF);
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    if (display_api->get_screen_state() != SCREEN_ON) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurn] turn_on_screen");
-        display_api->turn_on_screen();
-    }
-    display_api->set_screen_set_keepon_timeout(timeout);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurn] timeout = %d", timeout);
+        g_interval = get_back_to_home_interval();
+        set_back_to_home_interval(0xFFFFFFFF);
+        const power_display_svr_api_t *display_api = power_display_svr_get_api();
+        if (display_api->get_screen_state() != SCREEN_ON)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurn] turn_on_screen");
+            display_api->turn_on_screen();
+        }
+        display_api->set_screen_set_keepon_timeout(timeout);
 #endif
-    return;
-}
-
-void ScreenTurnOff(void)
-{
-    if (OHOS::HealthModel::GetInstance()->GetBriScrStatus() == 1) {
         return;
     }
+
+    void ScreenTurnOff(void)
+    {
+        if (OHOS::HealthModel::GetInstance()->GetBriScrStatus() == 1)
+        {
+            return;
+        }
 #if defined(SUPPORT_POWER_MANAGER)
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurnOff] timeout auto");
-    set_back_to_home_interval(g_interval);
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    display_api->set_screen_set_keepon_timeout(0);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurnOff] timeout auto");
+        set_back_to_home_interval(g_interval);
+        const power_display_svr_api_t *display_api = power_display_svr_get_api();
+        display_api->set_screen_set_keepon_timeout(0);
 #endif
-    return;
-}
+        return;
+    }
 
-void ScreenOffEnable(int32_t enable)
-{
+    void ScreenOffEnable(int32_t enable)
+    {
 #if defined(SUPPORT_POWER_MANAGER)
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    display_api->set_auto_timeout_function(enable);
+        const power_display_svr_api_t *display_api = power_display_svr_get_api();
+        display_api->set_auto_timeout_function(enable);
 #endif
-}
-
-static void Init()
-{
-    SamgrLite *sm = SAMGR_GetInstance();
-    BOOL result = sm->RegisterService((Service *)&g_uiService);
-    sm->RegisterDefaultFeatureApi(UI_SERVICE, GET_IUNKNOWN(g_uiService));
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_UI_SERVICE, "UiService starts %s", result ? "successfully" : "unsuccessfully");
-}
+    }
 
-SYSEX_SERVICE_INIT_PRI(Init, 2);
+    static void Init()
+    {
+        SamgrLite *sm = SAMGR_GetInstance();
+        BOOL result = sm->RegisterService((Service *)&g_uiService);
+        sm->RegisterDefaultFeatureApi(UI_SERVICE, GET_IUNKNOWN(g_uiService));
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_UI_SERVICE, "UiService starts %s", result ? "successfully" : "unsuccessfully");
+    }
 
-const char *GetServiceName(Service *service)
-{
-    (void)service;
-    return UI_SERVICE;
-}
+    SYSEX_SERVICE_INIT_PRI(Init, 2);
 
-BOOL ServiceInitialize(Service *service, Identity identity)
-{
-    if (service == nullptr) {
-        return FALSE;
+    const char *GetServiceName(Service *service)
+    {
+        (void)service;
+        return UI_SERVICE;
     }
-    UiService *uiService = reinterpret_cast<UiService *>(service);
-    uiService->identity = identity;
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_UI_SERVICE, "UiService init serviceId = %d, featureId = %d, queueId = %d",
-                  identity.serviceId, identity.featureId, identity.queueId);
-    return TRUE;
-}
+    BOOL ServiceInitialize(Service *service, Identity identity)
+    {
+        if (service == nullptr)
+        {
+            return FALSE;
+        }
+        UiService *uiService = reinterpret_cast<UiService *>(service);
+        uiService->identity = identity;
 
-void ServiceMsgProcess(Request *request)
-{
-    #if 0
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_UI_SERVICE, "UiService init serviceId = %d, featureId = %d, queueId = %d",
+                      identity.serviceId, identity.featureId, identity.queueId);
+        return TRUE;
+    }
+
+    void ServiceMsgProcess(Request *request)
+    {
+#if 0
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "UiServiceMsgId = %d",request->msgId);
     switch (request->msgId) {
         case JS_INSTALL_SUCESS_TO_UI:
@@ -275,331 +283,345 @@ void ServiceMsgProcess(Request *request)
                 std::bind(&OHOS::DisplayBrightnessModel::UpdateBrightnessValueOfSlider, OHOS::DisplayBrightnessModel::GetInstance()));
             break;
     }
-    #endif
-    /* -------------------------------------------------------------------------- */
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "UiServiceMsgId = %d",request->msgId);
-    for (int i = 0; i < MAX_NUM_HANDLER; ++i)
+#endif
+        /* -------------------------------------------------------------------------- */
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "UiServiceMsgId = %d", request->msgId);
+        for (int i = 0; i < MAX_NUM_HANDLER; ++i)
+        {
+            if (msgHandlers[i].msgId == request->msgId)
+            {
+                msgHandlers[i].handler(request);
+                break;
+            }
+        }
+        /* -------------------------------------------------------------------------- */
+    }
+
+    BOOL ServiceMessageHandle(Service *service, Request *request)
     {
-        if (msgHandlers[i].msgId == request->msgId)
+        (void)service;
+        if (request == nullptr)
         {
-            msgHandlers[i].handler(request);
-            break;
+            return FALSE;
         }
+
+        ServiceMsgProcess(request);
+        return TRUE;
     }
-    /* -------------------------------------------------------------------------- */
-}
 
-BOOL ServiceMessageHandle(Service *service, Request *request)
-{
-    (void)service;
-    if (request == nullptr) {
-        return FALSE;
+    TaskConfig GetServiceTaskConfig(Service *service)
+    {
+        (void)service;
+        TaskConfig config = {LEVEL_HIGH, PRI_NORMAL, DATA_DIST_STACK_SIZE, DATA_DIST_MAIL_LENGTH, SINGLE_TASK};
+        return config;
     }
 
-    ServiceMsgProcess(request);
-    return TRUE;
-}
+    // 发送msg
+    static int32_t SendMsg(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen)
+    {
+        int32_t ret;
+        void *sendData = nullptr;
+        if (dataLen > 0)
+        {
+            sendData = malloc(dataLen);
+            if (sendData == nullptr)
+            {
+                return FALSE;
+            }
+            ret = memcpy_s(sendData, dataLen, data, dataLen);
+            if (ret != EOK)
+            {
+                free(sendData);
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uiservice sendMsg memcpy_s fail! ret = %d", ret);
+                return FALSE;
+            }
+        }
 
-TaskConfig GetServiceTaskConfig(Service *service)
-{
-    (void)service;
-    TaskConfig config = {LEVEL_HIGH, PRI_NORMAL, DATA_DIST_STACK_SIZE, DATA_DIST_MAIL_LENGTH, SINGLE_TASK};
-    return config;
-}
+        Request request = {
+            .msgId = msgId,
+            .len = dataLen,
+            .msgValue = msgValue,
+            .data = sendData,
+        };
 
-//发送msg
-static int32_t SendMsg(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen)
-{
-    int32_t ret;
-    void *sendData = nullptr;
-    if (dataLen > 0) {
-        sendData = malloc(dataLen);
-        if (sendData == nullptr) {
-            return FALSE;
-        }
-        ret = memcpy_s(sendData, dataLen, data, dataLen);
-        if (ret != EOK) {
-            free(sendData);
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uiservice sendMsg memcpy_s fail! ret = %d", ret);
+        ret = SAMGR_SendRequest(IUNKNOWN_GetIdentity(GET_IUNKNOWN(g_uiService)), &request, nullptr);
+        if (ret != 0)
+        {
+            if (sendData != nullptr)
+            {
+                free(sendData);
+            }
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "SendMsg failed ret = %d ", ret);
             return FALSE;
         }
-    }
 
-    Request request = {
-        .msgId = msgId,
-        .len = dataLen,
-        .msgValue = msgValue,
-        .data = sendData,
-    };
+        return TRUE;
+    }
 
-    ret = SAMGR_SendRequest(IUNKNOWN_GetIdentity(GET_IUNKNOWN(g_uiService)), &request, nullptr);
-    if (ret != 0) {
-        if (sendData != nullptr) {
-            free(sendData);
+    // 发送msg给ui服务
+    void SendMsgToUIService(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen)
+    {
+        UiServiceFeatureApi *comApi = nullptr;
+        IUnknown *iUnknown = SAMGR_GetInstance()->GetDefaultFeatureApi(UI_SERVICE);
+        if (iUnknown == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "GetDefaultFeatureApi failed");
+            return;
         }
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "SendMsg failed ret = %d ", ret);
-        return FALSE;
+        int result = iUnknown->QueryInterface(iUnknown, DEFAULT_VERSION, (void **)&comApi);
+        if (result != 0 || comApi == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "QueryInterface comApi failed");
+            return;
+        }
+        comApi->SendMsg(msgId, msgValue, data, dataLen);
+        comApi->Release((IUnknown *)comApi);
     }
 
-    return TRUE;
-}
-
-//发送msg给ui服务
-void SendMsgToUIService(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen)
-{
-    UiServiceFeatureApi *comApi = nullptr;
-    IUnknown *iUnknown = SAMGR_GetInstance()->GetDefaultFeatureApi(UI_SERVICE);
-    if (iUnknown == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "GetDefaultFeatureApi failed");
-        return;
-    }
-    int result = iUnknown->QueryInterface(iUnknown, DEFAULT_VERSION, (void **)&comApi);
-    if (result != 0 || comApi == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "QueryInterface comApi failed");
-        return;
+    /* -------------------------------------------------------------------------- */
+    void HandleJSInstallSuccess(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "bms msg_id = %d bundleName = %s",
+                      request->msgId, ((BundleData *)request->data)->bundleName);
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::ApplistModel::ApplistUpdate, &OHOS::ApplistModel::GetInstance()));
     }
-    comApi->SendMsg(msgId, msgValue, data, dataLen);
-    comApi->Release((IUnknown *)comApi);
-}
-
-/* -------------------------------------------------------------------------- */
-void HandleJSInstallSuccess(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "bms msg_id = %d bundleName = %s",
-                          request->msgId, ((BundleData *)request->data)->bundleName);
-            GraphicService::GetInstance()->PostGraphicEvent(
-                std::bind(&OHOS::ApplistModel::ApplistUpdate, &OHOS::ApplistModel::GetInstance()));
-}
 
-void HandleJSUninstallSuccess(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "bms msg_id = %d bundleName = %s",
-                          request->msgId, ((BundleData *)request->data)->bundleName);
-            GraphicService::GetInstance()->PostGraphicEvent(
-                std::bind(&OHOS::ApplistModel::ApplistUpdate, &OHOS::ApplistModel::GetInstance()));
-}
+    void HandleJSUninstallSuccess(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "bms msg_id = %d bundleName = %s",
+                      request->msgId, ((BundleData *)request->data)->bundleName);
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::ApplistModel::ApplistUpdate, &OHOS::ApplistModel::GetInstance()));
+    }
 
-//处理手机连接成功
-void HandlePhoneConnected(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandlePhoneConnectStatus");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SettingModel::UpdatePhoneConnectStatus, &OHOS::SettingModel::GetInstance(), true));
-}
+    // 处理手机连接成功
+    void HandlePhoneConnected(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandlePhoneConnectStatus");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SettingModel::UpdatePhoneConnectStatus, &OHOS::SettingModel::GetInstance(), true));
+    }
 
-//处理手机断开连接
-void HandlePhoneDisconnected(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandlePhoneDisconnected");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SettingModel::UpdatePhoneConnectStatus, &OHOS::SettingModel::GetInstance(), false));
-}
+    // 处理手机断开连接
+    void HandlePhoneDisconnected(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandlePhoneDisconnected");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SettingModel::UpdatePhoneConnectStatus, &OHOS::SettingModel::GetInstance(), false));
+    }
 
-//处理耳机连接成功
-void HandleEarphoneConnected(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleEarphoneConnected");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SettingModel::UpdateEarPhoneConnectStatus, &OHOS::SettingModel::GetInstance(), true));
-}
+    // 处理耳机连接成功
+    void HandleEarphoneConnected(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleEarphoneConnected");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SettingModel::UpdateEarPhoneConnectStatus, &OHOS::SettingModel::GetInstance(), true));
+    }
 
-//处理耳机断开连接
-void HandleEarphoneDisconnected(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleEarphoneConnected");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SettingModel::UpdateEarPhoneConnectStatus, &OHOS::SettingModel::GetInstance(), false));
-}
+    // 处理耳机断开连接
+    void HandleEarphoneDisconnected(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleEarphoneConnected");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SettingModel::UpdateEarPhoneConnectStatus, &OHOS::SettingModel::GetInstance(), false));
+    }
 
-//处理蓝牙连接成功
-void HandleBluetoothConnected(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleBluetoothConnected");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SettingModel::UpdateBlueToothConnectStatus, &OHOS::SettingModel::GetInstance(), true));
-}
+    // 处理蓝牙连接成功
+    void HandleBluetoothConnected(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleBluetoothConnected");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SettingModel::UpdateBlueToothConnectStatus, &OHOS::SettingModel::GetInstance(), true));
+    }
 
-//处理蓝牙断开连接
-void HandleBluetoothDisconnected(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleBluetoothDisconnected");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SettingModel::UpdateBlueToothConnectStatus, &OHOS::SettingModel::GetInstance(), false));
-}
+    // 处理蓝牙断开连接
+    void HandleBluetoothDisconnected(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleBluetoothDisconnected");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SettingModel::UpdateBlueToothConnectStatus, &OHOS::SettingModel::GetInstance(), false));
+    }
 
-// void HandleScreenTurnOn(Request *request)
-// {
-//     WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleScreenTurnOn");
-//     ScreenTurnOn(request);
-// }
-
-// void HandleScreenTurnOff(Request *request)
-// {
-//     WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleScreenTurnOff");
-//     ScreenTurnOff(request);
-// }
-
-// void HandleScreenOffEnable(Request *request)
-// {
-//     WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleScreenOffEnable");
-//     ScreenOffEnable(request);
-// }
-
-void HandleAddSleepVeto(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleAddSleepVeto");
-    uapi_pm_add_sleep_veto(PM_ID_SCREEN);
-}
+    // void HandleScreenTurnOn(Request *request)
+    // {
+    //     WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleScreenTurnOn");
+    //     ScreenTurnOn(request);
+    // }
+
+    // void HandleScreenTurnOff(Request *request)
+    // {
+    //     WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleScreenTurnOff");
+    //     ScreenTurnOff(request);
+    // }
+
+    // void HandleScreenOffEnable(Request *request)
+    // {
+    //     WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleScreenOffEnable");
+    //     ScreenOffEnable(request);
+    // }
+
+    void HandleAddSleepVeto(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleAddSleepVeto");
+        uapi_pm_add_sleep_veto(PM_ID_SCREEN);
+    }
 
-void HandleRemoveSleepVeto(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleRemoveSleepVeto");
-    uapi_pm_remove_sleep_veto(PM_ID_SCREEN);
-}
+    void HandleRemoveSleepVeto(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleRemoveSleepVeto");
+        uapi_pm_remove_sleep_veto(PM_ID_SCREEN);
+    }
 
-//处理更新选择的亮屏时长标签内容
-void HandleUpdateScreenDuration(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateScreenDuration");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::DisplayBrightnessModel::UpdateSelectScreenDurationLabel, OHOS::DisplayBrightnessModel::GetInstance()));
-}
+    // 处理更新选择的亮屏时长标签内容
+    void HandleUpdateScreenDuration(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateScreenDuration");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::DisplayBrightnessModel::UpdateSelectScreenDurationLabel, OHOS::DisplayBrightnessModel::GetInstance()));
+    }
 
-//处理更新抬腕亮屏按钮状态
-void HandleUpdateRaiseToBrightness(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateRaiseToBrightness");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::DisplayBrightnessModel::UpdateRaiseToBrightnessCheckBoxButtonStatus, OHOS::DisplayBrightnessModel::GetInstance()));
-}
+    // 处理更新抬腕亮屏按钮状态
+    void HandleUpdateRaiseToBrightness(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateRaiseToBrightness");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::DisplayBrightnessModel::UpdateRaiseToBrightnessCheckBoxButtonStatus, OHOS::DisplayBrightnessModel::GetInstance()));
+    }
 
-//处理更新亮度条的亮度值值
-void HandleUpdateBrightnessValue(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateBrightnessValue");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::DisplayBrightnessModel::UpdateBrightnessValueOfSlider, OHOS::DisplayBrightnessModel::GetInstance()));
-}
+    // 处理更新亮度条的亮度值值
+    void HandleUpdateBrightnessValue(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateBrightnessValue");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::DisplayBrightnessModel::UpdateBrightnessValueOfSlider, OHOS::DisplayBrightnessModel::GetInstance()));
+    }
 
-//处理更新天气数据
-static void HandleUpdateWeatherData(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateWeatherData");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::WeatherModel::UpdateMainWeatherData, &OHOS::WeatherModel::GetInstance()));
-}
+    // 处理更新天气数据
+    static void HandleUpdateWeatherData(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateWeatherData");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::WeatherModel::UpdateMainWeatherData, &OHOS::WeatherModel::GetInstance()));
+    }
 
-//处理更新系统音量
-void HandleUpdateSystemVolume(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateSystemVolume");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SoundAndVibrationModel::UpdateSystemVolume, OHOS::SoundAndVibrationModel::GetInstance()));
-}
+    // 处理更新系统音量
+    void HandleUpdateSystemVolume(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateSystemVolume");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SoundAndVibrationModel::UpdateSystemVolume, OHOS::SoundAndVibrationModel::GetInstance()));
+    }
 
-//处理更新通话音量
-void HandleUpdateCallVolume(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateCallVolume");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SoundAndVibrationModel::UpdateCallVolume, OHOS::SoundAndVibrationModel::GetInstance()));
-}
+    // 处理更新通话音量
+    void HandleUpdateCallVolume(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateCallVolume");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SoundAndVibrationModel::UpdateCallVolume, OHOS::SoundAndVibrationModel::GetInstance()));
+    }
 
-//处理更新震动模式
-void HandleUpdateVibrationMode(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateVibrationMode");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SoundAndVibrationModel::UpdateVibrationModePickerSelectIndex, OHOS::SoundAndVibrationModel::GetInstance()));
-}
+    // 处理更新震动模式
+    void HandleUpdateVibrationMode(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateVibrationMode");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SoundAndVibrationModel::UpdateVibrationModePickerSelectIndex, OHOS::SoundAndVibrationModel::GetInstance()));
+    }
 
-//处理更新静音模式
-void HandleUpdateSilentMode(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateSilentMode");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SoundAndVibrationModel::UpdateSilentModeSwitch, OHOS::SoundAndVibrationModel::GetInstance()));
-}
+    // 处理更新静音模式
+    void HandleUpdateSilentMode(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateSilentMode");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SoundAndVibrationModel::UpdateSilentModeSwitch, OHOS::SoundAndVibrationModel::GetInstance()));
+    }
 
-//处理更新勿扰模式
-void HandleUpdateDontDisturbMode(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateDontDisturbMode");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::DnotDisturbModel::UpdateDoNotDisturbMode, &OHOS::DnotDisturbModel::GetInstance()));
-}
+    // 处理更新勿扰模式
+    void HandleUpdateDontDisturbMode(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateDontDisturbMode");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::DnotDisturbModel::UpdateDoNotDisturbMode, &OHOS::DnotDisturbModel::GetInstance()));
+    }
 
-//处理更新音乐列表
-void HandleUpdateMusicPlayerList(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateMusicPlayerList");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::PlayersModel::UpdateMusicPlayerList, OHOS::PlayersModel::GetInstance()));
-}
+    // 处理更新音乐列表
+    void HandleUpdateMusicPlayerList(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateMusicPlayerList");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::PlayersModel::UpdateMusicPlayerList, OHOS::PlayersModel::GetInstance()));
+    }
 
-//处理Ai回应的用户数据
-void HandleAiJumpToResultView(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleAiJumpToResultView");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::AiVoiceModel::ChangeToReturnResultTextView, &OHOS::AiVoiceModel::GetInstance()));
-}
+    // 处理Ai回应的用户数据
+    void HandleAiJumpToResultView(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleAiJumpToResultView");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::AiVoiceModel::ChangeToReturnResultTextView, &OHOS::AiVoiceModel::GetInstance()));
+    }
 
-//处理更新用户问题字符串
-void HandleUpdateUserQuestionStr(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateUserQuestionStr");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::AiVoiceModel::UpdateUserQuestionStr, &OHOS::AiVoiceModel::GetInstance()));
-}
+    // 处理更新用户问题字符串
+    void HandleUpdateUserQuestionStr(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateUserQuestionStr");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::AiVoiceModel::UpdateUserQuestionStr, &OHOS::AiVoiceModel::GetInstance()));
+    }
 
-//处理更新AI答案字符串
-void HandleUpdateAIAnswerStr(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateAIAnswerStr");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::AiVoiceModel::UpdateAiAnswerStr, &OHOS::AiVoiceModel::GetInstance()));
-}
+    // 处理更新AI答案字符串
+    void HandleUpdateAIAnswerStr(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateAIAnswerStr");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::AiVoiceModel::UpdateAiAnswerStr, &OHOS::AiVoiceModel::GetInstance()));
+    }
 
-//处理手表第一次启动用来跳转主界面的
-void HandleWatchFirstPaired(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleWatchFirstPaired");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::RebootAndShutdownModel::HandFirstTimeStartJumpToMainView, &OHOS::RebootAndShutdownModel::GetInstance()));
-}
+    // 处理手表第一次启动用来跳转主界面的
+    void HandleWatchFirstPaired(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleWatchFirstPaired");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::RebootAndShutdownModel::HandFirstTimeStartJumpToMainView, &OHOS::RebootAndShutdownModel::GetInstance()));
+    }
 
-//处理更新OBU Message
-void HandleUpdateOBUMessage(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateOBUMessage");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::OBUMessageModel::UpdateOBUMessageViewData, &OHOS::OBUMessageModel::GetInstance()));
-}
+    // 处理更新OBU Message
+    void HandleUpdateOBUMessage(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateOBUMessage");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::OBUMessageModel::UpdateOBUMessageViewData, &OHOS::OBUMessageModel::GetInstance()));
+    }
 
-//处理更新查询AI模型是否连接成功的状态
-void HandleAiJumpToListeningMessage(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleAiJumpToListeningMessage");
-    bool state = *((bool*)request->data);
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::AiVoiceModel::ChangeToAIVoiceListeningView, &OHOS::AiVoiceModel::GetInstance(),state));
-}
+    // 处理更新查询AI模型是否连接成功的状态
+    void HandleAiJumpToListeningMessage(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleAiJumpToListeningMessage");
+        bool state = *((bool *)request->data);
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::AiVoiceModel::ChangeToAIVoiceListeningView, &OHOS::AiVoiceModel::GetInstance(), state));
+    }
 
-//更新睡眠数据
-void HandleUpdateSleep(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateSleep");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::SleepModel::UpdateSleepView, &OHOS::SleepModel::GetInstance()));
-}
-//更新消息数据
-void HandleUpdateMessage(Request *request)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateMessage");
-    GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::MessageModel::UpdateMessageView, &OHOS::MessageModel::GetInstance()));
-}
+    // 更新睡眠数据
+    void HandleUpdateSleep(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateSleep");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::SleepModel::UpdateSleepView, &OHOS::SleepModel::GetInstance()));
+    }
+    // 更新消息数据
+    void HandleUpdateMessage(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateMessage");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::MessageModel::UpdateMessageView, &OHOS::MessageModel::GetInstance()));
+    }
+    void HandleUpdateHeartRate(Request *request)
+    {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateMessage");
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::HeartModel::Heart_Update_View, OHOS::HeartModel::GetInstance()));
+    }
 /* -------------------------------------------------------------------------- */
 #ifdef __cplusplus
 }
index fddc569..51d90d3 100644 (file)
@@ -190,7 +190,9 @@ void shutdown_reboot_prejobs_task(void)
 
     //保存信息文件
     saveancsdata();
-    
+    //保存当天心率数据
+    save_heart_data();
+
     dial_file_save();
     //同步所有需要保存实时数据到config文件
     uapi_dev_runtime_sync_runtime_env_to_config();