Quellcode durchsuchen

1、在功耗和头像应用界面,清除所有元素的LV_OBJ_FLAG_CLICKABLE属性,使应用不响应长按进入小弹窗,避免加载头像图片时会因临时数据区的内容错乱而出现花瓶现象
2、伊欧的LCM,加长了亮背光的延时(800ms)
3、更新patch,修改两处写文件的逻辑,避免在写文件时刚好掉电、致使文件系统数据错乱、表盘和头像图片丢失的问题
4、根据德瑞迪提供补丁,修改代码提升芯片PSRAM的稳定性

robbin vor 1 Woche
Ursprung
Commit
9e2e52eed4

+ 3 - 0
application/aem_watch/src/application/in_out_power/aem_in_out_power.c

@@ -177,6 +177,7 @@ lv_obj_t *in_out_power_ui_init(lv_obj_t *par)
     {
         return NULL;
     }
+    lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
 
     lv_obj_set_user_data(bg, activity_ui_data);
     activity_ui_data->s_app_bg = bg;
@@ -185,6 +186,8 @@ lv_obj_t *in_out_power_ui_init(lv_obj_t *par)
     lv_obj_t *screen1 = aem_bg_create(bg, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
     if (screen1)
     {
+        lv_obj_clear_flag(screen1, LV_OBJ_FLAG_CLICKABLE);
+        
         if (in_out_value_show_flag)  //show in & out value
         {
             activity_ui_data->arc_screen = aem_in_out_power_screen_create(screen1, false);

+ 45 - 21
application/aem_watch/src/application/in_out_power/aem_in_out_power_screen.c

@@ -86,7 +86,7 @@ static lv_obj_t *activity_value_item_create(lv_obj_t *par, lv_color_t value_colo
         return NULL;
     }
 
-    //lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
+    lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
 
     lv_obj_t *value_label = text_canvas_create(bg);
     if (value_label)
@@ -94,7 +94,7 @@ static lv_obj_t *activity_value_item_create(lv_obj_t *par, lv_color_t value_colo
         lv_obj_set_width(value_label, AEM_SIZE_HOR_FACTOR_466(160));
         text_canvas_set_long_mode(value_label, LV_LABEL_LONG_SCROLL_CIRCULAR);
         lv_obj_set_style_text_align(value_label, LV_TEXT_ALIGN_LEFT, 0);
-        //lv_obj_clear_flag(value_label, LV_OBJ_FLAG_CLICKABLE);
+        lv_obj_clear_flag(value_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_color(value_label, value_color, 0);
         lv_obj_set_style_text_font(value_label, value_font, 0);
         text_canvas_set_text(value_label, value);
@@ -205,6 +205,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_set_style_bg_color(in_power_item, (lv_color_t)LV_COLOR_BLUE, 0);
     lv_obj_set_style_radius(in_power_item, AEM_SIZE_FACTOR_466(10), 0);
     lv_obj_set_style_width(in_power_item, AEM_SIZE_FACTOR_466(POWER_STYLE_WIDTH), 0);
+    lv_obj_clear_flag(in_power_item, LV_OBJ_FLAG_CLICKABLE);
 
     if (in_power_item)
     {
@@ -216,6 +217,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_set_style_bg_color(out_power_item, (lv_color_t)LV_COLOR_GREEN, 0);
     lv_obj_set_style_radius(out_power_item, AEM_SIZE_FACTOR_466(10), 0);
     lv_obj_set_style_width(out_power_item, AEM_SIZE_FACTOR_466(POWER_STYLE_WIDTH), 0);
+    lv_obj_clear_flag(out_power_item, LV_OBJ_FLAG_CLICKABLE);
 
     if (out_power_item)
     {
@@ -227,6 +229,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     //lv_obj_set_style_bg_color(in_voltage_item, (lv_color_t)LV_COLOR_WHITE, 0);
     lv_obj_set_style_align(in_voltage_item, LV_ALIGN_LEFT_MID, 0);
     lv_obj_set_style_width(in_voltage_item, AEM_SIZE_FACTOR_466(VOLT_CURR_WIDTH), 0);
+    lv_obj_clear_flag(in_voltage_item, LV_OBJ_FLAG_CLICKABLE);
 
     if (in_voltage_item)
     {
@@ -240,6 +243,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     //lv_obj_set_style_bg_color(out_voltage_item, (lv_color_t)LV_COLOR_WHITE, 0);
     lv_obj_set_style_align(out_voltage_item, LV_ALIGN_LEFT_MID, 0);
     lv_obj_set_style_width(out_voltage_item, AEM_SIZE_FACTOR_466(VOLT_CURR_WIDTH), 0);
+    lv_obj_clear_flag(out_voltage_item, LV_OBJ_FLAG_CLICKABLE);
 
     if (out_voltage_item)
     {
@@ -251,6 +255,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     //lv_obj_set_style_bg_color(in_current_item, (lv_color_t)LV_COLOR_WHITE, 0);
     lv_obj_set_style_align(in_current_item, LV_ALIGN_LEFT_MID, 0);
     lv_obj_set_style_width(in_current_item, AEM_SIZE_FACTOR_466(VOLT_CURR_WIDTH), 0);
+    lv_obj_clear_flag(in_current_item, LV_OBJ_FLAG_CLICKABLE);
 
     if (in_current_item)
     {
@@ -262,6 +267,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     //lv_obj_set_style_bg_color(out_current_item, (lv_color_t)LV_COLOR_WHITE, 0);
     lv_obj_set_style_align(out_current_item, LV_ALIGN_LEFT_MID, 0);
     lv_obj_set_style_width(out_current_item, AEM_SIZE_FACTOR_466(VOLT_CURR_WIDTH), 0);
+    lv_obj_clear_flag(out_current_item, LV_OBJ_FLAG_CLICKABLE);
 
     if (out_current_item)
     {
@@ -275,6 +281,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_t *in_power_unit_label = text_canvas_create(in_power_item);
     if (in_power_unit_label)
     {
+        lv_obj_clear_flag(in_power_unit_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_font(in_power_unit_label, aem_font_small(), 0);
         text_canvas_set_text(in_power_unit_label, "W");
         lv_obj_set_style_text_color(in_power_unit_label, (lv_color_t)LV_COLOR_BLACK, 0);
@@ -284,6 +291,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_t *in_voltage_unit_label = text_canvas_create(in_voltage_item);
     if (in_voltage_unit_label)
     {
+        lv_obj_clear_flag(in_voltage_unit_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_font(in_voltage_unit_label, aem_font_small(), 0);
         text_canvas_set_text(in_voltage_unit_label, "V");
         lv_obj_set_style_text_color(in_voltage_unit_label, (lv_color_t)LV_COLOR_BLUE, 0);
@@ -293,6 +301,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_t *in_current_unit_label = text_canvas_create(in_current_item);
     if (in_current_unit_label)
     {
+        lv_obj_clear_flag(in_current_unit_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_font(in_current_unit_label, aem_font_small(), 0);
         text_canvas_set_text(in_current_unit_label, "A");
         lv_obj_set_style_text_color(in_current_unit_label, (lv_color_t)LV_COLOR_BLUE, 0);
@@ -306,6 +315,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_t *out_power_unit_label = text_canvas_create(out_power_item);
     if (out_power_unit_label)
     {
+        lv_obj_clear_flag(out_power_unit_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_font(out_power_unit_label, aem_font_small(), 0);
         text_canvas_set_text(out_power_unit_label, "W");
         lv_obj_set_style_text_color(out_power_unit_label, (lv_color_t)LV_COLOR_BLACK, 0);
@@ -315,6 +325,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_t *out_voltage_unit_label = text_canvas_create(out_voltage_item);
     if (out_voltage_unit_label)
     {
+        lv_obj_clear_flag(out_voltage_unit_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_font(out_voltage_unit_label, aem_font_small(), 0);
         text_canvas_set_text(out_voltage_unit_label, "V");
         lv_obj_set_style_text_color(out_voltage_unit_label, (lv_color_t)LV_COLOR_GREEN, 0);
@@ -324,6 +335,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_t *out_current_unit_label = text_canvas_create(out_current_item);
     if (out_current_unit_label)
     {
+        lv_obj_clear_flag(out_current_unit_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_font(out_current_unit_label, aem_font_small(), 0);
         text_canvas_set_text(out_current_unit_label, "A");
         lv_obj_set_style_text_color(out_current_unit_label, (lv_color_t)LV_COLOR_GREEN, 0);
@@ -334,7 +346,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
     lv_obj_t *arc_bg = aem_bg_create(par, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
     if (arc_bg)
     {
-        //lv_obj_clear_flag(arc_bg, LV_OBJ_FLAG_CLICKABLE);
+        lv_obj_clear_flag(arc_bg, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_bg_opa(arc_bg, LV_OPA_TRANSP, 0);
         lv_obj_set_style_transform_pivot_x(arc_bg, DEF_UI_WIDTH / 2, 0);
         lv_obj_set_style_transform_pivot_y(arc_bg, DEF_UI_HEIGHT / 2, 0);
@@ -350,7 +362,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_icon = lv_img_create(arc_bg);
         if (in_icon)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_icon, &IMG_SCENE_IN_OUT_POWER_PIC_IN);
             lv_obj_align(in_icon, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(20), AEM_SIZE_VER_FACTOR_466(80));
         }
@@ -358,7 +370,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon1 = lv_img_create(arc_bg);
         if (in_bg_icon1)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_bg_icon1, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon1, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align(in_bg_icon1, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(10), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon1, BG_ICON1_IMG_OPA, 0);
@@ -367,7 +379,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon2 = lv_img_create(in_bg_icon1);
         if (in_bg_icon2)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_bg_icon2, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon2, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon2, in_bg_icon1, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon2, BG_ICON2_IMG_OPA, 0);
@@ -376,7 +388,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon3 = lv_img_create(in_bg_icon2);
         if (in_bg_icon3)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_bg_icon3, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon3, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon3, in_bg_icon2, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon3, BG_ICON3_IMG_OPA, 0);
@@ -385,7 +397,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon4 = lv_img_create(in_bg_icon3);
         if (in_bg_icon4)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_bg_icon4, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon4, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon4, in_bg_icon3, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon4, BG_ICON4_IMG_OPA, 0);
@@ -394,7 +406,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon5 = lv_img_create(in_bg_icon4);
         if (in_bg_icon5)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_bg_icon5, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon5, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon5, in_bg_icon4, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon5, BG_ICON5_IMG_OPA, 0);
@@ -403,7 +415,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon6 = lv_img_create(in_bg_icon5);
         if (in_bg_icon6)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_bg_icon6, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon6, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon6, in_bg_icon5, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon6, BG_ICON6_IMG_OPA, 0);
@@ -413,7 +425,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_bg_icon1 = lv_img_create(arc_bg);
         if (out_bg_icon1)
         {
-            //lv_obj_clear_flag(out_bg_icon1, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(out_bg_icon1, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(out_bg_icon1, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPGREEN_ARROW);
             lv_obj_align(out_bg_icon1, LV_ALIGN_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(-10), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(out_bg_icon1, BG_ICON1_IMG_OPA, 0);
@@ -422,7 +434,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_bg_icon2 = lv_img_create(out_bg_icon1);
         if (out_bg_icon2)
         {
-            //lv_obj_clear_flag(out_bg_icon2, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(out_bg_icon2, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(out_bg_icon2, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPGREEN_ARROW);
             lv_obj_align_to(out_bg_icon2, out_bg_icon1, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(out_bg_icon2, BG_ICON2_IMG_OPA, 0);
@@ -431,7 +443,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_bg_icon3 = lv_img_create(out_bg_icon2);
         if (out_bg_icon3)
         {
-            //lv_obj_clear_flag(out_bg_icon3, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(out_bg_icon3, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(out_bg_icon3, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPGREEN_ARROW);
             lv_obj_align_to(out_bg_icon3, out_bg_icon2, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(out_bg_icon3, BG_ICON3_IMG_OPA, 0);
@@ -440,7 +452,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_bg_icon4 = lv_img_create(out_bg_icon3);
         if (out_bg_icon4)
         {
-            //lv_obj_clear_flag(out_bg_icon4, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(out_bg_icon4, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(out_bg_icon4, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPGREEN_ARROW);
             lv_obj_align_to(out_bg_icon4, out_bg_icon3, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(out_bg_icon4, BG_ICON4_IMG_OPA, 0);
@@ -449,7 +461,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_bg_icon5 = lv_img_create(out_bg_icon4);
         if (out_bg_icon5)
         {
-            //lv_obj_clear_flag(out_bg_icon5, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(out_bg_icon5, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(out_bg_icon5, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPGREEN_ARROW);
             lv_obj_align_to(out_bg_icon5, out_bg_icon4, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(out_bg_icon5, BG_ICON5_IMG_OPA, 0);
@@ -458,7 +470,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_bg_icon6 = lv_img_create(out_bg_icon5);
         if (out_bg_icon6)
         {
-            //lv_obj_clear_flag(out_bg_icon6, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(out_bg_icon6, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(out_bg_icon6, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPGREEN_ARROW);
             lv_obj_align_to(out_bg_icon6, out_bg_icon5, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(out_bg_icon6, BG_ICON6_IMG_OPA, 0);
@@ -468,7 +480,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_icon = lv_img_create(arc_bg);
         if (out_icon)
         {
-            //lv_obj_clear_flag(out_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(out_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(out_icon, &IMG_SCENE_IN_OUT_POWER_PIC_OUT);
             lv_obj_align(out_icon, LV_ALIGN_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(-20), AEM_SIZE_VER_FACTOR_466(80));
         }
@@ -485,6 +497,7 @@ static lv_obj_t *aem_in_out_power_arc_show_create(lv_obj_t *par)
         {
             lv_obj_set_style_bg_opa(link_bg, LV_OPA_TRANSP, 0);
             lv_obj_add_flag(link_bg, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(link_bg, LV_OBJ_FLAG_EVENT_BUBBLE);
             lv_obj_align(link_bg, LV_ALIGN_BOTTOM_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_add_event_cb(link_bg, link_icon_event_cb, LV_EVENT_CLICKED, NULL);
         }  
@@ -508,7 +521,7 @@ static lv_obj_t *arc_bg_create(lv_obj_t *par)
     //lv_arc_set_angles(bg, 0, 0);
     lv_obj_remove_style(bg, NULL, LV_PART_KNOB);
     lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
-    lv_obj_add_flag(bg, LV_OBJ_FLAG_EVENT_BUBBLE | LV_OBJ_FLAG_GESTURE_BUBBLE | LV_OBJ_FLAG_SCROLL_CHAIN);
+    //lv_obj_add_flag(bg, LV_OBJ_FLAG_EVENT_BUBBLE | LV_OBJ_FLAG_GESTURE_BUBBLE | LV_OBJ_FLAG_SCROLL_CHAIN);
     return bg;
 }
 
@@ -521,6 +534,8 @@ static lv_obj_t *create_chart(lv_obj_t *par, int type)
         return NULL;
     }
 
+    lv_obj_clear_flag(chart, LV_OBJ_FLAG_CLICKABLE);
+
     // 设置图表对象的大小为 360x120
     lv_obj_set_size(chart, AEM_SIZE_HOR_FACTOR_466(chart_width), AEM_SIZE_VER_FACTOR_466(chart_hight));
     // 设置图表对象的内边距为0
@@ -612,16 +627,20 @@ static lv_obj_t *create_chart(lv_obj_t *par, int type)
 
 static void aem_create_in_out_point_page(lv_obj_t *par)
 {
-    s_power_point = (aem_struct_power_point *)lv_mem_alloc(sizeof(aem_struct_power_point));
-    if(s_power_point == NULL)
+    if (s_power_point == NULL)
     {
-        return;
+        s_power_point = (aem_struct_power_point *)lv_mem_alloc(sizeof(aem_struct_power_point));
+        if(s_power_point == NULL)
+        {
+            return;
+        }
     }
     lv_memset(s_power_point, 0x00, sizeof(aem_struct_power_point));
 
     s_power_point->bg = arc_bg_create(par);
     if (s_power_point->bg)
     {
+        lv_obj_clear_flag(s_power_point->bg, LV_OBJ_FLAG_CLICKABLE);
         s_power_point->input_power_blue_chart = create_chart(par, 0);
         s_power_point->output_power_green_chart = create_chart(par, 1);
     }
@@ -639,6 +658,8 @@ lv_obj_t *aem_in_out_power_screen_create(lv_obj_t *par, bool widget_start)
     lv_obj_t *screen = aem_bg_create(par, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
     if (screen)
     {
+        lv_obj_clear_flag(screen, LV_OBJ_FLAG_CLICKABLE);
+
         lv_obj_set_user_data(screen, ext_data);
 
         aem_in_out_power_arc_show_create(screen);
@@ -656,6 +677,9 @@ void aem_in_out_power_screen_del(lv_obj_t *par)
         return;
     }
 
+    lv_mem_free(s_power_point);
+    s_power_point = NULL;
+
     in_out_power_scr_ui_data_t *ext_data = lv_obj_get_user_data(par);
     if (ext_data)
     {

+ 24 - 15
application/aem_watch/src/application/in_out_power/aem_input_power_screen.c

@@ -77,7 +77,7 @@ static lv_obj_t *activity_value_item_create(lv_obj_t *par, lv_color_t value_colo
         return NULL;
     }
 
-    //lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
+    lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
 
     lv_obj_t *value_label = text_canvas_create(bg);
     if (value_label)
@@ -85,7 +85,7 @@ static lv_obj_t *activity_value_item_create(lv_obj_t *par, lv_color_t value_colo
         lv_obj_set_width(value_label, AEM_SIZE_HOR_FACTOR_466(160));
         text_canvas_set_long_mode(value_label, LV_LABEL_LONG_SCROLL_CIRCULAR);
         lv_obj_set_style_text_align(value_label, LV_TEXT_ALIGN_LEFT, 0);
-        //lv_obj_clear_flag(value_label, LV_OBJ_FLAG_CLICKABLE);
+        lv_obj_clear_flag(value_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_color(value_label, value_color, 0);
         lv_obj_set_style_text_font(value_label, value_font, 0);
         text_canvas_set_text(value_label, value);
@@ -248,7 +248,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
     lv_obj_t *arc_bg = aem_bg_create(par, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
     if (arc_bg)
     {
-        //lv_obj_clear_flag(arc_bg, LV_OBJ_FLAG_CLICKABLE);
+        lv_obj_clear_flag(arc_bg, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_bg_opa(arc_bg, LV_OPA_TRANSP, 0);
         lv_obj_set_style_transform_pivot_x(arc_bg, DEF_UI_WIDTH / 2, 0);
         lv_obj_set_style_transform_pivot_y(arc_bg, DEF_UI_HEIGHT / 2, 0);
@@ -264,7 +264,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_icon = lv_img_create(arc_bg);
         if (in_icon)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_icon, &IMG_SCENE_IN_OUT_POWER_PIC_IN);
             lv_obj_align(in_icon, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(75), AEM_SIZE_VER_FACTOR_466(0));
         }
@@ -272,7 +272,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *voltage_icon = lv_img_create(arc_bg);
         if (voltage_icon)
         {
-            //lv_obj_clear_flag(voltage_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(voltage_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(voltage_icon, &IMG_SCENE_IN_OUT_POWER_PIC_VOLTAGE_ICON);
             lv_obj_align(voltage_icon, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(150), AEM_SIZE_VER_FACTOR_466(60));
         }
@@ -280,7 +280,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *current_icon = lv_img_create(arc_bg);
         if (current_icon)
         {
-            //lv_obj_clear_flag(current_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(current_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(current_icon, &IMG_SCENE_IN_OUT_POWER_PIC_CURRENT_ICON);
             lv_obj_align(current_icon, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(150), AEM_SIZE_VER_FACTOR_466(110));
         }
@@ -288,7 +288,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon1 = lv_img_create(arc_bg);
         if (in_bg_icon1)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon1, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align(in_bg_icon1, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(145), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon1, BG_ICON1_IMG_OPA, 0);
@@ -297,7 +297,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon2 = lv_img_create(in_bg_icon1);
         if (in_bg_icon2)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon2, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon2, in_bg_icon1, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon2, BG_ICON2_IMG_OPA, 0);
@@ -306,7 +306,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon3 = lv_img_create(in_bg_icon2);
         if (in_bg_icon3)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon3, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon3, in_bg_icon2, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon3, BG_ICON3_IMG_OPA, 0);
@@ -315,7 +315,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon4 = lv_img_create(in_bg_icon3);
         if (in_bg_icon4)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon4, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon4, in_bg_icon3, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon4, BG_ICON4_IMG_OPA, 0);
@@ -324,7 +324,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon5 = lv_img_create(in_bg_icon4);
         if (in_bg_icon5)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon5, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon5, in_bg_icon4, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon5, BG_ICON5_IMG_OPA, 0);
@@ -333,7 +333,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_bg_icon6 = lv_img_create(in_bg_icon5);
         if (in_bg_icon6)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_bg_icon6, &IMG_SCENE_IN_OUT_POWER_PIC_DEEPBLUE_ARROW);
             lv_obj_align_to(in_bg_icon6, in_bg_icon5, LV_ALIGN_OUT_RIGHT_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_set_style_img_opa(in_bg_icon6, BG_ICON6_IMG_OPA, 0);
@@ -352,6 +352,7 @@ static lv_obj_t *aem_input_power_arc_show_create(lv_obj_t *par)
         {
             lv_obj_set_style_bg_opa(link_bg, LV_OPA_TRANSP, 0);
             lv_obj_add_flag(link_bg, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(link_bg, LV_OBJ_FLAG_EVENT_BUBBLE);
             lv_obj_align(link_bg, LV_ALIGN_BOTTOM_MID, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
             lv_obj_add_event_cb(link_bg, link_icon_event_cb, LV_EVENT_CLICKED, NULL);
         }  
@@ -375,7 +376,7 @@ static lv_obj_t *arc_bg_create(lv_obj_t *par)
     //lv_arc_set_angles(bg, 0, 0);
     lv_obj_remove_style(bg, NULL, LV_PART_KNOB);
     lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
-    lv_obj_add_flag(bg, LV_OBJ_FLAG_EVENT_BUBBLE | LV_OBJ_FLAG_GESTURE_BUBBLE | LV_OBJ_FLAG_SCROLL_CHAIN);
+    //lv_obj_add_flag(bg, LV_OBJ_FLAG_EVENT_BUBBLE | LV_OBJ_FLAG_GESTURE_BUBBLE | LV_OBJ_FLAG_SCROLL_CHAIN);
     return bg;
 }
 
@@ -388,6 +389,8 @@ static lv_obj_t *create_chart(lv_obj_t *par, int type)
         return NULL;
     }
 
+    lv_obj_clear_flag(chart, LV_OBJ_FLAG_CLICKABLE); 
+
     // 设置图表对象的大小为 360x120
     lv_obj_set_size(chart, AEM_SIZE_HOR_FACTOR_466(in_chart_width), AEM_SIZE_VER_FACTOR_466(in_chart_hight));
     // 设置图表对象的内边距为0
@@ -450,16 +453,20 @@ static lv_obj_t *create_chart(lv_obj_t *par, int type)
 
 static void aem_create_input_point_page(lv_obj_t *par)
 {
-    s_power_point = (aem_struct_power_point *)lv_mem_alloc(sizeof(aem_struct_power_point));
     if(s_power_point == NULL)
     {
-        return;
+        s_power_point = (aem_struct_power_point *)lv_mem_alloc(sizeof(aem_struct_power_point));
+        if(s_power_point == NULL)
+        {
+            return;
+        }
     }
     lv_memset(s_power_point, 0x00, sizeof(aem_struct_power_point));
 
     s_power_point->bg = arc_bg_create(par);
     if (s_power_point->bg)
     {
+        lv_obj_clear_flag(s_power_point->bg, LV_OBJ_FLAG_CLICKABLE); 
         s_power_point->input_power_blue_chart = create_chart(par, 0);
     }
 }
@@ -476,6 +483,8 @@ lv_obj_t *aem_input_power_screen_create(lv_obj_t *par, bool widget_start)
     lv_obj_t *screen = aem_bg_create(par, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
     if (screen)
     {
+        lv_obj_clear_flag(screen, LV_OBJ_FLAG_CLICKABLE); 
+
         lv_obj_set_user_data(screen, ext_data);
 
         aem_input_power_arc_show_create(screen);

+ 16 - 0
application/aem_watch/src/application/in_out_power/aem_widget_in_out_power.c

@@ -36,6 +36,8 @@ static void timer_cb(lv_timer_t *t)
     lv_obj_t *par = lv_obj_get_parent(s_wf_in_out_power->bg);
     if (par == NULL)
         return;
+
+    lv_obj_clear_flag(par, LV_OBJ_FLAG_CLICKABLE);    
         
     bool b_temp_flag = aem_in_out_value_show();
 
@@ -55,6 +57,7 @@ static void timer_cb(lv_timer_t *t)
         
         //os_printk("widget in out power [timer_cb] in_out_value_show_flag:%d\n", in_out_value_show_flag);
         
+        lv_obj_remove_event_cb(s_wf_in_out_power->bg, NULL);  //清除所有事件回调
         lv_obj_del(s_wf_in_out_power->bg);
         s_wf_in_out_power->bg = NULL;
         
@@ -67,6 +70,9 @@ static void timer_cb(lv_timer_t *t)
             s_wf_in_out_power->bg = aem_input_power_screen_create(par, true);
         }
 
+        lv_obj_add_flag(s_wf_in_out_power->bg, LV_OBJ_FLAG_CLICKABLE);       //给背景添加LV_OBJ_FLAG_CLICKABLE标志
+        lv_obj_clear_flag(s_wf_in_out_power->bg, LV_OBJ_FLAG_EVENT_BUBBLE);  //去除把事件同步给父对象LV_OBJ_FLAG_EVENT_BUBBLE
+
         lv_timer_resume(s_wf_in_out_power->timer);
 
         return;
@@ -93,6 +99,8 @@ static lv_obj_t *on_start(lv_obj_t *par)
 
             in_out_value_show_flag = aem_in_out_value_show();
 
+            lv_obj_clear_flag(par, LV_OBJ_FLAG_CLICKABLE);
+
             if (in_out_value_show_flag)
             {
                 s_wf_in_out_power->bg = aem_in_out_power_screen_create(par, true);
@@ -101,6 +109,9 @@ static lv_obj_t *on_start(lv_obj_t *par)
             {
                 s_wf_in_out_power->bg = aem_input_power_screen_create(par, true);
             }
+
+            lv_obj_add_flag(s_wf_in_out_power->bg, LV_OBJ_FLAG_CLICKABLE);       //给背景添加LV_OBJ_FLAG_CLICKABLE标志
+            lv_obj_clear_flag(s_wf_in_out_power->bg, LV_OBJ_FLAG_EVENT_BUBBLE);  //去除把事件同步给父对象LV_OBJ_FLAG_EVENT_BUBBLE
             return s_wf_in_out_power->bg;
         }
     }
@@ -113,6 +124,11 @@ static void on_resume()
     if (s_wf_in_out_power == NULL)
         return;
 
+    if (s_wf_in_out_power->bg)
+    {
+        lv_obj_remove_event_cb(s_wf_in_out_power->bg, NULL);  //清除所有事件回调
+    }        
+
     if (s_wf_in_out_power->timer == NULL)
     {
         s_wf_in_out_power->timer = lv_timer_create(timer_cb, 500, NULL);

+ 4 - 1
application/aem_watch/src/application/profile_photo/aem_profile_photo.c

@@ -72,6 +72,8 @@ lv_obj_t *profile_photo_ui_init(lv_obj_t *par)
         return NULL;
     }
 
+    lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
+
     lv_obj_set_user_data(bg, activity_ui_data);
     activity_ui_data->s_app_bg = bg;
     aem_page_set_auto_align(bg, true);
@@ -79,7 +81,8 @@ lv_obj_t *profile_photo_ui_init(lv_obj_t *par)
     lv_obj_t *screen1 = aem_bg_create(bg, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
     if (screen1)
     {
-        activity_ui_data->arc_screen = aem_profile_photo_screen_create(screen1, false);
+        lv_obj_clear_flag(screen1, LV_OBJ_FLAG_CLICKABLE);
+        activity_ui_data->arc_screen = aem_profile_photo_screen_create(screen1);
     }
 
     activity_ui_data->timer = lv_timer_create(delay_timer_cb, 300, NULL);

+ 39 - 16
application/aem_watch/src/application/profile_photo/aem_profile_photo_screen.c

@@ -25,7 +25,7 @@ extern void * ui_mem_res_alloc(size_t size);
 #endif
 
 static uint8_t *photo_data_buff = NULL;
-static lv_img_dsc_t *img_dsc;
+static lv_img_dsc_t *img_dsc = NULL;
 
 typedef struct
 {
@@ -36,7 +36,6 @@ typedef struct
     lv_obj_t *out_power_value;
     lv_obj_t *out_voltage_value;
     lv_obj_t *out_current_value;
-    bool widget_start;
 
 } profile_photo_scr_ui_data_t;
 
@@ -67,7 +66,7 @@ static lv_obj_t *activity_value_item_create(lv_obj_t *par, lv_color_t value_colo
     }
 
     lv_obj_set_style_bg_opa(bg, LV_OPA_TRANSP, LV_PART_MAIN);  //设置背景透明度
-    //lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
+    lv_obj_clear_flag(bg, LV_OBJ_FLAG_CLICKABLE);
 
     lv_obj_t *value_label = text_canvas_create(bg);
     if (value_label)
@@ -75,7 +74,7 @@ static lv_obj_t *activity_value_item_create(lv_obj_t *par, lv_color_t value_colo
         lv_obj_set_width(value_label, AEM_SIZE_HOR_FACTOR_466(140));
         text_canvas_set_long_mode(value_label, LV_LABEL_LONG_SCROLL_CIRCULAR);
         lv_obj_set_style_text_align(value_label, LV_TEXT_ALIGN_LEFT, 0);
-        //lv_obj_clear_flag(value_label, LV_OBJ_FLAG_CLICKABLE);
+        lv_obj_clear_flag(value_label, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_text_color(value_label, value_color, 0);
         lv_obj_set_style_text_font(value_label, value_font, 0);
         text_canvas_set_text(value_label, value);
@@ -95,6 +94,8 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
     lv_obj_t *arc_bg = aem_bg_create(par, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
     if (arc_bg)
     {
+        lv_obj_clear_flag(arc_bg, LV_OBJ_FLAG_CLICKABLE);
+
         lv_obj_t *photo_icon = lv_img_create(arc_bg);
         if (photo_icon)
         {
@@ -110,7 +111,14 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
                     if (photo_data_buff == NULL)
                     {    
                         photo_data_buff = (uint8_t *)ui_mem_res_alloc(photo_data_size);  
+
+                        if (photo_data_buff == NULL)
+                        {
+                            return NULL;
+                        }
                     }
+
+                    memset(photo_data_buff, 0, photo_data_size);
                     flash_read("profile_photo_name", 3, photo_data_buff, photo_data_size);
                     //struct fs_file_t file = {0};
 
@@ -125,8 +133,16 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
                     //ret = fs_read(&file, photo_data_buff, 100);
                     //printk("fs_read ret: %d\n", ret);
                     //fs_close(&file);
-
-                    img_dsc = (lv_img_dsc_t *)lv_mem_alloc(sizeof(lv_img_dsc_t));
+                    if (img_dsc == NULL)
+                    {
+                        img_dsc = (lv_img_dsc_t *)lv_mem_alloc(sizeof(lv_img_dsc_t));
+
+                        if (img_dsc == NULL)
+                        {
+                            return NULL;
+                        }
+                    }
+                    
                     memset(img_dsc, 0, sizeof(lv_img_dsc_t));
 
                     img_dsc->header.always_zero = 0;
@@ -147,10 +163,11 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
             else
         #endif    
             {
-                //lv_obj_clear_flag(photo_icon, LV_OBJ_FLAG_CLICKABLE);
+                
                 lv_img_set_src(photo_icon, &IMG_SCENE_PROFILE_PHOTO_PIC_PHOTO_MALE);
             }
-            
+
+            lv_obj_clear_flag(photo_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_obj_align(photo_icon, LV_ALIGN_CENTER, AEM_SIZE_HOR_FACTOR_466(0), AEM_SIZE_VER_FACTOR_466(0));
         }
 
@@ -158,6 +175,7 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_power_item = activity_value_item_create(par, (lv_color_t)LV_COLOR_BLUE, in_power_data, 50, aem_font_sub());
         //lv_obj_set_style_bg_color(in_power_item, (lv_color_t)LV_COLOR_GREEN, 0);
         //lv_obj_set_style_radius(in_power_item, AEM_SIZE_FACTOR_466(10), 0);
+        lv_obj_clear_flag(in_power_item, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_width(in_power_item, AEM_SIZE_FACTOR_466(POWER_WIDTH), 0);
 
         if (in_power_item)
@@ -170,6 +188,7 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_power_unit_label = text_canvas_create(in_power_item);
         if (in_power_unit_label)
         {
+            lv_obj_clear_flag(in_power_unit_label, LV_OBJ_FLAG_CLICKABLE);
             lv_obj_set_style_text_font(in_power_unit_label, aem_font_small(), 0);
             text_canvas_set_text(in_power_unit_label, "W");
             lv_obj_set_style_text_color(in_power_unit_label, (lv_color_t)LV_COLOR_BLUE, 0);
@@ -180,6 +199,7 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_power_item = activity_value_item_create(par, (lv_color_t)LV_COLOR_GREEN, out_power_data, 50, aem_font_sub());
         //lv_obj_set_style_bg_color(out_power_item, (lv_color_t)LV_COLOR_GREEN, 0);
         //lv_obj_set_style_radius(out_power_item, AEM_SIZE_FACTOR_466(10), 0);
+        lv_obj_clear_flag(out_power_item, LV_OBJ_FLAG_CLICKABLE);
         lv_obj_set_style_width(out_power_item, AEM_SIZE_FACTOR_466(POWER_WIDTH), 0);
 
         if (out_power_item)
@@ -192,6 +212,7 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_power_unit_label = text_canvas_create(out_power_item);
         if (out_power_unit_label)
         {
+            lv_obj_clear_flag(out_power_unit_label, LV_OBJ_FLAG_CLICKABLE);
             lv_obj_set_style_text_font(out_power_unit_label, aem_font_small(), 0);
             text_canvas_set_text(out_power_unit_label, "W");
             lv_obj_set_style_text_color(out_power_unit_label, (lv_color_t)LV_COLOR_GREEN, 0);
@@ -201,7 +222,7 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
         lv_obj_t *in_icon = lv_img_create(arc_bg);
         if (in_icon)
         {
-            //lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(in_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(in_icon, &IMG_SCENE_PROFILE_PHOTO_PIC_IN);
             lv_obj_align(in_icon, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(150), AEM_SIZE_VER_FACTOR_466(135));
         }
@@ -209,7 +230,7 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
         lv_obj_t *out_icon = lv_img_create(arc_bg);
         if (out_icon)
         {
-            //lv_obj_clear_flag(out_icon, LV_OBJ_FLAG_CLICKABLE);
+            lv_obj_clear_flag(out_icon, LV_OBJ_FLAG_CLICKABLE);
             lv_img_set_src(out_icon, &IMG_SCENE_PROFILE_PHOTO_PIC_OUT);
             lv_obj_align(out_icon, LV_ALIGN_LEFT_MID, AEM_SIZE_HOR_FACTOR_466(150), AEM_SIZE_VER_FACTOR_466(185));
         } 
@@ -218,7 +239,7 @@ static lv_obj_t *aem_profile_photo_arc_show_create(lv_obj_t *par)
     return par;
 }
 
-lv_obj_t *aem_profile_photo_screen_create(lv_obj_t *par, bool widget_start)
+lv_obj_t *aem_profile_photo_screen_create(lv_obj_t *par)
 {
     profile_photo_scr_ui_data_t *ext_data = load_res();
     if (ext_data == NULL)
@@ -226,10 +247,11 @@ lv_obj_t *aem_profile_photo_screen_create(lv_obj_t *par, bool widget_start)
         return NULL;
     }
    
-    ext_data->widget_start = widget_start;
     lv_obj_t *screen1 = aem_bg_create(par, DEF_UI_WIDTH, DEF_UI_HEIGHT, lv_color_black());
     if (screen1)
     {
+        lv_obj_clear_flag(screen1, LV_OBJ_FLAG_CLICKABLE);
+
         lv_obj_set_user_data(screen1, ext_data);
 
         aem_profile_photo_arc_show_create(screen1);
@@ -245,15 +267,16 @@ void aem_profile_photo_screen_del(lv_obj_t *par)
         return;
     }
 
+    ui_mem_res_free(photo_data_buff);
+    lv_mem_free(img_dsc);
+    photo_data_buff = NULL;
+    img_dsc = NULL;
+
     profile_photo_scr_ui_data_t *ext_data = lv_obj_get_user_data(par);
     if (ext_data)
     {
         lv_mem_free(ext_data);
-        ui_mem_res_free(photo_data_buff);
-        lv_mem_free(img_dsc);
         ext_data = NULL;
-        photo_data_buff = NULL;
-        img_dsc = NULL;
         lv_obj_set_user_data(par, NULL);
     }
 }

+ 1 - 1
application/aem_watch/src/application/profile_photo/aem_profile_photo_screen.h

@@ -4,7 +4,7 @@
 #include "aem_activity_data_if.h"
 #include "lvgl.h"
 
-lv_obj_t *aem_profile_photo_screen_create(lv_obj_t *par, bool widget_start);
+lv_obj_t *aem_profile_photo_screen_create(lv_obj_t *par);
 
 void aem_profile_photo_screen_update(lv_obj_t *par);
 void aem_profile_photo_screen_del(lv_obj_t *par);

+ 8 - 1
application/aem_watch/src/application/profile_photo/aem_widget_profile_photo.c

@@ -50,7 +50,9 @@ static lv_obj_t *on_start(lv_obj_t *par)
         if (s_wf_profile_photo)
         {
             memset(s_wf_profile_photo, 0, sizeof(aem_wf_profile_photo_t));
-            s_wf_profile_photo->bg = aem_profile_photo_screen_create(par, true);
+            s_wf_profile_photo->bg = aem_profile_photo_screen_create(par);
+            lv_obj_add_flag(s_wf_profile_photo->bg, LV_OBJ_FLAG_CLICKABLE);       //给背景添加LV_OBJ_FLAG_CLICKABLE标志
+            lv_obj_clear_flag(s_wf_profile_photo->bg, LV_OBJ_FLAG_EVENT_BUBBLE);  //去除把事件同步给父对象LV_OBJ_FLAG_EVENT_BUBBLE
             return s_wf_profile_photo->bg;
         }
     }
@@ -63,6 +65,11 @@ static void on_resume()
     if (s_wf_profile_photo == NULL)
         return;
 
+    if (s_wf_profile_photo->bg)
+    {
+        lv_obj_remove_event_cb(s_wf_profile_photo->bg, NULL);  //清除所有事件回调
+    }    
+
     if (s_wf_profile_photo->timer == NULL)
     {
         s_wf_profile_photo->timer = lv_timer_create(timer_cb, 500, NULL);

+ 4 - 4
application/aem_watch/src/user_cfg/device_info_cfg.h

@@ -3,16 +3,16 @@
 */
 #ifndef __DEVICE_INFO_CONFIG_H__
 #define __DEVICE_INFO_CONFIG_H__
-//#define DMG_LCM  //达明光电的LCM
+#define DMG_LCM  0  //达明光电的LCM
 
-#ifdef DMG_LCM
+#if DMG_LCM
 #define MAJOR_VERSION 1
 #define MINOR_VERSION 1
-#define MICRO_VERSION 2
+#define MICRO_VERSION 5
 #else
 #define MAJOR_VERSION 2
 #define MINOR_VERSION 0
-#define MICRO_VERSION 3
+#define MICRO_VERSION 5
 #endif
 
 #define DEVICE_ID "CJ01"//3085

+ 1 - 1
thirdparty/lib/aem/config/aem_project.h

@@ -4,7 +4,7 @@
 #pragma warning(error : 4013)
 #endif
 #define AEM_VERSION "BL_Develop_NOR"
-#define BUILD_TIME "202505301650"
+#define BUILD_TIME "202506051615"
 #define AEM_GUI_FWK_LIB_VER "2.0.0.0"
 #define APP_DOWNLOAD_URL "https://customer.com"
 #define AEM_APP_TRANS_ANIMATION 1

BIN
thirdparty/lib/aem/libgui_fwk_s4.a


BIN
zephyr/boards/arm/ats3085s4_dev_watch_ext_nor/mbrec.bin


+ 4 - 0
zephyr/drivers/display/panel/panel_device.c

@@ -969,7 +969,11 @@ static void _panel_pm_resume_handler(struct k_work *work)
 	}
 	else
 	{
+	#if DMG_LCM
         htimer_panel_backlight(500);
+	#else
+		htimer_panel_backlight(800);
+	#endif	
 	}
 #endif	
 

+ 2 - 0
zephyr/drivers/display/panel/panel_device.h

@@ -217,4 +217,6 @@ static inline void lcd_panel_wake_unlock(void)
 #endif
 }
 
+#define DMG_LCM  0  //达明光电的LCM
+
 #endif /* DRIVER_PANEL_DEVICE_H__ */

+ 2 - 2
zephyr/drivers/display/panel/panel_st77916.c

@@ -51,7 +51,7 @@ static inline void _panel_transmit_p1(const struct device *dev, uint32_t cmd, ui
 	_panel_transmit(dev, cmd, &tx_data, 1);
 }
 
-#ifdef DMG_LCM  // DMG LCM
+#if DMG_LCM  // DMG LCM
 static void _panel_transmit_p2(const struct device *dev, uint32_t cmd, uint8_t data1, uint8_t data2)
 {
 	uint8_t data_array[2] = {
@@ -178,7 +178,7 @@ static int _panel_init(const struct device *dev)
 	
 	printk("st77916 panel_init \r\n ");
 	
-#ifdef DMG_LCM  // DMG LCM
+#if DMG_LCM  // DMG LCM
 	_panel_transmit_p1(dev, 0xf0, 0x08);
 	_panel_transmit_p1(dev, 0xF2, 0x08);
 	_panel_transmit_p1(dev, 0x9B, 0x51);

+ 0 - 2
zephyr/drivers/display/panel/panel_st77916.h

@@ -73,6 +73,4 @@
 #define ST77916_RD_CMD(cmd)     ((0x33 << 24) | ((uint32_t)(cmd) << 8))
 #define ST77916_WR_CMD(cmd)     ((0x32 << 24) | ((uint32_t)(cmd) << 8))
 
-//#define DMG_LCM  //达明光电的LCM
-
 #endif /* PANEL_ST77916_DRIVER_H__ */

+ 13 - 0
zephyr/soc/arm/actions/leopard/soc.c

@@ -14,6 +14,7 @@
 #include <init.h>
 #include <arch/cpu.h>
 #include "soc.h"
+#include "soc_atp.h"
 #include <linker/linker-defs.h>
 //#include <arch/arm/aarch32/cortex_m/cmsis.h>
 
@@ -136,6 +137,7 @@ static int leopard_init(const struct device *arg)
 	uint32_t key;
 	uint32_t val;
 
+
 	ARG_UNUSED(arg);
 	soc_udelay(50);
 	leopard_set_hosc_ctrl();
@@ -205,6 +207,17 @@ static int leopard_init(const struct device *arg)
 	val |= (1 << 25);
 	sys_write32(val, CMU_MEMCLKEN0);
 
+	val = 0;
+	if(soc_atp_get_pmu_calib(12, &val)){
+		printk("get psram pg fail\n");
+	}else{
+		printk("psram=%d, 0x%x\n", val, sys_read32(VOUT_CTL0));
+		if(val){
+			sys_clear_bit(VOUT_CTL0, 31);
+			printk("VOUT0= 0x%x\n", sys_read32(VOUT_CTL0) );
+		}			
+	}
+	printk("apm=%d\n", soc_psram_is_apm());
 	//val = sys_read32(VOUT_CTL1_S1M) ;
 	//val = (val & ~(0xFff)) | 0xedd;   // vdd set 1.2
 	//sys_write32(val, VOUT_CTL1_S1M);

+ 5 - 0
zephyr/soc/arm/actions/leopard/soc_boot.c

@@ -56,4 +56,9 @@ bool soc_boot_get_watchdog_is_reboot(void)
 	return !!p_boot_info->watchdog_reboot;
 }
 
+__sleepfunc bool soc_psram_is_apm(void)
+{
+	const boot_info_t *p_boot_info = soc_boot_get_info();
+	return (p_boot_info->is_apm == 1);
+}
 

+ 4 - 1
zephyr/soc/arm/actions/leopard/soc_boot.h

@@ -34,7 +34,9 @@ typedef struct {
 	uint32_t nand_id_len; /* nand id table length */
 	uint32_t watchdog_reboot : 1; /* The reboot event that occured from bootrom watchdog expired */
 	uint32_t is_mirror : 1; /* The indicator of launching system is a mirror partition */
-	uint32_t bit_res : 30; /* The indicator of launching system is a mirror partition */
+	uint32_t is_apm : 1; /* The indicator of 3085s4 is apm */
+	uint32_t is_psram_off : 1; /* The indicator of psram power can off*/
+	uint32_t bit_res : 28; /* The indicator of launching system is a mirror partition */
 	uint32_t reserved[3];
 	uint32_t nor_offset; /*cur code mapping off nor offset*/
 	uint32_t code_len; // code in psram len(nand boot/emmc boot use)
@@ -68,5 +70,6 @@ inline bool soc_boot_is_mini(void)
 	return (((const boot_info_t *)BOOT_INFO_SRAM_ADDR)->dvfs == 0x23185C0c) ;
 }
 
+ bool soc_psram_is_apm(void);
 
 #endif

+ 45 - 16
zephyr/soc/arm/actions/leopard/soc_psram.c

@@ -48,8 +48,12 @@ __sleepfunc void   __psram_reg_write(unsigned int reg_addr, unsigned int reg_dat
 	sys_write32(sys_read32(SPI1_CTL) & ~(3 << 4), SPI1_CTL);
 	sys_write32(sys_read32(SPI1_CTL) | (3 << 4), SPI1_CTL);
 	if(soc_boot_is_mini()){
-		sys_write32((0<<20)|(6<<16)|(5<<12)|(4<<8)|(4<<4)|(4<<0), SPI1_DDR_MODE_CTL);			//DDR OPI OKmode
-		sys_write32(0x600001, SPI1_DDR_ADDR1);
+		if(soc_psram_is_apm()){
+
+		}else{
+			sys_write32((0<<20)|(6<<16)|(5<<12)|(4<<8)|(4<<4)|(4<<0), SPI1_DDR_MODE_CTL);			//DDR OPI OKmode
+			sys_write32(0x600001, SPI1_DDR_ADDR1);
+		}
 	}else{
 		/* DDR OPI OKmode */
 		sys_write32((0 << 20) | (5 << 16) | (1 << 0), SPI1_DDR_MODE_CTL);
@@ -68,8 +72,13 @@ __sleepfunc void   __psram_reg_write(unsigned int reg_addr, unsigned int reg_dat
 	sys_write32(0x02, SPI1_DDR_START);
 
 	if(soc_boot_is_mini()){
-		sys_write32(reg_data>>8, SPI1_TXDAT);
-		sys_write32(reg_data&0xff, SPI1_TXDAT); /* must send two bytes */
+		if(soc_psram_is_apm()){
+			sys_write32(reg_data, SPI1_TXDAT);
+			sys_write32(0, SPI1_TXDAT); /* must send two bytes */
+		}else{
+			sys_write32(reg_data>>8, SPI1_TXDAT);
+			sys_write32(reg_data&0xff, SPI1_TXDAT); /* must send two bytes */
+		}
 	}else{
 		sys_write32(reg_data, SPI1_TXDAT);
 		sys_write32(0, SPI1_TXDAT); /* must send two bytes */
@@ -108,8 +117,12 @@ __sleepfunc unsigned int __psram_reg_read(unsigned int reg_addr)
 	sys_write32(sys_read32(SPI1_CTL) & ~(3 << 4), SPI1_CTL);
 	sys_write32(sys_read32(SPI1_CTL) | (3 << 4), SPI1_CTL);
 	if(soc_boot_is_mini()){
-		sys_write32((0<<20)|(6<<16)|(5<<12)|(4<<8)|(4<<4)|(4<<0), SPI1_DDR_MODE_CTL);//DDR OPI OKmode
-		sys_write32(0xe00001, SPI1_DDR_ADDR1);
+		if(soc_psram_is_apm()){
+
+		}else{
+			sys_write32((0<<20)|(6<<16)|(5<<12)|(4<<8)|(4<<4)|(4<<0), SPI1_DDR_MODE_CTL);//DDR OPI OKmode
+			sys_write32(0xe00001, SPI1_DDR_ADDR1);
+		}
 	}else{
 		/* DDR OPI OKmode */
 		sys_write32((0 << 20) | (5 << 16) | (1 << 0), SPI1_DDR_MODE_CTL);
@@ -134,9 +147,13 @@ __sleepfunc unsigned int __psram_reg_read(unsigned int reg_addr)
 	sys_write32(0x00, SPI1_DDR_START);
 
 	if(soc_boot_is_mini()) {
-		reg_data  = sys_read32(SPI1_RXDAT);
-		reg_data  = reg_data << 8;
-		reg_data |= sys_read32(SPI1_RXDAT);
+		if(soc_psram_is_apm()){
+			reg_data = sys_read32(SPI1_RXDAT);
+		}else{			
+			reg_data  = sys_read32(SPI1_RXDAT);
+			reg_data  = reg_data << 8;
+			reg_data |= sys_read32(SPI1_RXDAT);
+		}
 	}else {
 		reg_data = sys_read32(SPI1_RXDAT);
 	}
@@ -151,8 +168,10 @@ __sleepfunc void psram_self_refresh_control(bool low_refresh_en)
 {
 	uint32_t reg_data;
 
-	if(soc_boot_is_mini())
-		return;
+	if(soc_boot_is_mini()){
+		if(!soc_psram_is_apm())
+			return;
+	}
 
 	reg_data = __psram_reg_read(4);
 
@@ -172,10 +191,15 @@ __sleepfunc void psram_power_control(bool low_power_en)
 	uint32_t pinctl_cs_bak;
 
 	if (low_power_en) {
-		if(soc_boot_is_mini())
-			__psram_reg_write(1, 0x20); //Hybrid Sleep 
-		else
+		if(soc_boot_is_mini()){
+			if(soc_psram_is_apm()) {
+				__psram_reg_write(6, 0xf0);  //apm
+			}else{
+				__psram_reg_write(1, 0x20); //Hybrid Sleep 
+			}
+		}else{
 			__psram_reg_write(6, 0xf0);
+		}
 	} else {
 		/* backup psram cs function pin ctl */
 		pinctl_cs_bak = sys_read32(GPIO_REG_BASE + PSRAM_CS_PIN * 4);
@@ -253,8 +277,13 @@ static inline void psram_set_delaychain_by_vdd(uint16_t vdd)
 	const struct psram_delaychain_tbl *tbl;
 
 	if(soc_boot_is_mini()){
-		tbl = psram_delaychain_tbl_mini;
-		len = ARRAY_SIZE(psram_delaychain_tbl_mini);		
+		if(soc_psram_is_apm()){
+			tbl = psram_delaychain_tbl1;
+			len = ARRAY_SIZE(psram_delaychain_tbl1);
+		}else{
+			tbl = psram_delaychain_tbl_mini;
+			len = ARRAY_SIZE(psram_delaychain_tbl_mini);
+		}
 	}else {
 		if (soc_dvfs_opt()) {
 			tbl = psram_delaychain_tbl1;