优化入睡时间戳计算 515/1 515/head
authorpenglei <1624952103@qq.com>
Fri, 12 Jul 2024 10:57:10 +0000 (18:57 +0800)
committerpenglei <1624952103@qq.com>
Fri, 12 Jul 2024 10:57:10 +0000 (18:57 +0800)
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp

index 0e39d77..9d5dbf9 100644 (file)
@@ -432,6 +432,7 @@ static SLEEP_T sleep_data = {0};
 static NAP_T nap_data = {0};
 static int state_num = 0;
 static uint32_t day_timestamp = 0;
+static uint8_t fall_asleep_state_num = 0;
 #endif
 
 /*NextDay*/
@@ -1033,7 +1034,7 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
         time(&rawtime);
         timeinfo = localtime(&rawtime);
         uapi_get_timestampe_ss(&timestamp);
-        day_timestamp = timestamp - (timeinfo->tm_mday * 24 * 60 * 60 + timeinfo->tm_hour * 60 * 60 + timeinfo->tm_min * 60 + timeinfo->tm_sec);
+        day_timestamp = timestamp - (timeinfo->tm_hour * 60 * 60 + timeinfo->tm_min * 60 + timeinfo->tm_sec);
     }
 #endif
     OHOS::SLEEP_STATE_T state_data = {0};
@@ -1082,15 +1083,16 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
             {
                 sleep_data.sleep_status[state_num].timestamp = day_timestamp + cywee_Inactivity_Info->day * 24 * 60 * 60 + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
                 sleep_data.sleep_status[state_num].stat = cywee_Inactivity_Info->status;
+                fall_asleep_state_num = state_num;
                 state_num ++;
             }
             if(cywee_Inactivity_Info->status == 0) //0进入睡眠  1潜睡 2深睡 3清醒 4结束睡眠 6入睡 7出睡最后一笔输出 8未出睡最后一笔输出 12快速动眼 13取消入睡
             {
-                sleep_data.fall_asleep_timestamp = day_timestamp + cywee_Inactivity_Info->day * 24 * 60 * 60 + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
+                sleep_data.fall_asleep_timestamp = day_timestamp +  cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
             }
             else if(cywee_Inactivity_Info->status == 4)
             {
-                sleep_data.wake_up_timestamp = day_timestamp + cywee_Inactivity_Info->day * 24 * 60 * 60 + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
+                sleep_data.wake_up_timestamp = day_timestamp + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
             }
 #endif
             break;
@@ -1100,13 +1102,13 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
             if(cywee_Inactivity_Info->status == 0) //0进入睡眠  1潜睡 2深睡 3清醒 4结束睡眠 6入睡 7出睡最后一笔输出 8未出睡最后一笔输出 12快速动眼 13取消入睡
             {
 #ifdef FD230
-                nap_data.fall_asleep_timestamp = day_timestamp + cywee_Inactivity_Info->day * 24 * 60 * 60 + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
+                nap_data.fall_asleep_timestamp = day_timestamp + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
 #endif
             }
             else if(cywee_Inactivity_Info->status == 14)
             {
 #ifdef FD230
-                nap_data.wake_up_timestamp = day_timestamp + cywee_Inactivity_Info->day * 24 * 60 * 60 + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
+                nap_data.wake_up_timestamp = day_timestamp + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
 #endif
             }
             break;
@@ -1147,6 +1149,12 @@ void MsgCenterNotifyInactivityAccumulateTimeProc(const Topic topic, Request* req
     }
     else if(cywee_Inactivity_Accumulate_Time_Info->output_number == INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT)
     {
+        if(sleep_data.fall_asleep_timestamp > sleep_data.wake_up_timestamp)
+        {
+            sleep_data.fall_asleep_timestamp -= 24 * 60 * 60;
+            sleep_data.sleep_status[fall_asleep_state_num].timestamp = sleep_data.fall_asleep_timestamp;
+        }
+
         sleep_data.total_time = cywee_Inactivity_Accumulate_Time_Info->total_time;
         sleep_data.total_deep_sleep_time = cywee_Inactivity_Accumulate_Time_Info->total_deep_sleep_time;
         sleep_data.total_mild_sleep_time = cywee_Inactivity_Accumulate_Time_Info->total_mild_sleep_time;
@@ -1157,6 +1165,7 @@ void MsgCenterNotifyInactivityAccumulateTimeProc(const Topic topic, Request* req
         set_sleep_data(&sleep_data);
         memset(&sleep_data,0,sizeof(SLEEP_T));
         state_num = 0;
+        fall_asleep_state_num = 0;
     }
 #endif
     free(cywee_Inactivity_Accumulate_Time_Info);