添加小睡数据读取,并与UI适配 1097/1 1097/head 1098/target/1
authorpenglei <1624952103@qq.com>
Fri, 4 Oct 2024 09:26:13 +0000 (17:26 +0800)
committerpenglei <1624952103@qq.com>
Fri, 4 Oct 2024 09:26:13 +0000 (17:26 +0800)
添加蓝牙耳机音量映射

code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/VolumeSettingPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepModel.h
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp

index b9cb723..c926335 100644 (file)
@@ -422,11 +422,11 @@ extern "C"
                 // uapi_dev_runtime_set_sleep_status(0);\r
                 //  do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
 \r
-                bool ret = OHOS::sleep_mutex_init();\r
-                if(!ret)\r
-                {\r
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_mutex_init failed !!! ");\r
-                }\r
+                // bool ret = OHOS::sleep_mutex_init();去掉睡眠锁的初始化\r
+                // if(!ret)\r
+                // {\r
+                //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_mutex_init failed !!! ");\r
+                // }\r
 \r
                 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "起床啦! curTime.tm_hour:%d  curTime.tm_min:%d curTime.tm_sec:%d ", curTime.tm_hour, curTime.tm_min, curTime.tm_sec);\r
 \r
@@ -459,11 +459,11 @@ extern "C"
             // 进入睡眠检测模式并退出小睡检测模式\r
             else if (is_time_range(curTime, sleep_time_hour, sleep_time_min, wake_time_hour, wake_time_min) && (uapi_dev_runtime_get_sleep_monitoring_status() == 0))\r
             {\r
-                bool ret = OHOS::sleep_mutex_init();\r
-                if(!ret)\r
-                {\r
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_mutex_init failed !!! ");\r
-                }\r
+                // bool ret = OHOS::sleep_mutex_init(); //去掉睡眠锁的初始化\r
+                // if(!ret)\r
+                // {\r
+                //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_mutex_init failed !!! ");\r
+                // }\r
                 int cmd = 1;\r
                 uapi_dev_runtime_set_sleep_status(0);           // 清零睡眠状态\r
                 uapi_dev_runtime_set_absolute_static_status(0); // 清零绝对静止状态\r
index 6353de1..57e7989 100644 (file)
@@ -128,11 +128,23 @@ void VolumeSliderEventListener::ChangeVolume(VolumeChangeStatus status)
     }
 }
 
+//蓝牙耳机音量映射 (40 - 127)
+static int mapVolume(int volume) 
+{
+    if (volume < 0)
+        return 40;
+    else if (volume > 100)
+        return 127;
+    else 
+        return 40 + (int)((double)(volume / 100.0) * (127 - 40)); 
+}
+
 extern BtAvrcpTgInf g_avrcp_srv_inf;
 void VolumeSliderEventListener::BtAndLocalVolumeSet(int16_t sounding)
 {
     if (g_avrcp_srv_inf.avrcp_srv_conn_stat == PROFILE_STATE_CONNECTED) {
-        uint8_t volume = sounding * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100; // 100:本地音量最大值
+        // uint8_t volume = sounding * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / 100; // 100:本地音量最大值
+        uint8_t volume = mapVolume(sounding);
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp volume = %d", volume);
         (void)avrcp_ct_set_absolute_volume(&(g_avrcp_srv_inf.bd_addr), volume); // 手表音量设置同步远端BT音量
     }
index 2f06b25..b9a2bb5 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-06-26 19:36:48
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-09-14 15:04:10
+ * @LastEditTime: 2024-10-04 15:37:02
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/include/SleepModel.h
  * @Description:
  *
@@ -70,12 +70,13 @@ namespace OHOS
 #pragma pack (pop)
 
     bool save_nap_data(NAP_T *data);
-    bool sleep_mutex_init(void);
+    // bool sleep_mutex_init(void);
     uint32_t read_sleep_nap_data(char *data, uint32_t size, FILE *fp);
     void set_nap_data(NAP_T *data);
     void set_sleep_data(SLEEP_T *data);
     bool save_sleep_data(SLEEP_T *data);
     bool read_sleep_data(SLEEP_T *data);
+    bool read_nap_data(NAP_T *data);
     void clean_sleep_data(void);
     bool create_sleep_folder(void);
     //void clean_sleep_file(void);
index da801db..73f48e1 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: SLEPPNOTIFY24-06-26 19:36:48
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-10-03 18:18:41
+ * @LastEditTime: 2024-10-04 17:01:22
  * @FilePath:
  * /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
  * @Description:
@@ -53,911 +53,1058 @@ extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time,
 extern "C" int get_sleep_time_from_config_model(void);
 extern "C" int get_wake_up_time_from_config_model();
 
-namespace OHOS {
+namespace OHOS
+{
 #define SLEPPNOTIFY 20
 
-static NAP_T nap_data = {0};
-static SLEEP_T sleep_data = {0};
-static SLEEP_STATE_T sleep_status = {0};
-static uint32_t sleep_update_timestamp = 0;
-static uint32_t nap_update_timestamp = 0;
+  static NAP_T nap_data = {0};
+  static SLEEP_T sleep_data = {0};
+  static SLEEP_STATE_T sleep_status = {0};
+  static uint32_t sleep_update_timestamp = 0;
+  static uint32_t nap_update_timestamp = 0;
 
-static uint8_t sleep_mutex_installed = 0;
-static osal_mutex sleep_mutex;
+  // static uint8_t sleep_mutex_installed = 0;
+  // static osal_mutex sleep_mutex;
 
-bool sleep_mutex_init(void) {
-  if (sleep_mutex_installed == 1)
-    return true;
+  // bool sleep_mutex_init(void)
+  // {
+  //   if (sleep_mutex_installed == 1)
+  //     return true;
+
+  //   if (sleep_mutex_installed == 0)
+  //   {
+  //     errcode_t ret = osal_mutex_init(&sleep_mutex);
+  //     if (ret != ERRCODE_SUCC)
+  //     {
+  //       PRINT("sleep_mutex lock fail! ret=0x%x\n", ret);
+  //       return false;
+  //     }
+  //     sleep_mutex_installed = 1;
+  //   }
+  //   return true;
+  // }
 
-  if (sleep_mutex_installed == 0) {
-    errcode_t ret = osal_mutex_init(&sleep_mutex);
-    if (ret != ERRCODE_SUCC) {
-      PRINT("sleep_mutex lock fail! ret=0x%x\n", ret);
-      return false;
-    }
-    sleep_mutex_installed = 1;
+  /*获取最新睡眠时间戳*/
+  uint32_t get_sleep_update_timestamp(void)
+  {
+    if (nap_update_timestamp <= sleep_update_timestamp)
+      return sleep_update_timestamp;
+    else
+      return nap_update_timestamp;
   }
-  return true;
-}
-
-/*获取最新睡眠时间戳*/
-uint32_t get_sleep_update_timestamp(void) {
-  if (nap_update_timestamp <= sleep_update_timestamp)
-    return sleep_update_timestamp;
-  else
-    return nap_update_timestamp;
-}
-
-bool save_nap_data(NAP_T *data) {
-  struct stat info;
-  char dir_path[64] = {0};
-  char file_path[64] = {0};
-  char day[12] = {0};
-  uapi_get_YYMMDD_Time(day, '\0');
-
-  sprintf_s(dir_path, 64, SLEEP_DIR_PATH, day);
-  if (stat("user/userdata/sleep", &info) != 0) {
-    if (mkdir("user/userdata/sleep", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) !=
-        0) {
-      return false; // Failed to create folder
+
+  static char nap_file_path[64] = {0};
+
+  bool save_nap_data(NAP_T *data)
+  {
+    struct stat info;
+    char dir_path[64] = {0};
+    // char file_path[64] = {0};
+    char day[12] = {0};
+    uapi_get_YYMMDD_Time(day, '\0');
+
+    sprintf_s(dir_path, 64, SLEEP_DIR_PATH, day);
+    if (stat("user/userdata/sleep", &info) != 0)
+    {
+      if (mkdir("user/userdata/sleep", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+      {
+        return false; // Failed to create folder
+      }
     }
-  }
 
-  if (stat(dir_path, &info) != 0) {
-    if (mkdir(dir_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mkdir  fail %s", dir_path);
-      return false; // Failed to create folder
+    if (stat(dir_path, &info) != 0)
+    {
+      if (mkdir(dir_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+      {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mkdir  fail %s", dir_path);
+        return false; // Failed to create folder
+      }
+    }
+    uint32_t creationTime;
+    uapi_get_timestampe_ss(&creationTime);
+
+    sprintf_s(nap_file_path, 64, NAP_PATH, day, creationTime);
+
+    FILE *fp;
+    fp = fopen(nap_file_path, "wb+");
+    if (fp == NULL)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_nap_sleep_data %s fopen fail ", nap_file_path);
+      return false;
     }
+
+    uint8_t sleep_type = 0;
+    fwrite(&sleep_type, 1, 1, fp);
+
+    uint32_t fall_asleep_timestamp = data->fall_asleep_timestamp;
+    fwrite(&fall_asleep_timestamp, 1, 4, fp);
+
+    uint32_t wake_up_timestamp = 0;
+
+    if (data->wake_up_timestamp == 0)
+      uapi_get_timestampe_ss(&wake_up_timestamp);
+    else
+      wake_up_timestamp = data->wake_up_timestamp;
+
+    nap_update_timestamp = wake_up_timestamp;
+
+    fwrite(&wake_up_timestamp, 1, 4, fp);
+
+    uint16_t total_time = data->total_time;
+
+    uint8_t total_time_hour = (total_time / 60);
+    fwrite(&total_time_hour, 1, 1, fp);
+
+    uint8_t total_time_minute = (total_time % 60);
+    fwrite(&total_time_minute, 1, 1, fp);
+
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_nap_sleep_data succ");
+
+    fclose(fp);
+
+    return true;
   }
-  uint32_t creationTime;
-  uapi_get_timestampe_ss(&creationTime);
 
-  sprintf_s(file_path, 64, NAP_PATH, day, creationTime);
+  void set_nap_data(NAP_T *data)
+  {
+    memset(&nap_data, 0, sizeof(NAP_T));
+    memcpy_s(&nap_data, sizeof(NAP_T), data, sizeof(NAP_T));
+  }
 
-  FILE *fp;
-  fp = fopen(file_path, "wb+");
-  if (fp == NULL) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_nap_sleep_data fopen fail");
-    return false;
+  uint32_t read_sleep_nap_data(char *data, uint32_t size, FILE *fp)
+  {
+    return fread(data, 1, size, fp);
   }
 
-  uint8_t sleep_type = 0;
-  fwrite(&sleep_type, 1, 1, fp);
-
-  uint32_t fall_asleep_timestamp = data->fall_asleep_timestamp;
-  fwrite(&fall_asleep_timestamp, 1, 4, fp);
-
-  uint32_t wake_up_timestamp = 0;
-
-  if (data->wake_up_timestamp == 0)
-    uapi_get_timestampe_ss(&wake_up_timestamp);
-  else
-    wake_up_timestamp = data->wake_up_timestamp;
-
-  nap_update_timestamp = wake_up_timestamp;
-
-  fwrite(&wake_up_timestamp, 1, 4, fp);
-
-  uint16_t total_time = data->total_time;
-
-  uint8_t total_time_hour = (total_time / 60);
-  fwrite(&total_time_hour, 1, 1, fp);
-
-  uint8_t total_time_minute = (total_time % 60);
-  fwrite(&total_time_minute, 1, 1, fp);
-
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_nap_sleep_data succ");
-
-  fclose(fp);
-
-  return true;
-}
-
-void set_nap_data(NAP_T *data) {
-  memset(&nap_data, 0, sizeof(NAP_T));
-  memcpy_s(&nap_data, sizeof(NAP_T), data, sizeof(NAP_T));
-}
-
-uint32_t read_sleep_nap_data(char *data, uint32_t size, FILE *fp) {
-  return fread(data, 1, size, fp);
-}
-
-static uint16_t total_time = 0;
-static uint16_t total_deep_sleep_time = 0;
-static uint16_t total_mild_sleep_time = 0;
-static uint16_t total_rem_sleep_time = 0;
-static uint16_t total_wake_time = 0;
-;
-static char time_file_path[64] = {0};
-static char status_file_path[64] = {0};
-
-static uint32_t fall_asleep_timestamp = 0;
-static uint32_t history_wake_up_timestamp = 0;
-static char day[12] = {0};
-static char dir_path[64] = {0};
-void clean_sleep_data(void) {
-  total_time = 0;
-  total_deep_sleep_time = 0;
-  total_mild_sleep_time = 0;
-  total_rem_sleep_time = 0;
-  total_wake_time = 0;
-  memset(time_file_path, 0, sizeof(time_file_path));
-  memset(status_file_path, 0, sizeof(status_file_path));
-  memset(day, 0, sizeof(day));
-  memset(dir_path, 0, sizeof(dir_path));
-  fall_asleep_timestamp = 0;
-}
-
-// void clean_sleep_file(void)
-// {
-//     uint32_t sleep_time = get_sleep_time_from_config_model();
-//     uint32_t wake_up_time = get_wake_up_time_from_config_model();
-//     uint32_t sleep_min = ((sleep_time & 0xFFFF0000) >> 16) * 60 + sleep_time
-//     & 0x0000FFFF; uint32_t wake_min = ((wake_up_time & 0xFFFF0000) >> 16) *
-//     60 + wake_up_time & 0x0000FFFF; if(sleep_min < wake_min)
-//     {
-//         uapi_delete_files(dir_path);
-//     }
-// }
-
-bool create_sleep_folder(void) {
-  struct stat info;
-
-  uint32_t sleep_time = get_sleep_time_from_config_model();
-  uint32_t wake_up_time = get_wake_up_time_from_config_model();
-  uint32_t sleep_min =
-      ((sleep_time & 0xFFFF0000) >> 16) * 60 + sleep_time & 0x0000FFFF;
-  uint32_t wake_min =
-      ((wake_up_time & 0xFFFF0000) >> 16) * 60 + wake_up_time & 0x0000FFFF;
-  uint32_t current_min = 0;
-
-  if (sleep_min > wake_min) {
-    time_t rawtime;
-    struct tm *timeinfo;
-
-    time(&rawtime);
-    timeinfo = localtime(&rawtime);
-
-    current_min = timeinfo->tm_hour * 60 + timeinfo->tm_min;
+  static uint16_t total_time = 0;
+  static uint16_t total_deep_sleep_time = 0;
+  static uint16_t total_mild_sleep_time = 0;
+  static uint16_t total_rem_sleep_time = 0;
+  static uint16_t total_wake_time = 0;
+  static char time_file_path[64] = {0};
+  static char status_file_path[64] = {0};
+
+  static uint32_t fall_asleep_timestamp = 0;
+  static uint32_t history_wake_up_timestamp = 0;
+  static char day[12] = {0};
+  static char dir_path[64] = {0};
+  void clean_sleep_data(void)
+  {
+    total_time = 0;
+    total_deep_sleep_time = 0;
+    total_mild_sleep_time = 0;
+    total_rem_sleep_time = 0;
+    total_wake_time = 0;
+    memset(time_file_path, 0, sizeof(time_file_path));
+    memset(status_file_path, 0, sizeof(status_file_path));
+    memset(day, 0, sizeof(day));
+    memset(dir_path, 0, sizeof(dir_path));
+    fall_asleep_timestamp = 0;
+  }
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
-                  "sleep_min : %d  ,wake_min : %d ,current_min : %d ",
-                  sleep_min, wake_min, current_min);
+  // void clean_sleep_file(void)
+  // {
+  //     uint32_t sleep_time = get_sleep_time_from_config_model();
+  //     uint32_t wake_up_time = get_wake_up_time_from_config_model();
+  //     uint32_t sleep_min = ((sleep_time & 0xFFFF0000) >> 16) * 60 + sleep_time
+  //     & 0x0000FFFF; uint32_t wake_min = ((wake_up_time & 0xFFFF0000) >> 16) *
+  //     60 + wake_up_time & 0x0000FFFF; if(sleep_min < wake_min)
+  //     {
+  //         uapi_delete_files(dir_path);
+  //     }
+  // }
+
+  bool create_sleep_folder(void)
+  {
+    struct stat info;
+
+    uint32_t sleep_time = get_sleep_time_from_config_model();
+    uint32_t wake_up_time = get_wake_up_time_from_config_model();
+    uint32_t sleep_min =
+        ((sleep_time & 0xFFFF0000) >> 16) * 60 + sleep_time & 0x0000FFFF;
+    uint32_t wake_min =
+        ((wake_up_time & 0xFFFF0000) >> 16) * 60 + wake_up_time & 0x0000FFFF;
+    uint32_t current_min = 0;
 
-    if (current_min >= sleep_min && current_min < 24 * 60)
-      uapi_get_YYMMDD_Time_extend(day, '\0', -1);
-    else if (current_min >= 0 && current_min < wake_min)
+    if (sleep_min > wake_min)
+    {
+      time_t rawtime;
+      struct tm *timeinfo;
+
+      time(&rawtime);
+      timeinfo = localtime(&rawtime);
+
+      current_min = timeinfo->tm_hour * 60 + timeinfo->tm_min;
+
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                    "sleep_min : %d  ,wake_min : %d ,current_min : %d ",
+                    sleep_min, wake_min, current_min);
+
+      if (current_min >= sleep_min && current_min < 24 * 60)
+        uapi_get_YYMMDD_Time_extend(day, '\0', -1);
+      else if (current_min >= 0 && current_min < wake_min)
+        uapi_get_YYMMDD_Time_extend(day, '\0', 0);
+    }
+    else
       uapi_get_YYMMDD_Time_extend(day, '\0', 0);
-  } else
-    uapi_get_YYMMDD_Time_extend(day, '\0', 0);
 
-  sprintf_s(dir_path, 64, SLEEP_DIR_PATH, day);
-  if (stat("user/userdata/sleep", &info) != 0) {
-    if (mkdir("user/userdata/sleep", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) !=
-        0) {
-      return false; // Failed to create folder
+    sprintf_s(dir_path, 64, SLEEP_DIR_PATH, day);
+    if (stat("user/userdata/sleep", &info) != 0)
+    {
+      if (mkdir("user/userdata/sleep", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) !=
+          0)
+      {
+        return false; // Failed to create folder
+      }
     }
-  }
 
-  if (stat(dir_path, &info) != 0) {
-    if (mkdir(dir_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mkdir  fail %s", dir_path);
-      return false; // Failed to create folder
+    if (stat(dir_path, &info) != 0)
+    {
+      if (mkdir(dir_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+      {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mkdir  fail %s", dir_path);
+        return false; // Failed to create folder
+      }
     }
+
+    return true;
   }
 
-  return true;
-}
+  bool save_sleep_data(SLEEP_T *data)
+  {
+    // errcode_t ret;
+    // ret = osal_mutex_lock(&sleep_mutex);
+    // if (ret != ERRCODE_SUCC)
+    // {
+    //     PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
+    //     return false;
+    // }
 
-bool save_sleep_data(SLEEP_T *data) {
-  // errcode_t ret;
-  // ret = osal_mutex_lock(&sleep_mutex);
-  // if (ret != ERRCODE_SUCC)
-  // {
-  //     PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
-  //     return false;
-  // }
+    if (access(time_file_path, F_OK) == -1)
+    {
+      memset(time_file_path, 0, sizeof(time_file_path));
+      sprintf_s(time_file_path, 64, SLEEP_TIME_PATH, day);
+    }
 
-  if (access(time_file_path, F_OK) == -1) {
-    memset(time_file_path, 0, sizeof(time_file_path));
-    sprintf_s(time_file_path, 64, SLEEP_TIME_PATH, day);
-  }
+    FILE *fp;
+    fp = fopen(time_file_path, "wb+");
+    if (fp == NULL)
+    {
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
+      return false;
+    }
 
-  FILE *fp;
-  fp = fopen(time_file_path, "wb+");
-  if (fp == NULL) {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
-    return false;
-  }
+    uint8_t sleep_type = 1;
+    fwrite(&sleep_type, 1, 1, fp);
 
-  uint8_t sleep_type = 1;
-  fwrite(&sleep_type, 1, 1, fp);
+    if (fall_asleep_timestamp == 0)
+    {
+      fall_asleep_timestamp = data->fall_asleep_timestamp;
+    }
+    fwrite(&fall_asleep_timestamp, 1, 4, fp);
 
-  if (fall_asleep_timestamp == 0) {
-    fall_asleep_timestamp = data->fall_asleep_timestamp;
-  }
-  fwrite(&fall_asleep_timestamp, 1, 4, fp);
+    uint32_t wake_up_timestamp = 0;
 
-  uint32_t wake_up_timestamp = 0;
+    if (data->wake_up_timestamp == 0)
+      uapi_get_timestampe_ss(&wake_up_timestamp);
+    else
+      wake_up_timestamp = data->wake_up_timestamp;
 
-  if (data->wake_up_timestamp == 0)
-    uapi_get_timestampe_ss(&wake_up_timestamp);
-  else
-    wake_up_timestamp = data->wake_up_timestamp;
+    sleep_update_timestamp = wake_up_timestamp;
 
-  sleep_update_timestamp = wake_up_timestamp;
+    fwrite(&wake_up_timestamp, 1, 4, fp);
 
-  fwrite(&wake_up_timestamp, 1, 4, fp);
+    total_time = (wake_up_timestamp - fall_asleep_timestamp) / 60;
 
-  total_time = (wake_up_timestamp - fall_asleep_timestamp) / 60;
+    uint8_t total_time_hour = (total_time / 60);
+    fwrite(&total_time_hour, 1, 1, fp);
 
-  uint8_t total_time_hour = (total_time / 60);
-  fwrite(&total_time_hour, 1, 1, fp);
+    uint8_t total_time_minute = (total_time % 60);
+    fwrite(&total_time_minute, 1, 1, fp);
 
-  uint8_t total_time_minute = (total_time % 60);
-  fwrite(&total_time_minute, 1, 1, fp);
+    total_deep_sleep_time += data->total_deep_sleep_time;
 
-  total_deep_sleep_time += data->total_deep_sleep_time;
+    total_time_hour = (total_deep_sleep_time / 60);
+    fwrite(&total_time_hour, 1, 1, fp);
 
-  total_time_hour = (total_deep_sleep_time / 60);
-  fwrite(&total_time_hour, 1, 1, fp);
+    total_time_minute = (total_deep_sleep_time % 60);
+    fwrite(&total_time_minute, 1, 1, fp);
 
-  total_time_minute = (total_deep_sleep_time % 60);
-  fwrite(&total_time_minute, 1, 1, fp);
+    total_mild_sleep_time += data->total_mild_sleep_time;
+    total_time_hour = (total_mild_sleep_time / 60);
+    fwrite(&total_time_hour, 1, 1, fp);
 
-  total_mild_sleep_time += data->total_mild_sleep_time;
-  total_time_hour = (total_mild_sleep_time / 60);
-  fwrite(&total_time_hour, 1, 1, fp);
+    total_time_minute = (total_mild_sleep_time % 60);
+    fwrite(&total_time_minute, 1, 1, fp);
 
-  total_time_minute = (total_mild_sleep_time % 60);
-  fwrite(&total_time_minute, 1, 1, fp);
+    total_rem_sleep_time += data->total_rem_sleep_time;
+    total_time_hour = (total_rem_sleep_time / 60);
+    fwrite(&total_time_hour, 1, 1, fp);
 
-  total_rem_sleep_time += data->total_rem_sleep_time;
-  total_time_hour = (total_rem_sleep_time / 60);
-  fwrite(&total_time_hour, 1, 1, fp);
+    total_time_minute = (total_rem_sleep_time % 60);
+    fwrite(&total_time_minute, 1, 1, fp);
 
-  total_time_minute = (total_rem_sleep_time % 60);
-  fwrite(&total_time_minute, 1, 1, fp);
+    total_wake_time = total_time - total_rem_sleep_time - total_mild_sleep_time -
+                      total_deep_sleep_time;
 
-  total_wake_time = total_time - total_rem_sleep_time - total_mild_sleep_time -
-                    total_deep_sleep_time;
+    total_time_hour = (total_wake_time / 60);
+    fwrite(&total_time_hour, 1, 1, fp);
 
-  total_time_hour = (total_wake_time / 60);
-  fwrite(&total_time_hour, 1, 1, fp);
+    total_time_minute = (total_wake_time % 60);
+    fwrite(&total_time_minute, 1, 1, fp);
 
-  total_time_minute = (total_wake_time % 60);
-  fwrite(&total_time_minute, 1, 1, fp);
+    fclose(fp);
 
-  fclose(fp);
+    if (data->wake_up_timestamp == 0) // 临时数据清掉
+    {
+      total_deep_sleep_time -= data->total_deep_sleep_time;
+      total_mild_sleep_time -= data->total_mild_sleep_time;
+      total_rem_sleep_time -= data->total_rem_sleep_time;
+    }
 
-  if (data->wake_up_timestamp == 0) // 临时数据清掉
-  {
-    total_deep_sleep_time -= data->total_deep_sleep_time;
-    total_mild_sleep_time -= data->total_mild_sleep_time;
-    total_rem_sleep_time -= data->total_rem_sleep_time;
+    if (access(status_file_path, F_OK) == -1) // 文件不存在 直接写入
+    {
+      memset(status_file_path, 0, sizeof(status_file_path));
+      sprintf_s(status_file_path, 64, SLEEP_STATUS_PATH, day);
+      fp = fopen(status_file_path, "wb+");
+      if (fp == NULL)
+      {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
+        // osal_mutex_unlock(&sleep_mutex);
+        return false;
+      }
+      // if(wake_up_timestamp != 0)
+      // {
+      //     history_wake_up_timestamp = wake_up_timestamp; //更新历史出睡时间戳
+      // }
+      fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
+    }
+    else // 文件已存在 需要判断是否需要补上清醒状态
+    {
+      fp = fopen(status_file_path, "rb+");
+      if (fp == NULL)
+      {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
+        // osal_mutex_unlock(&sleep_mutex);
+        return false;
+      }
+      // fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
+
+      // 如果本次出睡时间与历史出睡时间不等 且两次睡眠间隔小于2小时 补上清醒状态
+
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                    "history_wake_up_timestamp : %d wake_up_timestamp : %d\n",
+                    history_wake_up_timestamp, wake_up_timestamp);
+      WEARABLE_LOGD(
+          WEARABLE_LOG_MODULE_APP,
+          "data->fall_asleep_timestamp - history_wake_up_timestamp : %d \n",
+          data->fall_asleep_timestamp - history_wake_up_timestamp);
+      if ((history_wake_up_timestamp > 0) &&
+          (history_wake_up_timestamp != wake_up_timestamp))
+      {
+        fseek(fp, -sizeof(SLEEP_STATE_T), SEEK_END);
+        SLEEP_STATE_T sleep_status = {0, 0};
+        fread(&sleep_status, sizeof(SLEEP_STATE_T), 1, fp);
+        if (sleep_status.stat == 4) // 如果存在出睡睡觉 替换为清醒
+        {
+          sleep_status.stat = 3; // 清醒状态
+          sleep_status.timestamp =
+              history_wake_up_timestamp; // 清醒状态时间为上一次的出睡时间
+          fseek(fp, -sizeof(SLEEP_STATE_T), SEEK_END);
+          fwrite(&sleep_status, sizeof(SLEEP_STATE_T), 1, fp); // 补上清醒状态
+          // fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num,
+          // fp); //写入本次睡眠状态
+          fwrite(&data->sleep_status[1], sizeof(SLEEP_STATE_T),
+                 data->status_num - 1, fp); // 跳过入睡状态写入文件
+        }
+        else // 不满足补清醒状态条件 直接写入本次睡眠状态
+        {
+          fseek(fp, 0, SEEK_END);
+          fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
+        }
+      }
+      else // 不满足补清醒状态条件 直接写入本次睡眠状态
+      {
+        fseek(fp, 0, SEEK_END);
+        fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
+      }
+    }
+
+    if (wake_up_timestamp)
+    {
+      history_wake_up_timestamp = wake_up_timestamp; // 更新历史出睡时间戳
+    }
+
+    fclose(fp);
+
+    // osal_mutex_unlock(&sleep_mutex);
+
+    return true;
   }
 
-  if (access(status_file_path, F_OK) == -1) //文件不存在 直接写入
+  bool is_regular_file(const std::string &file_name)
   {
-    memset(status_file_path, 0, sizeof(status_file_path));
-    sprintf_s(status_file_path, 64, SLEEP_STATUS_PATH, day);
-    fp = fopen(status_file_path, "wb+");
-    if (fp == NULL) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
-      // osal_mutex_unlock(&sleep_mutex);
+    struct stat file_stat;
+    if (stat(file_name.c_str(), &file_stat) != 0)
+    {
       return false;
     }
-    // if(wake_up_timestamp != 0)
+
+    return S_ISREG(file_stat.st_mode); // 检查文件是否为普通文件
+  }
+
+  bool read_sleep_data(SLEEP_T *data)
+  {
+    // errcode_t ret;
+
+    // ret = osal_mutex_lock(&sleep_mutex);
+
+    // if (ret != ERRCODE_SUCC)
     // {
-    //     history_wake_up_timestamp = wake_up_timestamp; //更新历史出睡时间戳
+    //     PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
+    //     return false;
     // }
-    fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
-  } else //文件已存在 需要判断是否需要补上清醒状态
-  {
-    fp = fopen(status_file_path, "rb+");
-    if (fp == NULL) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "save_sleep_data fopen fail");
+
+    char day[12] = {0};
+    uapi_get_YYMMDD_Time(day, '\0');
+
+    char file_path[64] = {0};
+    sprintf_s(file_path, 64, SLEEP_TIME_PATH, day);
+
+    FILE *fp = fopen(file_path, "rb");
+    if (fp == NULL)
+    {
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "read_sleep_data fopen fail");
       // osal_mutex_unlock(&sleep_mutex);
       return false;
     }
-    // fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
 
-    //如果本次出睡时间与历史出睡时间不等 且两次睡眠间隔小于2小时 补上清醒状态
+    // 读取睡眠类型
+    uint8_t sleep_type;
+    fread(&sleep_type, 1, 1, fp);
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
-                  "history_wake_up_timestamp : %d wake_up_timestamp : %d\n",
-                  history_wake_up_timestamp, wake_up_timestamp);
-    WEARABLE_LOGD(
-        WEARABLE_LOG_MODULE_APP,
-        "data->fall_asleep_timestamp - history_wake_up_timestamp : %d \n",
-        data->fall_asleep_timestamp - history_wake_up_timestamp);
-    if ((history_wake_up_timestamp > 0) &&
-        (history_wake_up_timestamp != wake_up_timestamp)) {
-      fseek(fp, -sizeof(SLEEP_STATE_T), SEEK_END);
-      SLEEP_STATE_T sleep_status = {0, 0};
-      fread(&sleep_status, sizeof(SLEEP_STATE_T), 1, fp);
-      if (sleep_status.stat == 4) //如果存在出睡睡觉 替换为清醒
-      {
-        sleep_status.stat = 3; //清醒状态
-        sleep_status.timestamp =
-            history_wake_up_timestamp; //清醒状态时间为上一次的出睡时间
-        fseek(fp, -sizeof(SLEEP_STATE_T), SEEK_END);
-        fwrite(&sleep_status, sizeof(SLEEP_STATE_T), 1, fp); //补上清醒状态
-        // fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num,
-        // fp); //写入本次睡眠状态
-        fwrite(&data->sleep_status[1], sizeof(SLEEP_STATE_T),
-               data->status_num - 1, fp); //跳过入睡状态写入文件
-      } else //不满足补清醒状态条件 直接写入本次睡眠状态
-      {
-        fseek(fp, 0, SEEK_END);
-        fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
-      }
-    } else //不满足补清醒状态条件 直接写入本次睡眠状态
+    if (sleep_type == 0)
     {
-      fseek(fp, 0, SEEK_END);
-      fwrite(data->sleep_status, sizeof(SLEEP_STATE_T), data->status_num, fp);
+      fclose(fp);
+      // osal_mutex_unlock(&sleep_mutex);
+      return false;
     }
-  }
 
-  if (wake_up_timestamp) {
-    history_wake_up_timestamp = wake_up_timestamp; //更新历史出睡时间戳
-  }
+    // 入睡时间
+    uint32_t fall_asleep_timestamp;
+    fread(&fall_asleep_timestamp, 1, 4, fp);
+
+    // 起床时间
+    uint32_t wake_up_timestamp;
+    fread(&wake_up_timestamp, 1, 4, fp);
+
+    // 睡眠总时间
+    uint8_t total_time_hour, total_time_minute;
+    fread(&total_time_hour, 1, 1, fp);
+    fread(&total_time_minute, 1, 1, fp);
+    uint16_t total_time = total_time_hour * 60 + total_time_minute;
 
-  fclose(fp);
+    // 累加睡眠数据
+    data->fall_asleep_timestamp = fall_asleep_timestamp;
+    data->wake_up_timestamp = wake_up_timestamp;
+    data->total_time = total_time;
 
-  // osal_mutex_unlock(&sleep_mutex);
+    sleep_update_timestamp = wake_up_timestamp;
+
+    fclose(fp);
 
-  return true;
-}
+    // osal_mutex_unlock(&sleep_mutex);
 
-bool is_regular_file(const std::string &file_name) {
-  struct stat file_stat;
-  if (stat(file_name.c_str(), &file_stat) != 0) {
-    return false;
+    return true;
   }
 
-  return S_ISREG(file_stat.st_mode); // 检查文件是否为普通文件
-}
+  bool read_nap_data(NAP_T *data)
+  {
+
+    FILE *fp = fopen(nap_file_path, "rb");
+    if (fp == NULL)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "read_nap_data  %s fopen fail", nap_file_path);
+      return false;
+    }
+
+    // 读取睡眠类型
+    uint8_t sleep_type;
+    fread(&sleep_type, 1, 1, fp);
 
-bool read_sleep_data(SLEEP_T *data) {
-  // errcode_t ret;
+    if (sleep_type == 1)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_type error!!!");
+      fclose(fp);
+      return false;
+    }
 
-  // ret = osal_mutex_lock(&sleep_mutex);
+    // 入睡时间
+    uint32_t fall_asleep_timestamp;
+    fread(&fall_asleep_timestamp, 1, 4, fp);
 
-  // if (ret != ERRCODE_SUCC)
-  // {
-  //     PRINT(" sleep_mutex lock fail! ret=0x%x\n", ret);
-  //     return false;
-  // }
+    // 起床时间
+    uint32_t wake_up_timestamp;
+    fread(&wake_up_timestamp, 1, 4, fp);
 
-  char day[12] = {0};
-  uapi_get_YYMMDD_Time(day, '\0');
+    // 睡眠总时间
+    uint8_t total_time_hour, total_time_minute;
+    fread(&total_time_hour, 1, 1, fp);
+    fread(&total_time_minute, 1, 1, fp);
+    uint16_t total_time = total_time_hour * 60 + total_time_minute;
 
-  char file_path[64] = {0};
-  sprintf_s(file_path, 64, SLEEP_TIME_PATH, day);
+    // 累加睡眠数据
+    data->fall_asleep_timestamp = fall_asleep_timestamp;
+    data->wake_up_timestamp = wake_up_timestamp;
+    data->total_time = total_time;
 
-  FILE *fp = fopen(file_path, "rb");
-  if (fp == NULL) {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "read_sleep_data fopen fail");
-    osal_mutex_unlock(&sleep_mutex);
-    return false;
-  }
+    nap_update_timestamp = wake_up_timestamp;
 
-  // 读取睡眠类型
-  uint8_t sleep_type;
-  fread(&sleep_type, 1, 1, fp);
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fall_asleep_timestamp : %d  wake_up_timestamp : %d  total_time : %d ", data->fall_asleep_timestamp, data->wake_up_timestamp, data->total_time);
 
-  if (sleep_type == 0) {
     fclose(fp);
-    osal_mutex_unlock(&sleep_mutex);
-    return false;
+
+    return true;
+  }
+  void set_sleep_data(SLEEP_T *data)
+  {
+    memset(&sleep_data, 0, sizeof(SLEEP_T));
+    memcpy_s(&sleep_data, sizeof(SLEEP_T), data, sizeof(SLEEP_T));
+    // 刷新model里面的数据
+    // SleepModel::GetInstance().update_sleep(&sleep_data);
+  }
+  /* -------------------------------------------------------------------------- */
+  SleepModel::SleepModel()
+  {
+    // 初始化配置睡眠目标
+    set_sleep_goal();
+    // 刷新数据
+    ReInitData();
+  }
+  SleepModel::~SleepModel() {}
+  SleepModel &SleepModel::GetInstance()
+  {
+    static SleepModel instance;
+    return instance;
   }
 
-  // 入睡时间
-  uint32_t fall_asleep_timestamp;
-  fread(&fall_asleep_timestamp, 1, 4, fp);
-
-  // 起床时间
-  uint32_t wake_up_timestamp;
-  fread(&wake_up_timestamp, 1, 4, fp);
-
-  // 睡眠总时间
-  uint8_t total_time_hour, total_time_minute;
-  fread(&total_time_hour, 1, 1, fp);
-  fread(&total_time_minute, 1, 1, fp);
-  uint16_t total_time = total_time_hour * 60 + total_time_minute;
-
-  // 累加睡眠数据
-  data->fall_asleep_timestamp = fall_asleep_timestamp;
-  data->wake_up_timestamp = wake_up_timestamp;
-  data->total_time = total_time;
-
-  sleep_update_timestamp = wake_up_timestamp;
-
-  fclose(fp);
-
-  // osal_mutex_unlock(&sleep_mutex);
-
-  return true;
-}
-
-void set_sleep_data(SLEEP_T *data) {
-  memset(&sleep_data, 0, sizeof(SLEEP_T));
-  memcpy_s(&sleep_data, sizeof(SLEEP_T), data, sizeof(SLEEP_T));
-  // 刷新model里面的数据
-  // SleepModel::GetInstance().update_sleep(&sleep_data);
-}
-/* -------------------------------------------------------------------------- */
-SleepModel::SleepModel() {
-  // 初始化配置睡眠目标
-  set_sleep_goal();
-  // 刷新数据
-  ReInitData();
-}
-SleepModel::~SleepModel() {}
-SleepModel &SleepModel::GetInstance() {
-  static SleepModel instance;
-  return instance;
-}
-
-void SleepModel::ReInitData() {
-  // 配置睡眠数据
-  int cmd = 0;
-  do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA,
-                             &cmd); //获取睡眠数据 但不中止睡眠
-  LOS_Msleep(300);
-  do_custom_fileoperate_service_check_msg(
-      CUSTOM_FILEOPERATE_MSG_TYPE_SLEEPDATA_READ, nullptr, 0);
-  LOS_Msleep(300);
-
-  // SLEEP_T *data = new SLEEP_T();
-
-  // if (read_sleep_data(data))
+  void SleepModel::ReInitData()
   {
+    // 配置睡眠数据
+    int cmd = 0;
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA,
+                               &cmd); // 获取睡眠数据 但不中止睡眠
+    LOS_Msleep(200);
+    do_custom_fileoperate_service_check_msg(
+        CUSTOM_FILEOPERATE_MSG_TYPE_SLEEPDATA_READ, nullptr, 0);
+    LOS_Msleep(200);
+    do_custom_fileoperate_service_check_msg(
+        CUSTOM_FILEOPERATE_MSG_TYPE_NAPDATA_READ, nullptr, 0);
+    LOS_MSleep(200);
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                    "ReadSleepData sleepStr %u  wakeStr %u sleep_total_time %d",
+                    sleep_data.fall_asleep_timestamp,
+                    sleep_data.wake_up_timestamp, sleep_data.total_time);
+      if (sleep_data.fall_asleep_timestamp)
+      {
+        update_time_info(sleep_data.fall_asleep_timestamp, sleepStr);
+        update_time_info(sleep_data.wake_up_timestamp, wakeStr);
+      }
+      else
+      {
+        sleepStr = "--";
+        wakeStr = "--";
+      }
+      sleep_total_time = sleep_data.total_time;
+    }
+    {
+      if (nap_data.fall_asleep_timestamp)
+      {
+        update_time_info(nap_data.fall_asleep_timestamp, napsleepStr);
+        update_time_info(nap_data.wake_up_timestamp, napwakeStr);
+      }
+      else
+      {
+        napsleepStr = "--";
+        napwakeStr = "--";
+      }
+      nap_total_time = nap_data.total_time;
+    }
+
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                  "ReadSleepData sleepStr %u  wakeStr %u sleep_total_time %d",
-                  sleep_data.fall_asleep_timestamp,
-                  sleep_data.wake_up_timestamp, sleep_data.total_time);
-    if (sleep_data.fall_asleep_timestamp) {
-      update_time_info(sleep_data.fall_asleep_timestamp, sleepStr);
-      update_time_info(sleep_data.wake_up_timestamp, wakeStr);
-    } else {
-      sleepStr = "--";
-      wakeStr = "--";
-    }
-    sleep_total_time = sleep_data.total_time;
+                  "ReadSleepData sleepStr %s  wakeStr %s sleep_total_time %d nap_total_time %d napsleepStr %s napwakeStr %s",
+                  sleepStr.c_str(), wakeStr.c_str(), sleep_total_time, nap_total_time, napsleepStr.c_str(), napwakeStr.c_str());
+
+    // delete data; // 释放内存
   }
-  // else
-  // {
-  //     sleepStr = "--";
-  //     wakeStr = "--";
-  //     sleep_total_time = 0;
-  //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to read sleep data");
-  // }
 
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                "ReadSleepData sleepStr %s  wakeStr %s sleep_total_time %d",
-                sleepStr.c_str(), wakeStr.c_str(), sleep_total_time);
+  void SleepModel::UpdateSleepView()
+  {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "睡眠数据更新");
+    SleepControlView *p_SleepControlView = SleepControlView::GetInstance();
+    if (p_SleepControlView != nullptr)
+    {
+      if (p_SleepControlView->GetSleepView())
+      {
+        p_SleepControlView->GetSleepView()->SleepDataRefresh();
+      }
+      if (p_SleepControlView->GetSleepTimeView())
+      {
+        p_SleepControlView->GetSleepTimeView()->SleepDataRefresh();
+      }
+      if (p_SleepControlView->GetSleepNapView())
+      {
+        p_SleepControlView->GetSleepNapView()->SleepDataRefresh();
+      }
+    }
+  }
+  static constexpr const char *SLEEP_JSON_PATH =
+      "/user/userdata/health/sleep.json";
+  // 读取睡眠数据
+  SleepDataUI *SleepModel::ReadSleepData()
+  {
 
-  // delete data; // 释放内存
-}
+    // 判断文件夹是否存在
+    if (!HealthService::GetInstance()->CreateHealthFolder())
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file");
+      return nullptr;
+    }
 
-void SleepModel::UpdateSleepView() {
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "睡眠数据更新");
-  SleepControlView *p_SleepControlView = SleepControlView::GetInstance();
-  if (p_SleepControlView != nullptr) {
-    if (p_SleepControlView->GetSleepView()) {
-      p_SleepControlView->GetSleepView()->SleepDataRefresh();
+    // 读取文件
+    std::ifstream inFile(SLEEP_JSON_PATH);
+    if (!inFile.is_open())
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open JSON file");
+      return nullptr;
     }
-    if (p_SleepControlView->GetSleepTimeView()) {
-      p_SleepControlView->GetSleepTimeView()->SleepDataRefresh();
+
+    // 读取文件内容到字符串
+    std::stringstream buffer;
+    buffer << inFile.rdbuf();
+    std::string jsonDataString = buffer.str();
+    const char *jsonData = jsonDataString.c_str();
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jsonData: %s", jsonData);
+
+    // 关闭文件
+    inFile.close();
+    if (jsonDataString.empty())
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jsonDataString is empty");
+      return nullptr;
     }
-    if(p_SleepControlView->GetSleepNapView())
+
+    cJSON *sleep_root = cJSON_Parse(jsonData);
+    if (sleep_root == NULL)
     {
-        p_SleepControlView->GetSleepNapView()->SleepDataRefresh();
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_root is empty");
+      return nullptr;
     }
-  }
-}
-static constexpr const char *SLEEP_JSON_PATH =
-    "/user/userdata/health/sleep.json";
-// 读取睡眠数据
-SleepDataUI *SleepModel::ReadSleepData() {
-
-  // 判断文件夹是否存在
-  if (!HealthService::GetInstance()->CreateHealthFolder()) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file");
-    return nullptr;
-  }
 
-  // 读取文件
-  std::ifstream inFile(SLEEP_JSON_PATH);
-  if (!inFile.is_open()) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open JSON file");
-    return nullptr;
-  }
+    SleepDataUI *data = new SleepDataUI();
 
-  // 读取文件内容到字符串
-  std::stringstream buffer;
-  buffer << inFile.rdbuf();
-  std::string jsonDataString = buffer.str();
-  const char *jsonData = jsonDataString.c_str();
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jsonData: %s", jsonData);
-
-  // 关闭文件
-  inFile.close();
-  if (jsonDataString.empty()) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jsonDataString is empty");
-    return nullptr;
-  }
+    cJSON *sleeptime_item = cJSON_GetObjectItem(sleep_root, "sleeptime");
+    cJSON *waketime_item = cJSON_GetObjectItem(sleep_root, "waketime");
+    cJSON *totaltime_item = cJSON_GetObjectItem(sleep_root, "totaltime");
+    cJSON *sleep_timestamp_item =
+        cJSON_GetObjectItem(sleep_root, "sleep_timestamp");
+    cJSON *wake_timestamp_item =
+        cJSON_GetObjectItem(sleep_root, "wake_timestamp");
 
-  cJSON *sleep_root = cJSON_Parse(jsonData);
-  if (sleep_root == NULL) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_root is empty");
-    return nullptr;
-  }
+    if (sleeptime_item && waketime_item && totaltime_item)
+    {
+      data->sleeptime = sleeptime_item->valuestring;
+      data->waketime = waketime_item->valuestring;
+      data->totaltime = totaltime_item->valueint;
+      // 增加时间戳
+      data->sleep_timestamp = sleep_timestamp_item->valueint;
+      data->wake_timestamp = wake_timestamp_item->valueint;
+    }
+    else
+    {
+      // 读取的数据异常
+      cJSON_Delete(sleep_root);
+      delete data;
+      return nullptr;
+    }
 
-  SleepDataUI *data = new SleepDataUI();
-
-  cJSON *sleeptime_item = cJSON_GetObjectItem(sleep_root, "sleeptime");
-  cJSON *waketime_item = cJSON_GetObjectItem(sleep_root, "waketime");
-  cJSON *totaltime_item = cJSON_GetObjectItem(sleep_root, "totaltime");
-  cJSON *sleep_timestamp_item =
-      cJSON_GetObjectItem(sleep_root, "sleep_timestamp");
-  cJSON *wake_timestamp_item =
-      cJSON_GetObjectItem(sleep_root, "wake_timestamp");
-
-  if (sleeptime_item && waketime_item && totaltime_item) {
-    data->sleeptime = sleeptime_item->valuestring;
-    data->waketime = waketime_item->valuestring;
-    data->totaltime = totaltime_item->valueint;
-    // 增加时间戳
-    data->sleep_timestamp = sleep_timestamp_item->valueint;
-    data->wake_timestamp = wake_timestamp_item->valueint;
-  } else {
-    // 读取的数据异常
     cJSON_Delete(sleep_root);
-    delete data;
-    return nullptr;
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ReadSleepData is ok!");
+
+    // 返回结构体
+    return data;
   }
 
-  cJSON_Delete(sleep_root);
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ReadSleepData is ok!");
+  // 更新睡眠数据
+  bool SleepModel::SaveSleepData(const SleepDataUI &data)
+  {
+    // 判断文件夹是否存在
+    if (!HealthService::GetInstance()->CreateHealthFolder())
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file");
+      return false;
+    }
 
-  // 返回结构体
-  return data;
-}
+    // 覆盖存储
+    std::ofstream outFile(SLEEP_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;
+    }
 
-// 更新睡眠数据
-bool SleepModel::SaveSleepData(const SleepDataUI &data) {
-  // 判断文件夹是否存在
-  if (!HealthService::GetInstance()->CreateHealthFolder()) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file");
-    return false;
-  }
+    // 创建一个 JSON 对象
+    cJSON *sleep_root = cJSON_CreateObject();
+    if (sleep_root == NULL)
+    {
+      outFile.close();
+      return false;
+    }
 
-  // 覆盖存储
-  std::ofstream outFile(SLEEP_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;
-  }
+    cJSON_AddItemToObject(sleep_root, "sleeptime",
+                          cJSON_CreateString(data.sleeptime.c_str()));
+    cJSON_AddItemToObject(sleep_root, "waketime",
+                          cJSON_CreateString(data.waketime.c_str()));
+    cJSON_AddItemToObject(sleep_root, "totaltime",
+                          cJSON_CreateNumber(data.totaltime));
+    cJSON_AddItemToObject(sleep_root, "sleep_timestamp",
+                          cJSON_CreateNumber(data.sleep_timestamp));
+    cJSON_AddItemToObject(sleep_root, "wake_timestamp",
+                          cJSON_CreateNumber(data.wake_timestamp));
+
+    char *jsonData = cJSON_Print(sleep_root);
+    if (jsonData == NULL)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to generate JSON data");
+      cJSON_free(sleep_root);
+      outFile.close();
+      return false;
+    }
 
-  // 创建一个 JSON 对象
-  cJSON *sleep_root = cJSON_CreateObject();
-  if (sleep_root == NULL) {
-    outFile.close();
-    return false;
-  }
+    // 写入 JSON 数据到文件
+    outFile << jsonData;
 
-  cJSON_AddItemToObject(sleep_root, "sleeptime",
-                        cJSON_CreateString(data.sleeptime.c_str()));
-  cJSON_AddItemToObject(sleep_root, "waketime",
-                        cJSON_CreateString(data.waketime.c_str()));
-  cJSON_AddItemToObject(sleep_root, "totaltime",
-                        cJSON_CreateNumber(data.totaltime));
-  cJSON_AddItemToObject(sleep_root, "sleep_timestamp",
-                        cJSON_CreateNumber(data.sleep_timestamp));
-  cJSON_AddItemToObject(sleep_root, "wake_timestamp",
-                        cJSON_CreateNumber(data.wake_timestamp));
-
-  char *jsonData = cJSON_Print(sleep_root);
-  if (jsonData == NULL) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to generate JSON data");
     cJSON_free(sleep_root);
+    free(jsonData);
     outFile.close();
-    return false;
-  }
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateHealthData JSON is ok");
 
-  // 写入 JSON 数据到文件
-  outFile << jsonData;
-
-  cJSON_free(sleep_root);
-  free(jsonData);
-  outFile.close();
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateHealthData JSON is ok");
-
-  return true;
-}
-std::string SleepModel::GetUpdateSleepTime() {
-  sleep_time_str.clear();
-  // 获取睡眠最新时间
-  uint32_t sleep_time = get_sleep_update_timestamp();
-  // 获取时间戳
-  update_time_info(sleep_time, sleep_time_str);
-  return sleep_time_str;
-}
-void SleepModel::update_sleep(SLEEP_T *data) {
-  if (data == nullptr) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid input data");
-    return;
+    return true;
   }
+  std::string SleepModel::GetUpdateSleepTime()
+  {
+    sleep_time_str.clear();
+    // 获取睡眠最新时间
+    uint32_t sleep_time = get_sleep_update_timestamp();
+    // 获取时间戳
+    update_time_info(sleep_time, sleep_time_str);
+    return sleep_time_str;
+  }
+  void SleepModel::update_sleep(SLEEP_T *data)
+  {
+    if (data == nullptr)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid input data");
+      return;
+    }
 
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
-                "fall_asleep_timestamp:%d wake_up_timestamp:%d total_time:%d",
-                data->fall_asleep_timestamp, data->wake_up_timestamp,
-                data->total_time);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                  "fall_asleep_timestamp:%d wake_up_timestamp:%d total_time:%d",
+                  data->fall_asleep_timestamp, data->wake_up_timestamp,
+                  data->total_time);
 
-  SleepDataUI *UIdata = ReadSleepData();
-  if (UIdata != nullptr) {
-    // 入睡时间是最早时间
-    if (data->fall_asleep_timestamp < UIdata->sleep_timestamp ||
-        UIdata->sleep_timestamp == 0) {
-      UIdata->sleep_timestamp = data->fall_asleep_timestamp;
-    }
-    // 起床时间是最晚时间
-    if (data->wake_up_timestamp > UIdata->wake_timestamp ||
-        UIdata->wake_timestamp == 0) {
-      UIdata->wake_timestamp = data->wake_up_timestamp;
-    }
-    // 总时间需要累加
-    UIdata->totaltime += data->total_time;
+    SleepDataUI *UIdata = ReadSleepData();
+    if (UIdata != nullptr)
+    {
+      // 入睡时间是最早时间
+      if (data->fall_asleep_timestamp < UIdata->sleep_timestamp ||
+          UIdata->sleep_timestamp == 0)
+      {
+        UIdata->sleep_timestamp = data->fall_asleep_timestamp;
+      }
+      // 起床时间是最晚时间
+      if (data->wake_up_timestamp > UIdata->wake_timestamp ||
+          UIdata->wake_timestamp == 0)
+      {
+        UIdata->wake_timestamp = data->wake_up_timestamp;
+      }
+      // 总时间需要累加
+      UIdata->totaltime += data->total_time;
 
-    update_time_info(UIdata->sleep_timestamp, sleepStr);
-    update_time_info(UIdata->wake_timestamp, wakeStr);
-    UIdata->sleeptime = sleepStr;
-    UIdata->waketime = wakeStr;
+      update_time_info(UIdata->sleep_timestamp, sleepStr);
+      update_time_info(UIdata->wake_timestamp, wakeStr);
+      UIdata->sleeptime = sleepStr;
+      UIdata->waketime = wakeStr;
 
-    sleep_total_time = UIdata->totaltime;
+      sleep_total_time = UIdata->totaltime;
 
-    SaveSleepData(*UIdata);
-  }
-  delete UIdata; // Free memory if dynamically allocated
-}
-
-// 清空睡眠数据
-bool SleepModel::DeleteSleepData() {
-  ReInitData(); // 刷新
-  return true;
-}
-
-// 时间戳->字符串
-void SleepModel::update_time_info(uint32_t timestamp, std::string &timeStr) {
-  // 如果时间戳为0,设置时间字符串为默认值
-  if (timestamp == 0) {
-    timeStr = "--";
-    return;
-  }
-  // 解析时间戳
-  char labelTime[20];
-  if (uapi_get_TIME_STR(timestamp, labelTime, '.', ':', DATE_H_M) ==
-      ERRCODE_SUCC) {
-    timeStr.assign(labelTime);
-  } else {
-    timeStr = "--"; // 如果获取失败,设置为默认值
+      SaveSleepData(*UIdata);
+    }
+    delete UIdata; // Free memory if dynamically allocated
   }
-}
 
-/*
-    设置睡眠目标
-    前2个字节是显示睡眠小时
-    后2个字节显示睡眠分钟
-    需要单独解析出来。
-*/
-void SleepModel::set_sleep_goal() {
-  // 将原3个字符串清空
-  goalnotifyStr.clear();
-  goalsleepStr.clear();
-  goalwakeStr.clear();
-
-  int goal_sleep = get_sleep_time_from_config_model();
-  int goal_wake = get_wake_up_time_from_config_model();
-
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "goal_sleep:%d goal_wake:%d",
-                goal_sleep, goal_wake);
-  /* --------------------------------------------------------------------------
-   */
-  // 提取小时部分(前2字节)
-  int goal_sleep_hour = goal_sleep >> 16;
-  // 提取分钟部分(后2字节)
-  int goal_sleep_min = goal_sleep & 0x00FF;
-  std::ostringstream sleeposs;
-  sleeposs << std::setfill('0') << std::setw(2) << goal_sleep_hour << ":"
-           << std::setw(2) << goal_sleep_min;
-  // 睡眠时间点字符串
-  goalsleepStr = sleeposs.str();
-
-  /* --------------------------------------------------------------------------
-   */
-  // 需要配置提醒字符串 减去SLEPPNOTIFY分钟的计算
-  int notify_min =
-      (goal_sleep_min >= SLEPPNOTIFY)
-          ? goal_sleep_min - SLEPPNOTIFY
-          : ((goal_sleep_min + 60) - SLEPPNOTIFY); // 避免分钟数为负
-  int notify_hour = goal_sleep_hour;
-  if (goal_sleep_min < SLEPPNOTIFY) { // 如果需要借位
-    notify_hour -= 1;                 // 小时减1
+  // 清空睡眠数据
+  bool SleepModel::DeleteSleepData()
+  {
+    ReInitData(); // 刷新
+    return true;
   }
-  // 确保小时数正确
-  notify_hour =
-      (notify_hour < 0)
-          ? 23
-          : notify_hour; // 处理从0点前SLEPPNOTIFY分钟的情况,变为前一天的23点40分
-  // 格式化提醒时间字符串
-  std::ostringstream notifyoss;
-  notifyoss << std::setfill('0') << std::setw(2) << notify_hour << ":"
-            << std::setw(2) << notify_min;
-  // 设置提醒字符串
-  goalnotifyStr = notifyoss.str();
-  /* --------------------------------------------------------------------------
-   */
-
-  int goal_wake_hour = goal_wake >> 16;
-  int goal_wake_min = goal_wake & 0x00FF;
-  std::ostringstream wakeoss;
-  wakeoss << std::setfill('0') << std::setw(2) << goal_wake_hour << ":"
-          << std::setw(2) << goal_wake_min;
-  // 起床时间点字符串
-  goalwakeStr = wakeoss.str();
-  /* --------------------------------------------------------------------------
-   */
-
-  // 睡眠字符串 以及总时长
-  goalStr = goalsleepStr + "-" + goalwakeStr;
-  // goal_total_time 计算
-  int total_hours;
-  if (goal_wake_hour < goal_sleep_hour) {
-    total_hours = (goal_wake_hour + 24) - goal_sleep_hour; // 跨天情况
-  } else {
-    total_hours = goal_wake_hour - goal_sleep_hour;
+
+  // 时间戳->字符串
+  void SleepModel::update_time_info(uint32_t timestamp, std::string &timeStr)
+  {
+    // 如果时间戳为0,设置时间字符串为默认值
+    if (timestamp == 0)
+    {
+      timeStr = "--";
+      return;
+    }
+    // 解析时间戳
+    char labelTime[20];
+    if (uapi_get_TIME_STR(timestamp, labelTime, '.', ':', DATE_H_M) ==
+        ERRCODE_SUCC)
+    {
+      timeStr.assign(labelTime);
+    }
+    else
+    {
+      timeStr = "--"; // 如果获取失败,设置为默认值
+    }
   }
 
-  int total_minutes = goal_wake_min - goal_sleep_min;
-  if (total_minutes < 0) {
-    total_hours--;       // 如果分钟差为负数,小时差减1
-    total_minutes += 60; // 转换为正数,加60分钟
+  /*
+      设置睡眠目标
+      前2个字节是显示睡眠小时
+      后2个字节显示睡眠分钟
+      需要单独解析出来。
+  */
+  void SleepModel::set_sleep_goal()
+  {
+    // 将原3个字符串清空
+    goalnotifyStr.clear();
+    goalsleepStr.clear();
+    goalwakeStr.clear();
+
+    int goal_sleep = get_sleep_time_from_config_model();
+    int goal_wake = get_wake_up_time_from_config_model();
+
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "goal_sleep:%d goal_wake:%d",
+                  goal_sleep, goal_wake);
+    /* --------------------------------------------------------------------------
+     */
+    // 提取小时部分(前2字节)
+    int goal_sleep_hour = goal_sleep >> 16;
+    // 提取分钟部分(后2字节)
+    int goal_sleep_min = goal_sleep & 0x00FF;
+    std::ostringstream sleeposs;
+    sleeposs << std::setfill('0') << std::setw(2) << goal_sleep_hour << ":"
+             << std::setw(2) << goal_sleep_min;
+    // 睡眠时间点字符串
+    goalsleepStr = sleeposs.str();
+
+    /* --------------------------------------------------------------------------
+     */
+    // 需要配置提醒字符串 减去SLEPPNOTIFY分钟的计算
+    int notify_min =
+        (goal_sleep_min >= SLEPPNOTIFY)
+            ? goal_sleep_min - SLEPPNOTIFY
+            : ((goal_sleep_min + 60) - SLEPPNOTIFY); // 避免分钟数为负
+    int notify_hour = goal_sleep_hour;
+    if (goal_sleep_min < SLEPPNOTIFY)
+    {                   // 如果需要借位
+      notify_hour -= 1; // 小时减1
+    }
+    // 确保小时数正确
+    notify_hour =
+        (notify_hour < 0)
+            ? 23
+            : notify_hour; // 处理从0点前SLEPPNOTIFY分钟的情况,变为前一天的23点40分
+    // 格式化提醒时间字符串
+    std::ostringstream notifyoss;
+    notifyoss << std::setfill('0') << std::setw(2) << notify_hour << ":"
+              << std::setw(2) << notify_min;
+    // 设置提醒字符串
+    goalnotifyStr = notifyoss.str();
+    /* --------------------------------------------------------------------------
+     */
+
+    int goal_wake_hour = goal_wake >> 16;
+    int goal_wake_min = goal_wake & 0x00FF;
+    std::ostringstream wakeoss;
+    wakeoss << std::setfill('0') << std::setw(2) << goal_wake_hour << ":"
+            << std::setw(2) << goal_wake_min;
+    // 起床时间点字符串
+    goalwakeStr = wakeoss.str();
+    /* --------------------------------------------------------------------------
+     */
+
+    // 睡眠字符串 以及总时长
+    goalStr = goalsleepStr + "-" + goalwakeStr;
+    // goal_total_time 计算
+    int total_hours;
+    if (goal_wake_hour < goal_sleep_hour)
+    {
+      total_hours = (goal_wake_hour + 24) - goal_sleep_hour; // 跨天情况
+    }
+    else
+    {
+      total_hours = goal_wake_hour - goal_sleep_hour;
+    }
+
+    int total_minutes = goal_wake_min - goal_sleep_min;
+    if (total_minutes < 0)
+    {
+      total_hours--;       // 如果分钟差为负数,小时差减1
+      total_minutes += 60; // 转换为正数,加60分钟
+    }
+    goal_total_time = total_hours; // 确保最小时间为0小时
+
+    /*通知界面更新*/
+    SendMsgToUIService(UI_UPDATE_SLEEP_DATA, 0, nullptr, 0);
   }
-  goal_total_time = total_hours; // 确保最小时间为0小时
-
-  /*通知界面更新*/
-  SendMsgToUIService(UI_UPDATE_SLEEP_DATA, 0, nullptr, 0);
-}
-// 获取睡眠总时长(小时)
-int SleepModel::get_sleep_hour() { return sleep_total_time / 60; }
-// 获取睡眠总时长(分钟)
-int SleepModel::get_sleep_min() { return sleep_total_time % 60; }
-// 获取睡眠总时长(目标)
-int SleepModel::get_sleep_goal() { return goal_total_time; }
-// 获取睡眠总时长(实际)
-int SleepModel::get_sleep_total() { return sleep_total_time; }
-// 获取实际入睡时间str
-std::string SleepModel::get_rest_str() { return sleepStr; }
-// 获取实际醒来时间str
-std::string SleepModel::get_wake_str() { return wakeStr; }
-// 获取目标休息时间str
-std::string SleepModel::get_goal_str() { return goalStr; }
-// 获取 目标睡眠提醒 时间点str
-std::string SleepModel::get_notifiy() { return goalnotifyStr; }
-// 获取 目标睡眠 时间点str
-std::string SleepModel::get_sleep_notifiy() { return goalsleepStr; }
-
-// 获取 目标起床 时间点str
-std::string SleepModel::get_wake_notifiy() { return goalwakeStr; }
-// 设置睡眠状态
-void SleepModel::set_sleep_state(SLEEPSTATE state) { sleepstate_ = state; }
-// 获取睡眠状态
-SLEEPSTATE SleepModel::get_sleep_state() { return sleepstate_; }
-//小睡数据
-int SleepModel::get_nap_hour() { return nap_total_time / 60; }
-int SleepModel::get_nap_min() { return nap_total_time % 60; }
-std::string SleepModel::get_napsleep_str() { return napsleepStr; }
-std::string SleepModel::get_napwake_str() { return napwakeStr; }
-/* ---------------------------------- 睡眠定时器
- * --------------------------------- */
-
-// 声明定时器变量
-static osTimerId_t g_timer = NULL;
-
-/*定时器到期时的处理*/
-static void Sleep_TimerCallbackProc(int data) {
-  // 发起新闹钟
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Sleep_TimerCallbackProc");
-  SleepModel::GetInstance().Sleep_StopTimer();        // 关闭定时器
-  CustomEventPublish(TOPIC_EVENT_SLEEPNOTE, NULL, 0); // 发送睡眠弹窗
-}
-
-static void Sleep_TimerCallback(int data) {
-  GraphicService::GetInstance()->PostGraphicEvent(
-      std::bind(Sleep_TimerCallbackProc, data));
-}
-
-void SleepModel::Sleep_StartTimer(uint32_t interval) {
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepModel::Sleep_StartTimer");
-  if (g_timer != NULL) {
-    WEARABLE_LOGE(
-        WEARABLE_LOG_MODULE_APP,
-        "CountDownModel::CountDown_StartTimer Timer already exists!!");
-    return;
+  // 获取睡眠总时长(小时)
+  int SleepModel::get_sleep_hour() { return sleep_total_time / 60; }
+  // 获取睡眠总时长(分钟)
+  int SleepModel::get_sleep_min() { return sleep_total_time % 60; }
+  // 获取睡眠总时长(目标)
+  int SleepModel::get_sleep_goal() { return goal_total_time; }
+  // 获取睡眠总时长(实际)
+  int SleepModel::get_sleep_total() { return sleep_total_time; }
+  // 获取实际入睡时间str
+  std::string SleepModel::get_rest_str() { return sleepStr; }
+  // 获取实际醒来时间str
+  std::string SleepModel::get_wake_str() { return wakeStr; }
+  // 获取目标休息时间str
+  std::string SleepModel::get_goal_str() { return goalStr; }
+  // 获取 目标睡眠提醒 时间点str
+  std::string SleepModel::get_notifiy() { return goalnotifyStr; }
+  // 获取 目标睡眠 时间点str
+  std::string SleepModel::get_sleep_notifiy() { return goalsleepStr; }
+
+  // 获取 目标起床 时间点str
+  std::string SleepModel::get_wake_notifiy() { return goalwakeStr; }
+  // 设置睡眠状态
+  void SleepModel::set_sleep_state(SLEEPSTATE state) { sleepstate_ = state; }
+  // 获取睡眠状态
+  SLEEPSTATE SleepModel::get_sleep_state() { return sleepstate_; }
+  // 小睡数据
+  int SleepModel::get_nap_hour() { return nap_total_time / 60; }
+  int SleepModel::get_nap_min() { return nap_total_time % 60; }
+  std::string SleepModel::get_napsleep_str() { return napsleepStr; }
+  std::string SleepModel::get_napwake_str() { return napwakeStr; }
+  /* ---------------------------------- 睡眠定时器
+   * --------------------------------- */
+
+  // 声明定时器变量
+  static osTimerId_t g_timer = NULL;
+
+  /*定时器到期时的处理*/
+  static void Sleep_TimerCallbackProc(int data)
+  {
+    // 发起新闹钟
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Sleep_TimerCallbackProc");
+    SleepModel::GetInstance().Sleep_StopTimer();        // 关闭定时器
+    CustomEventPublish(TOPIC_EVENT_SLEEPNOTE, NULL, 0); // 发送睡眠弹窗
   }
-  g_timer =
-      osTimerNew((osTimerFunc_t)Sleep_TimerCallback, osTimerOnce, NULL, NULL);
-  if (g_timer == NULL) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                  "CountDownModel::CountDown_StartTimer Timer create failed!!");
-    return;
+
+  static void Sleep_TimerCallback(int data)
+  {
+    GraphicService::GetInstance()->PostGraphicEvent(
+        std::bind(Sleep_TimerCallbackProc, data));
   }
-  int tick = osMs2Tick(interval);
-  osStatus_t ret = osTimerStart(g_timer, tick);
-  if (ret != osOK) {
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                  "[CountDown_StartTimer] osTimerDelete failed, ret = %lx!!",
-                  ret);
-    if (g_timer != NULL) {
-      ret = osTimerDelete(g_timer);
+
+  void SleepModel::Sleep_StartTimer(uint32_t interval)
+  {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepModel::Sleep_StartTimer");
+    if (g_timer != NULL)
+    {
+      WEARABLE_LOGE(
+          WEARABLE_LOG_MODULE_APP,
+          "CountDownModel::CountDown_StartTimer Timer already exists!!");
+      return;
+    }
+    g_timer =
+        osTimerNew((osTimerFunc_t)Sleep_TimerCallback, osTimerOnce, NULL, NULL);
+    if (g_timer == NULL)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                    "CountDownModel::CountDown_StartTimer Timer create failed!!");
+      return;
+    }
+    int tick = osMs2Tick(interval);
+    osStatus_t ret = osTimerStart(g_timer, tick);
+    if (ret != osOK)
+    {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                    "[CountDown_StartTimer] osTimerDelete failed, ret = %lx!!",
+                    ret);
+      if (g_timer != NULL)
+      {
+        ret = osTimerDelete(g_timer);
+      }
+      g_timer = NULL;
+      return;
     }
-    g_timer = NULL;
     return;
   }
-  return;
-}
-
-void SleepModel::Sleep_StopTimer(void) {
-  // 检查定时器是否存在
-  if (g_timer != NULL) {
-    // 删除定时器并置为 NULL
-    osTimerStop(g_timer);
-    osStatus_t ret = osTimerDelete(g_timer);
-    if (ret != osOK) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                    "osTimerDelete failed, ret = %lx!!", ret);
+
+  void SleepModel::Sleep_StopTimer(void)
+  {
+    // 检查定时器是否存在
+    if (g_timer != NULL)
+    {
+      // 删除定时器并置为 NULL
+      osTimerStop(g_timer);
+      osStatus_t ret = osTimerDelete(g_timer);
+      if (ret != osOK)
+      {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                      "osTimerDelete failed, ret = %lx!!", ret);
+      }
+      g_timer = NULL;
     }
-    g_timer = NULL;
   }
-}
-/* -------------------------------------------------------------------------- */
+  /* -------------------------------------------------------------------------- */
 
 #ifdef __cplusplus
 #if __cplusplus
-extern "C" {
+  extern "C"
+  {
 #endif /* __cplusplus */
 #endif /* __cplusplus */
 
-void custom_save_sleep_data(void) {
-  uapi_dev_runtime_set_sleep_storage_status(1);
-  save_sleep_data(&sleep_data);
-  uapi_dev_runtime_set_sleep_storage_status(0);
-}
+    void custom_save_sleep_data(void)
+    {
+      uapi_dev_runtime_set_sleep_storage_status(1);
+      save_sleep_data(&sleep_data);
+      uapi_dev_runtime_set_sleep_storage_status(0);
+    }
 
-void custom_save_nap_data(void) {
-  uapi_dev_runtime_set_sleep_storage_status(1);
-  save_nap_data(&nap_data);
-  uapi_dev_runtime_set_sleep_storage_status(0);
-}
+    void custom_save_nap_data(void)
+    {
+      uapi_dev_runtime_set_sleep_storage_status(1);
+      save_nap_data(&nap_data);
+      uapi_dev_runtime_set_sleep_storage_status(0);
+    }
 
-void custom_read_sleep_data(void) {
-  memset(&sleep_data, 0, sizeof(SLEEP_T));
-  read_sleep_data(&sleep_data);
-}
+    void custom_read_sleep_data(void)
+    {
+      memset(&sleep_data, 0, sizeof(SLEEP_T));
+      read_sleep_data(&sleep_data);
+    }
 
-void custom_read_nap_data(void) {
-  // memset(&nap_data, 0, sizeof(NAP_T));
-  // read_nap_data(&nap_data);
-}
+    void custom_read_nap_data(void)
+    {
+      memset(&nap_data, 0, sizeof(NAP_T));
+      read_nap_data(&nap_data);
+    }
 
 #ifdef __cplusplus
 #if __cplusplus
-}
+  }
 #endif /* __cplusplus */
 #endif /* __cplusplus */