gengxin
author@CHENG <2393524978@qq.com>
Wed, 19 Jun 2024 08:46:42 +0000 (16:46 +0800)
committer@CHENG <2393524978@qq.com>
Wed, 19 Jun 2024 08:46:42 +0000 (16:46 +0800)
2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.c
2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.h
2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial_element.c
2.sdk/sdk/gui/lv_watch/lv_apps/status_and_setting/status_and_setting.c
2.sdk/sdk/gui/lv_watch/lv_apps/status_and_setting/status_and_setting.h

index c826b5a..ddb3cdb 100644 (file)
@@ -106,6 +106,21 @@ static void dial_update_display(lv_obj_t * clock_cont)
 #endif
 
     }
+       else
+       {
+       #ifdef __MMI_DIAL_WITH_SIGNAL_SUPPORT__
+               if(0 == (clock_ext->sec % 10))
+               {
+                       dial_clean_canvas(false);
+                       uint8_t i = 0;
+                       for(i = ELEMENT_TYPE_MAX - 2; i > ELEMENT_TYPE_INVILID; i--)
+                       {
+                               dial_update_element(watch_dial, i);
+                       }
+               }
+       #endif
+       }
+
 #if DIAL_USE_CANVAS == 0
     dial_update_element(watch_dial, ELEMENT_TYPE_TIME_HAND);
     dial_update_element(watch_dial, ELEMENT_TYPE_TIME_DIGIT);//update every 1 sec
index 2771ad7..926cef7 100644 (file)
@@ -147,6 +147,7 @@ enum {
     IMG_TYPE_BATTERY_UNIT,          //103
     IMG_TYPE_BATTERY_PERCENT,       //104
     IMG_TYPE_BATTERY_SIGN,          //105
+       IMG_TYPE_BATTERY_CHARGE,                //106
 
     IMG_TYPE_SLEEP_QUALITY = ELEMENT_TYPE_SLEEP_QUALITY * 10,//110
     IMG_TYPE_SLEEP_QUALITY_VALUE,//111
@@ -172,6 +173,8 @@ enum {
 
        IMG_TYPE_USER_PNG = ELEMENT_TYPE_USER * 10, // display a static image
 
+       IMG_TYPE_SIGNAL = ELEMENT_TYPE_SIGNAL *10,
+       
     IMG_TYPE_BG = ELEMENT_TYPE_BG_SWITCH * 10, //150
 };
 typedef uint8_t watch_img_type_t;
@@ -207,6 +210,8 @@ enum {
     LABEL_TYPE_LUNAR ,       //27
        LABEL_TYPE_SIGNAL_NUMBER_PERCENT, // 28
        LABEL_TYPE_BATTERY_NUMBER_PERCENT, // 29
+       LABEL_TYPE_SIGNAL,                              // 30
+       LABEL_TYPE_SIGNAL_REGISTER_STATE, // 31
 
 };
 typedef uint8_t watch_label_type_t;
index d0562de..ccb4765 100644 (file)
@@ -512,6 +512,8 @@ static void dial_update_canvas_label(watch_element_base_t * base)
        nv_watch_health_info_t health_info = {0};
     lv_point_t pos;
 
+       _lv_memset_00(infotxt, len);
+       
     if(ELEMENT_TYPE_WEEK == base->element_type || ELEMENT_TYPE_DATE == base->element_type
             || ELEMENT_TYPE_TIME_DIGIT == base->element_type || ELEMENT_TYPE_AM_PM == base->element_type) {
         Hal_Rtc_Gettime(&tm);
@@ -668,6 +670,68 @@ static void dial_update_canvas_label(watch_element_base_t * base)
                 snprintf(infotxt, len, "%d%%", Hal_Battery_Get_Status());
                 dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y);
                                break;
+
+                       case LABEL_TYPE_SIGNAL:
+                               #ifdef __MMI_DIAL_WITH_SIGNAL_SUPPORT__
+                               if(true == watch_modem_sim_present_check_req())
+                               {
+                                       MMI_MODEM_PLMN_RAT rat;
+                                       watch_modem_get_operator_req(&rat);
+                               
+                                       /* 2G/4G icon */
+                                       if(MMI_MODEM_PLMN_RAT_LTE == rat)
+                                       {
+                                       #if defined(MMI_PROJECT_Z5_DS_Z12_COMMON) || defined(MMI_PROJECT_Z5_DS_Z11_COMMON)
+                                               sprintf(infotxt, "5G");
+                                       #else
+                                               sprintf(infotxt, "4G");
+                                       #endif
+                                       }
+                                       else if(MMI_MODEM_PLMN_RAT_UMTS == rat)
+                                               sprintf(infotxt, "3G");
+                                       else if(MMI_MODEM_PLMN_RAT_GSM == rat)
+                                               sprintf(infotxt, "2G");
+                               }
+                dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y);
+                               #endif
+                               break;
+
+                       case LABEL_TYPE_SIGNAL_REGISTER_STATE:
+                               #ifdef __MMI_DIAL_WITH_SIGNAL_SUPPORT__
+                               if(true == watch_modem_sim_present_check_req())
+                               {
+                                       MMI_MODEM_PLMN_RAT rat;
+                                       watch_modem_get_operator_req(&rat);
+                               
+                                       if(MMI_MODEM_PLMN_RAT_LTE == rat)
+                                       {
+                                               /* IMS register state */
+                                               uint8_t ims_reg_state = watch_modem_get_ims_reg_state_req();
+                                               if(1 == ims_reg_state)
+                                                       sprintf(infotxt, "HD");
+                                       }
+                                       else if(MMI_MODEM_PLMN_RAT_UMTS == rat)
+                                       {
+                                               /* UMTS register state */
+                                               uint8_t umts_reg_state = watch_modem_get_umts_reg_state_req();
+                                               if(0 == umts_reg_state)
+                                                       sprintf(infotxt, "W");
+                                               else if(1 == umts_reg_state)
+                                                       sprintf(infotxt, "TD");
+                                               else if(2 == umts_reg_state)
+                                                       sprintf(infotxt, "H");
+                                       }
+                                       else if(MMI_MODEM_PLMN_RAT_GSM == rat)
+                                       {
+                                               /* GSM register state */
+                                               uint8_t gsm_reg_state = watch_modem_get_gsm_reg_state_req();
+                                               if(1 == gsm_reg_state)
+                                                       sprintf(infotxt, "E");
+                                       }
+                               }
+                dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y);
+                               #endif
+                               break;
                                
             default:
                 break;
@@ -686,6 +750,7 @@ static void dial_update_canvas_img(watch_element_base_t * base)
     int16_t angle = 0;
     hal_rtc_t tm;
     lv_point_t pos;
+       uint8_t index = 0;
 
     if(ELEMENT_TYPE_WEEK == base->element_type || ELEMENT_TYPE_DATE == base->element_type || ELEMENT_TYPE_TIME_HAND == base->element_type
             || ELEMENT_TYPE_TIME_DIGIT == base->element_type || ELEMENT_TYPE_AM_PM == base->element_type) {
@@ -884,10 +949,22 @@ static void dial_update_canvas_img(watch_element_base_t * base)
                     dial_update_canvas(sub_img, 0, pos.x + img_dsc->img_pos.x, pos.y + img_dsc->img_pos.y);
                 break;
             case IMG_TYPE_BATTERY:
-                sub_img = dial_get_sub_img(img_dsc, Hal_Battery_Get_Status() / (100 / img_dsc->subimg->sub_img_cnt));
+                //sub_img = dial_get_sub_img(img_dsc, Hal_Battery_Get_Status() / (100 / img_dsc->subimg->sub_img_cnt));
+                               index = status_get_battery_img_index(Hal_Battery_Get_Status());
+                sub_img = dial_get_sub_img(img_dsc, index);
                 if(sub_img)
                     dial_update_canvas(sub_img, 0, pos.x + img_dsc->img_pos.x, pos.y + img_dsc->img_pos.y);
                 break;
+                       case IMG_TYPE_BATTERY_CHARGE:
+                               #ifdef __MMI_DIAL_WITH_CHARGE_STATE_SUPPORT__
+                               if(HAL_CHG_CONNECTED == Hal_Charger_Get_Status())
+                               {
+                                       sub_img = dial_get_sub_img(img_dsc, 0);
+                                       if(sub_img)
+                                               dial_update_canvas(sub_img, 0, pos.x + img_dsc->img_pos.x, pos.y + img_dsc->img_pos.y);
+                               }
+                               #endif
+                               break;
             case IMG_TYPE_DISTANCE_TENS:
                 sub_img = dial_get_sub_img(img_dsc, record.km / 10);
                 if(sub_img)
@@ -983,6 +1060,16 @@ static void dial_update_canvas_img(watch_element_base_t * base)
                 dial_clean_canvas(true);
                 dial_update_all_element(dial_get_clock_cont());
                 break;
+
+            case IMG_TYPE_SIGNAL:
+                               #ifdef __MMI_DIAL_WITH_SIGNAL_SUPPORT__
+                               index = ((false == watch_modem_sim_present_check_req()) ? 6 : watch_modem_get_signal_bar_req());                                
+                sub_img = dial_get_sub_img(img_dsc, index);
+                if(sub_img)
+                    dial_update_canvas(sub_img, 0, pos.x + img_dsc->img_pos.x, pos.y + img_dsc->img_pos.y);
+                               #endif
+                break;
+       
             default:
                 break;
         }
index bb225b2..2f2982d 100644 (file)
@@ -113,6 +113,23 @@ const char * status_get_battery_img(uint8_t level)
     return(ICON_STATUS_BATTERY_0);
 }
 
+uint8_t status_get_battery_img_index(uint8_t level)
+{
+    if(level > LV_WATCH_LOWER_LIMIT_FOR_BATTERY_4)
+        return 4;
+
+    if(level > LV_WATCH_LOWER_LIMIT_FOR_BATTERY_3)
+        return 3;
+
+    if(level > LV_WATCH_LOWER_LIMIT_FOR_BATTERY_2)
+        return 2;
+
+    if(level > LV_WATCH_LOWER_LIMIT_FOR_BATTERY_1)
+        return 1;
+
+    return 0;
+}
+
 // temp interface for showing, will be delete after hal interface is ready
 extern uint8_t get_wifi(void);
 
index 5352ae7..b81b0e7 100644 (file)
@@ -48,6 +48,7 @@ typedef struct
  **********************/
 lv_obj_t * status_and_setting_create(lv_obj_t * tilevew, uint16_t id);
 extern const char * status_get_battery_img(uint8_t level);
+uint8_t status_get_battery_img_index(uint8_t level);
 extern void setting_set_backlight_intensity(uint8_t intensity, bool writenvm);
 extern void setting_set_ring_volume(uint8_t volume, bool writenvm, bool play);
 /**********************