Browse Source
Added glue logic to interface Zephyr with LittlevGL GUI library This includes: * KConfig options for all lvgl options * Kernel & user space memory management * Zephyr to lvgl FS call mapping * Color space conversion function Signed-off-by: Jan Van Winkel <jan.van_winkel@dxplore.eu>pull/12363/head
21 changed files with 2201 additions and 0 deletions
@ -0,0 +1,11 @@ |
|||||||
|
# |
||||||
|
# Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
# |
||||||
|
# SPDX-License-Identifier: Apache-2.0 |
||||||
|
# |
||||||
|
|
||||||
|
menu "Graphical user interface" |
||||||
|
|
||||||
|
rsource "lvgl/Kconfig" |
||||||
|
|
||||||
|
endmenu |
@ -0,0 +1,175 @@ |
|||||||
|
include(FetchContent) |
||||||
|
|
||||||
|
set(lv_name lvgl) |
||||||
|
|
||||||
|
set(ep_base ${PROJECT_BINARY_DIR}/ext_proj) |
||||||
|
set_property(DIRECTORY PROPERTY "EP_BASE" ${ep_base}) |
||||||
|
|
||||||
|
set(lv_SOURCE_DIR ${ep_base}/Source/${lv_name}) |
||||||
|
set(lv_SUBBUILD_DIR ${ep_base}/Subbuild/${lv_name}) |
||||||
|
|
||||||
|
FetchContent_Declare( |
||||||
|
${lv_name} |
||||||
|
GIT_REPOSITORY https://github.com/littlevgl/lvgl.git |
||||||
|
GIT_TAG v5.2 |
||||||
|
SOURCE_DIR ${lv_SOURCE_DIR} |
||||||
|
BINARY_DIR ${lv_SOURCE_DIR} |
||||||
|
SUBBUILD_DIR ${lv_SUBBUILD_DIR} |
||||||
|
) |
||||||
|
|
||||||
|
FetchContent_GetProperties(${lv_name}) |
||||||
|
if(NOT ${lv_name}_POPULATED) |
||||||
|
FetchContent_Populate(${lv_name}) |
||||||
|
endif() |
||||||
|
|
||||||
|
zephyr_interface_library_named(lvgl) |
||||||
|
|
||||||
|
set(LVGL_SOURCE_DIR ${${lv_name}_SOURCE_DIR}) |
||||||
|
|
||||||
|
target_include_directories(lvgl INTERFACE ${LVGL_SOURCE_DIR}) |
||||||
|
target_include_directories(lvgl INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) |
||||||
|
|
||||||
|
zephyr_compile_definitions(LV_CONF_INCLUDE_SIMPLE=1) |
||||||
|
|
||||||
|
zephyr_library() |
||||||
|
|
||||||
|
zephyr_library_sources( |
||||||
|
|
||||||
|
${LVGL_SOURCE_DIR}/lv_core/lv_group.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_core/lv_indev.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_core/lv_obj.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_core/lv_refr.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_core/lv_style.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_core/lv_vdb.c |
||||||
|
|
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_arc.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_img.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_label.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_line.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_rbasic.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_rect.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_triangle.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_draw/lv_draw_vbasic.c |
||||||
|
|
||||||
|
${LVGL_SOURCE_DIR}/lv_hal/lv_hal_disp.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_hal/lv_hal_indev.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_hal/lv_hal_tick.c |
||||||
|
|
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_anim.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_area.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_circ.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_color.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_font.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_fs.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_ll.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_log.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_math.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_mem.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_task.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_templ.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_misc/lv_txt.c |
||||||
|
|
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_arc.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_bar.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_btn.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_btnm.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_calendar.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_cb.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_chart.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_cont.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_ddlist.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_gauge.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_img.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_imgbtn.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_kb.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_label.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_led.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_line.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_list.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_lmeter.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_mbox.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_objx_templ.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_page.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_preload.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_roller.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_slider.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_sw.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_ta.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_tabview.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_objx/lv_win.c |
||||||
|
|
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_alien.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_default.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_material.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_mono.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_nemo.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_night.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_templ.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_themes/lv_theme_zen.c |
||||||
|
|
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_builtin.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_10 |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_10.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_10_cyrillic.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_10_latin_sup.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_symbol_10.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_20 |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_20.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_20_cyrillic.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_20_latin_sup.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_symbol_20.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_30 |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_30.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_30_cyrillic.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_30_latin_sup.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_symbol_30.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_40 |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_40.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_40_cyrillic.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_dejavu_40_latin_sup.c |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_symbol_40.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_BUILD_IN_FONT_MONOSPACE |
||||||
|
${LVGL_SOURCE_DIR}/lv_fonts/lv_font_monospace_8.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_COLOR_DEPTH_32 |
||||||
|
lvgl_color_32.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_COLOR_DEPTH_16 |
||||||
|
lvgl_color_16.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_COLOR_DEPTH_8 |
||||||
|
lvgl_color_8.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_COLOR_DEPTH_1 |
||||||
|
lvgl_color_1.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_FILESYSTEM |
||||||
|
lvgl_fs.c |
||||||
|
) |
||||||
|
|
||||||
|
zephyr_library_sources(lvgl.c) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_MEM_POOL_USER lvgl_mem_user.c) |
||||||
|
|
||||||
|
zephyr_library_sources_ifdef( CONFIG_LVGL_MEM_POOL_KERNEL lvgl_mem_kernel.c) |
||||||
|
|
||||||
|
zephyr_library_link_libraries(lvgl) |
||||||
|
|
||||||
|
target_link_libraries(lvgl INTERFACE zephyr_interface) |
@ -0,0 +1,341 @@ |
|||||||
|
# |
||||||
|
# Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
# |
||||||
|
# SPDX-License-Identifier: Apache-2.0 |
||||||
|
# |
||||||
|
|
||||||
|
config LVGL |
||||||
|
bool "LittlevGL Support" |
||||||
|
help |
||||||
|
This option enables the LittlevGL GUI library. |
||||||
|
|
||||||
|
if LVGL |
||||||
|
|
||||||
|
module = LVGL |
||||||
|
module-str = lvgl |
||||||
|
source "subsys/logging/Kconfig.template.log_config" |
||||||
|
|
||||||
|
config LVGL_DISPLAY_DEV_NAME |
||||||
|
string "Display device name" |
||||||
|
default "DISPLAY" |
||||||
|
help |
||||||
|
Name of the display device to use for rendering. |
||||||
|
|
||||||
|
config LVGL_HOR_RES |
||||||
|
int "Horizontal Screen Resolution" |
||||||
|
default 320 |
||||||
|
help |
||||||
|
Horizontal screen resolution in pixels |
||||||
|
|
||||||
|
config LVGL_VER_RES |
||||||
|
int "Vertical Screen Resolution" |
||||||
|
default 240 |
||||||
|
help |
||||||
|
Vertical screen resolution in pixels |
||||||
|
|
||||||
|
config LVGL_DPI |
||||||
|
int "DPI" |
||||||
|
default 100 |
||||||
|
help |
||||||
|
Dots per inch (DPI) |
||||||
|
|
||||||
|
choice |
||||||
|
prompt "Color Depth" |
||||||
|
default LVGL_COLOR_DEPTH_32 |
||||||
|
help |
||||||
|
Color depth to be used by library |
||||||
|
|
||||||
|
config LVGL_COLOR_DEPTH_32 |
||||||
|
bool "32-bit" |
||||||
|
|
||||||
|
config LVGL_COLOR_DEPTH_16 |
||||||
|
bool "16-bit" |
||||||
|
|
||||||
|
config LVGL_COLOR_DEPTH_8 |
||||||
|
bool "8-bit" |
||||||
|
|
||||||
|
config LVGL_COLOR_DEPTH_1 |
||||||
|
bool "1-bit" |
||||||
|
|
||||||
|
endchoice |
||||||
|
|
||||||
|
config LVGL_BITS_PER_PIXEL |
||||||
|
int "Bits per pixel" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Number of bits per pixel, in case the number of pixels should be derived |
||||||
|
from the color depth set the number of pixels to zero. |
||||||
|
|
||||||
|
if LVGL_COLOR_DEPTH_16 |
||||||
|
|
||||||
|
config LVGL_COLOR_16_SWAP |
||||||
|
bool "RGB565 byte swap" |
||||||
|
help |
||||||
|
Swap the 2 bytes of a RGB565 pixel. |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
if LVGL_COLOR_DEPTH_32 |
||||||
|
|
||||||
|
config CONFIG_LVGL_COLOR_SCREEN_TRANSP |
||||||
|
bool "Transparency support" |
||||||
|
help |
||||||
|
Enable screen transparency. Useful for OSD or other overlapping GUISs. |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
choice |
||||||
|
prompt "Chroma key color" |
||||||
|
default LVGL_CHROMA_KEY_GREEN |
||||||
|
help |
||||||
|
Color to to use as chroma key |
||||||
|
|
||||||
|
config LVGL_CHROMA_KEY_RED |
||||||
|
bool "Red" |
||||||
|
|
||||||
|
config LVGL_CHROMA_KEY_GREEN |
||||||
|
bool "Green" |
||||||
|
|
||||||
|
config LVGL_CHROMA_KEY_BLUE |
||||||
|
bool "Blue" |
||||||
|
|
||||||
|
config LVGL_CHROMA_KEY_CUSTOM |
||||||
|
bool "Custom" |
||||||
|
|
||||||
|
endchoice |
||||||
|
|
||||||
|
if LVGL_CHROMA_KEY_CUSTOM |
||||||
|
|
||||||
|
config LVGL_CUSTOM_CHROMA_KEY_RED |
||||||
|
hex "Chroma Key Red" |
||||||
|
range 0x00 0xFF |
||||||
|
default 0x00 |
||||||
|
help |
||||||
|
Value of the color red to be used in the chroma key |
||||||
|
|
||||||
|
config LVGL_CUSTOM_CHROMA_KEY_GREEN |
||||||
|
hex "Chroma Key Green" |
||||||
|
range 0x00 0xFF |
||||||
|
default 0xFF |
||||||
|
help |
||||||
|
Value of the color green to be used in the chroma key |
||||||
|
|
||||||
|
config LVGL_CUSTOM_CHROMA_KEY_BLUE |
||||||
|
hex "Chroma Key Blue" |
||||||
|
range 0x00 0xFF |
||||||
|
default 0x00 |
||||||
|
help |
||||||
|
Value of the color blue to be used in the chroma key |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
choice |
||||||
|
prompt "Memory pool" |
||||||
|
default LVGL_MEM_POOL_HEAP_KERNEL |
||||||
|
help |
||||||
|
Memory pool to use for lvgl allocated objects |
||||||
|
|
||||||
|
config LVGL_MEM_POOL_HEAP_KERNEL |
||||||
|
bool "Kernel Heap" |
||||||
|
depends on HEAP_MEM_POOL_SIZE != 0 |
||||||
|
help |
||||||
|
Use k_malloc and k_free to allocate objects on the kernel heap |
||||||
|
|
||||||
|
config LVGL_MEM_POOL_HEAP_LIB_C |
||||||
|
bool "C library Heap" |
||||||
|
depends on NEWLIB_LIBC || (MINIMAL_LIBC_MALLOC_ARENA_SIZE != 0) |
||||||
|
help |
||||||
|
Use C library malloc and free to allocate objects on the C library heap |
||||||
|
|
||||||
|
config LVGL_MEM_POOL_KERNEL |
||||||
|
bool "Kernel space lvgl pool" |
||||||
|
help |
||||||
|
Use a dedicated memory pool in kernel space to allocate lvgl objects |
||||||
|
on |
||||||
|
|
||||||
|
config LVGL_MEM_POOL_USER |
||||||
|
bool "User space lvgl pool" |
||||||
|
help |
||||||
|
Use a dedicated memory pool in user space to allocate lvgl objects on |
||||||
|
|
||||||
|
endchoice |
||||||
|
|
||||||
|
if LVGL_MEM_POOL_KERNEL || LVGL_MEM_POOL_USER |
||||||
|
|
||||||
|
config LVGL_MEM_POOL_MIN_SIZE |
||||||
|
int "Minimum memory pool block size" |
||||||
|
default 16 |
||||||
|
help |
||||||
|
Size of the smallest block in the memory pool in bytes |
||||||
|
|
||||||
|
config LVGL_MEM_POOL_MAX_SIZE |
||||||
|
int "Maximum memory pool block size" |
||||||
|
default 2048 |
||||||
|
help |
||||||
|
Size of the largest block in the memory pool in bytes |
||||||
|
|
||||||
|
config LVGL_MEM_POOL_NUMBER_BLOCKS |
||||||
|
int "Number of max size blocks in memory pool" |
||||||
|
default 1 |
||||||
|
help |
||||||
|
Number of maximum sized blocks in the memory pool. |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_VDB_SIZE |
||||||
|
int "Virtual Display Buffer Size" |
||||||
|
default 10 |
||||||
|
range 1 100 |
||||||
|
help |
||||||
|
Virtual Display Buffer (double buffering) size as a percentage of |
||||||
|
total display size. |
||||||
|
|
||||||
|
config LVGL_VDB_STATIC |
||||||
|
bool "Statically allocate virtual display buffer" |
||||||
|
default y |
||||||
|
help |
||||||
|
Statically allocate virtual display buffer. If disabled pointer should be |
||||||
|
passed via lv_vdb_set_adr(). |
||||||
|
|
||||||
|
config LVGL_DOUBLE_VDB |
||||||
|
bool "Use 2 Virtual Display Buffers" |
||||||
|
help |
||||||
|
Use 2 virtual display buffers to render and flush data in parallel |
||||||
|
|
||||||
|
config LVGL_SCREEN_REFRESH_PERIOD |
||||||
|
int "Screen refresh period" |
||||||
|
default 50 |
||||||
|
help |
||||||
|
Screen refresh period in milliseconds |
||||||
|
|
||||||
|
config LVGL_INPUT_REFRESH_PERIOD |
||||||
|
int "Input device refresh period" |
||||||
|
default 50 |
||||||
|
help |
||||||
|
Refresh period for input devices in milliseconds |
||||||
|
|
||||||
|
config LVGL_INPUT_MARK_PRESSED_POINTS |
||||||
|
bool "Mark pressed points" |
||||||
|
depends on LVGL_DIRECT_DRAW |
||||||
|
help |
||||||
|
Mark the pressed points on the screen. |
||||||
|
|
||||||
|
config LVGL_INPUT_DRAG_THRESHOLD |
||||||
|
int "Drag Threshold" |
||||||
|
default 10 |
||||||
|
help |
||||||
|
Threshold in pixels before entering drag mode |
||||||
|
|
||||||
|
config LVGL_INPUT_DRAG_THROW_SLOW_DOWN |
||||||
|
int "Drag throw slow-down" |
||||||
|
default 20 |
||||||
|
range 0 100 |
||||||
|
help |
||||||
|
Percentage of slow down of a throw following a drag. |
||||||
|
Greater percentage means faster slow-down. |
||||||
|
|
||||||
|
config LVGL_INPUT_LONG_PRESS_TIME |
||||||
|
int "Long press time" |
||||||
|
default 400 |
||||||
|
help |
||||||
|
Period in milliseconds before a press is seen as a long press |
||||||
|
|
||||||
|
config LVGL_INPUT_LONG_RESS_REPEAT_TIME |
||||||
|
int "Long press repeat time" |
||||||
|
default 100 |
||||||
|
help |
||||||
|
Period in milliseconds after which a new trigger is generated |
||||||
|
for a long press |
||||||
|
|
||||||
|
config LVGL_AVG_OBJ_COUNT |
||||||
|
int "Average object counter" |
||||||
|
default 32 |
||||||
|
help |
||||||
|
Average object counter on a screen |
||||||
|
|
||||||
|
config LVGL_UTF_8 |
||||||
|
bool "Enable UTF-8 support" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable UTF-8 support |
||||||
|
|
||||||
|
config LVGL_TEXT_BREAK_CHARACTERS |
||||||
|
string "Text break characters" |
||||||
|
default " ,.;:-_" |
||||||
|
help |
||||||
|
Characters on which a text break can take place |
||||||
|
|
||||||
|
config LVGL_ANTIALIAS |
||||||
|
bool "Enable anti-aliasing" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable anti-aliasing |
||||||
|
|
||||||
|
config LVGL_ANIMATION |
||||||
|
bool "Enable animations" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable animations |
||||||
|
|
||||||
|
config LVGL_SHADOW |
||||||
|
bool "Enable shadows" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable shadows |
||||||
|
|
||||||
|
config LVGL_GROUP |
||||||
|
bool "Enable group support" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable group support. |
||||||
|
Used by keyboard and button input |
||||||
|
|
||||||
|
config LVGL_GPU |
||||||
|
bool "Enable GPU support" |
||||||
|
help |
||||||
|
Enable GPU support |
||||||
|
|
||||||
|
config LVGL_DIRECT_DRAW |
||||||
|
bool "Enable direct draw" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable direct draw support. |
||||||
|
Direct draw bypasses virtual display buffer and directly writes to |
||||||
|
frame buffer |
||||||
|
|
||||||
|
config LVGL_FILESYSTEM |
||||||
|
bool "Enable file system" |
||||||
|
depends on FILE_SYSTEM |
||||||
|
default y if FILE_SYSTEM |
||||||
|
help |
||||||
|
Enable LittlevGL file system |
||||||
|
|
||||||
|
config LVGL_VLA_SUPPORT |
||||||
|
bool "Enable variable length array support" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable variable length array support |
||||||
|
|
||||||
|
config LVGL_COMPILER_NON_CONST_INIT_SUPPORTED |
||||||
|
bool "Enable non constant init" |
||||||
|
default y |
||||||
|
help |
||||||
|
Indicate if initialization with non constant values is supported |
||||||
|
|
||||||
|
rsource "Kconfig.themes" |
||||||
|
|
||||||
|
rsource "Kconfig.fonts" |
||||||
|
|
||||||
|
rsource "Kconfig.objects" |
||||||
|
|
||||||
|
config APP_LINK_WITH_LVGL |
||||||
|
bool "Link 'app' with LVGL" |
||||||
|
default y |
||||||
|
depends on LVGL |
||||||
|
help |
||||||
|
Add LVGL header files to the 'app' include path. It may be |
||||||
|
disabled if the include paths for LVGL are causing aliasing |
||||||
|
issues for 'app'. |
||||||
|
|
||||||
|
endif |
||||||
|
|
@ -0,0 +1,189 @@ |
|||||||
|
# |
||||||
|
# Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
# |
||||||
|
# SPDX-License-Identifier: Apache-2.0 |
||||||
|
# |
||||||
|
|
||||||
|
menu "Fonts" |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONTS |
||||||
|
bool "Enable build-in fonts" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable build-in font support |
||||||
|
|
||||||
|
if LVGL_BUILD_IN_FONTS |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_10 |
||||||
|
bool "Enable build-in 10px fonts" |
||||||
|
help |
||||||
|
Enable build-in font support, size 10 pixels |
||||||
|
|
||||||
|
if LVGL_BUILD_IN_FONT_10 |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_10_ASCII_BPP |
||||||
|
int "ASCII character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_10_LATIN_SUP_BPP |
||||||
|
int "Latin supplement character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_10_CYRILLIC_BPP |
||||||
|
int "Cyrillic character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_10_SYMBOL_BPP |
||||||
|
int "Symbol character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_20 |
||||||
|
bool "Enable build-in 20px fonts" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable build-in font support, size 20 pixels |
||||||
|
|
||||||
|
if LVGL_BUILD_IN_FONT_20 |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_20_ASCII_BPP |
||||||
|
int "ASCII character set BPP" |
||||||
|
default 4 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_20_LATIN_SUP_BPP |
||||||
|
int "Latin supplement character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_20_CYRILLIC_BPP |
||||||
|
int "Cyrillic character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_20_SYMBOL_BPP |
||||||
|
int "Symbol character set BPP" |
||||||
|
default 4 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_30 |
||||||
|
bool "Enable build-in 30px fonts" |
||||||
|
help |
||||||
|
Enable build-in font support, size 30 pixels |
||||||
|
|
||||||
|
if LVGL_BUILD_IN_FONT_30 |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_30_ASCII_BPP |
||||||
|
int "ASCII character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_30_LATIN_SUP_BPP |
||||||
|
int "Latin supplement character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_30_CYRILLIC_BPP |
||||||
|
int "Cyrillic character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_30_SYMBOL_BPP |
||||||
|
int "Symbol character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_40 |
||||||
|
bool "Enable build-in 40px fonts" |
||||||
|
help |
||||||
|
Enable build-in font support, size 40 pixels |
||||||
|
|
||||||
|
if LVGL_BUILD_IN_FONT_40 |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_40_ASCII_BPP |
||||||
|
int "ASCII character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_40_LATIN_SUP_BPP |
||||||
|
int "Latin supplement character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_40_CYRILLIC_BPP |
||||||
|
int "Cyrillic character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_40_SYMBOL_BPP |
||||||
|
int "Symbol character set BPP" |
||||||
|
default 0 |
||||||
|
help |
||||||
|
Bits per pixel (1,2,4,8) for font, 0 will disable font |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_BUILD_IN_FONT_MONOSPACE |
||||||
|
bool "Enable build-in monospace font" |
||||||
|
help |
||||||
|
Enable build-in monospace font support |
||||||
|
|
||||||
|
choice |
||||||
|
prompt "Default LVGL font" |
||||||
|
default LVGL_DEFAULT_FONT_BUILD_IN_20_ASCII |
||||||
|
|
||||||
|
config LVGL_DEFAULT_FONT_BUILD_IN_10_ASCII |
||||||
|
bool "Build-in ASCII font 10" |
||||||
|
depends on LVGL_BUILD_IN_FONT_10 && LVGL_BUILD_IN_FONT_10_ASCII_BPP != 0 |
||||||
|
|
||||||
|
config LVGL_DEFAULT_FONT_BUILD_IN_20_ASCII |
||||||
|
bool "Build-in ASCII font 20" |
||||||
|
depends on LVGL_BUILD_IN_FONT_20 && LVGL_BUILD_IN_FONT_20_ASCII_BPP != 0 |
||||||
|
|
||||||
|
config LVGL_DEFAULT_FONT_BUILD_IN_30_ASCII |
||||||
|
bool "Build-in ASCII font 30" |
||||||
|
depends on LVGL_BUILD_IN_FONT_30 && LVGL_BUILD_IN_FONT_30_ASCII_BPP != 0 |
||||||
|
|
||||||
|
config LVGL_DEFAULT_FONT_BUILD_IN_40_ASCII |
||||||
|
bool "Build-in ASCII font 40" |
||||||
|
depends on LVGL_BUILD_IN_FONT_40 && LVGL_BUILD_IN_FONT_40_ASCII_BPP != 0 |
||||||
|
|
||||||
|
config LVGL_DEFAULT_FONT_BUILD_IN_MONOSPACE |
||||||
|
bool "Build-in monospace font" |
||||||
|
depends on LVGL_BUILD_IN_FONT_MONOSPACE |
||||||
|
|
||||||
|
config LVGL_DEFAULT_FONT_CUSTOM |
||||||
|
bool "Custom font" |
||||||
|
help |
||||||
|
Use a none build-in font as default font. A pointer named lv_default_font_custom_ptr |
||||||
|
should exists as a global variable and pint yo a valid font structure |
||||||
|
|
||||||
|
endchoice |
||||||
|
|
||||||
|
endmenu |
@ -0,0 +1,296 @@ |
|||||||
|
# |
||||||
|
# Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
# |
||||||
|
# SPDX-License-Identifier: Apache-2.0 |
||||||
|
# |
||||||
|
|
||||||
|
menu "Objects" |
||||||
|
|
||||||
|
config LVGL_OBJ_LABEL |
||||||
|
bool "Label Object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable label support |
||||||
|
|
||||||
|
if LVGL_OBJ_LABEL |
||||||
|
|
||||||
|
config LVGL_OBJ_LABEL_SCROLL_SPEED |
||||||
|
int "Label scroll speed" |
||||||
|
default 25 |
||||||
|
help |
||||||
|
Scroll speed in pixels per second if scroll mode is enabled for a label |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_IMAGE |
||||||
|
bool "Image Object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_LABEL |
||||||
|
help |
||||||
|
Enable image object support |
||||||
|
|
||||||
|
if LVGL_OBJ_IMAGE |
||||||
|
|
||||||
|
config LVGL_IMG_CF_INDEXED |
||||||
|
bool "Enable indexed image support" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable support for indexed images |
||||||
|
|
||||||
|
config LVGL_IMG_CF_ALPHA |
||||||
|
bool "Enable alpha indexed image support" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable support for alpha indexed images |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_LINE |
||||||
|
bool "Line Object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable line object support |
||||||
|
|
||||||
|
config LVGL_OBJ_ARC |
||||||
|
bool "Arc Object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable arc object support |
||||||
|
|
||||||
|
config LVGL_OBJ_CONTAINER |
||||||
|
bool "Container Object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable container object support |
||||||
|
|
||||||
|
config LVGL_OBJ_PAGE |
||||||
|
bool "Page object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_CONTAINER |
||||||
|
help |
||||||
|
Enable page object support |
||||||
|
|
||||||
|
config LVGL_OBJ_WINDOW |
||||||
|
bool "Window object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_CONTAINER && LVGL_OBJ_BUTTON && LVGL_OBJ_LABEL && LVGL_OBJ_IMAGE && LVGL_OBJ_PAGE |
||||||
|
help |
||||||
|
Enable window object support |
||||||
|
|
||||||
|
config LVGL_OBJ_TAB_VIEW |
||||||
|
bool "Tab view object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_PAGE && LVGL_OBJ_BUTTON_MATRIX |
||||||
|
help |
||||||
|
Enable tab view object support |
||||||
|
|
||||||
|
if LVGL_OBJ_TAB_VIEW |
||||||
|
|
||||||
|
config LVGL_OBJ_TAB_VIEW_ANIMATION_TIME |
||||||
|
int "Tab view animation time" |
||||||
|
default 300 |
||||||
|
help |
||||||
|
Tab view animation time in milliseconds |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_CALENDAR |
||||||
|
bool "Calendar object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable calendar object support |
||||||
|
|
||||||
|
config LVGL_OBJ_PRELOAD |
||||||
|
bool "Pre-load object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_ARC |
||||||
|
help |
||||||
|
Enabled pre-load object support |
||||||
|
|
||||||
|
if LVGL_OBJ_PRELOAD |
||||||
|
|
||||||
|
config LVGL_OBJ_PRELOAD_DEF_ARC_LENGTH |
||||||
|
int "Default arc length" |
||||||
|
range 1 360 |
||||||
|
default 60 |
||||||
|
help |
||||||
|
Default arc length for pre-load in degrees |
||||||
|
|
||||||
|
config LVGL_OBJ_PRELOAD_DEF_SPIN_TIME |
||||||
|
int "Default spin time" |
||||||
|
default 1000 |
||||||
|
help |
||||||
|
Default spin time for pre-load in ms |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_BAR |
||||||
|
bool "Bar object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable bar object support |
||||||
|
|
||||||
|
config LVGL_OBJ_LINE_METER |
||||||
|
bool "Line meter object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable line meter object support |
||||||
|
|
||||||
|
config LVGL_OBJ_GAUGE |
||||||
|
bool "Gauge object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_BAR && LVGL_OBJ_LINE_METER |
||||||
|
help |
||||||
|
Enable gauge object support |
||||||
|
|
||||||
|
config LVGL_OBJ_CHART |
||||||
|
bool "Chart object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable chart object support |
||||||
|
|
||||||
|
config LVGL_OBJ_LED |
||||||
|
bool "LED object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable LED object support |
||||||
|
|
||||||
|
config LVGL_OBJ_MSG_BOX |
||||||
|
bool "Message box object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_BUTTON_MATRIX && LVGL_OBJ_LABEL |
||||||
|
help |
||||||
|
Enable message box object support |
||||||
|
|
||||||
|
config LVGL_OBJ_TEXT_AREA |
||||||
|
bool "Text area object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_LABEL && LVGL_OBJ_PAGE |
||||||
|
help |
||||||
|
Enable text area object support |
||||||
|
|
||||||
|
if LVGL_OBJ_TEXT_AREA |
||||||
|
|
||||||
|
config LVGL_OBJ_TEXT_AREA_CURSOR_BLINK_TIME |
||||||
|
int "Cursor Blink Time" |
||||||
|
default 400 |
||||||
|
help |
||||||
|
Text area cursor blink time in milliseconds |
||||||
|
|
||||||
|
config LVGL_OBJ_TEXT_AREA_PWD_SHOW_TIME |
||||||
|
int "Label scroll speed" |
||||||
|
default 1500 |
||||||
|
help |
||||||
|
Password character show time in milliseconds |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_BUTTON |
||||||
|
bool "Button object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_CONTAINER |
||||||
|
help |
||||||
|
Enable button object support |
||||||
|
|
||||||
|
if LVGL_OBJ_BUTTON |
||||||
|
|
||||||
|
config LVGL_OBJ_BUTTON_INK_EFFECT |
||||||
|
bool "Enable ink effect" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable ink, press, effect for buttons |
||||||
|
|
||||||
|
config LVGL_OBJ_IMG_BUTTON |
||||||
|
bool "Image Button" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable image button object support |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_BUTTON_MATRIX |
||||||
|
bool "Button Matrix object" |
||||||
|
default y |
||||||
|
help |
||||||
|
Enable button matrix object support |
||||||
|
|
||||||
|
config LVGL_OBJ_KEYBOARD |
||||||
|
bool "Keyboard object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_BUTTON_MATRIX |
||||||
|
help |
||||||
|
Enable keyboard object support |
||||||
|
|
||||||
|
config LVGL_OBJ_CHECK_BOX |
||||||
|
bool "Check box object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_BUTTON && LVGL_OBJ_LABEL |
||||||
|
help |
||||||
|
Enable check box object support |
||||||
|
|
||||||
|
config LVGL_OBJ_LIST |
||||||
|
bool "List object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_BUTTON && LVGL_OBJ_LABEL && LVGL_OBJ_PAGE |
||||||
|
help |
||||||
|
Enable list object support |
||||||
|
|
||||||
|
if LVGL_OBJ_LIST |
||||||
|
|
||||||
|
config LVGL_OBJ_LIST_FOCUS_TIME |
||||||
|
int "List focus time" |
||||||
|
default 100 |
||||||
|
help |
||||||
|
List focus animation time in milliseconds |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_DROP_DOWN_LIST |
||||||
|
bool "Drop Down List object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_LABEL && LVGL_OBJ_PAGE |
||||||
|
help |
||||||
|
Enable drop down list object support |
||||||
|
|
||||||
|
if LVGL_OBJ_DROP_DOWN_LIST |
||||||
|
|
||||||
|
config LVGL_OBJ_DROP_DOWN_LIST_ANIM_TIME |
||||||
|
int "Drop Down list animation time" |
||||||
|
default 200 |
||||||
|
help |
||||||
|
Drop down list animation time in milliseconds |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_ROLLER |
||||||
|
bool "Roller object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_DROP_DOWN_LIST |
||||||
|
help |
||||||
|
Enable roller object support |
||||||
|
|
||||||
|
if LVGL_OBJ_ROLLER |
||||||
|
|
||||||
|
config LVGL_OBJ_ROLLER_ANIM_TIME |
||||||
|
int "Roller animation time" |
||||||
|
default 200 |
||||||
|
help |
||||||
|
Roller animation time in milliseconds |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
config LVGL_OBJ_SLIDER |
||||||
|
bool "Slider object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_BAR |
||||||
|
help |
||||||
|
Enable slider object support |
||||||
|
|
||||||
|
config LVGL_OBJ_SWITCH |
||||||
|
bool "Switch object" |
||||||
|
default y |
||||||
|
depends on LVGL_OBJ_SLIDER |
||||||
|
help |
||||||
|
Enable switch object support |
||||||
|
|
||||||
|
endmenu |
@ -0,0 +1,59 @@ |
|||||||
|
# |
||||||
|
# Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
# |
||||||
|
# SPDX-License-Identifier: Apache-2.0 |
||||||
|
# |
||||||
|
|
||||||
|
menu "Themes" |
||||||
|
|
||||||
|
config LVGL_THEMES |
||||||
|
bool "Enable build-in themes" |
||||||
|
help |
||||||
|
Enable build-in themes |
||||||
|
|
||||||
|
if LVGL_THEMES |
||||||
|
|
||||||
|
config LVGL_THEME_LIVE_UPDATE |
||||||
|
bool "Enable runtime theme switching" |
||||||
|
help |
||||||
|
Enable runtime theme switching, this will consume 8 to 10kB of RAM. |
||||||
|
|
||||||
|
config LVGL_THEME_DEFAULT |
||||||
|
bool "Enable default theme support" |
||||||
|
help |
||||||
|
Enable default theme support. |
||||||
|
Low RAM footprint theme. |
||||||
|
|
||||||
|
config LVGL_THEME_ALIEN |
||||||
|
bool "Enable alien theme support" |
||||||
|
help |
||||||
|
Enable alien theme, dark futuristic, support |
||||||
|
|
||||||
|
config LVGL_THEME_NIGHT |
||||||
|
bool "Enable night theme support" |
||||||
|
help |
||||||
|
Enable night theme, dark elegant, support |
||||||
|
|
||||||
|
config LVGL_THEME_MONO |
||||||
|
bool "Enable mono theme support" |
||||||
|
help |
||||||
|
Enable mono theme, monochrome, support |
||||||
|
|
||||||
|
config LVGL_THEME_MATERIAL |
||||||
|
bool "Enable material theme support" |
||||||
|
help |
||||||
|
Enable material theme, flat theme with bold colors and light shadow, support |
||||||
|
|
||||||
|
config LVGL_THEME_ZEN |
||||||
|
bool "Enable zen theme support" |
||||||
|
help |
||||||
|
Enable zen theme, peaceful light theme, support |
||||||
|
|
||||||
|
config LVGL_THEME_NEMO |
||||||
|
bool "Enable nemo theme support" |
||||||
|
help |
||||||
|
Enable water-like theme based on the movie "Finding Nemo" |
||||||
|
|
||||||
|
endif |
||||||
|
|
||||||
|
endmenu |
@ -0,0 +1,374 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef ZEPHYR_LIB_GUI_LVGL_LV_CONF_H_ |
||||||
|
#define ZEPHYR_LIB_GUI_LVGL_LV_CONF_H_ |
||||||
|
|
||||||
|
/* Dynamic memory */ |
||||||
|
|
||||||
|
#define LV_MEM_CUSTOM 1 |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_MEM_POOL_HEAP_KERNEL |
||||||
|
|
||||||
|
#define LV_MEM_CUSTOM_INCLUDE "kernel.h" |
||||||
|
#define LV_MEM_CUSTOM_ALLOC k_malloc |
||||||
|
#define LV_MEM_CUSTOM_FREE k_free |
||||||
|
|
||||||
|
#elif defined(CONFIG_LVGL_MEM_POOL_HEAP_LIB_C) |
||||||
|
|
||||||
|
#define LV_MEM_CUSTOM_INCLUDE "stdlib.h" |
||||||
|
#define LV_MEM_CUSTOM_ALLOC malloc |
||||||
|
#define LV_MEM_CUSTOM_FREE free |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#define LV_MEM_CUSTOM_INCLUDE "lvgl_mem.h" |
||||||
|
#define LV_MEM_CUSTOM_ALLOC lvgl_malloc |
||||||
|
#define LV_MEM_CUSTOM_FREE lvgl_free |
||||||
|
|
||||||
|
#endif |
||||||
|
|
||||||
|
/* Graphics settings */ |
||||||
|
|
||||||
|
#define LV_HOR_RES CONFIG_LVGL_HOR_RES |
||||||
|
#define LV_VER_RES CONFIG_LVGL_VER_RES |
||||||
|
#define LV_DPI CONFIG_LVGL_DPI |
||||||
|
|
||||||
|
#define LV_VDB_SIZE (CONFIG_LVGL_VDB_SIZE * CONFIG_LVGL_HOR_RES \ |
||||||
|
* CONFIG_LVGL_VER_RES / 100) |
||||||
|
|
||||||
|
#if CONFIG_LVGL_BITS_PER_PIXEL == 0 |
||||||
|
#define LV_VDB_PX_BPP LV_COLOR_SIZE |
||||||
|
#else |
||||||
|
#define LV_VDB_PX_BPP CONFIG_LVGL_BITS_PER_PIXEL |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_VDB_STATIC |
||||||
|
#define LV_VDB_ADR 0 |
||||||
|
#else |
||||||
|
#define LV_VDB_ADR LV_VDB_ADR_INV |
||||||
|
#endif |
||||||
|
|
||||||
|
|
||||||
|
#define LV_VDB_DOUBLE CONFIG_LVGL_DOUBLE_VDB |
||||||
|
#ifdef CONFIG_LVGL_VDB_STATIC |
||||||
|
#define LV_VDB2_ADR 0 |
||||||
|
#else |
||||||
|
#define LV_VDB2_ADR LV_VDB_ADR_INV |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_ANTIALIAS |
||||||
|
#define LV_ANTIALIAS CONFIG_LVGL_ANTIALIAS |
||||||
|
#else |
||||||
|
#define LV_ANTIALIAS 0 |
||||||
|
#endif |
||||||
|
|
||||||
|
#define LV_REFR_PERIOD CONFIG_LVGL_SCREEN_REFRESH_PERIOD |
||||||
|
#define LV_INV_FIFO_SIZE CONFIG_LVGL_AVG_OBJ_COUNT |
||||||
|
|
||||||
|
/* Miscellaneous setting */ |
||||||
|
|
||||||
|
#define LV_INDEV_READ_PERIOD CONFIG_LVGL_INPUT_REFRESH_PERIOD |
||||||
|
#define LV_INDEV_POINT_MARKER CONFIG_LVGL_INPUT_MARK_PRESSED_POINTS |
||||||
|
#define LV_INDEV_DRAG_LIMIT CONFIG_LVGL_INPUT_DRAG_THRESHOLD |
||||||
|
#define LV_INDEV_DRAG_THROW CONFIG_LVGL_INPUT_DRAG_THROW_SLOW_DOWN |
||||||
|
#define LV_INDEV_LONG_PRESS_TIME CONFIG_LVGL_INPUT_LONG_PRESS_TIME |
||||||
|
#define LV_INDEV_LONG_PRESS_REP_TIME CONFIG_LVGL_INPUT_LONG_RESS_REPEAT_TIME |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_COLOR_DEPTH_32 |
||||||
|
#define LV_COLOR_DEPTH 32 |
||||||
|
#elif defined(CONFIG_LVGL_COLOR_DEPTH_16) |
||||||
|
#define LV_COLOR_DEPTH 16 |
||||||
|
#elif defined(CONFIG_LVGL_COLOR_DEPTH_8) |
||||||
|
#define LV_COLOR_DEPTH 8 |
||||||
|
#elif defined(CONFIG_LVGL_COLOR_DEPTH_1) |
||||||
|
#define LV_COLOR_DEPTH 1 |
||||||
|
#else |
||||||
|
#error No color depth defined |
||||||
|
#endif |
||||||
|
|
||||||
|
#define LV_COLOR_16_SWAP CONFIG_LVGL_COLOR_16_SWAP |
||||||
|
#define LV_COLOR_SCREEN_TRANSP CONFIG_LVGL_COLOR_SCREEN_TRANSP |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_CHROMA_KEY_RED |
||||||
|
#define LV_COLOR_TRANSP LV_COLOR_RED |
||||||
|
#elif defined(CONFIG_LVGL_CHROMA_KEY_GREEN) |
||||||
|
#define LV_COLOR_TRANSP LV_COLOR_LIME |
||||||
|
#elif defined(CONFIG_LVGL_CHROMA_KEY_BLUE) |
||||||
|
#define LV_COLOR_TRANSP LV_COLOR_BLUE |
||||||
|
#elif defined(CONFIG_LVGL_CHROMA_KEY_CUSTOM) |
||||||
|
#define LV_COLOR_TRANSP LV_COLOR_MAKE(CONFIG_LVGL_CUSTOM_CHROMA_KEY_RED, \ |
||||||
|
CONFIG_LVGL_CUSTOM_CHROMA_KEY_GREEN, \ |
||||||
|
CONFIG_LVGL_CUSTOM_CHROMA_KEY_BLUE) |
||||||
|
#else |
||||||
|
#error No chroma key defined |
||||||
|
#endif |
||||||
|
|
||||||
|
#define LV_TXT_UTF8 CONFIG_LVGL_UTF_8 |
||||||
|
#define LV_TXT_BREAK_CHARS CONFIG_LVGL_TEXT_BREAK_CHARACTERS |
||||||
|
|
||||||
|
#define USE_LV_ANIMATION CONFIG_LVGL_ANIMATION |
||||||
|
#define USE_LV_SHADOW CONFIG_LVGL_SHADOW |
||||||
|
#define USE_LV_GROUP CONFIG_LVGL_GROUP |
||||||
|
#define USE_LV_GPU CONFIG_LVGL_GPU |
||||||
|
#define USE_LV_REAL_DRAW CONFIG_LVGL_DIRECT_DRAW |
||||||
|
#define USE_LV_FILESYSTEM CONFIG_LVGL_FILESYSTEM |
||||||
|
|
||||||
|
#define LV_ATTRIBUTE_TICK_INC |
||||||
|
#define LV_ATTRIBUTE_TASK_HANDLER |
||||||
|
#define LV_COMPILER_VLA_SUPPORTED CONFIG_LVGL_VLA_SUPPORT |
||||||
|
#define LV_COMPILER_NON_CONST_INIT_SUPPORTED \ |
||||||
|
CONFIG_LVGL_COMPILER_NON_CONST_INIT_SUPPORTED |
||||||
|
|
||||||
|
#define LV_TICK_CUSTOM 1 |
||||||
|
#define LV_TICK_CUSTOM_INCLUDE "kernel.h" |
||||||
|
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (k_uptime_get_32()) |
||||||
|
|
||||||
|
#if CONFIG_LVGL_LOG_LEVEL == 0 |
||||||
|
#define USE_LV_LOG 0 |
||||||
|
#else |
||||||
|
#define USE_LV_LOG 1 |
||||||
|
|
||||||
|
#if CONFIG_LVGL_LOG_LEVEL == 1 |
||||||
|
#define LV_LOG_LEVEL LV_LOG_LEVEL_ERROR |
||||||
|
#elif CONFIG_LVGL_LOG_LEVEL == 2 |
||||||
|
#define LV_LOG_LEVEL LV_LOG_LEVEL_WARN |
||||||
|
#elif CONFIG_LVGL_LOG_LEVEL == 3 |
||||||
|
#define LV_LOG_LEVEL LV_LOG_LEVEL_INFO |
||||||
|
#elif CONFIG_LVGL_LOG_LEVEL == 4 |
||||||
|
#define LV_LOG_LEVEL LV_LOG_LEVEL_TRACE |
||||||
|
#else |
||||||
|
#error Invalid log level defined |
||||||
|
#endif |
||||||
|
|
||||||
|
#define LV_LOG_PRINTF 0 |
||||||
|
#endif |
||||||
|
|
||||||
|
/* Theme support */ |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_THEMES |
||||||
|
|
||||||
|
#define LV_THEME_LIVE_UPDATE CONFIG_LVGL_THEME_LIVE_UPDATE |
||||||
|
|
||||||
|
#define USE_LV_THEME_TEMPL 0 |
||||||
|
#define USE_LV_THEME_DEFAULT CONFIG_LVGL_THEME_DEFAULT |
||||||
|
#define USE_LV_THEME_ALIEN CONFIG_LVGL_THEME_ALIEN |
||||||
|
#define USE_LV_THEME_NIGHT CONFIG_LVGL_THEME_NIGHT |
||||||
|
#define USE_LV_THEME_MONO CONFIG_LVGL_THEME_MONO |
||||||
|
#define USE_LV_THEME_MATERIAL CONFIG_LVGL_THEME_MATERIAL |
||||||
|
#define USE_LV_THEME_ZEN CONFIG_LVGL_THEME_ZEN |
||||||
|
#define USE_LV_THEME_NEMO CONFIG_LVGL_THEME_NEMO |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#define LV_THEME_LIVE_UPDATE 0 |
||||||
|
|
||||||
|
#define USE_LV_THEME_TEMPL 0 |
||||||
|
#define USE_LV_THEME_DEFAULT 0 |
||||||
|
#define USE_LV_THEME_ALIEN 0 |
||||||
|
#define USE_LV_THEME_NIGHT 0 |
||||||
|
#define USE_LV_THEME_MONO 0 |
||||||
|
#define USE_LV_THEME_MATERIAL 0 |
||||||
|
#define USE_LV_THEME_ZEN 0 |
||||||
|
#define USE_LV_THEME_NEMO 0 |
||||||
|
|
||||||
|
#endif |
||||||
|
|
||||||
|
/* Font support */ |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_10_ASCII |
||||||
|
#define LV_FONT_DEFAULT (&lv_font_dejavu_10) |
||||||
|
#elif defined(CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_20_ASCII) |
||||||
|
#define LV_FONT_DEFAULT (&lv_font_dejavu_20) |
||||||
|
#elif defined(CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_30_ASCII) |
||||||
|
#define LV_FONT_DEFAULT (&lv_font_dejavu_30) |
||||||
|
#elif defined(CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_40_ASCII) |
||||||
|
#define LV_FONT_DEFAULT (&lv_font_dejavu_40) |
||||||
|
#elif defined(CONFIG_LVGL_DEFAULT_FONT_BUILD_IN_MONOSPACE) |
||||||
|
#define LV_FONT_DEFAULT (&lv_font_monospace_8) |
||||||
|
#elif defined(CONFIG_LVGL_DEFAULT_FONT_CUSTOM) |
||||||
|
extern void *lv_default_font_custom_ptr; |
||||||
|
#define LV_FONT_DEFAULT ((lv_font_t *) lv_default_font_custom_ptr) |
||||||
|
#else |
||||||
|
#error No defulat font defined |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_BUILD_IN_FONT_10 |
||||||
|
|
||||||
|
#define USE_LV_FONT_DEJAVU_10 \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_10_ASCII_BPP |
||||||
|
#define USE_LV_FONT_DEJAVU_10_LATIN_SUP \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_10_LATIN_SUP_BPP |
||||||
|
#define USE_LV_FONT_DEJAVU_10_CYRILLIC \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_10_CYRILLIC_BPP |
||||||
|
#define USE_LV_FONT_SYMBOL_10 \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_10_SYMBOL_BPP |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#define USE_LV_FONT_DEJAVU_10 0 |
||||||
|
#define USE_LV_FONT_DEJAVU_10_LATIN_SUP 0 |
||||||
|
#define USE_LV_FONT_DEJAVU_10_CYRILLIC 0 |
||||||
|
#define USE_LV_FONT_SYMBOL_10 0 |
||||||
|
|
||||||
|
#endif |
||||||
|
|
||||||
|
#if CONFIG_LVGL_BUILD_IN_FONT_20 |
||||||
|
|
||||||
|
#define USE_LV_FONT_DEJAVU_20 \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_20_ASCII_BPP |
||||||
|
#define USE_LV_FONT_DEJAVU_20_LATIN_SUP \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_20_LATIN_SUP_BPP |
||||||
|
#define USE_LV_FONT_DEJAVU_20_CYRILLIC \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_20_CYRILLIC_BPP |
||||||
|
#define USE_LV_FONT_SYMBOL_20 \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_20_SYMBOL_BPP |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#define USE_LV_FONT_DEJAVU_20 0 |
||||||
|
#define USE_LV_FONT_DEJAVU_20_LATIN_SUP 0 |
||||||
|
#define USE_LV_FONT_DEJAVU_20_CYRILLIC 0 |
||||||
|
#define USE_LV_FONT_SYMBOL_20 0 |
||||||
|
|
||||||
|
#endif |
||||||
|
|
||||||
|
#if CONFIG_LVGL_BUILD_IN_FONT_30 |
||||||
|
|
||||||
|
#define USE_LV_FONT_DEJAVU_30 \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_30_ASCII_BPP |
||||||
|
#define USE_LV_FONT_DEJAVU_30_LATIN_SUP \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_30_LATIN_SUP_BPP |
||||||
|
#define USE_LV_FONT_DEJAVU_30_CYRILLIC \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_30_CYRILLIC_BPP |
||||||
|
#define USE_LV_FONT_SYMBOL_30 \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_30_SYMBOL_BPP |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#define USE_LV_FONT_DEJAVU_30 0 |
||||||
|
#define USE_LV_FONT_DEJAVU_30_LATIN_SUP 0 |
||||||
|
#define USE_LV_FONT_DEJAVU_30_CYRILLIC 0 |
||||||
|
#define USE_LV_FONT_SYMBOL_30 0 |
||||||
|
|
||||||
|
#endif |
||||||
|
|
||||||
|
#if CONFIG_LVGL_BUILD_IN_FONT_40 |
||||||
|
|
||||||
|
#define USE_LV_FONT_DEJAVU_40 \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_40_ASCII_BPP |
||||||
|
#define USE_LV_FONT_DEJAVU_40_LATIN_SUP \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_40_LATIN_SUP_BPP |
||||||
|
#define USE_LV_FONT_DEJAVU_40_CYRILLIC \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_40_CYRILLIC_BPP |
||||||
|
#define USE_LV_FONT_SYMBOL_40 \ |
||||||
|
CONFIG_LVGL_BUILD_IN_FONT_40_SYMBOL_BPP |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#define USE_LV_FONT_DEJAVU_40 0 |
||||||
|
#define USE_LV_FONT_DEJAVU_40_LATIN_SUP 0 |
||||||
|
#define USE_LV_FONT_DEJAVU_40_CYRILLIC 0 |
||||||
|
#define USE_LV_FONT_SYMBOL_40 0 |
||||||
|
|
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_FONT_MONOSPACE_8 CONFIG_LVGL_BUILD_IN_FONT_MONOSPACE |
||||||
|
|
||||||
|
#define LV_FONT_CUSTOM_DECLARE |
||||||
|
|
||||||
|
/* Objects */ |
||||||
|
#define LV_OBJ_FREE_NUM_TYPE uint32_t |
||||||
|
#define LV_OBJ_FREE_PTR 1 |
||||||
|
|
||||||
|
#define USE_LV_LABEL CONFIG_LVGL_OBJ_LABEL |
||||||
|
#if USE_LV_LABEL != 0 |
||||||
|
#define LV_LABEL_SCROLL_SPEED CONFIG_LVGL_OBJ_LABEL_SCROLL_SPEED |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_IMG CONFIG_LVGL_OBJ_IMAGE |
||||||
|
#if USE_LV_IMG != 0 |
||||||
|
#define LV_IMG_CF_INDEXED CONFIG_LVGL_IMG_CF_INDEXED |
||||||
|
#define LV_IMG_CF_ALPHA CONFIG_LVGL_IMG_CF_ALPHA |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_LINE CONFIG_LVGL_OBJ_LINE |
||||||
|
|
||||||
|
#define USE_LV_ARC CONFIG_LVGL_OBJ_ARC |
||||||
|
|
||||||
|
#define USE_LV_CONT CONFIG_LVGL_OBJ_CONTAINER |
||||||
|
|
||||||
|
#define USE_LV_PAGE CONFIG_LVGL_OBJ_PAGE |
||||||
|
|
||||||
|
#define USE_LV_WIN CONFIG_LVGL_OBJ_WINDOW |
||||||
|
|
||||||
|
#define USE_LV_TABVIEW CONFIG_LVGL_OBJ_TAB_VIEW |
||||||
|
#if USE_LV_TABVIEW != 0 |
||||||
|
#define LV_TABVIEW_ANIM_TIME CONFIG_LVGL_OBJ_TAB_VIEW_ANIMATION_TIME |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_CALENDAR CONFIG_LVGL_OBJ_CALENDAR |
||||||
|
|
||||||
|
#define USE_LV_PRELOAD CONFIG_LVGL_OBJ_PRELOAD |
||||||
|
#if USE_LV_PRELOAD != 0 |
||||||
|
#define LV_PRELOAD_DEF_ARC_LENGTH CONFIG_LVGL_OBJ_PRELOAD_DEF_ARC_LENGTH |
||||||
|
#define LV_PRELOAD_DEF_SPIN_TIME CONFIG_LVGL_OBJ_PRELOAD_DEF_SPIN_TIME |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_BAR CONFIG_LVGL_OBJ_BAR |
||||||
|
|
||||||
|
#define USE_LV_LMETER CONFIG_LVGL_OBJ_LINE_METER |
||||||
|
|
||||||
|
#define USE_LV_GAUGE CONFIG_LVGL_OBJ_GAUGE |
||||||
|
|
||||||
|
#define USE_LV_CHART CONFIG_LVGL_OBJ_CHART |
||||||
|
|
||||||
|
#define USE_LV_LED CONFIG_LVGL_OBJ_LED |
||||||
|
|
||||||
|
#define USE_LV_MBOX CONFIG_LVGL_OBJ_MSG_BOX |
||||||
|
|
||||||
|
#define USE_LV_TA CONFIG_LVGL_OBJ_TEXT_AREA |
||||||
|
#if USE_LV_TA != 0 |
||||||
|
#define LV_TA_CURSOR_BLINK_TIME \ |
||||||
|
CONFIG_LVGL_OBJ_TEXT_AREA_CURSOR_BLINK_TIME |
||||||
|
#define LV_TA_PWD_SHOW_TIME \ |
||||||
|
CONFIG_LVGL_OBJ_TEXT_AREA_PWD_SHOW_TIME |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_BTN CONFIG_LVGL_OBJ_BUTTON |
||||||
|
|
||||||
|
#if USE_LV_BTN != 0 |
||||||
|
#define LV_BTN_INK_EFFECT CONFIG_LVGL_OBJ_BUTTON_INK_EFFECT |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_IMGBTN CONFIG_LVGL_OBJ_IMG_BUTTON |
||||||
|
|
||||||
|
#define USE_LV_BTNM CONFIG_LVGL_OBJ_BUTTON_MATRIX |
||||||
|
|
||||||
|
#define USE_LV_KB CONFIG_LVGL_OBJ_KEYBOARD |
||||||
|
|
||||||
|
#define USE_LV_CB CONFIG_LVGL_OBJ_CHECK_BOX |
||||||
|
|
||||||
|
#define USE_LV_LIST CONFIG_LVGL_OBJ_LIST |
||||||
|
#if USE_LV_LIST != 0 |
||||||
|
#define LV_LIST_FOCUS_TIME CONFIG_LVGL_OBJ_LIST_FOCUS_TIME |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_DDLIST CONFIG_LVGL_OBJ_DROP_DOWN_LIST |
||||||
|
#if USE_LV_DDLIST != 0 |
||||||
|
#define LV_DDLIST_ANIM_TIME CONFIG_LVGL_OBJ_DROP_DOWN_LIST_ANIM_TIME |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_ROLLER CONFIG_LVGL_OBJ_ROLLER |
||||||
|
#if USE_LV_ROLLER != 0 |
||||||
|
#define LV_ROLLER_ANIM_TIME CONFIG_LVGL_OBJ_ROLLER_ANIM_TIME |
||||||
|
#endif |
||||||
|
|
||||||
|
#define USE_LV_SLIDER CONFIG_LVGL_OBJ_SLIDER |
||||||
|
|
||||||
|
#define USE_LV_SW CONFIG_LVGL_OBJ_SWITCH |
||||||
|
|
||||||
|
#endif /* ZEPHYR_LIB_GUI_LVGL_LV_CONF_H_ */ |
@ -0,0 +1,89 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <init.h> |
||||||
|
#include <zephyr.h> |
||||||
|
#include <lvgl.h> |
||||||
|
#include <lv_core/lv_refr.h> |
||||||
|
#include "lvgl_color.h" |
||||||
|
#include "lvgl_fs.h" |
||||||
|
|
||||||
|
#define LOG_LEVEL CONFIG_LVGL_LOG_LEVEL |
||||||
|
#include <logging/log.h> |
||||||
|
LOG_MODULE_REGISTER(lvgl); |
||||||
|
|
||||||
|
struct device *lvgl_display_dev; |
||||||
|
|
||||||
|
#if CONFIG_LVGL_LOG_LEVEL != 0 |
||||||
|
static void lvgl_log(lv_log_level_t level, const char *file, uint32_t line, |
||||||
|
const char *dsc) |
||||||
|
{ |
||||||
|
/* Convert LVGL log level to Zephyr log lvel
|
||||||
|
* |
||||||
|
* LVGL log level mapping: |
||||||
|
* * LV_LOG_LEVEL_TRACE 0 |
||||||
|
* * LV_LOG_LEVEL_INFO 1 |
||||||
|
* * LV_LOG_LEVEL_WARN 2 |
||||||
|
* * LV_LOG_LEVEL_ERROR 3 |
||||||
|
* * LV_LOG_LEVEL_NUM 4 |
||||||
|
* |
||||||
|
* Zephyr log level mapping: |
||||||
|
* * LOG_LEVEL_NONE 0 |
||||||
|
* * LOG_LEVEL_ERR 1 |
||||||
|
* * LOG_LEVEL_WRN 2 |
||||||
|
* * LOG_LEVEL_INF 3 |
||||||
|
* * LOG_LEVEL_DBG 4 |
||||||
|
*/ |
||||||
|
u8_t zephyr_level = LOG_LEVEL_DBG - level; |
||||||
|
|
||||||
|
ARG_UNUSED(file); |
||||||
|
ARG_UNUSED(line); |
||||||
|
|
||||||
|
_LOG(zephyr_level, "%s", dsc); |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
|
||||||
|
static int lvgl_init(struct device *dev) |
||||||
|
{ |
||||||
|
lv_disp_drv_t disp_drv; |
||||||
|
|
||||||
|
ARG_UNUSED(dev); |
||||||
|
|
||||||
|
lvgl_display_dev = device_get_binding(CONFIG_LVGL_DISPLAY_DEV_NAME); |
||||||
|
|
||||||
|
if (lvgl_display_dev == NULL) { |
||||||
|
LOG_ERR("Display device not found."); |
||||||
|
return -ENODEV; |
||||||
|
} |
||||||
|
|
||||||
|
#if CONFIG_LVGL_LOG_LEVEL != 0 |
||||||
|
lv_log_register_print(lvgl_log); |
||||||
|
#endif |
||||||
|
|
||||||
|
lv_init(); |
||||||
|
|
||||||
|
#ifdef CONFIG_LVGL_FILESYSTEM |
||||||
|
lvgl_fs_init(); |
||||||
|
#endif |
||||||
|
|
||||||
|
lv_refr_set_round_cb(get_round_func()); |
||||||
|
|
||||||
|
lv_disp_drv_init(&disp_drv); |
||||||
|
disp_drv.disp_flush = get_disp_flush(); |
||||||
|
|
||||||
|
#if CONFIG_LVGL_VDB_SIZE != 0 |
||||||
|
disp_drv.vdb_wr = get_vdb_write(); |
||||||
|
#endif |
||||||
|
if (lv_disp_drv_register(&disp_drv) == NULL) { |
||||||
|
LOG_ERR("Failed to register display device."); |
||||||
|
return -EPERM; |
||||||
|
} |
||||||
|
|
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
SYS_INIT(lvgl_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); |
@ -0,0 +1,26 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef ZEPHYR_LIB_GUI_LVGL_LVGL_COLOR_H_ |
||||||
|
#define ZEPHYR_LIB_GUI_LVGL_LVGL_COLOR_H_ |
||||||
|
|
||||||
|
#include <display.h> |
||||||
|
|
||||||
|
#ifdef __cplusplus |
||||||
|
extern "C" { |
||||||
|
#endif |
||||||
|
|
||||||
|
extern struct device *lvgl_display_dev; |
||||||
|
|
||||||
|
void *get_disp_flush(void); |
||||||
|
void *get_vdb_write(void); |
||||||
|
void *get_round_func(void); |
||||||
|
|
||||||
|
#ifdef __cplusplus |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
#endif /* ZEPHYR_LIB_GUI_LVGL_LVGL_COLOR_H */ |
@ -0,0 +1,100 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <zephyr.h> |
||||||
|
#include <lvgl.h> |
||||||
|
#include "lvgl_color.h" |
||||||
|
|
||||||
|
#if CONFIG_LVGL_BITS_PER_PIXEL == 1 |
||||||
|
|
||||||
|
static void zephyr_disp_flush(s32_t x1, s32_t y1, s32_t x2, s32_t y2, |
||||||
|
const lv_color_t *color_p) |
||||||
|
{ |
||||||
|
u16_t w = x2 - x1 + 1; |
||||||
|
u16_t h = y2 - y1 + 1; |
||||||
|
struct display_capabilities cap; |
||||||
|
struct display_buffer_descriptor desc; |
||||||
|
|
||||||
|
display_get_capabilities(lvgl_display_dev, &cap); |
||||||
|
|
||||||
|
desc.buf_size = (w * h)/8; |
||||||
|
desc.width = w; |
||||||
|
desc.pitch = w; |
||||||
|
desc.height = h; |
||||||
|
display_write(lvgl_display_dev, x1, y1, &desc, (void *) color_p); |
||||||
|
if (cap.screen_info & SCREEN_INFO_DOUBLE_BUFFER) { |
||||||
|
display_write(lvgl_display_dev, x1, y1, &desc, |
||||||
|
(void *) color_p); |
||||||
|
} |
||||||
|
|
||||||
|
lv_flush_ready(); |
||||||
|
} |
||||||
|
|
||||||
|
void zephyr_vdb_write(u8_t *buf, lv_coord_t buf_w, lv_coord_t x, |
||||||
|
lv_coord_t y, lv_color_t color, lv_opa_t opa) |
||||||
|
{ |
||||||
|
u8_t *buf_xy = buf + x + y/8 * buf_w; |
||||||
|
u8_t bit; |
||||||
|
struct display_capabilities cap; |
||||||
|
|
||||||
|
display_get_capabilities(lvgl_display_dev, &cap); |
||||||
|
|
||||||
|
if (cap.screen_info & SCREEN_INFO_MONO_MSB_FIRST) { |
||||||
|
bit = 7 - y%8; |
||||||
|
} else { |
||||||
|
bit = y%8; |
||||||
|
} |
||||||
|
|
||||||
|
if (cap.current_pixel_format == PIXEL_FORMAT_MONO10) { |
||||||
|
if (color.full == 0) { |
||||||
|
*buf_xy &= ~BIT(bit); |
||||||
|
} else { |
||||||
|
*buf_xy |= BIT(bit); |
||||||
|
} |
||||||
|
} else { |
||||||
|
if (color.full == 0) { |
||||||
|
*buf_xy |= BIT(bit); |
||||||
|
} else { |
||||||
|
*buf_xy &= ~BIT(bit); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void zephyr_round_area(lv_area_t *a) |
||||||
|
{ |
||||||
|
struct display_capabilities cap; |
||||||
|
|
||||||
|
display_get_capabilities(lvgl_display_dev, &cap); |
||||||
|
|
||||||
|
if (cap.screen_info & SCREEN_INFO_MONO_VTILED) { |
||||||
|
a->y1 &= ~0x7; |
||||||
|
a->y2 |= 0x7; |
||||||
|
} else { |
||||||
|
a->x1 &= ~0x7; |
||||||
|
a->x2 |= 0x7; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#error "Unsupported pixel format conversion" |
||||||
|
|
||||||
|
#endif /* CONFIG_LVGL_BITS_PER_PIXEL */ |
||||||
|
|
||||||
|
void *get_disp_flush(void) |
||||||
|
{ |
||||||
|
return zephyr_disp_flush; |
||||||
|
} |
||||||
|
|
||||||
|
void *get_vdb_write(void) |
||||||
|
{ |
||||||
|
return zephyr_vdb_write; |
||||||
|
} |
||||||
|
|
||||||
|
void *get_round_func(void) |
||||||
|
{ |
||||||
|
return zephyr_round_area; |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <zephyr.h> |
||||||
|
#include <lvgl.h> |
||||||
|
#include "lvgl_color.h" |
||||||
|
|
||||||
|
#if CONFIG_LVGL_BITS_PER_PIXEL == 0 |
||||||
|
|
||||||
|
static void zephyr_disp_flush(s32_t x1, s32_t y1, s32_t x2, s32_t y2, |
||||||
|
const lv_color_t *color_p) |
||||||
|
{ |
||||||
|
u16_t w = x2 - x1 + 1; |
||||||
|
u16_t h = y2 - y1 + 1; |
||||||
|
struct display_buffer_descriptor desc; |
||||||
|
|
||||||
|
desc.buf_size = 2 * w * h; |
||||||
|
desc.width = w; |
||||||
|
desc.pitch = w; |
||||||
|
desc.height = h; |
||||||
|
display_write(lvgl_display_dev, x1, y1, &desc, (void *) color_p); |
||||||
|
|
||||||
|
lv_flush_ready(); |
||||||
|
} |
||||||
|
|
||||||
|
#define zephyr_vdb_write NULL |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#error "Unsupported pixel format conversion" |
||||||
|
|
||||||
|
#endif /* CONFIG_LVGL_BITS_PER_PIXEL */ |
||||||
|
|
||||||
|
void *get_disp_flush(void) |
||||||
|
{ |
||||||
|
return zephyr_disp_flush; |
||||||
|
} |
||||||
|
|
||||||
|
void *get_vdb_write(void) |
||||||
|
{ |
||||||
|
return zephyr_vdb_write; |
||||||
|
} |
||||||
|
|
||||||
|
void *get_round_func(void) |
||||||
|
{ |
||||||
|
return NULL; |
||||||
|
} |
@ -0,0 +1,87 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <zephyr.h> |
||||||
|
#include <lvgl.h> |
||||||
|
#include "lvgl_color.h" |
||||||
|
|
||||||
|
#if CONFIG_LVGL_BITS_PER_PIXEL == 0 |
||||||
|
|
||||||
|
static void zephyr_disp_flush(s32_t x1, s32_t y1, s32_t x2, s32_t y2, |
||||||
|
const lv_color_t *color_p) |
||||||
|
{ |
||||||
|
u16_t w = x2 - x1 + 1; |
||||||
|
u16_t h = y2 - y1 + 1; |
||||||
|
struct display_buffer_descriptor desc; |
||||||
|
|
||||||
|
desc.buf_size = 4 * w * h; |
||||||
|
desc.width = w; |
||||||
|
desc.pitch = w; |
||||||
|
desc.height = h; |
||||||
|
display_write(lvgl_display_dev, x1, y1, &desc, (void *) color_p); |
||||||
|
|
||||||
|
lv_flush_ready(); |
||||||
|
} |
||||||
|
|
||||||
|
#define zephyr_vdb_write NULL |
||||||
|
|
||||||
|
#elif CONFIG_LVGL_BITS_PER_PIXEL == 24 |
||||||
|
|
||||||
|
static void zephyr_disp_flush(s32_t x1, s32_t y1, s32_t x2, s32_t y2, |
||||||
|
const lv_color_t *color_p) |
||||||
|
{ |
||||||
|
u16_t w = x2 - x1 + 1; |
||||||
|
u16_t h = y2 - y1 + 1; |
||||||
|
struct display_buffer_descriptor desc; |
||||||
|
|
||||||
|
desc.buf_size = 3 * w * h; |
||||||
|
desc.width = w; |
||||||
|
desc.pitch = w; |
||||||
|
desc.height = h; |
||||||
|
display_write(lvgl_display_dev, x1, y1, &desc, (void *) color_p); |
||||||
|
|
||||||
|
lv_flush_ready(); |
||||||
|
} |
||||||
|
|
||||||
|
static void zephyr_vdb_write(u8_t *buf, lv_coord_t buf_w, lv_coord_t x, |
||||||
|
lv_coord_t y, lv_color_t color, lv_opa_t opa) |
||||||
|
{ |
||||||
|
u8_t *buf_xy = buf + x + y * buf_w; |
||||||
|
|
||||||
|
if (opa != LV_OPA_COVER) { |
||||||
|
lv_color_t mix_color; |
||||||
|
|
||||||
|
mix_color.red = *buf_xy; |
||||||
|
mix_color.green = *(buf_xy+1); |
||||||
|
mix_color.blue = *(buf_xy+2); |
||||||
|
color = lv_color_mix(color, mix_color, opa); |
||||||
|
} |
||||||
|
|
||||||
|
*buf_xy = color.red; |
||||||
|
*(buf_xy + 1) = color.green; |
||||||
|
*(buf_xy + 2) = color.blue; |
||||||
|
} |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#error "Unsupported pixel format conversion" |
||||||
|
|
||||||
|
#endif /* CONFIG_LVGL_BITS_PER_PIXEL */ |
||||||
|
|
||||||
|
void *get_disp_flush(void) |
||||||
|
{ |
||||||
|
return zephyr_disp_flush; |
||||||
|
} |
||||||
|
|
||||||
|
void *get_vdb_write(void) |
||||||
|
{ |
||||||
|
return zephyr_vdb_write; |
||||||
|
} |
||||||
|
|
||||||
|
void *get_round_func(void) |
||||||
|
{ |
||||||
|
return NULL; |
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <zephyr.h> |
||||||
|
#include <lvgl.h> |
||||||
|
#include "lvgl_color.h" |
||||||
|
|
||||||
|
#if CONFIG_LVGL_BITS_PER_PIXEL == 0 |
||||||
|
|
||||||
|
static void zephyr_disp_flush(s32_t x1, s32_t y1, s32_t x2, s32_t y2, |
||||||
|
const lv_color_t *color_p) |
||||||
|
{ |
||||||
|
u16_t w = x2 - x1 + 1; |
||||||
|
u16_t h = y2 - y1 + 1; |
||||||
|
struct display_buffer_descriptor desc; |
||||||
|
|
||||||
|
desc.buf_size = w * h; |
||||||
|
desc.width = w; |
||||||
|
desc.pitch = w; |
||||||
|
desc.height = h; |
||||||
|
display_write(lvgl_display_dev, x1, y1, &desc, (void *) color_p); |
||||||
|
|
||||||
|
lv_flush_ready(); |
||||||
|
} |
||||||
|
|
||||||
|
#define zephyr_vdb_write NULL |
||||||
|
|
||||||
|
#else |
||||||
|
|
||||||
|
#error "Unsupported pixel format conversion" |
||||||
|
|
||||||
|
#endif /* CONFIG_LVGL_BITS_PER_PIXEL */ |
||||||
|
|
||||||
|
void *get_disp_flush(void) |
||||||
|
{ |
||||||
|
return zephyr_disp_flush; |
||||||
|
} |
||||||
|
|
||||||
|
void *get_vdb_write(void) |
||||||
|
{ |
||||||
|
return zephyr_vdb_write; |
||||||
|
} |
||||||
|
|
||||||
|
void *get_round_func(void) |
||||||
|
{ |
||||||
|
return NULL; |
||||||
|
} |
@ -0,0 +1,243 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <lvgl.h> |
||||||
|
#include <zephyr.h> |
||||||
|
#include <fs.h> |
||||||
|
|
||||||
|
/* Stub for LVGL ufs (ram based FS) init function
|
||||||
|
* as we use Zephyr FS API instead |
||||||
|
*/ |
||||||
|
void lv_ufs_init(void) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
bool lvgl_fs_ready(void) |
||||||
|
{ |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t errno_to_lv_fs_res(int err) |
||||||
|
{ |
||||||
|
switch (err) { |
||||||
|
case 0: |
||||||
|
return LV_FS_RES_OK; |
||||||
|
case -EIO: |
||||||
|
/*Low level hardware error*/ |
||||||
|
return LV_FS_RES_HW_ERR; |
||||||
|
case -EBADF: |
||||||
|
/*Error in the file system structure */ |
||||||
|
return LV_FS_RES_FS_ERR; |
||||||
|
case -ENOENT: |
||||||
|
/*Driver, file or directory is not exists*/ |
||||||
|
return LV_FS_RES_NOT_EX; |
||||||
|
case -EFBIG: |
||||||
|
/*Disk full*/ |
||||||
|
return LV_FS_RES_FULL; |
||||||
|
case -EACCES: |
||||||
|
/*Access denied. Check 'fs_open' modes and write protect*/ |
||||||
|
return LV_FS_RES_DENIED; |
||||||
|
case -EBUSY: |
||||||
|
/*The file system now can't handle it, try later*/ |
||||||
|
return LV_FS_RES_BUSY; |
||||||
|
case -ENOMEM: |
||||||
|
/*Not enough memory for an internal operation*/ |
||||||
|
return LV_FS_RES_OUT_OF_MEM; |
||||||
|
case -EINVAL: |
||||||
|
/*Invalid parameter among arguments*/ |
||||||
|
return LV_FS_RES_INV_PARAM; |
||||||
|
default: |
||||||
|
return LV_FS_RES_UNKNOWN; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_open(void *file, const char *path, |
||||||
|
lv_fs_mode_t mode) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_open((struct fs_file_t *)file, path); |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_close(void *file) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_close((struct fs_file_t *)file); |
||||||
|
return LV_FS_RES_NOT_IMP; |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_remove(const char *path) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_unlink(path); |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_read(void *file, void *buf, u32_t btr, |
||||||
|
u32_t *br) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_read((struct fs_file_t *)file, buf, btr); |
||||||
|
if (err > 0) { |
||||||
|
if (br != NULL) { |
||||||
|
*br = err; |
||||||
|
} |
||||||
|
err = 0; |
||||||
|
} else if (br != NULL) { |
||||||
|
*br = 0; |
||||||
|
} |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_write(void *file, const void *buf, u32_t btw, |
||||||
|
u32_t *bw) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_write((struct fs_file_t *)file, buf, btw); |
||||||
|
if (err == btw) { |
||||||
|
if (bw != NULL) { |
||||||
|
*bw = btw; |
||||||
|
} |
||||||
|
err = 0; |
||||||
|
} else if (err < 0) { |
||||||
|
if (bw != NULL) { |
||||||
|
*bw = 0; |
||||||
|
} |
||||||
|
} else { |
||||||
|
if (bw != NULL) { |
||||||
|
*bw = err; |
||||||
|
} |
||||||
|
err = -EFBIG; |
||||||
|
} |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_seek(void *file, u32_t pos) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_seek((struct fs_file_t *)file, pos, FS_SEEK_SET); |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_tell(void *file, u32_t *pos_p) |
||||||
|
{ |
||||||
|
*pos_p = fs_tell((struct fs_file_t *)file); |
||||||
|
return LV_FS_RES_OK; |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_trunc(void *file) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
off_t length; |
||||||
|
|
||||||
|
length = fs_tell((struct fs_file_t *) file); |
||||||
|
++length; |
||||||
|
err = fs_truncate((struct fs_file_t *)file, length); |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_size(void *file, u32_t *fsize) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
off_t org_pos; |
||||||
|
|
||||||
|
/* LVGL does not provided path but pointer to file struct as such
|
||||||
|
* we can not use fs_stat, instead use a combination of fs_tell and |
||||||
|
* fs_seek to get the files size. |
||||||
|
*/ |
||||||
|
|
||||||
|
org_pos = fs_tell((struct fs_file_t *) file); |
||||||
|
|
||||||
|
err = fs_seek((struct fs_file_t *) file, 0, FS_SEEK_END); |
||||||
|
if (err != 0) { |
||||||
|
*fsize = 0; |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
*fsize = fs_tell((struct fs_file_t *) file) + 1; |
||||||
|
|
||||||
|
err = fs_seek((struct fs_file_t *) file, org_pos, FS_SEEK_SET); |
||||||
|
|
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_rename(const char *from, const char *to) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_rename(from, to); |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_free(u32_t *total_p, u32_t *free_p) |
||||||
|
{ |
||||||
|
/* We have no easy way of telling the total file system size.
|
||||||
|
* Zephyr can only return this information per mount point. |
||||||
|
*/ |
||||||
|
return LV_FS_RES_NOT_IMP; |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_dir_open(void *dir, const char *path) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_opendir((struct fs_dir_t *)dir, path); |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_dir_read(void *dir, char *fn) |
||||||
|
{ |
||||||
|
/* LVGL expects a string as return parameter but the format of the
|
||||||
|
* string is not documented. |
||||||
|
*/ |
||||||
|
return LV_FS_RES_NOT_IMP; |
||||||
|
} |
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_dir_close(void *dir) |
||||||
|
{ |
||||||
|
int err; |
||||||
|
|
||||||
|
err = fs_closedir((struct fs_dir_t *)dir); |
||||||
|
return errno_to_lv_fs_res(err); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
void lvgl_fs_init(void) |
||||||
|
{ |
||||||
|
lv_fs_drv_t fs_drv; |
||||||
|
|
||||||
|
memset(&fs_drv, 0, sizeof(lv_fs_drv_t)); |
||||||
|
|
||||||
|
fs_drv.file_size = sizeof(struct fs_file_t); |
||||||
|
fs_drv.rddir_size = sizeof(struct fs_dir_t); |
||||||
|
fs_drv.letter = '/'; |
||||||
|
fs_drv.ready = lvgl_fs_ready; |
||||||
|
|
||||||
|
fs_drv.open = lvgl_fs_open; |
||||||
|
fs_drv.close = lvgl_fs_close; |
||||||
|
fs_drv.remove = lvgl_fs_remove; |
||||||
|
fs_drv.read = lvgl_fs_read; |
||||||
|
fs_drv.write = lvgl_fs_write; |
||||||
|
fs_drv.seek = lvgl_fs_seek; |
||||||
|
fs_drv.tell = lvgl_fs_tell; |
||||||
|
fs_drv.trunc = lvgl_fs_trunc; |
||||||
|
fs_drv.size = lvgl_fs_size; |
||||||
|
fs_drv.rename = lvgl_fs_rename; |
||||||
|
fs_drv.free = lvgl_fs_free; |
||||||
|
|
||||||
|
fs_drv.dir_open = lvgl_fs_dir_open; |
||||||
|
fs_drv.dir_read = lvgl_fs_dir_read; |
||||||
|
fs_drv.dir_close = lvgl_fs_dir_close; |
||||||
|
|
||||||
|
lv_fs_add_drv(&fs_drv); |
||||||
|
} |
||||||
|
|
@ -0,0 +1,20 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef ZEPHYR_LIB_GUI_LVGL_LVGL_FS_H_ |
||||||
|
#define ZEPHYR_LIB_GUI_LVGL_LVGL_FS_H_ |
||||||
|
|
||||||
|
#ifdef __cplusplus |
||||||
|
extern "C" { |
||||||
|
#endif |
||||||
|
|
||||||
|
void lvgl_fs_init(void); |
||||||
|
|
||||||
|
#ifdef __cplusplus |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
#endif /* ZEPHYR_LIB_GUI_LVGL_LVGL_FS_H */ |
@ -0,0 +1,24 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef ZEPHYR_LIB_GUI_LVGL_MEM_H_ |
||||||
|
#define ZEPHYR_LIB_GUI_LVGL_MEM_H_ |
||||||
|
|
||||||
|
#ifdef __cplusplus |
||||||
|
extern "C" { |
||||||
|
#endif |
||||||
|
|
||||||
|
#include <stdlib.h> |
||||||
|
|
||||||
|
void *lvgl_malloc(size_t size); |
||||||
|
|
||||||
|
void lvgl_free(void *ptr); |
||||||
|
|
||||||
|
#ifdef __cplusplus |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
#endif /* ZEPHYR_LIB_GUI_LVGL_MEM_H_i */ |
@ -0,0 +1,25 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "lvgl_mem.h" |
||||||
|
#include <zephyr.h> |
||||||
|
#include <init.h> |
||||||
|
#include <misc/mempool.h> |
||||||
|
|
||||||
|
K_MEM_POOL_DEFINE(lvgl_mem_pool, |
||||||
|
CONFIG_LVGL_MEM_POOL_MIN_SIZE, |
||||||
|
CONFIG_LVGL_MEM_POOL_MAX_SIZE, |
||||||
|
CONFIG_LVGL_MEM_POOL_NUMBER_BLOCKS, 4); |
||||||
|
|
||||||
|
void *lvgl_malloc(size_t size) |
||||||
|
{ |
||||||
|
return k_mem_pool_malloc(&lvgl_mem_pool, size); |
||||||
|
} |
||||||
|
|
||||||
|
void lvgl_free(void *ptr) |
||||||
|
{ |
||||||
|
k_free(ptr); |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "lvgl_mem.h" |
||||||
|
#include <zephyr.h> |
||||||
|
#include <init.h> |
||||||
|
#include <misc/mempool.h> |
||||||
|
|
||||||
|
K_MUTEX_DEFINE(lvgl_mem_pool_mutex); |
||||||
|
SYS_MEM_POOL_DEFINE(lvgl_mem_pool, &lvgl_mem_pool_mutex, |
||||||
|
CONFIG_LVGL_MEM_POOL_MIN_SIZE, |
||||||
|
CONFIG_LVGL_MEM_POOL_MAX_SIZE, |
||||||
|
CONFIG_LVGL_MEM_POOL_NUMBER_BLOCKS, 4, .data); |
||||||
|
|
||||||
|
void *lvgl_malloc(size_t size) |
||||||
|
{ |
||||||
|
return sys_mem_pool_alloc(&lvgl_mem_pool, size); |
||||||
|
} |
||||||
|
|
||||||
|
void lvgl_free(void *ptr) |
||||||
|
{ |
||||||
|
sys_mem_pool_free(ptr); |
||||||
|
} |
||||||
|
|
||||||
|
static int lvgl_mem_pool_init(struct device *unused) |
||||||
|
{ |
||||||
|
#ifdef CONFIG_USERSPACE |
||||||
|
k_object_access_all_grant(&lvgl_mem_pool_mutex); |
||||||
|
#endif |
||||||
|
sys_mem_pool_init(&lvgl_mem_pool); |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
SYS_INIT(lvgl_mem_pool_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); |
Loading…
Reference in new issue