// 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
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);
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);
}
+}
+
+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)
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));
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,
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)
{
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
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
MMI_MSG_HENGAI_BP_CALIBRATE_RESULT,
MMI_MSG_HENGAI_BP_MEASURE_RESULT,
#endif
+ MMI_MSG_LOW_BATTERY_SCREEN,
#endif
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
{
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()) {
}
}
}
+#endif
/**********************
* STATIC FUNCTIONS
* 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
}
#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);