gengxin
author@CHENG <2393524978@qq.com>
Fri, 19 Apr 2024 08:36:02 +0000 (16:36 +0800)
committer@CHENG <2393524978@qq.com>
Fri, 19 Apr 2024 08:36:02 +0000 (16:36 +0800)
2.sdk/project/Z5_LT_K7/gui/lv_watch/mmi_default_CUSTOM.h
2.sdk/sdk/gui/lv_watch/app_adaptor/app_adaptor_timing_control.c
2.sdk/sdk/gui/lv_watch/app_adaptor/app_adaptor_timing_control.h
2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c
2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h
2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c
2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h
2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.c
2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.h
2.sdk/sdk/gui/lv_watch/lv_watch.c

index 4bbdc44..63b8508 100644 (file)
@@ -88,6 +88,9 @@
 // sim unbind
 #define MMI_CUSTOMER_SIM_UNBIND_SWITCH         (MMI_WATCH_SWITCH_ON)
 
+// low battery switch
+#define MMI_CUSTOMER_LOW_BATTERY_SWITCH                (MMI_WATCH_SWITCH_ON)
+
 
 
 #endif
index fa96770..ff14a80 100644 (file)
@@ -21,6 +21,7 @@ TASK_HANDLE * s_gui_timing_task_id = NULL;
 
 static void mmi_gui_timing_timer_callback(uint32_t param);
 static void mmi_gui_timing_task_3_second_mission(void * time_param);
+static void mmi_gui_timing_task_9_second_mission(void * time_param);
 static void mmi_gui_timing_task_15_second_mission(void * time_param);
 static void mmi_gui_timing_task_1_minute_mission(void * time_param);
 
@@ -73,6 +74,10 @@ static void mmi_gui_timing_task_handle(void * param)
                case MMI_GUI_TIMING_MSG_3_SECOND:
                        mmi_gui_timing_task_3_second_mission(msg_param);
                        break;
+
+               case MMI_GUI_TIMING_MSG_9_SECOND:
+                       mmi_gui_timing_task_9_second_mission(msg_param);
+                       break;
                        
         case MMI_GUI_TIMING_MSG_15_SECOND:
                        mmi_gui_timing_task_15_second_mission(msg_param);
@@ -154,6 +159,27 @@ static void mmi_gui_timing_task_3_second_mission(void * time_param)
        }
 
 
+}
+
+static void mmi_gui_timing_task_9_second_mission(void * time_param)
+{
+    hal_rtc_t cur_time = {0};
+       
+       if(NULL != time_param)
+       {
+               Hal_Mem_Copy(&cur_time, time_param, sizeof(hal_rtc_t));
+       }
+       else
+       {
+               Hal_Rtc_Gettime(&cur_time);
+       }
+
+       TIMING_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       // low battery
+       mmi_low_battery_check_mission();
+
+
 }
 
 static void mmi_gui_timing_task_15_second_mission(void * time_param)
@@ -225,6 +251,13 @@ static void mmi_gui_timing_timer_callback(uint32_t param)
 
        mmi_gui_timing_task_msg_send(MMI_GUI_TIMING_MSG_3_SECOND, NULL); // 3 seconds
        
+       if(0 == s_timing_control_timer_counter % 3) // 9 seconds
+       {
+               hal_rtc_t * p_cur_time_9 = Hal_Mem_Alloc(sizeof(hal_rtc_t));
+               Hal_Mem_Copy(p_cur_time_9, &cur_time, sizeof(hal_rtc_t));
+               mmi_gui_timing_task_msg_send(MMI_GUI_TIMING_MSG_9_SECOND, p_cur_time_9);
+       }
+       
        if(0 == s_timing_control_timer_counter % 5) // 15 seconds
        {
                hal_rtc_t * p_cur_time_15 = Hal_Mem_Alloc(sizeof(hal_rtc_t));
index 541e712..e1fc01a 100644 (file)
@@ -36,6 +36,7 @@ typedef enum
        MMI_GUI_TIMING_MSG_ID_START,
 
     MMI_GUI_TIMING_MSG_3_SECOND,
+       MMI_GUI_TIMING_MSG_9_SECOND,
        MMI_GUI_TIMING_MSG_15_SECOND,
     MMI_GUI_TIMING_MSG_1_MINUTE,
        MMI_GUI_TIMING_MSG_2_MINUTE,
index ed3c002..6b1a692 100644 (file)
@@ -133,6 +133,22 @@ void mmi_ui_msg_action_charging_prompt(uint32_t chg_status)
        Hal_Send_Message((TASK_ID)gui_task_id, (void *)msg_info);
 }
 
+void mmi_ui_msg_action_low_battery(uint32_t flag)
+{
+       printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       if(0 == Hal_Pm_Get_State())
+               return;
+       
+       mmi_msg_flag_para_t * msg_info = (mmi_msg_flag_para_t *)Hal_Mem_Alloc(sizeof(mmi_msg_flag_para_t));
+
+       memset(msg_info, 0x0, sizeof(mmi_msg_flag_para_t));
+       msg_info->header.MsgId = MMI_MSG_LOW_BATTERY_SCREEN;
+       msg_info->flag = flag;
+
+       Hal_Send_Message((TASK_ID)gui_task_id, (void *)msg_info);
+}
+
 #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
 void mmi_ui_msg_action_do_not_disturb(uint8_t flag)
 {
index f53cac6..72155a9 100644 (file)
@@ -70,6 +70,7 @@ void mmi_ui_msg_action_center_number_dialing(void);
 void mmi_ui_msg_action_no_sim_power_off(void);
 #endif
 void mmi_ui_msg_action_charging_prompt(uint32_t chg_status);
+void mmi_ui_msg_action_low_battery(uint32_t flag);
 #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
 void mmi_ui_msg_action_do_not_disturb(uint8_t flag);
 #endif
index 94fb44a..8590402 100644 (file)
@@ -461,7 +461,13 @@ void watch_ui_message_handle(uint16_t msgid, void * msg)
                        mmi_ui_msg_update_hengai_bp_measure_result(state, bp_value_high, bp_value_low);
                        break;
        #endif
-       
+
+               case MMI_MSG_LOW_BATTERY_SCREEN:
+                       uint32_t flag = ((mmi_msg_flag_para_t *)msg)->flag;
+                       mmi_ui_msg_update_low_battery_screen(flag);
+                       break;
+
+
                        
        #endif
        
index 61b3e3d..e40df3e 100644 (file)
@@ -137,6 +137,7 @@ enum
        MMI_MSG_HENGAI_BP_CALIBRATE_RESULT,
        MMI_MSG_HENGAI_BP_MEASURE_RESULT,
 #endif
+       MMI_MSG_LOW_BATTERY_SCREEN,
        
        
 #endif
@@ -554,6 +555,12 @@ typedef struct
     UI_Inter_Msg_Header_t header;
 } mmi_msg_no_para_t;
 
+typedef struct
+{
+    UI_Inter_Msg_Header_t header;
+       uint32_t flag;
+} mmi_msg_flag_para_t;
+
 #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
 typedef struct
 {
index c8dc97b..b9a4537 100644 (file)
@@ -52,6 +52,102 @@ lv_res_t lowbattery_create_btn_action(lv_obj_t * btn)
     return LV_RES_OK;
 }
 
+#ifdef __MMI_ZHSX_SUPPORT__
+
+#define MMI_LOW_BATTERY_SCREEN_DESTROY (0)
+#define MMI_LOW_BATTERY_SCREEN_CREATE  (1)
+#define MMI_LOW_BATTERY_SCREEN_UPDATE  (2)
+#define MMI_LOW_BATTERY_POWER_OFF      (3)
+
+static bool s_low_battery_upload_flag = true;
+
+void mmi_ui_msg_update_low_battery_screen(uint32_t flag)
+{
+       if(MMI_LOW_BATTERY_SCREEN_CREATE == flag) // create
+       {
+               lowbattery_create_btn_action(NULL);
+       #if USE_LV_WATCH_AUDIO_PLAYER != 0
+               audio_player_lowbattery_process();
+       #endif
+               voip_activity_destroy_req();
+       }
+       else if(MMI_LOW_BATTERY_SCREEN_UPDATE == flag) // update time
+       {
+               lv_lowbattery_ext_t * ext = lv_obj_get_ext_attr(lv_watch_get_activity_obj(ACT_ID_LOWBATTERY));
+               hal_rtc_t tm;
+               Hal_Rtc_Gettime(&tm);// get time
+               char * rtctime = lv_mem_alloc(6);
+               memset(rtctime, 0, 6);
+               snprintf(rtctime, 6, "%02d:%02d", tm.tm_hour, tm.tm_min);
+               lv_label_set_text(ext->timelabel, rtctime); //refresh the label
+               lv_mem_free(rtctime);
+       }
+       else if(MMI_LOW_BATTERY_POWER_OFF == flag) // power off
+       {
+               shutdown_confirm_btn_action(NULL, LV_EVENT_CLICKED);
+       }
+       else // destroy
+       {
+               lowbattery_destory();
+       }
+}
+
+void mmi_low_battery_check_mission(void)
+{
+    if(HAL_CHG_CONNECTED == Hal_Charger_Get_Status())
+       {
+               s_low_battery_upload_flag = true;
+               
+        if(NULL != lv_watch_get_activity_obj(ACT_ID_LOWBATTERY))
+               {
+            printf("[@CHENG_DEBUG]: power charging start and exit low battery mode\n");
+                       mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_SCREEN_DESTROY);
+        }
+    }
+       else
+       {
+        if(Hal_Battery_Get_Status() < ENTER_LOWBATTERY_MODE_LEVEL)
+               {
+                       if(true == s_low_battery_upload_flag)
+                       {
+                               mmi_protocol_action_low_battery();
+                               s_low_battery_upload_flag = false;
+                       }
+                       
+            if((NULL == lv_watch_get_activity_obj(ACT_ID_LOWBATTERY))
+                && (NULL == lv_watch_get_activity_obj(ACT_ID_PHONE))
+                )
+            {
+                printf("enter low battery mode\n");
+                               mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_SCREEN_CREATE);
+            }
+                       else
+                       {
+                // update time
+                if(NULL == lv_watch_get_activity_obj(ACT_ID_PHONE))
+                               {
+                                       mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_SCREEN_UPDATE);
+                }
+                if(Hal_Battery_Get_Status() == AUTO_POWER_OFF_LEVEL)
+                               {
+                    printf("power off in low battery mode\n");
+                                       mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_POWER_OFF);
+                }
+            }
+        } 
+               else
+               {
+                       s_low_battery_upload_flag = true;
+                       
+            if(NULL != lv_watch_get_activity_obj(ACT_ID_LOWBATTERY))
+                       {
+                printf("[@CHENG_DEBUG][%s][%d]: exit low battery mode\n", __FUNCTION__, __LINE__);
+                               mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_SCREEN_DESTROY);
+            }
+        }
+    }
+}
+#else
 void lowbattery_task(lv_task_t * task)
 {
     if(HAL_CHG_CONNECTED == Hal_Charger_Get_Status()) {
@@ -107,6 +203,7 @@ void lowbattery_task(lv_task_t * task)
         }
     }
 }
+#endif
 
 /**********************
  *   STATIC FUNCTIONS
index 47c290e..6ac4a60 100644 (file)
@@ -42,7 +42,12 @@ typedef struct
  * GLOBAL PROTOTYPES
  **********************/
 lv_res_t lowbattery_create_btn_action(lv_obj_t * btn);
+#ifdef __MMI_ZHSX_SUPPORT__
+void mmi_ui_msg_update_low_battery_screen(uint32_t flag);
+void mmi_low_battery_check_mission(void);
+#else
 void lowbattery_task(lv_task_t * task);
+#endif
 
 /**********************
  *      MACROS
index ff665b6..2a59036 100644 (file)
@@ -541,7 +541,9 @@ static lv_obj_t * watch_create(bool silentReset)
     }
 #endif
 
+#ifndef __MMI_ZHSX_SUPPORT__
     lowbattery_task_p = lv_task_create(lowbattery_task, 5000, LV_TASK_PRIO_MID, NULL);
+#endif
 
 #if USE_LV_WATCH_SIMCHECK
     checksim_task_p = lv_task_create(simcheck_task, WATCH_CHECK_SIM_STATUS_PERIOD, LV_TASK_PRIO_MID, NULL);