gengxin
authorCCC <2393524978@qq.com>
Sat, 23 Dec 2023 07:26:34 +0000 (15:26 +0800)
committerCCC <2393524978@qq.com>
Sat, 23 Dec 2023 07:26:34 +0000 (15:26 +0800)
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.c
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.h
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting.c
2.sdk/sdk/gui/lv_watch/lv_watch.c
2.sdk/sdk/gui/lv_watch/lv_watch_res.h

index 9b35e22..5ce3825 100644 (file)
@@ -17,25 +17,39 @@ static mmi_remind_screen_info_t s_remind_info[] =
 #ifdef __MMI_REMIND_SLEEP_SUPPORT__
        { MMI_REMIND_TYPE_SLEEP, WATCH_TEXT_ID_SLEEP_PROMPT, AUDIO_REMIND_SLEEP, NULL},
 #endif
-       //{MMI_REMIND_TYPE_MEDICINE},
-       //{MMI_REMIND_TYPE_DRINK_WATER},
+#ifdef __MMI_REMIND_REST_SUPPORT__
+       { MMI_REMIND_TYPE_REST_BEGIN, WATCH_TEXT_ID_REST_BEGIN_PROMPT, AUDIO_REMIND_REST_BEGIN, NULL},
+       { MMI_REMIND_TYPE_REST_END, WATCH_TEXT_ID_REST_END_PROMPT, AUDIO_REMIND_REST_END, NULL},
+#endif
+#ifdef __MMI_REMIND_HOME_SUPPORT__
+       { MMI_REMIND_TYPE_HOME, WATCH_TEXT_ID_HOME_PROMPT, AUDIO_REMIND_HOME, NULL},
+#endif
+#if defined(__MMI_REMIND_MEDICINE_SUPPORT__)
+       { MMI_REMIND_TYPE_MEDICINE, WATCH_TEXT_ID_MEDICINE_PROMPT, AUDIO_REMIND_MEDICINE, NULL},
+#endif
+#if defined(__MMI_REMIND_CUSTOM_MEDICINE_SUPPORT__)
+       { MMI_REMIND_TYPE_CUSTOM_MEDICINE, WATCH_TEXT_ID_MEDICINE_PROMPT, AUDIO_REMIND_MEDICINE, NULL},
+#endif
+#ifdef __MMI_REMIND_DRINK_SUPPORT__
+       {MMI_REMIND_TYPE_DRINK, WATCH_TEXT_ID_DRINK_PROMPT, AUDIO_REMIND_DRINK, NULL},
+#endif
 #ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
        {MMI_REMIND_TYPE_SEDENTARY, WATCH_TEXT_ID_SEDENTARY_PROMPT, AUDIO_REMIND_SEDENTARY, ICON_SEDENTARY_REMIND_IMAGE},
 #endif
 
-       { MMI_REMIND_TYPE_MAX, 0, NULL},
+       { MMI_REMIND_TYPE_MAX, 0, NULL, NULL},
 };
 
 
 
 #ifdef __MMI_REMIND_WAKE_UP_SUPPORT__
-static nv_watch_remind_wake_up_t s_rimind_wake_up_data = {0};
+static nv_watch_remind_item_t s_remind_wake_up_data = {0};
 
 void mmi_remind_wake_up_nv_write(void)
 {
-       uint32_t nv_data_length = sizeof(nv_watch_remind_wake_up_t);
+       uint32_t nv_data_length = sizeof(nv_watch_remind_item_t);
        
-       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_REMIND_WAKE_UP_DATA, 0, nv_data_length, (uint8_t *)&s_rimind_wake_up_data))
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_REMIND_WAKE_UP_DATA, 0, nv_data_length, (uint8_t *)&s_remind_wake_up_data))
        {
                printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
        }
@@ -43,21 +57,21 @@ void mmi_remind_wake_up_nv_write(void)
 
 void mmi_remind_wake_up_nv_read(void)
 {
-       uint32_t nv_data_length = sizeof(nv_watch_remind_wake_up_t);
+       uint32_t nv_data_length = sizeof(nv_watch_remind_item_t);
        
-       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_REMIND_WAKE_UP_DATA, 0, nv_data_length, (uint8_t *)&s_rimind_wake_up_data))
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_REMIND_WAKE_UP_DATA, 0, nv_data_length, (uint8_t *)&s_remind_wake_up_data))
        {
                printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
-               _lv_memset_00(&s_rimind_wake_up_data, sizeof(nv_watch_remind_wake_up_t));
+               _lv_memset_00(&s_remind_wake_up_data, sizeof(nv_watch_remind_item_t));
        }
 }
 
-void mmi_remind_wake_up_data_set(nv_watch_remind_wake_up_t * data)
+void mmi_remind_wake_up_data_set(nv_watch_remind_item_t * data)
 {
        if(NULL != data)
        {
-               _lv_memset_00(&s_rimind_wake_up_data, sizeof(nv_watch_remind_wake_up_t));
-               _lv_memcpy(&s_rimind_wake_up_data, data, sizeof(nv_watch_remind_wake_up_t));
+               _lv_memset_00(&s_remind_wake_up_data, sizeof(nv_watch_remind_item_t));
+               _lv_memcpy(&s_remind_wake_up_data, data, sizeof(nv_watch_remind_item_t));
                mmi_remind_wake_up_nv_write();
        }
 }
@@ -65,17 +79,17 @@ void mmi_remind_wake_up_data_set(nv_watch_remind_wake_up_t * data)
 bool mmi_remind_wake_up_is_trigger(hal_rtc_t cur_time)
 {
        uint8_t i = 0;
-       for(i = 0; i < NV_REMIND_WAKE_UP_MAX_NUM; i++)
+       for(i = 0; i < NV_REMIND_ITEM_MAX_NUM; i++)
        {
-               if(s_rimind_wake_up_data.remind_info[i].valid && s_rimind_wake_up_data.remind_info[i].on_off)
+               if(s_remind_wake_up_data.remind_info[i].is_valid)
                {
-                       if(cur_time.tm_hour == s_rimind_wake_up_data.remind_info[i].hour
-                               && cur_time.tm_min == s_rimind_wake_up_data.remind_info[i].min
+                       if(cur_time.tm_hour == s_remind_wake_up_data.remind_info[i].hour
+                               && cur_time.tm_min == s_remind_wake_up_data.remind_info[i].min
                                )
                        {
-                               if(0 == (s_rimind_wake_up_data.remind_info[i].repeat_bitmap & 0x80)) // once
+                               if(0 == (s_remind_wake_up_data.remind_info[i].repeat_bitmap & 0x80)) // once
                                {
-                                       s_rimind_wake_up_data.remind_info[i].on_off = 0;
+                                       s_remind_wake_up_data.remind_info[i].is_valid = 0;
                                        mmi_remind_wake_up_nv_write();
 
                                        printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
@@ -83,7 +97,7 @@ bool mmi_remind_wake_up_is_trigger(hal_rtc_t cur_time)
                                }
                                else // repeat
                                {
-                                       if((0x01 << (cur_time.tm_wday)) & s_rimind_wake_up_data.remind_info[i].repeat_bitmap)
+                                       if((0x01 << (cur_time.tm_wday)) & s_remind_wake_up_data.remind_info[i].repeat_bitmap)
                                        {
                                                printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
                                                return true;
@@ -104,31 +118,69 @@ void mmi_remind_wake_up_screen_active(void)
 #endif
 
 #ifdef __MMI_REMIND_SLEEP_SUPPORT__
-static nv_watch_remind_sleep_t s_rimind_sleep_data = {0};
+static nv_watch_remind_item_t s_remind_sleep_data = {0};
 
 void mmi_remind_sleep_nv_write(void)
 {
-
+       uint32_t nv_data_length = sizeof(nv_watch_remind_item_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_REMIND_SLEEP_DATA, 0, nv_data_length, (uint8_t *)&s_remind_sleep_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
 }
 
 void mmi_remind_sleep_nv_read(void)
 {
-
+       uint32_t nv_data_length = sizeof(nv_watch_remind_item_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_REMIND_SLEEP_DATA, 0, nv_data_length, (uint8_t *)&s_remind_sleep_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               _lv_memset_00(&s_remind_sleep_data, sizeof(nv_watch_remind_item_t));
+       }
 }
 
-void mmi_remind_sleep_data_set(nv_watch_remind_sleep_t * data)
+void mmi_remind_sleep_data_set(nv_watch_remind_item_t * data)
 {
        if(NULL != data)
        {
-               _lv_memset_00(&s_rimind_sleep_data, sizeof(nv_watch_remind_sleep_t));
-               _lv_memcpy(&s_rimind_sleep_data, data, sizeof(nv_watch_remind_sleep_t));
+               _lv_memset_00(&s_remind_sleep_data, sizeof(nv_watch_remind_item_t));
+               _lv_memcpy(&s_remind_sleep_data, data, sizeof(nv_watch_remind_item_t));
                mmi_remind_sleep_nv_write();
        }
 }
 
 bool mmi_remind_sleep_is_trigger(hal_rtc_t cur_time)
 {
-       
+       uint8_t i = 0;
+       for(i = 0; i < NV_REMIND_ITEM_MAX_NUM; i++)
+       {
+               if(s_remind_sleep_data.remind_info[i].is_valid)
+               {
+                       if(cur_time.tm_hour == s_remind_sleep_data.remind_info[i].hour
+                               && cur_time.tm_min == s_remind_sleep_data.remind_info[i].min
+                               )
+                       {
+                               if(0 == (s_remind_sleep_data.remind_info[i].repeat_bitmap & 0x80)) // once
+                               {
+                                       s_remind_sleep_data.remind_info[i].is_valid = 0;
+                                       mmi_remind_wake_up_nv_write();
+
+                                       printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                                       return true;
+                               }
+                               else // repeat
+                               {
+                                       if((0x01 << (cur_time.tm_wday)) & s_remind_sleep_data.remind_info[i].repeat_bitmap)
+                                       {
+                                               printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                                               return true;
+                                       }
+                               }
+                       }
+               }
+       }
 
        return false;
 }
@@ -140,6 +192,373 @@ void mmi_remind_sleep_screen_active(void)
 }
 #endif
 
+
+#ifdef __MMI_REMIND_REST_SUPPORT__
+static nv_watch_remind_rest_t s_remind_rest_data = {0};
+
+void mmi_remind_rest_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_rest_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_REMIND_REST_DATA, 0, nv_data_length, (uint8_t *)&s_remind_rest_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_remind_rest_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_rest_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_REMIND_REST_DATA, 0, nv_data_length, (uint8_t *)&s_remind_rest_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               _lv_memset_00(&s_remind_rest_data, sizeof(nv_watch_remind_rest_t));
+       }
+}
+
+void mmi_remind_rest_data_set(nv_watch_remind_rest_t * data)
+{
+       if(NULL != data)
+       {
+               _lv_memset_00(&s_remind_rest_data, sizeof(nv_watch_remind_rest_t));
+               _lv_memcpy(&s_remind_rest_data, data, sizeof(nv_watch_remind_rest_t));
+               mmi_remind_rest_nv_write();
+       }
+}
+
+bool mmi_remind_rest_begin_is_trigger(hal_rtc_t cur_time)
+{
+       if(s_remind_rest_data.is_valid)
+       {
+               uint8_t i = 0;
+               
+               for(i = 0; i < NV_REMIND_REST_MAX_NUM; i++)
+               {
+                       if(cur_time.tm_hour == s_remind_rest_data.remind_info[i].hour_begin
+                               && cur_time.tm_min == s_remind_rest_data.remind_info[i].min_begin
+                               )
+                       {
+                               printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                               return true;
+                       }
+               }
+       }
+
+       return false;
+}
+
+void mmi_remind_rest_begin_screen_active(void)
+{
+       s_remind_type = MMI_REMIND_TYPE_REST_BEGIN;
+       mmi_remind_screen_active();
+}
+
+bool mmi_remind_rest_end_is_trigger(hal_rtc_t cur_time)
+{
+       if(s_remind_rest_data.is_valid)
+       {
+               uint8_t i = 0;
+               
+               for(i = 0; i < NV_REMIND_REST_MAX_NUM; i++)
+               {
+                       if(cur_time.tm_hour == s_remind_rest_data.remind_info[i].hour_end
+                               && cur_time.tm_min == s_remind_rest_data.remind_info[i].min_end
+                               )
+                       {
+                               printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                               return true;
+                       }
+               }
+       }
+
+       return false;
+}
+
+void mmi_remind_rest_end_screen_active(void)
+{
+       s_remind_type = MMI_REMIND_TYPE_REST_END;
+       mmi_remind_screen_active();
+}
+#endif
+
+
+#ifdef __MMI_REMIND_HOME_SUPPORT__
+static nv_watch_remind_home_t s_remind_home_data = {0};
+
+void mmi_remind_home_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_home_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_REMIND_HOME_DATA, 0, nv_data_length, (uint8_t *)&s_remind_home_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_remind_home_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_home_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_REMIND_HOME_DATA, 0, nv_data_length, (uint8_t *)&s_remind_home_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               _lv_memset_00(&s_remind_home_data, sizeof(nv_watch_remind_home_t));
+       }
+}
+
+void mmi_remind_home_data_set(nv_watch_remind_home_t * data)
+{
+       if(NULL != data)
+       {
+               _lv_memset_00(&s_remind_home_data, sizeof(nv_watch_remind_home_t));
+               _lv_memcpy(&s_remind_home_data, data, sizeof(nv_watch_remind_home_t));
+               mmi_remind_home_nv_write();
+       }
+}
+
+bool mmi_remind_home_is_trigger(hal_rtc_t cur_time)
+{
+       if(s_remind_home_data.is_valid)
+       {
+               if(cur_time.tm_hour == s_remind_home_data.hour
+                       && cur_time.tm_min == s_remind_home_data.min
+                       )
+               {
+                       printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                       return true;
+               }
+       }
+
+       return false;
+}
+
+void mmi_remind_home_screen_active(void)
+{
+       s_remind_type = MMI_REMIND_TYPE_HOME;
+       mmi_remind_screen_active();
+}
+#endif
+
+
+#ifdef __MMI_REMIND_MEDICINE_SUPPORT__
+static nv_watch_remind_medicine_t s_remind_medicine_data = {0};
+
+void mmi_remind_medicine_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_medicine_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_REMIND_MEDICINE_DATA, 0, nv_data_length, (uint8_t *)&s_remind_medicine_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_remind_medicine_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_medicine_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_REMIND_MEDICINE_DATA, 0, nv_data_length, (uint8_t *)&s_remind_medicine_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               _lv_memset_00(&s_remind_medicine_data, sizeof(nv_watch_remind_medicine_t));
+       }
+}
+
+void mmi_remind_medicine_data_set(nv_watch_remind_medicine_t * data)
+{
+       if(NULL != data)
+       {
+               _lv_memset_00(&s_remind_medicine_data, sizeof(nv_watch_remind_medicine_t));
+               _lv_memcpy(&s_remind_medicine_data, data, sizeof(nv_watch_remind_medicine_t));
+               mmi_remind_medicine_nv_write();
+       }
+}
+
+bool mmi_remind_medicine_is_trigger(hal_rtc_t cur_time)
+{
+       uint8_t i = 0;
+       for(i = 0; i < NV_REMIND_MEDICINE_MAX_NUM; i++)
+       {
+               if(s_remind_medicine_data.remind_info[i].is_valid)
+               {
+                       if(cur_time.tm_hour == s_remind_medicine_data.remind_info[i].hour
+                               && cur_time.tm_min == s_remind_medicine_data.remind_info[i].min
+                               )
+                       {
+                               printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                               return true;
+                       }
+               }
+       }
+
+       return false;
+}
+
+void mmi_remind_medicine_screen_active(void)
+{
+       s_remind_type = MMI_REMIND_TYPE_MEDICINE;
+       mmi_remind_screen_active();
+}
+#endif
+
+
+#ifdef __MMI_REMIND_CUSTOM_MEDICINE_SUPPORT__
+static nv_watch_remind_custom_medicine_t s_remind_custom_medicine_data = {0};
+
+void mmi_remind_custom_medicine_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_custom_medicine_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_REMIND_CUSTOM_MEDICINE_DATA, 0, nv_data_length, (uint8_t *)&s_remind_custom_medicine_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_remind_custom_medicine_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_custom_medicine_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_REMIND_CUSTOM_MEDICINE_DATA, 0, nv_data_length, (uint8_t *)&s_remind_custom_medicine_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               _lv_memset_00(&s_remind_custom_medicine_data, sizeof(nv_watch_remind_custom_medicine_t));
+       }
+}
+
+void mmi_remind_custom_medicine_data_set(nv_watch_remind_custom_medicine_t * data)
+{
+       if(NULL != data)
+       {
+               _lv_memset_00(&s_remind_custom_medicine_data, sizeof(nv_watch_remind_custom_medicine_t));
+               _lv_memcpy(&s_remind_custom_medicine_data, data, sizeof(nv_watch_remind_custom_medicine_t));
+               mmi_remind_custom_medicine_nv_write();
+       }
+}
+
+bool mmi_remind_custom_medicine_is_trigger(hal_rtc_t cur_time)
+{
+       uint8_t i = 0;
+       for(i = 0; i < NV_REMIND_CUSTOM_MEDICINE_MAX_NUM; i++)
+       {
+               if(s_remind_custom_medicine_data.remind_info[i].is_valid)
+               {
+                       if(cur_time.tm_hour == s_remind_custom_medicine_data.remind_info[i].hour
+                               && cur_time.tm_min == s_remind_custom_medicine_data.remind_info[i].min
+                               )
+                       {
+                               if((0x01 << (cur_time.tm_wday)) & s_remind_custom_medicine_data.repeat_bitmap)
+                               {
+                                       printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                                       return true;
+                               }
+                       }
+               }
+       }
+
+       return false;
+}
+
+void mmi_remind_custom_medicine_screen_active(void)
+{
+       s_remind_type = MMI_REMIND_TYPE_CUSTOM_MEDICINE;
+       mmi_remind_screen_active();
+}
+#endif
+
+
+#ifdef __MMI_REMIND_DRINK_SUPPORT__
+static nv_watch_remind_drink_t s_remind_drink_data = {0};
+static void * s_remind_drink_timer = NULL;
+
+void mmi_remind_drink_timer_stop(void);
+static void mmi_remind_drink_timer_start(void);
+static void mmi_remind_drink_trigger(uint32_t para);
+
+void mmi_remind_drink_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_drink_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_REMIND_DRINK_DATA, 0, nv_data_length, (uint8_t *)&s_remind_drink_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_remind_drink_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_remind_drink_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_REMIND_DRINK_DATA, 0, nv_data_length, (uint8_t *)&s_remind_drink_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               _lv_memset_00(&s_remind_drink_data, sizeof(nv_watch_remind_drink_t));
+       }
+}
+
+void mmi_remind_drink_data_set(nv_watch_remind_drink_t * data)
+{
+       mmi_remind_drink_timer_stop();
+       
+       if(NULL != data)
+       {
+               _lv_memset_00(&s_remind_drink_data, sizeof(nv_watch_remind_drink_t));
+               _lv_memcpy(&s_remind_drink_data, data, sizeof(nv_watch_remind_drink_t));
+               mmi_remind_drink_nv_write();
+
+               if(s_remind_drink_data.is_valid)
+               {
+                       mmi_remind_drink_timer_start();
+               }
+       }
+}
+
+void mmi_remind_drink_screen_active(void)
+{
+       s_remind_type = MMI_REMIND_TYPE_DRINK;
+       mmi_remind_screen_active();
+}
+
+void mmi_remind_drink_timer_stop(void)
+{
+       if(NULL != s_remind_drink_timer)
+       {
+               uos_timer_stop(s_remind_drink_timer);
+               uos_timer_delete(s_remind_drink_timer);
+               s_remind_drink_timer = NULL;
+       }
+}
+
+static void mmi_remind_drink_timer_start(void)
+{
+       mmi_remind_drink_timer_stop();
+
+       if(0 == s_remind_drink_data.is_valid)
+       {
+               return ;
+       }
+       
+       uint32_t time_second = s_remind_drink_data.hour_value * 3600;
+               
+       uos_timer_create(&s_remind_drink_timer);
+       uos_timer_start(s_remind_drink_timer, MS_TO_TICKS(time_second * 1000), 0, mmi_remind_drink_trigger, NULL);
+}
+
+static void mmi_remind_drink_trigger(uint32_t para)
+{
+       mmi_remind_drink_screen_active();
+       mmi_remind_drink_timer_start();
+}
+
+void mmi_remind_drink_mission_power_on_check(void)
+{
+       mmi_remind_drink_nv_read();
+       mmi_remind_drink_timer_start();
+}
+#endif
+
+
 #ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
 
 void mmi_remind_sedentary_screen_content(lv_obj_t * cont)
@@ -266,25 +685,30 @@ static lv_obj_t * mmi_remind_screen_create(lv_obj_t * activity_obj)
        //lv_obj_set_style_local_bg_color(cont, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
        lv_obj_set_click(cont, false);
 
-#ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
-       mmi_remind_sedentary_screen_content(cont);
-#else
-       hal_rtc_t cur_time;
-       char time_str[8] = {0};
-       
-       Hal_Rtc_Gettime(&cur_time);
-       sprintf(time_str, "%02d:%02d", cur_time.tm_hour, cur_time.tm_min);
-       
-       lv_obj_t * label_time = lv_label_create(cont, NULL);
-       lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26);
-       lv_label_set_text(label_time, time_str);
-       lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER);
-       lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, 50);
-
-       lv_obj_t * label_prompt = lv_label_create(cont, label_time);
-       lv_label_set_text_id(label_prompt, s_remind_info[s_remind_index].remind_txt_id);
-       lv_obj_align(label_prompt, label_time, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
-#endif
+       if(MMI_REMIND_TYPE_SEDENTARY == s_remind_type)
+       {
+       #ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
+               mmi_remind_sedentary_screen_content(cont);
+       #endif
+       }
+       else
+       {
+               hal_rtc_t cur_time;
+               char time_str[8] = {0};
+               
+               Hal_Rtc_Gettime(&cur_time);
+               sprintf(time_str, "%02d:%02d", cur_time.tm_hour, cur_time.tm_min);
+               
+               lv_obj_t * label_time = lv_label_create(cont, NULL);
+               lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26);
+               lv_label_set_text(label_time, time_str);
+               lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER);
+               lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, 50);
+
+               lv_obj_t * label_prompt = lv_label_create(cont, label_time);
+               lv_label_set_text_id(label_prompt, s_remind_info[s_remind_index].remind_txt_id);
+               lv_obj_align(label_prompt, label_time, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+       }
 
        lv_obj_t * btn = lv_btn_create(cont, NULL);
        lv_obj_set_size(btn, 100, 56);
@@ -331,14 +755,31 @@ void mmi_ui_msg_update_remind(void)
        
     if(AUDIO_CTRL_PRIORITY_REMIND == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_REMIND, mmi_remind_audio_ctrl_callback))
     {
+               uint8_t volume = 0;
+       #ifdef __MMI_USER_PROFILE_SUPPORT__
+               volume = mmi_user_profile_current_mode_remind_volume_get();
+       #else
+               volume = query_current_volume();
+       #endif
+       
        #ifdef __MMI_CUSTOM_HENG_AI__
                if(0 == mmi_heng_ai_wake_ring_type_get())
-               Hal_NFFS_File_Play_Repeat(ring_path, query_current_volume());
+               {
+               Hal_NFFS_File_Play_Repeat(ring_path, volume);
+               }
                else
-                       Hal_Vibrator_Play_Repeat();     
+               {
+                       if(true == mmi_watch_vibrate_is_permitted())
+                       {
+                               Hal_Vibrator_Play_Repeat();
+                       }
+               }
        #else
-        Hal_NFFS_File_Play_Repeat(ring_path, query_current_volume());
-               Hal_Vibrator_Play_Repeat();
+        Hal_NFFS_File_Play_Repeat(ring_path, volume);
+               if(true == mmi_watch_vibrate_is_permitted())
+               {
+                       Hal_Vibrator_Play_Repeat();
+               }
        #endif
                
                mmi_remind_screen_create(NULL);
@@ -399,6 +840,40 @@ void mmi_remind_mission_check(hal_rtc_t cur_time)
                return ;
        }
 #endif
+#ifdef __MMI_REMIND_REST_SUPPORT__
+       if(mmi_remind_rest_begin_is_trigger(cur_time))
+       {
+               mmi_remind_rest_begin_screen_active();
+               return ;
+       }
+       
+       if(mmi_remind_rest_end_is_trigger(cur_time))
+       {
+               mmi_remind_rest_end_screen_active();
+               return ;
+       }
+#endif
+#ifdef __MMI_REMIND_HOME_SUPPORT__
+       if(mmi_remind_home_is_trigger(cur_time))
+       {
+               mmi_remind_home_screen_active();
+               return ;
+       }
+#endif
+#ifdef __MMI_REMIND_MEDICINE_SUPPORT__
+       if(mmi_remind_medicine_is_trigger(cur_time))
+       {
+               mmi_remind_medicine_screen_active();
+               return ;
+       }
+#endif
+#ifdef __MMI_REMIND_CUSTOM_MEDICINE_SUPPORT__
+       if(mmi_remind_custom_medicine_is_trigger(cur_time))
+       {
+               mmi_remind_custom_medicine_screen_active();
+               return ;
+       }
+#endif
 
 
 }
@@ -411,6 +886,18 @@ void mmi_remind_data_init(void)
 #ifdef __MMI_REMIND_SLEEP_SUPPORT__
        mmi_remind_sleep_nv_read();
 #endif
+#ifdef __MMI_REMIND_REST_SUPPORT__
+       mmi_remind_rest_nv_read();
+#endif
+#ifdef __MMI_REMIND_HOME_SUPPORT__
+       mmi_remind_home_nv_read();
+#endif
+#ifdef __MMI_REMIND_MEDICINE_SUPPORT__
+       mmi_remind_medicine_nv_read();
+#endif
+#ifdef __MMI_REMIND_CUSTOM_MEDICINE_SUPPORT__
+       mmi_remind_custom_medicine_nv_read();
+#endif
 
 
 }
index 75e0712..dd21b82 100644 (file)
@@ -30,8 +30,12 @@ typedef enum
 {
        MMI_REMIND_TYPE_WAKE_UP,
        MMI_REMIND_TYPE_SLEEP,
+       MMI_REMIND_TYPE_REST_BEGIN,
+       MMI_REMIND_TYPE_REST_END,
+       MMI_REMIND_TYPE_HOME,
        MMI_REMIND_TYPE_MEDICINE,
-       MMI_REMIND_TYPE_DRINK_WATER,
+       MMI_REMIND_TYPE_CUSTOM_MEDICINE,
+       MMI_REMIND_TYPE_DRINK,
        MMI_REMIND_TYPE_SEDENTARY,
 
        MMI_REMIND_TYPE_MAX
@@ -55,12 +59,27 @@ typedef struct
 
 
 #ifdef __MMI_REMIND_WAKE_UP_SUPPORT__
-void mmi_remind_wake_up_data_set(nv_watch_remind_wake_up_t * data);
+void mmi_remind_wake_up_data_set(nv_watch_remind_item_t * data);
 void mmi_remind_wake_up_screen_active(void);
 #endif
 #ifdef __MMI_REMIND_SLEEP_SUPPORT__
-void mmi_remind_sleep_data_set(nv_watch_remind_sleep_t * data);
-void mmi_remind_sleep_screen_active(void);
+void mmi_remind_sleep_data_set(nv_watch_remind_item_t * data);
+#endif
+#ifdef __MMI_REMIND_REST_SUPPORT__
+void mmi_remind_rest_data_set(nv_watch_remind_rest_t * data);
+#endif
+#ifdef __MMI_REMIND_HOME_SUPPORT__
+void mmi_remind_home_data_set(nv_watch_remind_home_t * data);
+#endif
+#ifdef __MMI_REMIND_MEDICINE_SUPPORT__
+void mmi_remind_medicine_data_set(nv_watch_remind_medicine_t * data);
+#endif
+#ifdef __MMI_REMIND_CUSTOM_MEDICINE_SUPPORT__
+void mmi_remind_custom_medicine_data_set(nv_watch_remind_custom_medicine_t * data);
+#endif
+#ifdef __MMI_REMIND_DRINK_SUPPORT__
+void mmi_remind_drink_data_set(nv_watch_remind_drink_t * data);
+void mmi_remind_drink_mission_power_on_check(void);
 #endif
 
 bool mmi_remind_screen_is_active(void);
index ce6bef2..671ac9e 100644 (file)
@@ -45,6 +45,9 @@ static mmi_watch_list_item_t settingList[] =
 #if USE_LV_WATCH_SETTING_DATETIME != 0
     //{ ICON_SETTING_DATETIME, WATCH_TEXT_ID_DATE_AND_TIME,  setting_date_time_create_btn_action},
 #endif
+#ifdef __MMI_USER_PROFILE_SUPPORT__
+       { ICON_SETTING_USER_PROFILE_MODE, WATCH_TEXT_ID_USER_PROFILE_MODE, mmi_user_profile_create_event_cb },
+#endif
 #ifdef __MMI_PAGE_MAIN_MENU_TTS_SUPPORT__
        { ICON_SETTING_PAGE_MAIN_MENU_TTS, WATCH_TEXT_ID_PAGE_MAIN_MENU_TTS, setting_page_main_menu_tts_create_event_cb },
 #endif
@@ -152,7 +155,9 @@ static mmi_watch_list_item_t settingList[] =
 #ifdef __MMI_ZHSX_SUPPORT__
 void mmi_watch_setting_data_nv_default(nv_watch_settings_t * setting)
 {
+#ifndef __MMI_USER_PROFILE_SUPPORT__
        setting->ringvolume = MMI_PHONE_RING_VOLUME_DEFAULT;
+#endif
        setting->backlightintensity = MMI_PHONE_BACKLIGHT_LEVEL_DEFAULT;
        setting->backlighttimeout = MMI_PHONE_BACKLIGHT_TIMEOUT_DEFAULT;
        setting->currentlanguage = MMI_PHONE_LANGUAGE_DEFAULT;
@@ -172,7 +177,9 @@ void setting_init(void)
 
     // call sub module init functions
     setting_brightness_init(nvsettings);
+#ifndef __MMI_USER_PROFILE_SUPPORT__
     setting_volume_init(nvsettings);
+#endif
     lv_lang_set(nvsettings->currentlanguage);
 #if USE_LV_WATCH_LANG_ARABIC != 0
     if(nvsettings->currentlanguage == LANG_AR) {
index adca89c..8f6451e 100644 (file)
@@ -86,9 +86,6 @@ static bool watch_ambient = false;
 #ifdef __MMI_ZHSX_SUPPORT__
 static void mmi_data_init_before_watch_create(void)
 {
-#ifdef __MMI_WECHAT_SUPPORT__
-       mmi_wechat_msg_info_init();
-#endif
        mmi_sos_number_nv_read();
        mmi_center_number_nv_read();
 #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
@@ -98,6 +95,9 @@ static void mmi_data_init_before_watch_create(void)
 #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
        mmi_watch_do_not_disturb_nv_read();
 #endif
+#ifdef __MMI_USER_PROFILE_SUPPORT__
+       mmi_watch_user_profile_nv_read();
+#endif
 
 
 
@@ -108,6 +108,9 @@ static void mmi_data_init_after_watch_create(void)
        // timing mission
        app_adaptor_timing_control_init();
        
+#ifdef __MMI_WECHAT_SUPPORT__
+       mmi_wechat_msg_info_init();
+#endif
 #ifdef __MMI_ZHSX_SUPPORT_ALIPAY__
        mmi_watch_alipay_info_init();
 #endif
@@ -127,6 +130,9 @@ static void mmi_data_init_after_watch_create(void)
 #ifdef __MMI_CUSTOM_HENG_AI__
        mmi_hengai_sleep_activation_nv_read();
 #endif
+#ifdef __MMI_REMIND_DRINK_SUPPORT__
+       mmi_remind_drink_mission_power_on_check();
+#endif
 #ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
        mmi_sedentary_remind_mission_power_on_check();
 #endif
@@ -465,7 +471,13 @@ static void main_task(lv_task_t * task)
         AudioHAL_SetResBufCnt(20);
 
        #ifndef __MMI_POWER_ON_OFF_NO_RING__
-        Hal_NFFS_File_Play_Onetime(AUDIO_POWER_ON, (HAL_SPEAKER_GAIN)query_current_volume(), poweron_play_callback, 0);
+               uint8_t volume = 0;
+       #ifdef __MMI_USER_PROFILE_SUPPORT__
+               volume = mmi_user_profile_current_mode_remind_volume_get();
+       #else
+               volume = query_current_volume();
+       #endif
+        Hal_NFFS_File_Play_Onetime(AUDIO_POWER_ON, (HAL_SPEAKER_GAIN)volume, poweron_play_callback, 0);
        #endif
     }
 
index 18daf76..552c95e 100644 (file)
@@ -985,6 +985,7 @@ LV_IMG_DECLARE(img_poweron_logo);
 #endif
 
 #ifdef __MMI_USER_PROFILE_SUPPORT__
+#define ICON_SETTING_USER_PROFILE_MODE                 "R:/png/setting/ICON_SETTING_USER_PROFILE_MODE.png"
 #define ICON_USER_PROFILE_STATUS                 "R:/png/mmi_user_profile/ICON_USER_PROFILE_STATUS.png"
 #define ICON_USER_PROFILE_RING_ONLY_DEFAULT                 "R:/png/mmi_user_profile/ICON_USER_PROFILE_RING_ONLY_DEFAULT.png"
 #define ICON_USER_PROFILE_RING_ONLY_SELECTED                 "R:/png/mmi_user_profile/ICON_USER_PROFILE_RING_ONLY_SELECTED.png"