优化睡眠监测,添加睡眠监测模式状态以及正在睡眠状态 736/1 736/head
authorpenglei <1624952103@qq.com>
Tue, 20 Aug 2024 07:54:18 +0000 (15:54 +0800)
committerpenglei <1624952103@qq.com>
Tue, 20 Aug 2024 07:54:18 +0000 (15:54 +0800)
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/utils/custom_runtime.c
code/sdk/drivers/peripheral/utils/custom_runtime.h

index 5a9c347..cf51e53 100644 (file)
@@ -172,8 +172,8 @@ extern "C"
 \r
     void clean_sleep_flag(void)\r
     {\r
-        uapi_dev_runtime_set_sleep_status(0);\r
-        uapi_dev_runtime_set_nap_status(0);\r
+        uapi_dev_runtime_set_sleep_monitoring_status(0);\r
+        uapi_dev_runtime_set_nap_monitoring_status(0);\r
     }\r
 \r
     void clean_sedentary_flag(void)\r
@@ -377,8 +377,8 @@ extern "C"
                     AlarmEventPublish(TOPIC_EVENT_SLEEPNOTE, (uint8_t *)sleep_notify_time, 4);\r
                 }\r
             }\r
-            // 退出睡眠模式\r
-            if (WAKE_TIME_RANGE && (uapi_dev_runtime_get_nap_status() == 0))\r
+            // é\80\80å\87ºç\9d¡ç\9c æ£\80æµ\8b模å¼\8få¹¶è¿\9bå\85¥å°\8fç\9d¡æ£\80æµ\8b模å¼\8f\r
+            if (WAKE_TIME_RANGE && (uapi_dev_runtime_get_nap_monitoring_status() == 0))\r
             {\r
                 // uapi_dev_runtime_set_sleep_status(0);\r
                 //  do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
@@ -395,21 +395,23 @@ extern "C"
                                 \r
                 OHOS::SleepModel::GetInstance().ExitSleepModeAction();\r
 \r
+                //判断是否还在睡眠\r
                 if (uapi_dev_runtime_get_sleep_status() == 0)\r
                 {\r
                     // 设置状态为小睡\r
-                    uapi_dev_runtime_set_nap_status(1);\r
+                    uapi_dev_runtime_set_nap_monitoring_status(1);\r
+                    uapi_dev_runtime_set_sleep_monitoring_status(0);\r
                     OHOS::SleepModel::GetInstance().ReInitData(); // 更新睡眠数据\r
                     SendMsgToUIService(UI_UPDATE_SLEEP_DATA, 0, nullptr, 0);\r
-                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL);\r
+                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL);//算法底层切换小睡监测模式\r
                 }\r
             }\r
-            // 进入睡眠模式\r
-            else if ((!WAKE_TIME_RANGE) && (uapi_dev_runtime_get_sleep_status() == 0))\r
+            // è¿\9bå\85¥ç\9d¡ç\9c æ£\80æµ\8b模å¼\8få¹¶é\80\80å\87ºå°\8fç\9d¡æ£\80æµ\8b模å¼\8f\r
+            else if ((!WAKE_TIME_RANGE) && (uapi_dev_runtime_get_sleep_monitoring_status() == 0))\r
             {\r
-                uapi_dev_runtime_set_sleep_status(1);\r
-                uapi_dev_runtime_set_nap_status(0);\r
-                do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
+                uapi_dev_runtime_set_sleep_monitoring_status(1);\r
+                uapi_dev_runtime_set_nap_monitoring_status(0);\r
+                do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);//强制获取小睡数据,结束小睡\r
                 // 睡眠弹窗\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "要睡觉啦!");\r
                 // 设置状态为睡眠\r
@@ -423,8 +425,8 @@ extern "C"
 \r
                 OHOS::SleepModel::GetInstance().EnterSleepModeAction();\r
 \r
-                LOS_Msleep(1000);\r
-                do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SLEEPING_MODE, NULL);\r
+                //LOS_Msleep(1000);\r
+                do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SLEEPING_MODE, NULL);//算法底层切换睡眠监测模式\r
             }\r
         }\r
         // 久坐提醒\r
index 9a4c9aa..fef96c2 100644 (file)
@@ -1290,7 +1290,7 @@ void MsgCenterNotifyInactivityAccumulateTimeProc(const Topic topic, Request* req
 #endif
     free(cywee_Inactivity_Accumulate_Time_Info);
     cywee_Inactivity_Accumulate_Time_Info = NULL;
-    uapi_dev_runtime_set_sleep_status(0);
+    //uapi_dev_runtime_set_sleep_status(0);
 }
 
 //APP运动相关
index 7687a66..6059fc2 100644 (file)
@@ -819,6 +819,12 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_inactivity_result_t.hour = (int)sensorEVT->fData[5];
                 c_inactivity_result_t.minute = (int)sensorEVT->fData[6];
 
+                //0进入睡眠  1潜睡 2深睡 3清醒 4结束睡眠 6入睡 7出睡最后一笔输出 8未出睡最后一笔输出 12快速动眼 13取消入睡
+                if(c_inactivity_result_t.status == 6)
+                    uapi_dev_runtime_set_sleep_status(1);
+                else if(c_inactivity_result_t.status == 4 || c_inactivity_result_t.status == 13)
+                    uapi_dev_runtime_set_sleep_status(0);
+
                 cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
 
             }else if((int)sensorEVT->fData[0] == 31){
@@ -845,6 +851,11 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_inactivity_result_t.hour = (int)sensorEVT->fData[5];
                 c_inactivity_result_t.minute = (int)sensorEVT->fData[6];
 
+                if(c_inactivity_result_t.status == 0)
+                    uapi_dev_runtime_set_sleep_status(1);
+                else if(c_inactivity_result_t.status == 14)
+                    uapi_dev_runtime_set_sleep_status(0);
+
                 cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
 
             }else if((int)sensorEVT->fData[0] == 32){
index b0aa8b8..141cd42 100644 (file)
@@ -69,8 +69,10 @@ typedef struct
     cat1_runtime_status_t cat1_runtime;
     char current_dial_name[32];
     uint8_t time_hour_show_model;
-    uint8_t sleep_status;
-    uint8_t nap_status;
+    uint8_t sleep_monitoring_status;//睡眠监测
+    uint8_t sleep_status;//睡眠状态
+    uint8_t nap_status;//小睡状态
+    uint8_t nap_monitoring_status;//小睡监测
     uint8_t sedentary_status;
     uint8_t drinkremind_status;
     uint8_t train_status;//训练状态
@@ -288,6 +290,15 @@ uint8_t uapi_dev_runtime_get_vibmod(void)
     return g_runtime.vibmod;
 }
 
+void uapi_dev_runtime_set_sleep_monitoring_status(uint8_t status)
+{
+    g_runtime.sleep_monitoring_status=status;
+}
+uint8_t uapi_dev_runtime_get_sleep_monitoring_status(void)
+{
+    return g_runtime.sleep_monitoring_status;
+}
+
 void uapi_dev_runtime_set_sleep_status(uint8_t status)
 {
     g_runtime.sleep_status=status;
@@ -306,6 +317,15 @@ uint8_t uapi_dev_runtime_get_nap_status(void)
     return g_runtime.nap_status;
 }
 
+void uapi_dev_runtime_set_nap_monitoring_status(uint8_t status)
+{
+    g_runtime.nap_monitoring_status=status;
+}
+uint8_t uapi_dev_runtime_get_nap_monitoring_status(void)
+{
+    return g_runtime.nap_monitoring_status;
+}
+
 void uapi_dev_runtime_set_sedentary_status(uint8_t status)
 {
     g_runtime.sedentary_status=status;
index 9684f8f..e325728 100644 (file)
@@ -51,6 +51,10 @@ void uapi_dev_runtime_set_sleep_status(uint8_t status);
 uint8_t uapi_dev_runtime_get_sleep_status(void);
 void uapi_dev_runtime_set_nap_status(uint8_t status);
 uint8_t uapi_dev_runtime_get_nap_status(void);
+void uapi_dev_runtime_set_sleep_monitoring_status(uint8_t status);
+uint8_t uapi_dev_runtime_get_sleep_monitoring_status(void);
+void uapi_dev_runtime_set_nap_monitoring_status(uint8_t status);
+uint8_t uapi_dev_runtime_get_nap_monitoring_status(void);
 void uapi_dev_runtime_set_sedentary_status(uint8_t status);
 uint8_t uapi_dev_runtime_get_sedentary_status(void);
 void uapi_dev_runtime_set_drinkremind_status(uint8_t status);