Skip to content

Commit 3928523

Browse files
committed
samples: modules: lvgl: demos: Add new demos
Add the new demos of LVGL 9.2: - flex_layout - keypad_and_encoder - render - scroll - multilang Signed-off-by: Fabian Blatz <[email protected]>
1 parent f130a06 commit 3928523

File tree

6 files changed

+222
-9
lines changed

6 files changed

+222
-9
lines changed

samples/modules/lvgl/demos/CMakeLists.txt

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ target_sources_ifdef(CONFIG_LV_USE_DEMO_BENCHMARK app PRIVATE
7272
${LVGL_DIR}/demos/benchmark/assets/lv_font_benchmark_montserrat_12_compr_az.c.c
7373
${LVGL_DIR}/demos/benchmark/assets/lv_font_benchmark_montserrat_16_compr_az.c.c
7474
${LVGL_DIR}/demos/benchmark/assets/lv_font_benchmark_montserrat_28_compr_az.c.c
75-
${LVGL_DIR}/demos/transform/assets/img_transform_avatar_15.c
7675
${LVGL_DIR}/demos/benchmark/lv_demo_benchmark.c
7776
)
7877

@@ -87,3 +86,72 @@ target_sources_ifdef(CONFIG_LV_USE_DEMO_WIDGETS app PRIVATE
8786
${LVGL_DIR}/demos/widgets/assets/img_lvgl_logo.c
8887
${LVGL_DIR}/demos/widgets/lv_demo_widgets.c
8988
)
89+
90+
target_sources_ifdef(CONFIG_LV_USE_DEMO_FLEX_LAYOUT app PRIVATE
91+
${LVGL_DIR}/demos/flex_layout/lv_demo_flex_layout_main.c
92+
${LVGL_DIR}/demos/flex_layout/lv_demo_flex_layout_view.c
93+
${LVGL_DIR}/demos/flex_layout/lv_demo_flex_layout_flex_loader.c
94+
${LVGL_DIR}/demos/flex_layout/lv_demo_flex_layout_view_child_node.c
95+
${LVGL_DIR}/demos/flex_layout/lv_demo_flex_layout_view_ctrl_pad.c
96+
${LVGL_DIR}/demos/flex_layout/lv_demo_flex_layout_ctrl_pad.c
97+
)
98+
99+
target_sources_ifdef(CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER app PRIVATE
100+
${LVGL_DIR}/demos/keypad_encoder/lv_demo_keypad_encoder.c
101+
)
102+
103+
target_sources_ifdef(CONFIG_LV_USE_DEMO_RENDER app PRIVATE
104+
${LVGL_DIR}/demos/render/assets/img_render_arc_bg.c
105+
${LVGL_DIR}/demos/render/assets/img_render_lvgl_logo_argb8888.c
106+
${LVGL_DIR}/demos/render/assets/img_render_lvgl_logo_i1.c
107+
${LVGL_DIR}/demos/render/assets/img_render_lvgl_logo_l8.c
108+
${LVGL_DIR}/demos/render/assets/img_render_lvgl_logo_rgb565.c
109+
${LVGL_DIR}/demos/render/assets/img_render_lvgl_logo_rgb565a8.c
110+
${LVGL_DIR}/demos/render/assets/img_render_lvgl_logo_rgb888.c
111+
${LVGL_DIR}/demos/render/assets/img_render_lvgl_logo_xrgb8888.c
112+
${LVGL_DIR}/demos/render/lv_demo_render.c
113+
)
114+
115+
target_sources_ifdef(CONFIG_LV_USE_DEMO_SCROLL app PRIVATE
116+
${LVGL_DIR}/demos/scroll/lv_demo_scroll.c
117+
)
118+
119+
target_sources_ifdef(CONFIG_LV_USE_DEMO_MULTILANG app PRIVATE
120+
${LVGL_DIR}/demos/multilang/assets/img_multilang_like.c
121+
${LVGL_DIR}/demos/multilang/assets/fonts/font_multilang_large.c
122+
${LVGL_DIR}/demos/multilang/assets/fonts/font_multilang_small.c
123+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_movie_camera.c
124+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_flexed_biceps.c
125+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_rocket.c
126+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_artist_palette.c
127+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_deciduous_tree.c
128+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_cat_face.c
129+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_red_heart.c
130+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_camera_with_flash.c
131+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_dog_face.c
132+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_books.c
133+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_earth_globe_europe_africa.c
134+
${LVGL_DIR}/demos/multilang/assets/emojis/img_emoji_soccer_ball.c
135+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_19.c
136+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_4.c
137+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_8.c
138+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_5.c
139+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_16.c
140+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_22.c
141+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_9.c
142+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_6.c
143+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_18.c
144+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_17.c
145+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_13.c
146+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_2.c
147+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_3.c
148+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_25.c
149+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_14.c
150+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_1.c
151+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_11.c
152+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_7.c
153+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_15.c
154+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_12.c
155+
${LVGL_DIR}/demos/multilang/assets/avatars/img_multilang_avatar_10.c
156+
${LVGL_DIR}/demos/multilang/lv_demo_multilang.c
157+
)

samples/modules/lvgl/demos/Kconfig

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,59 @@ config LV_Z_DEMO_WIDGETS
3030
bool "LVGL widgets demo"
3131
select LV_USE_DEMO_WIDGETS
3232
help
33-
Build stress testing demo application.
33+
Build widgets demo application.
34+
35+
config LV_Z_DEMO_FLEX_LAYOUT
36+
bool "LVGL flex layout demo"
37+
select LV_USE_DEMO_FLEX_LAYOUT
38+
help
39+
Build flex layout demo application.
40+
41+
config LV_Z_DEMO_KEYPAD_AND_ENCODER
42+
bool "LVGL keypad and encoder demo"
43+
select LV_USE_DEMO_KEYPAD_AND_ENCODER
44+
help
45+
Build keypad and encoder demo application.
46+
47+
config LV_Z_DEMO_RENDER
48+
bool "LVGL render demo"
49+
select LV_USE_DEMO_RENDER
50+
help
51+
Build render demo application.
52+
53+
config LV_Z_DEMO_SCROLL
54+
bool "LVGL scroll demo"
55+
select LV_USE_DEMO_SCROLL
56+
help
57+
Build scroll demo application.
58+
59+
config LV_Z_DEMO_MULTILANG
60+
bool "LVGL multilang demo"
61+
select LV_USE_DEMO_MULTILANG
62+
select LV_USE_IMGFONT
63+
help
64+
Build multilang demo application.
3465

3566
endchoice
3667

68+
config LV_Z_DEMO_RENDER_SCENE_DYNAMIC
69+
bool "Switch scenes dynamically"
70+
help
71+
Switch between scenes to render dynamically.
72+
73+
config LV_Z_DEMO_RENDER_SCENE_INDEX
74+
int "Index of the rendered scene"
75+
depends on !LV_Z_DEMO_RENDER_SCENE_DYNAMIC
76+
default 0
77+
range 0 11
78+
help
79+
Render scene by its index (refer to lv_demo_render.h)
80+
81+
config LV_Z_DEMO_RENDER_DYNAMIC_SCENE_TIMEOUT
82+
int "Seconds each rendered scene is shown"
83+
depends on LV_Z_DEMO_RENDER_SCENE_DYNAMIC
84+
default 3
85+
help
86+
Seconds each rendered scenar is shown
87+
3788
source "Kconfig.zephyr"

samples/modules/lvgl/demos/README.rst

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ A sample showcasing upstream LVGL demos.
1717
A stress test for LVGL. It contains a lot of object creation, deletion, animations, styles usage, and so on. It can be used if there is any memory corruption during heavy usage or any memory leaks.
1818
* Widgets
1919
Shows how the widgets look like out of the box using the built-in material theme.
20+
* Flex Layout
21+
Showcases the use of the flex layout.
22+
* Keypad and Encoder
23+
Shows how to control widget with a keypad and hardware encoder.
24+
* Render
25+
Collection of multiple rendering tests.
26+
* Scroll
27+
Shows the scroll behaviour of a panel with a large list.
28+
* Multilang
29+
Shows a UI with multilanguage options, supporting unicode characters.
2030

2131
More details can be found in `LVGL demos Readme`_.
2232

@@ -72,6 +82,46 @@ These demos can be built for simulated display environment as follows:
7282
:goals: run
7383
:compact:
7484

85+
.. zephyr-app-commands::
86+
:zephyr-app: samples/modules/lvgl/demos
87+
:host-os: unix
88+
:board: native_sim
89+
:gen-args: -DCONFIG_LV_Z_DEMO_FLEX_LAYOUT=y
90+
:goals: run
91+
:compact:
92+
93+
.. zephyr-app-commands::
94+
:zephyr-app: samples/modules/lvgl/demos
95+
:host-os: unix
96+
:board: native_sim
97+
:gen-args: -DCONFIG_LV_Z_DEMO_KEYPAD_AND_ENCODER=y
98+
:goals: run
99+
:compact:
100+
101+
.. zephyr-app-commands::
102+
:zephyr-app: samples/modules/lvgl/demos
103+
:host-os: unix
104+
:board: native_sim
105+
:gen-args: -DCONFIG_LV_Z_DEMO_RENDER=y
106+
:goals: run
107+
:compact:
108+
109+
.. zephyr-app-commands::
110+
:zephyr-app: samples/modules/lvgl/demos
111+
:host-os: unix
112+
:board: native_sim
113+
:gen-args: -DCONFIG_LV_Z_DEMO_SCROLL=y
114+
:goals: run
115+
:compact:
116+
117+
.. zephyr-app-commands::
118+
:zephyr-app: samples/modules/lvgl/demos
119+
:host-os: unix
120+
:board: native_sim
121+
:gen-args: -DCONFIG_LV_Z_DEMO_MULTILANG=y
122+
:goals: run
123+
:compact:
124+
75125
Alternatively, if building from a 64-bit host machine, the previous target
76126
board argument may also be replaced by ``native_sim/native/64``.
77127

samples/modules/lvgl/demos/prj.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ CONFIG_INPUT=y
1313
CONFIG_LV_FONT_MONTSERRAT_12=y
1414
CONFIG_LV_FONT_MONTSERRAT_14=y
1515
CONFIG_LV_FONT_MONTSERRAT_16=y
16+
CONFIG_LV_FONT_MONTSERRAT_18=y
1617
CONFIG_LV_FONT_MONTSERRAT_24=y
1718

1819
# Benchmark Demo

samples/modules/lvgl/demos/sample.yaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,21 @@ tests:
3434
sample.modules.lvgl.demo_widgets:
3535
extra_configs:
3636
- CONFIG_LV_Z_DEMO_WIDGETS=y
37-
37+
sample.modules.lvgl.demo_flex_layout:
38+
extra_configs:
39+
- CONFIG_LV_Z_DEMO_FLEX_LAYOUT=y
40+
sample.modules.lvgl.demo_keypad_encoder:
41+
extra_configs:
42+
- CONFIG_LV_Z_DEMO_KEYPAD_AND_ENCODER=y
43+
sample.modules.lvgl.demo_render:
44+
extra_configs:
45+
- CONFIG_LV_Z_DEMO_RENDER=y
46+
sample.modules.lvgl.demo_scroll:
47+
extra_configs:
48+
- CONFIG_LV_Z_DEMO_SCROLL=y
49+
sample.modules.lvgl.demo_multilang:
50+
extra_configs:
51+
- CONFIG_LV_Z_DEMO_MULTILANG=y
3852
sample.modules.lvgl.demos.st_b_lcd40_dsi1_mb1166:
3953
filter: dt_compat_enabled("orisetech,otm8009a")
4054
platform_allow: stm32h747i_disco/stm32h747xx/m7

samples/modules/lvgl/demos/src/main.c

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,45 @@ LOG_MODULE_REGISTER(app);
1818
int main(void)
1919
{
2020
const struct device *display_dev;
21+
#ifdef CONFIG_LV_Z_DEMO_RENDER_SCENE_DYNAMIC
22+
k_timepoint_t next_scene_switch;
23+
lv_demo_render_scene_t cur_scene = LV_DEMO_RENDER_SCENE_FILL;
24+
#endif /* CONFIG_LV_Z_DEMO_RENDER_SCENE_DYNAMIC */
2125

2226
display_dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_display));
2327
if (!device_is_ready(display_dev)) {
2428
LOG_ERR("Device not ready, aborting test");
2529
return 0;
2630
}
2731

28-
#if defined(CONFIG_LV_USE_DEMO_MUSIC)
32+
#if defined(CONFIG_LV_Z_DEMO_MUSIC)
2933
lv_demo_music();
30-
#elif defined(CONFIG_LV_USE_DEMO_BENCHMARK)
34+
#elif defined(CONFIG_LV_Z_DEMO_BENCHMARK)
3135
lv_demo_benchmark();
32-
#elif defined(CONFIG_LV_USE_DEMO_STRESS)
36+
#elif defined(CONFIG_LV_Z_DEMO_STRESS)
3337
lv_demo_stress();
34-
#elif defined(CONFIG_LV_USE_DEMO_WIDGETS)
38+
#elif defined(CONFIG_LV_Z_DEMO_WIDGETS)
3539
lv_demo_widgets();
40+
#elif defined(CONFIG_LV_Z_DEMO_FLEX_LAYOUT)
41+
lv_demo_flex_layout();
42+
#elif defined(CONFIG_LV_Z_DEMO_KEYPAD_AND_ENCODER)
43+
lv_demo_keypad_encoder();
44+
#elif defined(CONFIG_LV_Z_DEMO_RENDER)
45+
46+
#ifdef CONFIG_LV_Z_DEMO_RENDER_SCENE_DYNAMIC
47+
lv_demo_render(cur_scene, 255);
48+
next_scene_switch =
49+
sys_timepoint_calc(K_SECONDS(CONFIG_LV_Z_DEMO_RENDER_DYNAMIC_SCENE_TIMEOUT));
50+
#else
51+
lv_demo_render(CONFIG_LV_Z_DEMO_RENDER_SCENE_INDEX, 255);
52+
#endif /* CONFIG_LV_Z_DEMO_RENDER_SCENE_DYNAMIC */
53+
54+
#elif defined(CONFIG_LV_Z_DEMO_SCROLL)
55+
lv_demo_scroll();
56+
#elif defined(CONFIG_LV_Z_DEMO_MULTILANG)
57+
lv_demo_multilang();
3658
#else
37-
#error Enable one of the demos CONFIG_LV_USE_DEMO_MUSIC, CONFIG_LV_USE_DEMO_BENCHMARK ,\
38-
CONFIG_LV_USE_DEMO_STRESS, or CONFIG_LV_USE_DEMO_WIDGETS
59+
#error Enable one of the demos CONFIG_LV_Z_DEMO_*
3960
#endif
4061

4162
lv_timer_handler();
@@ -49,6 +70,14 @@ int main(void)
4970
uint32_t sleep_ms = lv_timer_handler();
5071

5172
k_msleep(MIN(sleep_ms, INT32_MAX));
73+
#ifdef CONFIG_LV_Z_DEMO_RENDER_SCENE_DYNAMIC
74+
if (sys_timepoint_expired(next_scene_switch)) {
75+
cur_scene = (cur_scene + 1) % _LV_DEMO_RENDER_SCENE_NUM;
76+
lv_demo_render(cur_scene, 255);
77+
next_scene_switch = sys_timepoint_calc(
78+
K_SECONDS(CONFIG_LV_Z_DEMO_RENDER_DYNAMIC_SCENE_TIMEOUT));
79+
}
80+
#endif /* CONFIG_LV_Z_DEMO_RENDER_SCENE_DYNAMIC */
5281
}
5382

5483
return 0;

0 commit comments

Comments
 (0)