恒爱血压测试前,检查算法是否已激活,若未激活,则不进入测量;
author@CHENG <2393524978@qq.com>
Wed, 12 Mar 2025 09:45:08 +0000 (17:45 +0800)
committer@CHENG <2393524978@qq.com>
Wed, 12 Mar 2025 09:45:08 +0000 (17:45 +0800)
恒爱血压测试前,开启心率测试来检测佩戴状态,若未佩戴,则不进入测量;
跌倒显示界面适配466_466分辨率;
插拔充电器提示界面优化

2.sdk/sdk/gui/lv_watch/app_adaptor/app_adaptor_sensor_interface.c
2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c
2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c
2.sdk/sdk/gui/lv_watch/include/ui_textid.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.h
2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c

index 34afdce..ccdfd30 100644 (file)
@@ -91,7 +91,7 @@ void asl_pedometer_steps_save(bool to_nv)
     Hal_Rtc_Gettime(&date);
        memcpy(&(s_pedometer_data.date), &date, sizeof(hal_rtc_t));
 
-       printf("[@CHENG_DEBUG][%s][%d]: %d,%d,%d\n", __FUNCTION__, __LINE__, s_pedometer_data.step, steps, s_sensor_last_steps);
+       //printf("[@CHENG_DEBUG][%s][%d]: %d,%d,%d\n", __FUNCTION__, __LINE__, s_pedometer_data.step, steps, s_sensor_last_steps);
        
        s_pedometer_data.step += steps - s_sensor_last_steps;
        s_sensor_last_steps = steps;
index d2a5c82..f12aadd 100644 (file)
@@ -1009,6 +1009,7 @@ const void * lang_text_ch[] = {
     "体验时间", // WATCH_TEXT_ID_EXPERIENCE_TIME,
     "终止", // WATCH_TEXT_ID_EXPERIENCE_STOP,
     "确定终止体验?", // WATCH_TEXT_ID_EXPERIENCE_STOP_Q,
+    "算法初始化,请稍后", // WATCH_TEXT_ID_BLOOD_PRESSURE_INIT,
 
     //CHENG_MODIFY
     "确认是否跌倒?", // WATCH_TEXT_ID_falldown,
index ef8df9b..35bc04b 100644 (file)
@@ -1010,6 +1010,7 @@ const void * lang_text_en[] = {
     "Time", // WATCH_TEXT_ID_EXPERIENCE_TIME,
     "Stop", // WATCH_TEXT_ID_EXPERIENCE_STOP,
     "Stop the experience?", // WATCH_TEXT_ID_EXPERIENCE_STOP_Q,
+    "Init, try again later", // WATCH_TEXT_ID_BLOOD_PRESSURE_INIT,
 
     //CHENG_MODIFY
     "Confirm a fall",
index 2dcbb0a..67a306b 100644 (file)
@@ -1017,6 +1017,7 @@ enum
     WATCH_TEXT_ID_EXPERIENCE_TIME,                      /* "体验时间"                     "Time" */
     WATCH_TEXT_ID_EXPERIENCE_STOP,                      /* "终止"                     "Stop" */
     WATCH_TEXT_ID_EXPERIENCE_STOP_Q,                    /* "确定终止体验?"                     "Stop the experience?" */
+    WATCH_TEXT_ID_BLOOD_PRESSURE_INIT,                  /* "算法初始化,请稍后"                "Init, try again later" */
 
     //CHENG_MODIFY
     WATCH_TEXT_ID_FALLDWON,                            /*确认是否跌倒*/
index e2d4fdc..532494b 100644 (file)
@@ -505,6 +505,17 @@ static lv_obj_t * mmi_hengai_bp_measure_line_create(lv_obj_t * par)
 #endif
 
 
+static bool mmi_hengai_bp_measure_check_algorithm(void)
+{
+       if(0 == mmi_hengai_health_lib_activated_flag_get())
+       {
+               mmi_hengai_tcp_algorithm_login_msg_send();
+               return false;
+       }
+       
+       return true;
+}
+
 bool mmi_hengai_bp_measuring_flag_get(void)
 {
        return (s_hengai_bp_measuring);
@@ -1061,6 +1072,87 @@ void mmi_hengai_bp_measure_cycle_timeout(void * para)
        
        s_hengai_bp_measure_count++;
 
+#ifdef USE_HEART_RATE_MEASURE_TO_CHECK_WEAR_STATUS
+       if(MMI_HR_MEASURE_CHECK_COUNT > s_hengai_bp_measure_count)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               if(false == mmi_health_measure_wear_state_get())
+               {
+                       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                       
+                       mmi_hsensor_close();
+                       mmi_hengai_bp_measuring_flag_set(false);
+                       
+                       lv_heng_ai_bp_measure_ext_t * watch_ext = (lv_heng_ai_bp_measure_ext_t *)mmi_heng_ai_bp_measure_screen_ext_get();
+                       if(NULL == watch_ext)
+                               return;
+
+                       if(NULL != watch_ext->measure_timer_id)
+                       {
+                               Hal_Timer_Stop(watch_ext->measure_timer_id);
+                               watch_ext->measure_timer_id = NULL;
+                       }
+
+                       lv_obj_clean(watch_ext->cont);
+                       
+                       lv_obj_t * img = lv_img_create(watch_ext->cont, NULL);
+                       lv_img_set_src(img, ICON_HENGAI_BP_ALERT);
+                       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 90);
+                       
+                       lv_obj_t * label = lv_label_create(watch_ext->cont, NULL);
+                       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font36);
+                       lv_label_set_text_id(label, WATCH_TEXT_ID_DEVICE_NOT_WEAR);
+                       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+                       lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 278);
+                       lv_obj_set_click(label, false);                 
+               }
+               
+               return ;
+       }
+       else if(MMI_HR_MEASURE_CHECK_COUNT == s_hengai_bp_measure_count)
+       {
+               mmi_hsensor_close();
+               
+               lv_heng_ai_bp_measure_ext_t * watch_ext = (lv_heng_ai_bp_measure_ext_t *)mmi_heng_ai_bp_measure_screen_ext_get();
+               if(NULL == watch_ext)
+                       return;
+
+               if(false == mmi_health_measure_wear_state_get())
+               {
+                       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                       mmi_hengai_bp_measuring_flag_set(false);
+
+                       if(NULL != watch_ext->measure_timer_id)
+                       {
+                               Hal_Timer_Stop(watch_ext->measure_timer_id);
+                               watch_ext->measure_timer_id = NULL;
+                       }
+
+                       lv_obj_clean(watch_ext->cont);
+                       
+                       lv_obj_t * img = lv_img_create(watch_ext->cont, NULL);
+                       lv_img_set_src(img, ICON_HENGAI_BP_ALERT);
+                       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 90);
+                       
+                       lv_obj_t * label = lv_label_create(watch_ext->cont, NULL);
+                       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font36);
+                       lv_label_set_text_id(label, WATCH_TEXT_ID_DEVICE_NOT_WEAR);
+                       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+                       lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 278);
+                       lv_obj_set_click(label, false);                 
+               }
+               else
+               {
+                       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                       mmi_hsensor_blood_open();
+                       mmi_hengai_bp_measure_action_time_string_set(1);
+               }
+       
+               return;
+       }
+#endif
+
+
        if(MMI_BP_MEASURE_TOTAL_COUNT < s_hengai_bp_measure_count) // stop action
        {
                mmi_hengai_bp_measure_finish_screen();
@@ -1133,9 +1225,47 @@ void mmi_hengai_bp_measure_start_btn_event_cb(lv_obj_t * obj, lv_event_t e)
                lv_obj_align(label_1, NULL, LV_ALIGN_IN_TOP_MID, 0, 278);
                lv_obj_set_click(label_1, false);
        }
+       else if(false == mmi_hengai_bp_measure_check_algorithm())
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               lv_obj_t * img = lv_img_create(cont, NULL);
+               lv_img_set_src(img, ICON_HENGAI_BP_ALERT);
+               lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 90);
+               
+               lv_obj_t * label_1 = lv_label_create(cont, NULL);
+               lv_obj_add_style(label_1, LV_LABEL_PART_MAIN, &lv_watch_font36);
+               lv_label_set_text_id(label_1, WATCH_TEXT_ID_BLOOD_PRESSURE_INIT);
+               lv_label_set_align(label_1, LV_LABEL_ALIGN_CENTER);
+               lv_obj_align(label_1, NULL, LV_ALIGN_IN_TOP_MID, 0, 278);
+               lv_obj_set_click(label_1, false);
+       }
        else
        {
                HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       #ifdef USE_HEART_RATE_MEASURE_TO_CHECK_WEAR_STATUS
+               mmi_health_measure_factory_mode_clean();
+               mmi_hsensor_heart_open();
+               mmi_hengai_bp_measuring_flag_set(true);
+               s_hengai_bp_measure_count = 0;
+
+               #ifdef __BP_MEASURING_REAL_TIME_UI__ 
+               mmi_hengai_bp_measure_ui_data_init();
+
+               lv_obj_t * line = mmi_hengai_bp_measure_line_create(cont);
+               watch_ext->line = line;
+
+               lv_obj_t * label_prompt = lv_label_create(cont, NULL);
+               lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font36);
+               lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+               lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_IN_MEASURE_PROMPT);
+               lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -10);
+               lv_obj_set_click(label_prompt, false);
+               watch_ext->label_prompt = label_prompt;
+               #endif
+
+       #else
+       
                mmi_health_measure_factory_mode_clean();
                mmi_hsensor_blood_open();
                mmi_hengai_bp_measure_action_time_string_set(1);
@@ -1196,6 +1326,7 @@ void mmi_hengai_bp_measure_start_btn_event_cb(lv_obj_t * obj, lv_event_t e)
                lv_label_set_text_id(label, WATCH_TEXT_ID_IN_MEASURE_PROMPT);
                lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 324 + 30);
                lv_obj_set_click(label, false);
+       #endif
        #endif
 
                /* start timer (1 min) */
@@ -1963,6 +2094,87 @@ void mmi_hengai_bp_calibrate_cycle_timeout(void * para)
 #endif
        
        s_hengai_bp_measure_count++;
+
+#ifdef USE_HEART_RATE_MEASURE_TO_CHECK_WEAR_STATUS
+       if(MMI_HR_MEASURE_CHECK_COUNT > s_hengai_bp_measure_count)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               if(false == mmi_health_measure_wear_state_get())
+               {
+                       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                       
+                       mmi_hsensor_close();
+                       mmi_hengai_bp_measuring_flag_set(false);
+                       
+                       lv_heng_ai_bp_calibrate_ext_t * watch_ext = (lv_heng_ai_bp_calibrate_ext_t *)mmi_heng_ai_bp_calibrate_screen_ext_get();
+                       if(NULL == watch_ext)
+                               return;
+
+                       if(NULL != watch_ext->measure_timer_id)
+                       {
+                               Hal_Timer_Stop(watch_ext->measure_timer_id);
+                               watch_ext->measure_timer_id = NULL;
+                       }
+
+                       lv_obj_clean(watch_ext->cont);
+                       
+                       lv_obj_t * img = lv_img_create(watch_ext->cont, NULL);
+                       lv_img_set_src(img, ICON_HENGAI_BP_ALERT);
+                       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 90);
+                       
+                       lv_obj_t * label = lv_label_create(watch_ext->cont, NULL);
+                       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font36);
+                       lv_label_set_text_id(label, WATCH_TEXT_ID_DEVICE_NOT_WEAR);
+                       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+                       lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 278);
+                       lv_obj_set_click(label, false);                 
+               }
+               
+               return ;
+       }
+       else if(MMI_HR_MEASURE_CHECK_COUNT == s_hengai_bp_measure_count)
+       {
+               mmi_hsensor_close();
+               
+               lv_heng_ai_bp_calibrate_ext_t * watch_ext = (lv_heng_ai_bp_calibrate_ext_t *)mmi_heng_ai_bp_calibrate_screen_ext_get();
+               if(NULL == watch_ext)
+                       return;
+
+               if(false == mmi_health_measure_wear_state_get())
+               {
+                       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                       mmi_hengai_bp_measuring_flag_set(false);
+
+                       if(NULL != watch_ext->measure_timer_id)
+                       {
+                               Hal_Timer_Stop(watch_ext->measure_timer_id);
+                               watch_ext->measure_timer_id = NULL;
+                       }
+
+                       lv_obj_clean(watch_ext->cont);
+                       
+                       lv_obj_t * img = lv_img_create(watch_ext->cont, NULL);
+                       lv_img_set_src(img, ICON_HENGAI_BP_ALERT);
+                       lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 90);
+                       
+                       lv_obj_t * label = lv_label_create(watch_ext->cont, NULL);
+                       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font36);
+                       lv_label_set_text_id(label, WATCH_TEXT_ID_DEVICE_NOT_WEAR);
+                       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+                       lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 278);
+                       lv_obj_set_click(label, false);                 
+               }
+               else
+               {
+                       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                       mmi_hsensor_blood_open();
+                       mmi_hengai_bp_measure_action_time_string_set(1);
+               }
+       
+               return;
+       }
+#endif
+       
                
        if(MMI_BP_MEASURE_TOTAL_COUNT < s_hengai_bp_measure_count) // stop action
        {
@@ -2011,9 +2223,47 @@ void mmi_heng_ai_bp_calibrate_start_screen(void)
                lv_obj_align(label_1, NULL, LV_ALIGN_IN_TOP_MID, 0, 278);
                lv_obj_set_click(label_1, false);
        }
+       else if(false == mmi_hengai_bp_measure_check_algorithm())
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               lv_obj_t * img = lv_img_create(watch_ext->cont, NULL);
+               lv_img_set_src(img, ICON_HENGAI_BP_ALERT);
+               lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 90);
+               
+               lv_obj_t * label_1 = lv_label_create(watch_ext->cont, NULL);
+               lv_obj_add_style(label_1, LV_LABEL_PART_MAIN, &lv_watch_font36);
+               lv_label_set_text_id(label_1, WATCH_TEXT_ID_BLOOD_PRESSURE_INIT);
+               lv_label_set_align(label_1, LV_LABEL_ALIGN_CENTER);
+               lv_obj_align(label_1, NULL, LV_ALIGN_IN_TOP_MID, 0, 278);
+               lv_obj_set_click(label_1, false);
+       }
        else
        {
                HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       #ifdef USE_HEART_RATE_MEASURE_TO_CHECK_WEAR_STATUS
+               mmi_health_measure_factory_mode_clean();
+               mmi_hsensor_heart_open();
+               mmi_hengai_bp_measuring_flag_set(true);
+               s_hengai_bp_measure_count = 0;
+               
+               #ifdef __BP_MEASURING_REAL_TIME_UI__ 
+               mmi_hengai_bp_measure_ui_data_init();
+       
+               lv_obj_t * line = mmi_hengai_bp_measure_line_create(watch_ext->cont);
+               watch_ext->line = line;
+       
+               lv_obj_t * label_prompt = lv_label_create(watch_ext->cont, NULL);
+               lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font36);
+               lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+               lv_label_set_text_id(label_prompt, (label_prompt, (0 == s_hengai_bp_calibrate_times) ? WATCH_TEXT_ID_IN_CALIBRATE_PROMPT_FIRST : WATCH_TEXT_ID_IN_CALIBRATE_PROMPT_SECOND));
+               lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -10);
+               lv_obj_set_click(label_prompt, false);
+               watch_ext->label_prompt = label_prompt;
+               #endif
+               
+       #else
+               
                mmi_health_measure_factory_mode_clean();
                mmi_hsensor_blood_open();
                mmi_hengai_bp_measure_action_time_string_set(1);
@@ -2022,8 +2272,6 @@ void mmi_heng_ai_bp_calibrate_start_screen(void)
                
        #ifdef __BP_MEASURING_REAL_TIME_UI__ 
                mmi_hengai_bp_measure_ui_data_init();
-       
-               mmi_hengai_bp_measure_ui_data_init();
                
                lv_obj_t * line = mmi_hengai_bp_measure_line_create(watch_ext->cont);
                watch_ext->line = line;
@@ -2065,6 +2313,7 @@ void mmi_heng_ai_bp_calibrate_start_screen(void)
                lv_label_set_text_id(label, WATCH_TEXT_ID_NEED_ONE_MINUTE);
                lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 348);
                lv_obj_set_click(label, false);
+       #endif
        #endif
 
                /* start timer (1 min) */
index 54f0cd8..f19cade 100644 (file)
@@ -30,9 +30,20 @@ char * __hengai_data_send_end_time(void);
 #endif
 
 
+// Before measuring blood pressure,
+// measure heart rate a few seconds
+// to get wear status
+#define USE_HEART_RATE_MEASURE_TO_CHECK_WEAR_STATUS
+
+
 #define MMI_HENGAI_BP_TAB_COUNT (3)
 
+#ifdef USE_HEART_RATE_MEASURE_TO_CHECK_WEAR_STATUS
+#define MMI_HR_MEASURE_CHECK_COUNT (12)
+#define MMI_BP_MEASURE_TOTAL_COUNT (50 + MMI_HR_MEASURE_CHECK_COUNT) // times
+#else
 #define MMI_BP_MEASURE_TOTAL_COUNT     (50) // times
+#endif
 
 #define MMI_BP_WAIT_RESULT_TIMEOUT     (1000 * 15) // (1000 * 10) // ms
 
index a92871c..069a1b1 100644 (file)
@@ -108,6 +108,9 @@ static void mmi_sos_sms_send_action(char * number)
                printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
                return ;
        }
+
+       if(0 == mmi_sos_sms_switch_get())
+               return ;
        
        char * sms_number = (char *)lv_mem_alloc(NV_CONTACTS_MAX_NUMBER_LEN);
        _lv_memset_00(sms_number, NV_CONTACTS_MAX_NUMBER_LEN);
index 3af7269..b96f985 100644 (file)
@@ -470,28 +470,49 @@ lv_obj_t * mmi_watch_falldwon_create(lv_obj_t * activity_obj)
        //lv_obj_add_protect(cont, LV_PROTECT_PRESS_LOST);
 
        lv_obj_t * label = lv_label_create(cont, NULL);
-       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font20);
        lv_label_set_text_id(label, WATCH_TEXT_ID_FALLDWON); //lv_lang_get_text(WATCH_TEXT_ID_SERVER_SEARCH_PROMPT)
+#ifdef USE_LV_WATCH_UI_466_466
+       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font40);
+       lv_obj_align(label, cont, LV_ALIGN_CENTER, 0, -30);
+#else
+       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font20);  
        lv_obj_align(label, cont, LV_ALIGN_CENTER, 0, 0);
+#endif
 
        lv_obj_t * btn_cancel = lv_btn_create(cont, NULL);
+#ifdef USE_LV_WATCH_UI_466_466
+       lv_obj_set_size(btn_cancel, 140, 70);
+#else  
        lv_obj_set_size(btn_cancel, 100, 56);
+#endif
        lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x47, 0xA6, 0xFF));
        lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
        lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0x47, 0xA6, 0xFF));
        lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
+#ifdef USE_LV_WATCH_UI_466_466
+       lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 70, -60);
+#else
        lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10, -20);
+#endif
        lv_obj_set_event_cb(btn_cancel, mmi_falldwon_event_cb);
        lv_obj_t * label_cancel = lv_label_create(btn_cancel, NULL);
        lv_label_set_text_id(label_cancel, WATCH_TEXT_ID_CANCEL);
+#ifdef USE_LV_WATCH_UI_466_466
+       lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font40_black);
+#else
        lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font26_black);
+#endif
 
        lv_obj_t * btn_ok = lv_btn_create(cont, btn_cancel);
        lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xFF, 0x6F, 0x91));
        lv_obj_set_style_local_radius(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
        lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0xFF, 0x6F, 0x91));
        lv_obj_set_style_local_radius(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
+#ifdef USE_LV_WATCH_UI_466_466
+       lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -70, -60);
+#else  
        lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10, -20);
+#endif
        lv_obj_set_event_cb(btn_ok, mmi_falldwon_OK_event_cb);
        lv_obj_t * label_ok = lv_label_create(btn_ok, label_cancel);
        lv_label_set_text_id(label_ok, WATCH_TEXT_ID_OK);
@@ -517,6 +538,7 @@ void mmi_ui_msg_update_falldwon(void)
 {
        if(lv_watch_get_activity_obj(ACT_ID_WATCH_FALLDWON)==NULL)
        {       
+               lv_watch_go_home();
                mmi_watch_falldwon_create(NULL);
        }
 }
@@ -808,6 +830,11 @@ void mmi_watch_no_sim_power_off_check_mission(void)
 
 
 // charging
+#define MMI_CHARGING_LEVEL_1 (25)
+#define MMI_CHARGING_LEVEL_2 (50)
+#define MMI_CHARGING_LEVEL_3 (75)
+#define MMI_CHARGING_LEVEL_4 (100)
+
 static void * s_watch_charge_prompt_timer = NULL;
 
 static void mmi_watch_charging_prompt_timer_stop(void)
@@ -883,10 +910,61 @@ static lv_obj_t * mmi_watch_charging_prompt_screen_create(lv_obj_t * activity_ob
        lv_obj_set_click(cont, false);
        //lv_watch_obj_add_element(cont);
 
+#if 0
        lv_obj_t * img = lv_img_create(cont, NULL);
        lv_img_set_src(img, ((HAL_CHG_CONNECTED == (HAL_CHG_STATUS)chg_status) ? ICON_CHARGE_CONNECTED : ICON_CHARGE_REMOVED));
        lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES/10);
        lv_obj_set_click(img, false);
+#else
+       uint8_t bat = Hal_Battery_Get_Status();
+       //power_off_charging_check_full(&bat);
+
+       // image 0
+       lv_obj_t * img = lv_img_create(cont, NULL);
+       lv_img_set_src(img, ICON_POWER_OFF_CHARGING_0);
+       lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES/10);
+       lv_obj_set_click(img, false);
+       // image 1
+       if(MMI_CHARGING_LEVEL_1 < bat)
+       {
+               lv_obj_t * img_battery_1 = lv_img_create(cont, NULL);
+               lv_img_set_src(img_battery_1, ICON_POWER_OFF_CHARGING_1);
+               lv_obj_align(img_battery_1, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES/10);
+               lv_obj_set_click(img_battery_1, false);
+       }
+       // image 2
+       if(MMI_CHARGING_LEVEL_2 < bat)
+       {
+               lv_obj_t * img_battery_2 = lv_img_create(cont, NULL);
+               lv_img_set_src(img_battery_2, ICON_POWER_OFF_CHARGING_2);
+               lv_obj_align(img_battery_2, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES/10);
+               lv_obj_set_click(img_battery_2, false);
+       }
+       // image 3
+       if(MMI_CHARGING_LEVEL_3 < bat)
+       {
+               lv_obj_t * img_battery_3 = lv_img_create(cont, NULL);
+               lv_img_set_src(img_battery_3, ICON_POWER_OFF_CHARGING_3);
+               lv_obj_align(img_battery_3, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES/10);
+               lv_obj_set_click(img_battery_3, false);
+       }
+       // image 4
+       if(MMI_CHARGING_LEVEL_4 <= bat)
+       {
+               lv_obj_t * img_battery_4 = lv_img_create(cont, NULL);
+               lv_img_set_src(img_battery_4, ICON_POWER_OFF_CHARGING_4);
+               lv_obj_align(img_battery_4, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES/10);
+               lv_obj_set_click(img_battery_4, false);
+       }
+       // power image
+       if(HAL_CHG_CONNECTED == (HAL_CHG_STATUS)chg_status)
+       {
+               lv_obj_t * img_power = lv_img_create(cont, NULL);
+               lv_img_set_src(img_power, ICON_POWER_OFF_CHARGING_POWER);
+               lv_obj_align(img_power, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES/10);
+               lv_obj_set_click(img_power, false);
+       }
+#endif
        
        lv_obj_t * label = lv_label_create(cont, NULL);
        lv_label_set_text_id(label, ((HAL_CHG_CONNECTED == (HAL_CHG_STATUS)chg_status) ? WATCH_TEXT_ID_CHARGE_CONNECTED : WATCH_TEXT_ID_CHARGE_REMOVED));