summaryrefslogtreecommitdiff
path: root/lib/lvgl/env_support/rt-thread
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-06-01 15:41:47 +1000
committerjacqueline <me@jacqueline.id.au>2023-06-01 15:41:47 +1000
commitdd27c3530432ea0b09f01e604bf577f31d8ef841 (patch)
treebbf86cf81a78f0ff0b07f31f1c390db473f26fd3 /lib/lvgl/env_support/rt-thread
parent6fd588e970470b15936187980829916d0dbe77bb (diff)
downloadtangara-fw-dd27c3530432ea0b09f01e604bf577f31d8ef841.tar.gz
convert lvgl from submodule to a plain old directory
Diffstat (limited to 'lib/lvgl/env_support/rt-thread')
m---------lib/lvgl0
-rw-r--r--lib/lvgl/env_support/rt-thread/SConscript69
-rw-r--r--lib/lvgl/env_support/rt-thread/lv_rt_thread_conf.h88
-rw-r--r--lib/lvgl/env_support/rt-thread/lv_rt_thread_port.c78
-rw-r--r--lib/lvgl/env_support/rt-thread/squareline/README.md4
-rw-r--r--lib/lvgl/env_support/rt-thread/squareline/SConscript13
-rw-r--r--lib/lvgl/env_support/rt-thread/squareline/ui/lv_ui_entry.c19
7 files changed, 271 insertions, 0 deletions
diff --git a/lib/lvgl b/lib/lvgl
deleted file mode 160000
-Subproject 0732400e7b564dd0e7dc4a924619d8e19c5b23a
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 <rtthread.h>
+#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 <lvgl.h>
+#include <rtthread.h>
+
+#define DBG_TAG "LVGL"
+#define DBG_LVL DBG_INFO
+#include <rtdbg.h>
+
+#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__ */