From dd27c3530432ea0b09f01e604bf577f31d8ef841 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 1 Jun 2023 15:41:47 +1000 Subject: convert lvgl from submodule to a plain old directory --- lib/lvgl | 1 - lib/lvgl/env_support/rt-thread/SConscript | 69 +++++++++++++++++ lib/lvgl/env_support/rt-thread/lv_rt_thread_conf.h | 88 ++++++++++++++++++++++ lib/lvgl/env_support/rt-thread/lv_rt_thread_port.c | 78 +++++++++++++++++++ .../env_support/rt-thread/squareline/README.md | 4 + .../env_support/rt-thread/squareline/SConscript | 13 ++++ .../rt-thread/squareline/ui/lv_ui_entry.c | 19 +++++ 7 files changed, 271 insertions(+), 1 deletion(-) delete mode 160000 lib/lvgl create mode 100644 lib/lvgl/env_support/rt-thread/SConscript create mode 100644 lib/lvgl/env_support/rt-thread/lv_rt_thread_conf.h create mode 100644 lib/lvgl/env_support/rt-thread/lv_rt_thread_port.c create mode 100644 lib/lvgl/env_support/rt-thread/squareline/README.md create mode 100644 lib/lvgl/env_support/rt-thread/squareline/SConscript create mode 100644 lib/lvgl/env_support/rt-thread/squareline/ui/lv_ui_entry.c (limited to 'lib/lvgl/env_support/rt-thread') diff --git a/lib/lvgl b/lib/lvgl deleted file mode 160000 index 0732400e..00000000 --- a/lib/lvgl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0732400e7b564dd0e7dc4a924619d8e19c5b23a0 diff --git a/lib/lvgl/env_support/rt-thread/SConscript b/lib/lvgl/env_support/rt-thread/SConscript new file mode 100644 index 00000000..378c36f3 --- /dev/null +++ b/lib/lvgl/env_support/rt-thread/SConscript @@ -0,0 +1,69 @@ +from building import * +import rtconfig +import os + +src = [] +inc = [] +group = [] + +cwd = GetCurrentDir() # get current dir path + +port_src = Glob('*.c') +port_inc = [cwd] +group = group + DefineGroup('LVGL-port', port_src, depend = ['PKG_USING_LVGL'], CPPPATH = port_inc) + +# check if .h or .hpp files exsit +def check_h_hpp_exsit(path): + file_dirs = os.listdir(path) + for file_dir in file_dirs: + if os.path.splitext(file_dir)[1] in ['.h', '.hpp']: + return True + return False + +lvgl_cwd = cwd + '/../../' + +lvgl_src_cwd = lvgl_cwd + 'src/' +inc = inc + [lvgl_src_cwd] +for root, dirs, files in os.walk(lvgl_src_cwd): + for dir in dirs: + current_path = os.path.join(root, dir) + src = src + Glob(os.path.join(current_path,'*.c')) # add all .c files + if check_h_hpp_exsit(current_path): # add .h and .hpp path + inc = inc + [current_path] + + +if GetDepend('PKG_LVGL_USING_EXAMPLES'): + lvgl_src_cwd = lvgl_cwd + 'examples/' + inc = inc + [lvgl_src_cwd] + for root, dirs, files in os.walk(lvgl_src_cwd): + for dir in dirs: + current_path = os.path.join(root, dir) + src = src + Glob(os.path.join(current_path,'*.c')) + if check_h_hpp_exsit(current_path): + inc = inc + [current_path] + +if GetDepend('PKG_LVGL_USING_DEMOS'): + lvgl_src_cwd = lvgl_cwd + 'demos/' + inc = inc + [lvgl_src_cwd] + for root, dirs, files in os.walk(lvgl_src_cwd): + for dir in dirs: + current_path = os.path.join(root, dir) + src = src + Glob(os.path.join(current_path,'*.c')) + if check_h_hpp_exsit(current_path): + inc = inc + [current_path] + +LOCAL_CFLAGS = '' +if rtconfig.PLATFORM == 'gcc' or rtconfig.PLATFORM == 'armclang': # GCC or Keil AC6 + LOCAL_CFLAGS += ' -std=c99' +elif rtconfig.PLATFORM == 'armcc': # Keil AC5 + LOCAL_CFLAGS += ' --c99 --gnu' + +group = group + DefineGroup('LVGL', src, depend = ['PKG_USING_LVGL'], CPPPATH = inc, LOCAL_CFLAGS = LOCAL_CFLAGS) + +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +Return('group') diff --git a/lib/lvgl/env_support/rt-thread/lv_rt_thread_conf.h b/lib/lvgl/env_support/rt-thread/lv_rt_thread_conf.h new file mode 100644 index 00000000..92da372d --- /dev/null +++ b/lib/lvgl/env_support/rt-thread/lv_rt_thread_conf.h @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2021-10-15 Meco Man The first version + */ + +#ifndef LV_RT_THREAD_CONF_H +#define LV_RT_THREAD_CONF_H + +#ifdef __RTTHREAD__ + +#define LV_RTTHREAD_INCLUDE +#include LV_RTTHREAD_INCLUDE + +/*========================= + MEMORY SETTINGS + *=========================*/ + +#ifdef RT_USING_HEAP +# define LV_MEM_CUSTOM 1 +# define LV_MEM_CUSTOM_INCLUDE LV_RTTHREAD_INCLUDE +# define LV_MEM_CUSTOM_ALLOC rt_malloc +# define LV_MEM_CUSTOM_FREE rt_free +# define LV_MEM_CUSTOM_REALLOC rt_realloc +#endif + +/*==================== + HAL SETTINGS + *====================*/ + +#define LV_TICK_CUSTOM 1 +#define LV_TICK_CUSTOM_INCLUDE LV_RTTHREAD_INCLUDE +#define LV_TICK_CUSTOM_SYS_TIME_EXPR (rt_tick_get_millisecond()) /*Expression evaluating to current system time in ms*/ + +#ifdef PKG_LVGL_DISP_REFR_PERIOD +#define LV_DISP_DEF_REFR_PERIOD PKG_LVGL_DISP_REFR_PERIOD +#endif + +/*======================= + * FEATURE CONFIGURATION + *=======================*/ + +/*------------- + * Asserts + *-----------*/ + +#define LV_ASSERT_HANDLER_INCLUDE LV_RTTHREAD_INCLUDE +#define LV_ASSERT_HANDLER RT_ASSERT(0); + +/*------------- + * Others + *-----------*/ + +#define LV_SPRINTF_CUSTOM 1 +#define LV_SPRINTF_INCLUDE LV_RTTHREAD_INCLUDE +#define lv_snprintf rt_snprintf +#define lv_vsnprintf rt_vsnprintf +#define LV_SPRINTF_USE_FLOAT 0 + +/*===================== + * COMPILER SETTINGS + *====================*/ + +#ifdef ARCH_CPU_BIG_ENDIAN +# define LV_BIG_ENDIAN_SYSTEM 1 +#else +# define LV_BIG_ENDIAN_SYSTEM 0 +#endif + +#define LV_ATTRIBUTE_MEM_ALIGN ALIGN(4) + +/*================== +* EXAMPLES +*==================*/ + +#ifdef PKG_LVGL_USING_EXAMPLES +# define LV_BUILD_EXAMPLES 1 +#endif + +/*--END OF LV_RT_THREAD_CONF_H--*/ + +#endif /*__RTTHREAD__*/ + +#endif /*LV_CONF_H*/ diff --git a/lib/lvgl/env_support/rt-thread/lv_rt_thread_port.c b/lib/lvgl/env_support/rt-thread/lv_rt_thread_port.c new file mode 100644 index 00000000..98a1439b --- /dev/null +++ b/lib/lvgl/env_support/rt-thread/lv_rt_thread_port.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: MIT + * + * Change Logs: + * Date Author Notes + * 2021-10-18 Meco Man the first version + * 2022-05-10 Meco Man improve rt-thread initialization process + */ + +#ifdef __RTTHREAD__ + +#include +#include + +#define DBG_TAG "LVGL" +#define DBG_LVL DBG_INFO +#include + +#ifndef PKG_LVGL_THREAD_STACK_SIZE +#define PKG_LVGL_THREAD_STACK_SIZE 4096 +#endif /* PKG_LVGL_THREAD_STACK_SIZE */ + +#ifndef PKG_LVGL_THREAD_PRIO +#define PKG_LVGL_THREAD_PRIO (RT_THREAD_PRIORITY_MAX*2/3) +#endif /* PKG_LVGL_THREAD_PRIO */ + +extern void lv_port_disp_init(void); +extern void lv_port_indev_init(void); +extern void lv_user_gui_init(void); + +static struct rt_thread lvgl_thread; +static ALIGN(8) rt_uint8_t lvgl_thread_stack[PKG_LVGL_THREAD_STACK_SIZE]; + +#if LV_USE_LOG +static void lv_rt_log(const char *buf) +{ + LOG_I(buf); +} +#endif /* LV_USE_LOG */ + +static void lvgl_thread_entry(void *parameter) +{ +#if LV_USE_LOG + lv_log_register_print_cb(lv_rt_log); +#endif /* LV_USE_LOG */ + lv_init(); + lv_port_disp_init(); + lv_port_indev_init(); + lv_user_gui_init(); + + /* handle the tasks of LVGL */ + while(1) + { + lv_task_handler(); + rt_thread_mdelay(LV_DISP_DEF_REFR_PERIOD); + } +} + +static int lvgl_thread_init(void) +{ + rt_err_t err; + + err = rt_thread_init(&lvgl_thread, "LVGL", lvgl_thread_entry, RT_NULL, + &lvgl_thread_stack[0], sizeof(lvgl_thread_stack), PKG_LVGL_THREAD_PRIO, 0); + if(err != RT_EOK) + { + LOG_E("Failed to create LVGL thread"); + return -1; + } + rt_thread_startup(&lvgl_thread); + + return 0; +} +INIT_ENV_EXPORT(lvgl_thread_init); + +#endif /*__RTTHREAD__*/ diff --git a/lib/lvgl/env_support/rt-thread/squareline/README.md b/lib/lvgl/env_support/rt-thread/squareline/README.md new file mode 100644 index 00000000..e55796b6 --- /dev/null +++ b/lib/lvgl/env_support/rt-thread/squareline/README.md @@ -0,0 +1,4 @@ +This folder is for LVGL SquareLine Studio + +SquareLine Studio can automatically put the generated C files into `ui` folder, so that rt-thread will automatically detect them; or, as a user, you can move the generated C files into `ui` folder manually. + diff --git a/lib/lvgl/env_support/rt-thread/squareline/SConscript b/lib/lvgl/env_support/rt-thread/squareline/SConscript new file mode 100644 index 00000000..89a50997 --- /dev/null +++ b/lib/lvgl/env_support/rt-thread/squareline/SConscript @@ -0,0 +1,13 @@ +from building import * + +cwd = GetCurrentDir() +group = [] +src = [] +CPPPATH =[] + +src += Glob(cwd + '/ui/*.c') +CPPPATH += [cwd+'/ui'] + +group = group + DefineGroup('LVGL-SquareLine', src, depend = ['PKG_USING_LVGL_SQUARELINE'], CPPPATH = CPPPATH) + +Return('group') diff --git a/lib/lvgl/env_support/rt-thread/squareline/ui/lv_ui_entry.c b/lib/lvgl/env_support/rt-thread/squareline/ui/lv_ui_entry.c new file mode 100644 index 00000000..838b53c9 --- /dev/null +++ b/lib/lvgl/env_support/rt-thread/squareline/ui/lv_ui_entry.c @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-05-13 Meco Man First version + */ + +#ifdef __RTTHREAD__ + +void lv_user_gui_init(void) +{ + extern void ui_init(void); + ui_init(); +} + +#endif /* __RTTHREAD__ */ -- cgit v1.2.3