gengxin
author@CHENG <2393524978@qq.com>
Tue, 9 Jul 2024 03:16:10 +0000 (11:16 +0800)
committer@CHENG <2393524978@qq.com>
Tue, 9 Jul 2024 03:16:10 +0000 (11:16 +0800)
20 files changed:
2.sdk/project/C55_DS_D11G_DT_HZCH/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/C55_DS_D11G_DT_HZCH_LTP/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/Z5_DS_Z11XG_DTM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/Z5_DS_Z11XG_DTM_FZD_LTP/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/Z5_DS_Z11XG_DTM_NEWSMY/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/Z5_DS_Z12G_DTM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/Z5_DS_Z12G_DTM_LZGDZ/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/Z5_DS_Z12XG_DTM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/project/Z5_DS_Z12XG_QCBM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/sdk/gui/lv_watch/app_adaptor/app_adaptor_timing_control.c
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/include/ui_activity_id.h
2.sdk/sdk/gui/lv_watch/lv_apps/alarm/alarm.c
2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone_api.c
2.sdk/sdk/gui/lv_watch/lv_watch_common.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h

index f29011c..3a55fe9 100644 (file)
@@ -235,7 +235,9 @@ static void mmi_gui_timing_task_1_minute_mission(void * time_param)
 #endif
 
        // check chip temperature
+#ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
        mmi_watch_chip_temperature_check();
+#endif
 
 
 
index e5b0a82..6d9fc99 100644 (file)
@@ -112,11 +112,6 @@ void mmi_ui_msg_action_charging_prompt(uint32_t chg_status)
        }
 #endif
 
-       if(true == voip_connect_check_req())
-       {
-               return;
-       }
-
 #ifdef __MMI_ZHSX_SUPPORT_HEALTH_SENSOR__
        if(true == mmi_health_measure_state_is_ui_measure())
                return;
@@ -138,22 +133,6 @@ 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)
 {
@@ -239,21 +218,6 @@ void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_hi
 #endif
 
 
-void mmi_ui_msg_action_chip_high_temperature(uint32_t flag)
-{
-       printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
-       mmi_watch_wake_up();
-       
-       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_CHIP_HIGH_TEMP;
-       msg_info->flag = flag;
-
-       Hal_Send_Message((TASK_ID)gui_task_id, (void *)msg_info);       
-}
-
 
 
 #if 0
index 9c8f9a3..9be588d 100644 (file)
@@ -73,7 +73,6 @@ 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
@@ -92,7 +91,6 @@ void mmi_ui_msg_action_ai_talk_incoming(void);
 void mmi_ui_msg_action_hengai_bp_calibrate_result(bool state);
 void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_high, uint16_t bp_value_low);
 #endif
-void mmi_ui_msg_action_chip_high_temperature(uint32_t flag);
 
 void mmi_ui_falldown(void);
 
index 581cfea..0e209a6 100644 (file)
@@ -477,15 +477,6 @@ void watch_ui_message_handle(uint16_t msgid, void * msg)
                        break;
        #endif
 
-               case MMI_MSG_LOW_BATTERY_SCREEN:
-                       flag = ((mmi_msg_flag_para_t *)msg)->flag;
-                       mmi_ui_msg_update_low_battery_screen(flag);
-                       break;
-
-               case MMI_MSG_CHIP_HIGH_TEMP:
-                       flag = ((mmi_msg_flag_para_t *)msg)->flag;
-                       mmi_ui_msg_update_chip_high_temperature(flag);
-                       break;
 
                        
        #endif
index 0ce5967..97cb86e 100644 (file)
@@ -142,8 +142,6 @@ enum
        MMI_MSG_HENGAI_BP_CALIBRATE_RESULT,
        MMI_MSG_HENGAI_BP_MEASURE_RESULT,
 #endif
-       MMI_MSG_LOW_BATTERY_SCREEN,
-       MMI_MSG_CHIP_HIGH_TEMP,
        
        
 #endif
index f97d40f..f81745b 100644 (file)
@@ -236,6 +236,9 @@ enum
 #endif
 #ifdef __MMI_USER_PROFILE_SUPPORT__
        ACT_ID_USER_PROFILE,
+#endif
+#ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+       ACT_ID_CHIP_TEMP_HIGH,
 #endif
     ACT_ID_WATCH_FALLDWON,
     ACT_ID_WATCH_CONFIRM,
index 3ec0bbc..63d416e 100644 (file)
@@ -524,12 +524,14 @@ static void alarm_ring(void)
     /* set recent alarm to rtc */
     alarm_set_recent_to_rtc(alarms);
 
-#ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
-       if(true == mmi_watch_is_in_do_not_disturb_time())
+       if(true == mmi_active_screen_is_prohibit_interrupted()
+               #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
+               || true == mmi_watch_is_in_do_not_disturb_time()
+               #endif
+               )
        {
-               return;
+               return ;
        }
-#endif
 
     lv_obj_t * alarm_obj = lv_watch_get_activity_obj(ACT_ID_ALARM);
     if(NULL != alarm_obj) {
index 5c2d1f7..81c1d42 100644 (file)
@@ -306,15 +306,20 @@ void watch_modem_call_response_clip(int32_t index, MMI_Modem_Call_Response_Clip_
         return;
     }
 
-#ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
-       if(true == mmi_watch_is_in_do_not_disturb_time())
+       if(false
+               #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
+               || (true == mmi_watch_is_in_do_not_disturb_time())
+               #endif
+               #ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+               || (true == mmi_is_ACT_ID_CHIP_TEMP_HIGH())
+               #endif
+               )
        {
                printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
         Hal_Mem_Free(clip->number);
         Hal_Mem_Free(clip);
         return;
     }
-#endif
 
     printf("%s: index=%d, number=%s, type=%d\n", __func__, index, clip->number, clip->type);
 
index 0ca7cbf..704b91e 100644 (file)
@@ -482,6 +482,12 @@ void lv_watch_go_home(void)
                return;
        }
 #endif
+#ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+       if(true == mmi_is_ACT_ID_CHIP_TEMP_HIGH())
+       {
+               return;
+       }
+#endif
 #endif
 
 #if USE_LV_WATCH_EXERCISE != 0
@@ -573,14 +579,19 @@ void lv_watch_go_back(void)
        {
                mmi_watch_search_screen_destroy();
        }
-#endif
-
 #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
        if(true == mmi_watch_is_in_do_not_disturb_time())
        {
         return;
        }
 #endif
+#ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+       if(true == mmi_is_ACT_ID_CHIP_TEMP_HIGH())
+       {
+               return;
+       }
+#endif
+#endif
 
 #if USE_LV_WATCH_EXERCISE != 0
     if(exercise_sport_back_key_handle()) {
index 6e18806..4acaf28 100644 (file)
@@ -22,6 +22,13 @@ bool mmi_active_screen_is_prohibit_interrupted(void)
        {
                return true;
        }
+
+#ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+       if(true == mmi_is_ACT_ID_CHIP_TEMP_HIGH())
+       {
+               return true;
+       }
+#endif
        
     if(true == mmi_is_ACT_ID_SHUTDOWN())
        {
@@ -1478,20 +1485,531 @@ void mmi_watch_sim_unbind_check(void)
 #endif
 
 
-void mmi_ui_msg_update_chip_high_temperature(uint32_t flag)
+#ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+
+#ifdef __DEBUG_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+static uint8_t s_CHIP_TEMP_HIGH_THRESHOLD = 50;
+static uint8_t s_CHIP_TEMP_LOW_THRESHOLD = 45;
+static lv_obj_t * s_high_label = NULL;
+static lv_obj_t * s_low_label = NULL;
+
+static void __prepare_destory(lv_obj_t * activity_obj)
+{
+    lv_watch_png_cache_all_free();
+}
+
+static void __low_decrease_btn_action(lv_obj_t * btn, lv_event_t event)
+{
+    if(LV_EVENT_CLICKED!= event)
+               return;
+
+       s_CHIP_TEMP_LOW_THRESHOLD--;
+       
+       char low_value[8] = {0};
+       sprintf(low_value, "%d", s_CHIP_TEMP_LOW_THRESHOLD);
+       lv_label_set_text(s_low_label, low_value);
+}
+
+static void __low_increase_btn_action(lv_obj_t * btn, lv_event_t event)
+{
+       if(LV_EVENT_CLICKED!= event)
+               return;
+
+       if((s_CHIP_TEMP_HIGH_THRESHOLD - 1) > s_CHIP_TEMP_LOW_THRESHOLD)
+               s_CHIP_TEMP_LOW_THRESHOLD++;
+       
+       char low_value[8] = {0};
+       sprintf(low_value, "%d", s_CHIP_TEMP_LOW_THRESHOLD);
+       lv_label_set_text(s_low_label, low_value);
+}
+
+static void __high_decrease_btn_action(lv_obj_t * btn, lv_event_t event)
+{
+    if(LV_EVENT_CLICKED!= event)
+               return;
+
+       if((s_CHIP_TEMP_LOW_THRESHOLD + 1) < s_CHIP_TEMP_HIGH_THRESHOLD)
+               s_CHIP_TEMP_HIGH_THRESHOLD--;
+       
+       char high_value[8] = {0};
+       sprintf(high_value, "%d", s_CHIP_TEMP_HIGH_THRESHOLD);
+       lv_label_set_text(s_high_label, high_value);
+}
+
+static void __high_increase_btn_action(lv_obj_t * btn, lv_event_t event)
+{
+       if(LV_EVENT_CLICKED!= event)
+               return;
+
+       s_CHIP_TEMP_HIGH_THRESHOLD++;
+       
+       char high_value[8] = {0};
+       sprintf(high_value, "%d", s_CHIP_TEMP_HIGH_THRESHOLD);
+       lv_label_set_text(s_high_label, high_value);
+}
+
+static lv_obj_t * __create(lv_obj_t * activity_obj)
+{
+    if(NULL == activity_obj)
+       {
+        lv_watch_activity_ext_t activity_ext;
+        memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+        activity_ext.actId = ACT_ID_ANYOBJ;
+        activity_ext.create = __create;
+        activity_ext.prepare_destory = __prepare_destory;
+        activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+        LV_ASSERT_MEM(activity_obj);
+        if(NULL == activity_obj) {
+            return NULL;
+        }
+    }
+
+    lv_obj_t * obj = lv_watch_obj_create(activity_obj);
+    LV_ASSERT_MEM(obj);
+    if(NULL == obj) {
+        return NULL;
+    }
+
+    lv_obj_t * content = lv_cont_create(obj, NULL);
+       lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj));
+    lv_obj_add_style(content, LV_CONT_PART_MAIN, &lv_watch_style_transp);
+       lv_obj_align(content, NULL, LV_ALIGN_CENTER, 0, 0);
+
+       // low
+    lv_obj_t * low_label = lv_label_create(content, NULL);
+    lv_obj_add_style(low_label, LV_LABEL_PART_MAIN,  &lv_watch_font26_gray);
+       char low_value[8] = {0};
+       sprintf(low_value, "%d", s_CHIP_TEMP_LOW_THRESHOLD);
+       lv_label_set_text(low_label, low_value);
+    lv_label_set_align(low_label, LV_LABEL_ALIGN_CENTER);
+    lv_obj_align(low_label, NULL, LV_ALIGN_IN_TOP_MID, 0, 40);
+       s_low_label = low_label;
+
+    lv_obj_t * low_btn_decrease = lv_imgbtn_create(content, NULL);
+    lv_imgbtn_set_src(low_btn_decrease, LV_BTN_STATE_RELEASED, ICON_DECREASE);
+    lv_imgbtn_set_src(low_btn_decrease, LV_BTN_STATE_PRESSED, ICON_DECREASE);
+       lv_obj_align(low_btn_decrease, NULL, LV_ALIGN_IN_TOP_LEFT, 20, 30);
+    lv_obj_set_event_cb(low_btn_decrease, __low_decrease_btn_action);
+
+    lv_obj_t * low_btn_increase = lv_imgbtn_create(content, NULL);
+    lv_imgbtn_set_src(low_btn_increase, LV_BTN_STATE_RELEASED, ICON_INCREASE);
+    lv_imgbtn_set_src(low_btn_increase, LV_BTN_STATE_PRESSED, ICON_INCREASE);
+       lv_obj_align(low_btn_increase, NULL, LV_ALIGN_IN_TOP_RIGHT, -20, 30);
+    lv_obj_set_event_cb(low_btn_increase, __low_increase_btn_action);  
+
+       // high
+    lv_obj_t * high_label = lv_label_create(content, NULL);
+    lv_obj_add_style(high_label, LV_LABEL_PART_MAIN,  &lv_watch_font26_gray);
+       char high_value[8] = {0};
+       sprintf(high_value, "%d", s_CHIP_TEMP_HIGH_THRESHOLD);
+       lv_label_set_text(high_label, high_value);
+    lv_label_set_align(high_label, LV_LABEL_ALIGN_CENTER);
+    lv_obj_align(high_label, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -40);
+       s_high_label = high_label;
+
+    lv_obj_t * high_btn_decrease = lv_imgbtn_create(content, NULL);
+    lv_imgbtn_set_src(high_btn_decrease, LV_BTN_STATE_RELEASED, ICON_DECREASE);
+    lv_imgbtn_set_src(high_btn_decrease, LV_BTN_STATE_PRESSED, ICON_DECREASE);
+       lv_obj_align(high_btn_decrease, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 20, -30);
+    lv_obj_set_event_cb(high_btn_decrease, __high_decrease_btn_action);
+
+    lv_obj_t * high_btn_increase = lv_imgbtn_create(content, NULL);
+    lv_imgbtn_set_src(high_btn_increase, LV_BTN_STATE_RELEASED, ICON_INCREASE);
+    lv_imgbtn_set_src(high_btn_increase, LV_BTN_STATE_PRESSED, ICON_INCREASE);
+       lv_obj_align(high_btn_increase, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -30);
+    lv_obj_set_event_cb(high_btn_increase, __high_increase_btn_action);        
+
+    return obj;
+}
+
+void __create_event_cb(lv_obj_t * btn, lv_event_t event)
+{
+    if(LV_EVENT_CLICKED == event)
+       {
+        lv_watch_png_cache_all_free();
+
+        lv_obj_t * obj = __create(NULL);
+        LV_ASSERT_MEM(obj);
+        if(obj == NULL) return;
+    }
+}
+#endif
+
+#if 0
+static lv_task_t * s_chip_high_temp_clean_task = NULL;
+static bool s_is_ACT_ID_CHIP_TEMP_HIGH = false;
+
+bool mmi_is_ACT_ID_CHIP_TEMP_HIGH(void)
+{
+       return s_is_ACT_ID_CHIP_TEMP_HIGH;
+}
+
+static void mmi_set_ACT_ID_CHIP_TEMP_HIGH(bool value)
+{
+       s_is_ACT_ID_CHIP_TEMP_HIGH = value;
+}
+
+void mmi_chip_high_temp_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+       if(LV_EVENT_CLICKED != e)
+               return;
+       
+       mmi_watch_power_off();
+}
+
+static void mmi_chip_high_temp_screen_prepare_destory(lv_obj_t * activity_obj)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+    lv_watch_png_cache_all_free();
+
+       mmi_set_ACT_ID_CHIP_TEMP_HIGH(false);
+}
+
+static void mmi_chip_high_temp_task_clean(void)
+{
+       if(NULL != s_chip_high_temp_clean_task)
+       {
+               lv_task_del(s_chip_high_temp_clean_task);
+               s_chip_high_temp_clean_task = NULL;
+       }
+}
+
+static void mmi_chip_high_temp_clean_task_cb(lv_task_t * task)
+{
+       lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_CHIP_TEMP_HIGH);
+       if(NULL == activity_obj)
+       {
+               SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+               mmi_chip_high_temp_task_clean();
+       }
+       else
+       {
+               int chip_temp = asl_chip_temperature_get();
+               SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chip_temp=%d\n", __FUNCTION__, __LINE__, chip_temp);
+
+       #ifdef __DEBUG_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+               char info_buf[64] = {0};
+               sprintf(info_buf, "chip_temp=%d", chip_temp);
+               mmi_debug_info_write_to_file(info_buf);
+       #endif
+               
+               if(MMI_CHIP_TEMP_LOW_THRESHOLD >= chip_temp)
+               {
+                       mmi_chip_high_temp_screen_prepare_destory(NULL);
+                       lv_obj_del(activity_obj);
+                       mmi_chip_high_temp_task_clean();
+               }
+       }
+}
+
+static void mmi_watch_chip_temperature_clean(void)
+{
+       mmi_chip_high_temp_task_clean();
+       s_chip_high_temp_clean_task = lv_task_create(mmi_chip_high_temp_clean_task_cb, 1000 * 5, LV_TASK_PRIO_HIGH, NULL);
+}
+
+static lv_obj_t * mmi_chip_high_temp_screen_create(lv_obj_t * activity_obj)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       if(NULL == activity_obj) 
+       {
+               lv_watch_activity_ext_t activity_ext;
+               memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+               activity_ext.actId = ACT_ID_CHIP_TEMP_HIGH;
+               activity_ext.create = mmi_chip_high_temp_screen_create;
+               activity_ext.prepare_destory = mmi_chip_high_temp_screen_prepare_destory;
+               activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+               LV_ASSERT_MEM(activity_obj);
+               if(activity_obj == NULL) 
+               {
+                       return(NULL);
+               }
+       }
+
+       lv_obj_t * obj = lv_watch_obj_create(activity_obj);
+       LV_ASSERT_MEM(obj);
+       if(obj == NULL) 
+               return NULL;
+       
+       mmi_set_ACT_ID_CHIP_TEMP_HIGH(true);
+       mmi_watch_chip_temperature_clean();
+       
+    lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_NO);
+
+       lv_obj_t * cont = lv_cont_create(obj, NULL);
+       lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+       //lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+       //lv_obj_set_style_local_radius(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 30);
+       lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED);
+       //lv_obj_set_style_local_radius(prompt_cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 15);
+       lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 0, 0);
+       lv_obj_set_click(cont, false);
+
+       // image
+       lv_obj_t * img = lv_img_create(cont, NULL);
+       lv_img_set_src(img, ICON_WARNNING_PROMPT);
+#ifdef USE_LV_WATCH_UI_CIRCLE
+       #ifdef USE_LV_WATCH_UI_240_240
+       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 15);
+       #else
+    lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 15);
+       #endif
+#else
+       #if USE_LV_WATCH_UI_240_280
+       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
+       #else
+    lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
+       #endif
+#endif
+       
+       // text
+       lv_obj_t * label_prompt = lv_label_create(cont, NULL);
+       lv_obj_add_style(label_prompt, LV_OBJ_PART_MAIN, &lv_watch_font26);
+       lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CHIP_HIGH_TEMPERATURE);
+       lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+       lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, 0);
+
+       // button
+       lv_obj_t * btn = lv_btn_create(cont, NULL);
+       lv_obj_set_size(btn, 100, 56);
+       lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x47, 0xA6, 0xFF));
+       lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
+       lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0x47, 0xA6, 0xFF));
+       lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
+#ifdef USE_LV_WATCH_UI_CIRCLE
+       #ifdef USE_LV_WATCH_UI_240_240
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -15);
+       #else
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -15);
+       #endif
+#else
+       #if USE_LV_WATCH_UI_240_280
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
+       #else
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
+       #endif
+#endif
+       lv_obj_set_event_cb(btn, mmi_chip_high_temp_btn_event_cb);
+
+       lv_obj_t * label_btn = lv_label_create(btn, NULL);
+       lv_obj_add_style(label_btn, LV_LABEL_PART_MAIN, &lv_watch_font26);
+       lv_label_set_text_id(label_btn, WATCH_TEXT_ID_SHUTDOWN);
+       lv_label_set_align(label_btn, LV_LABEL_ALIGN_CENTER);
+       lv_obj_align(label_btn, NULL, LV_ALIGN_CENTER, 0, 0);
+
+       return obj;
+}
+
+static void mmi_chip_temp_high_task_cb(lv_task_t * task)
 {
-       if(0 == flag) // in call
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       if(MMI_MODEM_CALL_STATE_NULL != phone_get_call_state())
        {
-               mmi_call_chip_high_temperature_prompt();
+               ring_off_action(NULL, LV_EVENT_CLICKED);
        }
 #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
-       else if(1 == flag) // in video call
+       else if(true == voip_connect_check_req())
        {
-               mmi_vc_chip_high_temperature_prompt();
+               mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED);
        }
 #endif
+
+       lv_watch_go_home();
+       Hal_Vibrator_Play_Onetime(NULL, 800);
+       
+       mmi_chip_high_temp_screen_create(NULL);
 }
 
+void mmi_watch_chip_temperature_check(void)
+{
+       int chip_temp = asl_chip_temperature_get();
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chip_temp=%d\n", __FUNCTION__, __LINE__, chip_temp);
+
+#ifdef __DEBUG_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+       char info_buf[64] = {0};
+       sprintf(info_buf, "chip_temp=%d", chip_temp);
+       mmi_debug_info_write_to_file(info_buf);
+#endif
+
+       if(120 < chip_temp)
+       {
+               SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chip temp unreasonable\n", __FUNCTION__, __LINE__);
+       }
+       else if(MMI_CHIP_TEMP_HIGH_THRESHOLD <= chip_temp)
+       {
+               if(false == mmi_is_ACT_ID_CHIP_TEMP_HIGH())
+               {
+                       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               
+                       mmi_watch_wake_up();
+                       lv_task_t * task_ptr = lv_task_create(mmi_chip_temp_high_task_cb, 50, LV_TASK_PRIO_HIGH, NULL);
+                       lv_task_once(task_ptr);
+               }
+       }
+       else if(MMI_CHIP_TEMP_LOW_THRESHOLD >= chip_temp)
+       {
+               if(true == mmi_is_ACT_ID_CHIP_TEMP_HIGH())
+               {
+                       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                       
+                       mmi_set_ACT_ID_CHIP_TEMP_HIGH(false);
+               }
+       }
+}
+
+#else
+
+bool mmi_is_ACT_ID_CHIP_TEMP_HIGH(void)
+{
+       return false;
+}
+
+static void mmi_chip_high_temp_screen_prepare_destory(lv_obj_t * activity_obj)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+    lv_watch_png_cache_all_free();
+}
+
+void mmi_chip_high_temp_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+       if(LV_EVENT_CLICKED != e)
+               return;
+       
+       mmi_chip_high_temp_screen_prepare_destory(NULL);
+       lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_CHIP_TEMP_HIGH);
+       if(NULL != activity_obj)
+       {
+               lv_obj_del(activity_obj);
+       }
+}
+
+static lv_obj_t * mmi_chip_high_temp_screen_create(lv_obj_t * activity_obj)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       if(NULL == activity_obj) 
+       {
+               lv_watch_activity_ext_t activity_ext;
+               memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+               activity_ext.actId = ACT_ID_CHIP_TEMP_HIGH;
+               activity_ext.create = mmi_chip_high_temp_screen_create;
+               activity_ext.prepare_destory = mmi_chip_high_temp_screen_prepare_destory;
+               activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+               LV_ASSERT_MEM(activity_obj);
+               if(activity_obj == NULL) 
+               {
+                       return(NULL);
+               }
+       }
+
+       lv_obj_t * obj = lv_watch_obj_create(activity_obj);
+       LV_ASSERT_MEM(obj);
+       if(obj == NULL) 
+               return NULL;
+       
+    //lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_NO);
+
+       lv_obj_t * cont = lv_cont_create(obj, NULL);
+       lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+       //lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+       //lv_obj_set_style_local_radius(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 30);
+       lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED);
+       //lv_obj_set_style_local_radius(prompt_cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 15);
+       lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 0, 0);
+       lv_obj_set_click(cont, false);
+
+       // image
+       lv_obj_t * img = lv_img_create(cont, NULL);
+       lv_img_set_src(img, ICON_WARNNING_PROMPT);
+#ifdef USE_LV_WATCH_UI_CIRCLE
+       #ifdef USE_LV_WATCH_UI_240_240
+       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 15);
+       #else
+    lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 15);
+       #endif
+#else
+       #if USE_LV_WATCH_UI_240_280
+       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
+       #else
+    lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
+       #endif
+#endif
+       
+       // text
+       lv_obj_t * label_prompt = lv_label_create(cont, NULL);
+       lv_obj_add_style(label_prompt, LV_OBJ_PART_MAIN, &lv_watch_font26);
+       lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CHIP_HIGH_TEMPERATURE);
+       lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+       lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, 0);
+
+       // button
+       lv_obj_t * btn = lv_btn_create(cont, NULL);
+       lv_obj_set_size(btn, 100, 56);
+       lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x47, 0xA6, 0xFF));
+       lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
+       lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0x47, 0xA6, 0xFF));
+       lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
+#ifdef USE_LV_WATCH_UI_CIRCLE
+       #ifdef USE_LV_WATCH_UI_240_240
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -15);
+       #else
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -15);
+       #endif
+#else
+       #if USE_LV_WATCH_UI_240_280
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
+       #else
+       lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
+       #endif
+#endif
+       lv_obj_set_event_cb(btn, mmi_chip_high_temp_btn_event_cb);
+
+       lv_obj_t * label_btn = lv_label_create(btn, NULL);
+       lv_obj_add_style(label_btn, LV_LABEL_PART_MAIN, &lv_watch_font26);
+       lv_label_set_text_id(label_btn, WATCH_TEXT_ID_OK);
+       lv_label_set_align(label_btn, LV_LABEL_ALIGN_CENTER);
+       lv_obj_align(label_btn, NULL, LV_ALIGN_CENTER, 0, 0);
+
+       return obj;
+}
+
+static void mmi_call_chip_temp_high_task_cb(lv_task_t * task)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       if(MMI_MODEM_CALL_STATE_NULL != phone_get_call_state())
+       {
+               ring_off_action(NULL, LV_EVENT_CLICKED);
+       }
+
+       lv_watch_go_home();
+       Hal_Vibrator_Play_Onetime(NULL, 800);
+       
+       mmi_chip_high_temp_screen_create(NULL);
+}
+
+#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
+static void mmi_vc_chip_temp_high_task_cb(lv_task_t * task)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       if(true == voip_connect_check_req())
+       {
+               mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED);
+       }
+
+       lv_watch_go_home();
+       Hal_Vibrator_Play_Onetime(NULL, 800);
+       
+       mmi_chip_high_temp_screen_create(NULL);
+}
+#endif
+
 void mmi_watch_chip_temperature_check(void)
 {
        if(MMI_MODEM_CALL_STATE_NULL != phone_get_call_state())
@@ -1499,9 +2017,11 @@ void mmi_watch_chip_temperature_check(void)
                int chip_temp = asl_chip_temperature_get();
                SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chip_temp=%d\n", __FUNCTION__, __LINE__, chip_temp);
 
-               if(MMI_CHIP_TEMPERATURE_THRESHOLD <= chip_temp)
+               if(MMI_CHIP_TEMP_HIGH_THRESHOLD <= chip_temp)
                {
-                       mmi_ui_msg_action_chip_high_temperature(0);
+                       mmi_watch_wake_up();
+                       lv_task_t * task_ptr = lv_task_create(mmi_call_chip_temp_high_task_cb, 50, LV_TASK_PRIO_HIGH, NULL);
+                       lv_task_once(task_ptr);
                }
        }
 #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
@@ -1510,13 +2030,18 @@ void mmi_watch_chip_temperature_check(void)
                int chip_temp = asl_chip_temperature_get();
                SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chip_temp=%d\n", __FUNCTION__, __LINE__, chip_temp);
 
-               if(MMI_CHIP_TEMPERATURE_THRESHOLD <= chip_temp)
+               if(MMI_CHIP_TEMP_HIGH_THRESHOLD <= chip_temp)
                {
-                       mmi_ui_msg_action_chip_high_temperature(1);
+                       mmi_watch_wake_up();
+                       lv_task_t * task_ptr = lv_task_create(mmi_vc_chip_temp_high_task_cb, 50, LV_TASK_PRIO_HIGH, NULL);
+                       lv_task_once(task_ptr);
                }
        }
 #endif
 }
+#endif
+
+#endif
 
 
 
index 271c06d..15da5cd 100644 (file)
@@ -109,9 +109,22 @@ void mmi_watch_sim_unbind_switch_set(uint8_t value);
 void mmi_watch_sim_unbind_check(void);
 #endif
 
-#define MMI_CHIP_TEMPERATURE_THRESHOLD (65) // (90) // (40)
-void mmi_ui_msg_update_chip_high_temperature(uint32_t flag);
+#ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+
+//#define __DEBUG_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+#ifdef __DEBUG_CHIP_TEMPERATURE_MONITOR_SUPPORT__
+#define MMI_CHIP_TEMP_HIGH_THRESHOLD (s_CHIP_TEMP_HIGH_THRESHOLD)
+#define MMI_CHIP_TEMP_LOW_THRESHOLD    (s_CHIP_TEMP_LOW_THRESHOLD)
+
+void __create_event_cb(lv_obj_t * btn, lv_event_t event);
+#else
+#define MMI_CHIP_TEMP_HIGH_THRESHOLD (40) // (65) // (90)
+#define MMI_CHIP_TEMP_LOW_THRESHOLD    (35) // (55) // (30)
+#endif
+
+bool mmi_is_ACT_ID_CHIP_TEMP_HIGH(void);
 void mmi_watch_chip_temperature_check(void);
+#endif