-
Notifications
You must be signed in to change notification settings - Fork 193
Update/micropython v1.24.1 usermod #367
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: update/micropython_v1.24.1_usermod
Are you sure you want to change the base?
Changes from 9 commits
2b8533e
c021cd3
485ad09
2cac845
cd0c330
51323b1
f0b778a
fffb4db
75ba63a
65353ba
86527dd
9854ed9
0dad277
537a669
d6f8170
bc23bcf
6fa77d7
4940c67
e4b7e02
c15cae0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +0,0 @@ | ||
| [submodule "lvgl"] | ||
| path = lvgl | ||
| url = https://github.com/lvgl/lvgl.git | ||
| [submodule "micropython/pycparser"] | ||
| path = pycparser | ||
| url = https://github.com/eliben/pycparser.git | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| cmake_minimum_required(VERSION 3.12) | ||
| project (lv_emscripten) | ||
|
|
||
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -s USE_SDL=2") | ||
|
|
||
| include_directories(${PROJECT_SOURCE_DIR}) | ||
|
|
||
| add_subdirectory(lvgl) | ||
| file(GLOB MY_SOURCES "./*.c") | ||
| set(SOURCES ${MY_SOURCES}) | ||
|
|
||
| add_executable(index ${SOURCES} ${INCLUDES}) | ||
|
|
||
| if(NOT LVGL_CHOSEN_DEMO) | ||
| set(LVGL_CHOSEN_DEMO lv_demo_widgets) | ||
| endif() | ||
| set_source_files_properties(main.c PROPERTIES COMPILE_FLAGS -DCHOSEN_DEMO=${LVGL_CHOSEN_DEMO}) | ||
|
|
||
| set(CMAKE_EXECUTABLE_SUFFIX ".html") | ||
| target_link_libraries(index | ||
| lvgl | ||
| lvgl_examples | ||
| lvgl_demos | ||
| lvgl_thorvg | ||
| SDL2 | ||
| ) | ||
| set_target_properties(index PROPERTIES LINK_FLAGS "--shell-file ${PROJECT_SOURCE_DIR}/lvgl/.devcontainer/lvgl_shell.html -s SINGLE_FILE=1") | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| cd build | ||
| emcmake cmake .. | ||
| emmake make -j$(nproc) | ||
| echo "Built succesfully, opening index.html" | ||
| code index.html |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
| "configurations": [ | ||
| { | ||
| "name": "Linux", | ||
| "includePath": [ | ||
| "${workspaceFolder}/**", | ||
| "/usr/local/emsdk/upstream/emscripten/cache/sysroot/include/" | ||
| ], | ||
| "defines": [], | ||
| "compilerPath": "/usr/bin/clang", | ||
| "cStandard": "c17", | ||
| "cppStandard": "c++14", | ||
| "intelliSenseMode": "linux-clang-x64" | ||
| } | ||
| ], | ||
| "version": 4 | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,107 @@ | ||
|
|
||
| /** | ||
| * @file main | ||
| * | ||
| */ | ||
|
|
||
| /********************* | ||
| * INCLUDES | ||
| *********************/ | ||
| #include <stdlib.h> | ||
| #include <unistd.h> | ||
| #define SDL_MAIN_HANDLED /*To fix SDL's "undefined reference to WinMain" issue*/ | ||
| #include <SDL2/SDL.h> | ||
| #include <emscripten.h> | ||
| #include "lvgl/lvgl.h" | ||
| #include "lvgl/demos/lv_demos.h" | ||
| #include "lvgl/examples/lv_examples.h" | ||
|
|
||
| /********************* | ||
| * DEFINES | ||
| *********************/ | ||
|
|
||
| /*On OSX SDL needs different handling*/ | ||
| #if defined(__APPLE__) && defined(TARGET_OS_MAC) | ||
| # if __APPLE__ && TARGET_OS_MAC | ||
| #define SDL_APPLE | ||
| # endif | ||
| #endif | ||
|
|
||
| /********************** | ||
| * TYPEDEFS | ||
| **********************/ | ||
|
|
||
| /********************** | ||
| * STATIC PROTOTYPES | ||
| **********************/ | ||
| static void hal_init(void); | ||
| static int tick_thread(void * data); | ||
| static void memory_monitor(lv_timer_t * param); | ||
|
|
||
| /********************** | ||
| * STATIC VARIABLES | ||
| **********************/ | ||
| static lv_display_t * disp1; | ||
|
|
||
| int monitor_hor_res, monitor_ver_res; | ||
|
|
||
| /********************** | ||
| * MACROS | ||
| **********************/ | ||
|
|
||
| /********************** | ||
| * GLOBAL FUNCTIONS | ||
| **********************/ | ||
| void do_loop(void *arg); | ||
|
|
||
| /* Allows disabling CHOSEN_DEMO */ | ||
| static void lv_example_noop(void) { | ||
| } | ||
|
|
||
| int main(int argc, char ** argv) | ||
| { | ||
|
|
||
| monitor_hor_res = 800; | ||
| monitor_ver_res = 480; | ||
| printf("Starting with screen resolution of %dx%d px\n", monitor_hor_res, monitor_ver_res); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P2: Prompt for AI agents |
||
|
|
||
| /*Initialize LittlevGL*/ | ||
| lv_init(); | ||
|
|
||
| /*Initialize the HAL (display, input devices, tick) for LittlevGL*/ | ||
| hal_init(); | ||
|
|
||
| lv_demo_widgets(); | ||
|
|
||
| emscripten_set_main_loop_arg(do_loop, NULL, -1, true); | ||
| } | ||
|
|
||
| void do_loop(void *arg) | ||
| { | ||
| /* Periodically call the lv_timer handler. | ||
| * It could be done in a timer interrupt or an OS task too.*/ | ||
| lv_timer_handler(); | ||
| } | ||
|
|
||
| /********************** | ||
| * STATIC FUNCTIONS | ||
| **********************/ | ||
|
|
||
|
|
||
| /** | ||
| * Initialize the Hardware Abstraction Layer (HAL) for the Littlev graphics library | ||
| */ | ||
| static void hal_init(void) | ||
| { | ||
| lv_display_t * disp = lv_sdl_window_create(monitor_hor_res, monitor_ver_res); | ||
|
|
||
| lv_group_t * g = lv_group_create(); | ||
| lv_group_set_default(g); | ||
|
|
||
| lv_sdl_mouse_create(); | ||
| lv_indev_t * mousewheel = lv_sdl_mousewheel_create(); | ||
| lv_indev_set_group(mousewheel, lv_group_get_default()); | ||
|
|
||
| lv_indev_t * keyboard = lv_sdl_keyboard_create(); | ||
| lv_indev_set_group(keyboard, lv_group_get_default()); | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| { | ||
| "files.associations": { | ||
| "sdl.h": "c" | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| { | ||
| "image": "mcr.microsoft.com/devcontainers/universal:2", | ||
| "features": { | ||
| "ghcr.io/ebaskoro/devcontainer-features/emscripten:1": {} | ||
| }, | ||
| "postCreateCommand": "chmod +x /workspace/lvgl_app/lvgl/.devcontainer/setup.sh; /workspace/lvgl_app/lvgl/.devcontainer/setup.sh", | ||
| "postStartCommand": ". /usr/local/emsdk/emsdk_env.sh;", | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P2: Sourcing Prompt for AI agents |
||
|
|
||
| // Configure tool-specific properties. | ||
| "customizations": { | ||
| // Configure properties specific to VS Code. | ||
| "vscode": { | ||
| // Add the IDs of extensions you want installed when the container is created. | ||
| "extensions": [ | ||
| //"searKing.preview-vscode" | ||
| "analytic-signal.preview-html" | ||
| ] | ||
| } | ||
| }, | ||
|
|
||
| "hostRequirements": { | ||
| "cpus": 4 | ||
| }, | ||
|
|
||
| "workspaceMount": "source=${localWorkspaceFolder},target=/workspace/lvgl_app/lvgl,type=bind", | ||
| "workspaceFolder": "/workspace/lvgl_app" | ||
|
|
||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| LV_COLOR_DEPTH 32 | ||
| LV_MEM_SIZE (1024 * 1024) | ||
| LV_DRAW_THREAD_STACK_SIZE (64 * 1024) | ||
| LV_USE_MATRIX 1 | ||
| LV_USE_FLOAT 1 | ||
| LV_USE_LOTTIE 1 | ||
|
|
||
| LV_USE_DRAW_SW_COMPLEX_GRADIENTS 1 | ||
| LV_OBJ_STYLE_CACHE 1 | ||
| LV_USE_LOG 1 | ||
| LV_LOG_PRINTF 1 | ||
| LV_USE_PERF_MONITOR 1 | ||
| LV_USE_SYSMON 1 | ||
|
|
||
| LV_USE_ASSERT_MEM_INTEGRITY 1 | ||
| LV_USE_ASSERT_OBJ 1 | ||
| LV_USE_ASSERT_STYLE 1 | ||
| LV_FONT_MONTSERRAT_12 1 | ||
| LV_FONT_MONTSERRAT_14 1 | ||
| LV_FONT_MONTSERRAT_16 1 | ||
| LV_FONT_MONTSERRAT_18 1 | ||
| LV_FONT_MONTSERRAT_20 1 | ||
| LV_FONT_MONTSERRAT_22 1 | ||
| LV_FONT_MONTSERRAT_24 1 | ||
| LV_FONT_MONTSERRAT_26 1 | ||
| LV_FONT_MONTSERRAT_28 1 | ||
| LV_FONT_MONTSERRAT_30 1 | ||
| LV_FONT_MONTSERRAT_32 1 | ||
| LV_FONT_MONTSERRAT_34 1 | ||
| LV_FONT_MONTSERRAT_36 1 | ||
| LV_FONT_MONTSERRAT_38 1 | ||
| LV_FONT_MONTSERRAT_40 1 | ||
| LV_FONT_MONTSERRAT_42 1 | ||
| LV_FONT_MONTSERRAT_44 1 | ||
| LV_FONT_MONTSERRAT_46 1 | ||
| LV_FONT_MONTSERRAT_48 1 | ||
| LV_FONT_MONTSERRAT_28_COMPRESSED 1 | ||
| LV_FONT_DEJAVU_16_PERSIAN_HEBREW 1 | ||
| LV_FONT_SIMSUN_16_CJK 1 | ||
| LV_FONT_UNSCII_8 1 | ||
|
|
||
| LV_USE_IMGFONT 1 | ||
| LV_USE_FS_STDIO 1 | ||
| LV_FS_STDIO_LETTER 'A' | ||
| LV_USE_FS_MEMFS 1 | ||
| LV_FS_MEMFS_LETTER 'M' | ||
| LV_USE_THORVG_INTERNAL 1 | ||
| LV_USE_LZ4_INTERNAL 1 | ||
| LV_USE_VECTOR_GRAPHIC 1 | ||
| LV_USE_TINY_TTF 1 | ||
| LV_USE_BARCODE 1 | ||
| LV_USE_QRCODE 1 | ||
| LV_USE_RLE 1 | ||
| LV_BIN_DECODER_RAM_LOAD 1 | ||
| LV_USE_TJPGD 1 | ||
| LV_USE_BMP 1 | ||
| LV_USE_LODEPNG 1 | ||
| LV_USE_SDL 1 | ||
|
|
||
| LV_USE_DEMO_WIDGETS 1 | ||
| LV_USE_DEMO_KEYPAD_AND_ENCODER 1 | ||
| LV_USE_DEMO_BENCHMARK 1 | ||
| LV_USE_DEMO_RENDER 1 | ||
| LV_USE_DEMO_STRESS 1 | ||
| LV_USE_DEMO_MUSIC 1 | ||
| LV_USE_DEMO_FLEX_LAYOUT 1 | ||
| LV_USE_DEMO_MULTILANG 1 | ||
| LV_USE_DEMO_TRANSFORM 1 | ||
| LV_USE_DEMO_SCROLL 1 | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| <html> | ||
| <head> | ||
| <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no'/> | ||
| <style type="text/css"> | ||
| html, body { | ||
| margin: 0; | ||
|
|
||
| width: 100%; | ||
| height: 100%; | ||
| min-width: 100%; | ||
| min-height: 100%; | ||
| } | ||
|
|
||
| body { | ||
| display: flex; | ||
| flex-direction: column; | ||
| align-items: center; | ||
| justify-content: center; | ||
| } | ||
|
|
||
| .git-commit-info { | ||
| font-family: Consolas, 'Courier New', Courier, monospace; | ||
| background-color: #f1f1f1; | ||
| padding: 2px; | ||
| text-align: left; | ||
| } | ||
| #git-hash { | ||
| text-align: center; | ||
| } | ||
| #output { | ||
| margin: 0; | ||
| padding: 0; | ||
| } | ||
| </style> | ||
| </head> | ||
| <body> | ||
| <div id="git-hash"></div> | ||
| <p id="output"> | ||
| <canvas id="canvas"></canvas> | ||
| </p> | ||
| <script src="gitrev.js"></script> | ||
| <script> | ||
| var siteURL = new URL(window.location.href); | ||
| var w = siteURL.searchParams.get("w") || "800"; | ||
| var h = siteURL.searchParams.get("h") || "480"; | ||
| var canvas = document.getElementById('canvas'); | ||
| canvas.setAttribute("width", w); | ||
| canvas.setAttribute("height", h); | ||
| console.log("Requested " + w + "x" + h + " px"); | ||
| var Module = { | ||
| print: function(text) { | ||
| console.log(text); | ||
| }, | ||
| printErr: function(text) { | ||
| console.error(text); | ||
| }, | ||
| canvas: (function() { | ||
| return canvas; | ||
| })(), | ||
| arguments: [ siteURL.searchParams.get("w") || "800", siteURL.searchParams.get("h") || "480", siteURL.searchParams.get("example") ?? "default" ] | ||
| }; | ||
| if(typeof window.git_hash != 'undefined') { | ||
| var gitHashDiv = document.querySelector("#git-hash"); | ||
| var gitLink = document.createElement("div"); | ||
| var gitHashComponents = window.git_hash.split(" ").filter(component => component.trim().length > 0); | ||
| for(var i = 0; i < gitHashComponents.length; i++) { | ||
| console.log(gitHashComponents[i], gitHashComponents[i].length); | ||
| /* This is an extremely lazy way of checking for a Git hash, but it works */ | ||
| if(gitHashComponents[i].length == 40) { | ||
| gitHashComponents[i] = `<a href="https://github.com/lvgl/${gitHashComponents[i+1]}/commit/${gitHashComponents[i]}">${gitHashComponents[i]}</a>`; | ||
| } else { | ||
| /* Repository name */ | ||
| gitHashComponents[i] += "<br/>"; | ||
| } | ||
| } | ||
| gitLink.classList.add("git-commit-info"); | ||
| gitLink.innerHTML = gitHashComponents.join(" "); | ||
| gitHashDiv.textContent = "LVGL compiled to Emscripten. Git commit information:"; | ||
| gitHashDiv.appendChild(gitLink); | ||
| } | ||
| window.addEventListener("click", () => window.focus()); | ||
| </script> | ||
| {{{ SCRIPT }}} | ||
| </body> | ||
| </html> |
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P2: Unconditional linking to optional LVGL targets (examples/demos/thorvg) can fail CMake configuration when those targets are disabled by LVGL options.
Prompt for AI agents