gengxin
authorCCC <2393524978@qq.com>
Tue, 10 Oct 2023 09:46:39 +0000 (17:46 +0800)
committerCCC <2393524978@qq.com>
Tue, 10 Oct 2023 09:46:39 +0000 (17:46 +0800)
2.sdk/sdk/gui/lv_watch/lv_watch.h
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c

index 373e121..1add449 100644 (file)
@@ -183,6 +183,7 @@ extern "C" {
 #include "lv_apps/health_measure/health_heart_rate.h"
 #include "lv_apps/health_measure/health_spo2.h"
 #include "lv_apps/health_measure/health_temperature.h"
+#include "lv_apps/tool/tool.h"
 
 #endif
 
index f1f7545..678dd9a 100644 (file)
@@ -645,13 +645,11 @@ void mmi_ui_msg_update_charging_prompt(uint32_t chg_status)
 
 #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
 
-//#define DO_NOT_DISTURB_TIME_Y        ()
-//#define DO_NOT_DISTURB_PROMPT_Y      ()
-//#define DO_NOT_DISTURB_TIME_Y        ()
-
+//#define DEBUG_DO_NOT_DISTURB
 
 static nv_watch_do_not_disturb_t s_do_not_disturb_data = {0};
-static uint8_t s_do_not_disturb_last_min = 0;
+static lv_task_t * s_do_not_disturb_check_task = NULL;
+static int8_t s_do_not_disturb_last_min = -1;
 
 void mmi_watch_do_not_disturb_nv_write(void)
 {
@@ -673,7 +671,7 @@ void mmi_watch_do_not_disturb_nv_read(void)
                _lv_memset_00(&s_do_not_disturb_data, sizeof(nv_watch_do_not_disturb_t));
        }
 
-#if 0
+#ifdef DEBUG_DO_NOT_DISTURB
        s_do_not_disturb_data.item_info[0].on_off = 1;
        s_do_not_disturb_data.item_info[0].begin_hour = 1;
        s_do_not_disturb_data.item_info[0].begin_min = 0;
@@ -713,10 +711,12 @@ bool mmi_watch_is_in_do_not_disturb_time(void)
        uint16_t t_cur_mins = 0;
        uint8_t i = 0;
 
+#ifndef DEBUG_DO_NOT_DISTURB
        if(false == watch_modem_sim_present_check_req())
        {
                return false;
        }
+#endif
 
        Hal_Rtc_Gettime(&cur_time);
        t_cur_mins = cur_time.tm_hour * 60 + cur_time.tm_min;
@@ -770,13 +770,21 @@ static void mmi_watch_do_not_disturb_screen_display(lv_obj_t * cont)
        lv_label_set_text(label_time, t_time_str);
        lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font40);
        lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER);
+       #ifdef USE_LV_WATCH_UI_240_240_CIRCLE
+       lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, 30);
+       #else
        lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, 50);
+       #endif
 
        lv_obj_t * label_prompt = lv_label_create(cont, NULL);
        lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_FORBIDDEN_PERIOD);
        lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26);
        lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+       #ifdef USE_LV_WATCH_UI_240_240_CIRCLE
+       lv_obj_align(label_prompt, label_time, LV_ALIGN_OUT_BOTTOM_MID, 0, 5);
+       #else
        lv_obj_align(label_prompt, label_time, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+       #endif
 
        uint8_t i = 0;
        uint8_t j = 0;
@@ -796,13 +804,17 @@ static void mmi_watch_do_not_disturb_screen_display(lv_obj_t * cont)
                        lv_label_set_text(label, t_time_str);
                        lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26);
                        lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+                       #ifdef USE_LV_WATCH_UI_240_240_CIRCLE
+                       lv_obj_align(label, label_prompt, LV_ALIGN_OUT_BOTTOM_MID, 0, 3 + (t_height + 3) * j);
+                       #else
                        lv_obj_align(label, label_prompt, LV_ALIGN_OUT_BOTTOM_MID, 0, 5 + (t_height + 5) * j);
+                       #endif
                        j++;
                }
        }
 }
 
-static void mmi_watch_do_not_disturb_task_cb(lv_task_t * task)
+static void mmi_watch_do_not_disturb_screen_refresh(void)
 {
        lv_do_not_disturb_ext_t * ext = (lv_do_not_disturb_ext_t * )mmi_watch_do_not_disturb_ext_get();
        if(NULL == ext)
@@ -817,13 +829,6 @@ static void mmi_watch_do_not_disturb_screen_prepare_destory(lv_obj_t * activity_
        SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
        
     lv_watch_png_cache_all_free();
-
-       lv_do_not_disturb_ext_t * ext = (lv_do_not_disturb_ext_t * )mmi_watch_do_not_disturb_ext_get();
-       if(NULL != ext->refresh_task)
-       {
-               lv_task_del(ext->refresh_task);
-               ext->refresh_task = NULL;
-       }
 }
 
 static lv_obj_t * mmi_watch_do_not_disturb_screen_create(lv_obj_t * activity_obj)
@@ -864,41 +869,49 @@ static lv_obj_t * mmi_watch_do_not_disturb_screen_create(lv_obj_t * activity_obj
        ext->cont = cont;
 
        mmi_watch_do_not_disturb_screen_display(cont);
-       ext->refresh_task = lv_task_create(mmi_watch_do_not_disturb_task_cb, 2000, LV_TASK_PRIO_HIGH, NULL);
 
        return obj;
 }
 
 void mmi_ui_msg_update_do_not_disturb(uint8_t flag)
 {
-       if(flag)
+       switch(flag)
        {
-               mmi_watch_do_not_disturb_screen_create(NULL);
-       }
-       else
-       {
-               mmi_watch_do_not_disturb_screen_prepare_destory(NULL);
-               lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_DO_NOT_DISTURB);
-           if(activity_obj)
-               {
-               lv_obj_del(activity_obj);
-           }
+               case 0:
+                       mmi_watch_do_not_disturb_screen_prepare_destory(NULL);
+                       lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_DO_NOT_DISTURB);
+                   if(activity_obj)
+                       {
+                       lv_obj_del(activity_obj);
+                   }
+                       break;
+
+               case 1:
+                       mmi_watch_do_not_disturb_screen_create(NULL);
+                       break;
+
+               case 2:
+                       mmi_watch_do_not_disturb_screen_refresh();
+                       break;
+
+               default:
+                       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: should not run to here\n", __FUNCTION__, __LINE__);
+                       break;
        }
 }
 
-void mmi_watch_do_not_disturb_screen_check(int32_t tm_min)
+void mmi_watch_do_not_disturb_check_task_cb(lv_task_t * task)
 {
-       if(tm_min == s_do_not_disturb_last_min)
+    hal_rtc_t cur_time = {0};
+       
+    Hal_Rtc_Gettime(&cur_time);
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%d,%d\n", __FUNCTION__, __LINE__, cur_time.tm_hour, cur_time.tm_min, cur_time.tm_sec);
+       if(cur_time.tm_min == s_do_not_disturb_last_min)
        {
         return;
        }
-
-    if(0 == Hal_Pm_Get_State()) 
-       {
-        return;
-    }
        
-       s_do_not_disturb_last_min = tm_min;
+       s_do_not_disturb_last_min = cur_time.tm_min;
 
        lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_DO_NOT_DISTURB);
        if(true == mmi_watch_is_in_do_not_disturb_time())
@@ -906,21 +919,126 @@ void mmi_watch_do_not_disturb_screen_check(int32_t tm_min)
                SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: 0x%x\n", __FUNCTION__, __LINE__, activity_obj);
                if(NULL == activity_obj)
                {
+                       // create
                        mmi_ui_msg_action_do_not_disturb(1);
                }
+               else
+               {
+                       // update
+                       mmi_ui_msg_action_do_not_disturb(2);
+               }
        }
        else
        {
                SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: 0x%x\n", __FUNCTION__, __LINE__, activity_obj);
                if(NULL != activity_obj)
                {
+                       // destroy
                        mmi_ui_msg_action_do_not_disturb(0);
                }
        }
 }
+
+void mmi_watch_do_not_disturb_mission_check(void)
+{
+       s_do_not_disturb_check_task = lv_task_create(mmi_watch_do_not_disturb_check_task_cb, 1000 * 5, LV_TASK_PRIO_MID, NULL);
+}
 #endif
 
 
+#ifdef __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
+
+static nv_watch_switch_t s_sim_unbind_switch = {0};
+
+void mmi_watch_sim_unbind_switch_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_switch_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_SIM_UNBIND_SWITCH, 0, nv_data_length, (uint8_t *)&s_sim_unbind_switch))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_watch_sim_unbind_switch_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_switch_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_SIM_UNBIND_SWITCH, 0, nv_data_length, (uint8_t *)&s_sim_unbind_switch))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_watch_sim_unbind_switch_nv_default(nv_watch_switch_t * data)
+{
+       data->switch_flag = MMI_SIM_UNBIND_SWITCH_DEFAULT;
+}
+
+// 0-close; 1-open
+uint8_t mmi_watch_sim_unbind_switch_get(void)
+{
+       return (s_sim_unbind_switch.switch_flag);
+}
+
+void mmi_watch_sim_unbind_switch_set(uint8_t value)
+{
+       if(0 == value || 1 == value)
+       {
+               s_sim_unbind_switch.switch_flag = value;
+               mmi_watch_sim_unbind_switch_nv_write();
+       }
+}
+
+bool mmi_watch_sim_unbind_info_compare(void)
+{
+       bool result = false;
+       nv_watch_sim_iccid_t old_iccid = {0};
+       char new_iccid_data[NV_WATCH_SIM_ICCID_DATA_LEN + 1] = {0};
+
+       char * p_iccid = app_adaptor_get_iccid_info_req();
+       strncpy(new_iccid_data, p_iccid, NV_WATCH_SIM_ICCID_DATA_LEN);
+       lv_mem_free(p_iccid);
+
+       uint32_t nv_data_length = sizeof(nv_watch_sim_iccid_t);
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_SIM_ICCID_DATA, 0, nv_data_length, (uint8_t *)&old_iccid))
+       {
+               _lv_memset_00(&old_iccid, nv_data_length);
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+       }
+
+       if(0 == strlen(old_iccid.data))
+       {
+               strncpy(old_iccid.data, new_iccid_data, NV_WATCH_SIM_ICCID_DATA_LEN);
+               UI_NV_Write_Req(NV_SECTION_UI_SIM_ICCID_DATA, 0, nv_data_length, (uint8_t *)&old_iccid);
+               
+               return false;
+       }
+       else if(0 == strncmp(old_iccid.data, new_iccid_data, NV_WATCH_SIM_ICCID_DATA_LEN))
+       {
+               return false;
+       }
+       else
+       {
+               strncpy(old_iccid.data, new_iccid_data, NV_WATCH_SIM_ICCID_DATA_LEN);
+               UI_NV_Write_Req(NV_SECTION_UI_SIM_ICCID_DATA, 0, nv_data_length, (uint8_t *)&old_iccid);
+
+               return true;
+       }
+}
+
+void mmi_watch_sim_unbind_check(void)
+{
+       if(true == mmi_watch_sim_unbind_info_compare())
+       {
+               if(1 == mmi_watch_sim_unbind_switch_get())
+               {
+                       mmi_watch_factory_aciton();
+               }
+       }
+}
+#endif
+
 
 
 #endif