mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-02 19:02:00 +00:00
build(sim): colour-touch (ui-lvgl) WASM in the solo-sim release zip
- build-solo-sim.yml clones LVGL at the version pinned in solo/wio-tracker-l2/platformio.ini and builds the SIM_UI=lvgl sim into wasm/lvgl/ of solo-sim-wasm.zip, for the site's device switch. - build_wasm.sh: LVGL_DIR can be overridden (CI has no .pio libdeps). - sim_test_set_node_name(): names a sim node, for site screenshots. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
name: Build Solo Sim (WASM)
|
name: Build Solo Sim (WASM)
|
||||||
|
|
||||||
# Builds the companion_radio browser sim (real firmware compiled to WASM via
|
# Builds the companion_radio browser sim (real firmware compiled to WASM via
|
||||||
# Emscripten, see variants/sim/) and attaches it to the same draft release
|
# Emscripten, see variants/sim/) -- the OLED ui-new build, the Wio Tracker L2
|
||||||
|
# ui-lvgl build and the repeater -- and attaches it to the same draft release
|
||||||
# build-solo-firmwares.yml creates for this tag, as a single fixed-name
|
# build-solo-firmwares.yml creates for this tag, as a single fixed-name
|
||||||
# asset: solo-sim-wasm.zip. Fixed name (no version in it) so
|
# asset: solo-sim-wasm.zip. Fixed name (no version in it) so
|
||||||
# meshcore-solo-site's server-side deploy script can always fetch it from
|
# meshcore-solo-site's server-side deploy script can always fetch it from
|
||||||
@@ -59,13 +60,29 @@ jobs:
|
|||||||
FIRMWARE_VERSION: ${{ env.BUILD_VERSION }}
|
FIRMWARE_VERSION: ${{ env.BUILD_VERSION }}
|
||||||
run: variants/sim/build_wasm.sh
|
run: variants/sim/build_wasm.sh
|
||||||
|
|
||||||
|
# LVGL at the version the L2 firmware pins, straight from its repo --
|
||||||
|
# no PlatformIO needed just for the sources.
|
||||||
|
- name: Fetch LVGL
|
||||||
|
run: |
|
||||||
|
LV_VER="$(grep -m1 -oE 'lvgl/lvgl @ [0-9.]+' solo/wio-tracker-l2/platformio.ini | awk '{print $3}')"
|
||||||
|
echo "LVGL $LV_VER"
|
||||||
|
git clone --depth 1 --branch "v$LV_VER" https://github.com/lvgl/lvgl.git "$RUNNER_TEMP/lvgl"
|
||||||
|
|
||||||
|
- name: Build L2 (LVGL) WASM
|
||||||
|
env:
|
||||||
|
FIRMWARE_VERSION: ${{ env.BUILD_VERSION }}
|
||||||
|
SIM_UI: lvgl
|
||||||
|
LVGL_DIR: ${{ runner.temp }}/lvgl
|
||||||
|
run: variants/sim/build_wasm.sh
|
||||||
|
|
||||||
- name: Build repeater WASM
|
- name: Build repeater WASM
|
||||||
run: variants/sim/build_wasm_repeater.sh
|
run: variants/sim/build_wasm_repeater.sh
|
||||||
|
|
||||||
- name: Package
|
- name: Package
|
||||||
run: |
|
run: |
|
||||||
mkdir -p out/wasm/companion out/wasm/repeater
|
mkdir -p out/wasm/companion out/wasm/lvgl out/wasm/repeater
|
||||||
cp variants/sim/web/build/meshcore_sim.js variants/sim/web/build/meshcore_sim.wasm out/wasm/companion/
|
cp variants/sim/web/build/meshcore_sim.js variants/sim/web/build/meshcore_sim.wasm out/wasm/companion/
|
||||||
|
cp variants/sim/web/build/meshcore_sim_lvgl.js variants/sim/web/build/meshcore_sim_lvgl.wasm out/wasm/lvgl/
|
||||||
cp variants/sim/web/build/repeater/meshcore_sim_repeater.js variants/sim/web/build/repeater/meshcore_sim_repeater.wasm out/wasm/repeater/
|
cp variants/sim/web/build/repeater/meshcore_sim_repeater.js variants/sim/web/build/repeater/meshcore_sim_repeater.wasm out/wasm/repeater/
|
||||||
cd out && zip -r solo-sim-wasm.zip wasm
|
cd out && zip -r solo-sim-wasm.zip wasm
|
||||||
|
|
||||||
|
|||||||
@@ -551,6 +551,17 @@ extern "C" EMSCRIPTEN_KEEPALIVE int sim_test_set_timezone_hours(int hours) {
|
|||||||
// UITask::loop() entirely -- there's no separate flag to touch. A demo
|
// UITask::loop() entirely -- there's no separate flag to touch. A demo
|
||||||
// running on a visitor's screen has no battery to save and no reason to
|
// running on a visitor's screen has no battery to save and no reason to
|
||||||
// go dark or lock itself while they're reading it.
|
// go dark or lock itself while they're reading it.
|
||||||
|
// Renames this instance (NodePrefs::node_name, what Settings > Name sets) so
|
||||||
|
// a host page's peers have readable names in screenshots, instead of the
|
||||||
|
// default hex of their public key. In memory only; the next advert carries it.
|
||||||
|
extern "C" EMSCRIPTEN_KEEPALIVE int sim_test_set_node_name(const char* name) {
|
||||||
|
if (!g_sim_ready || !name || !*name) return 0;
|
||||||
|
NodePrefs* prefs = the_mesh.getNodePrefs();
|
||||||
|
if (!prefs) return 0;
|
||||||
|
snprintf(prefs->node_name, sizeof(prefs->node_name), "%s", name);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" EMSCRIPTEN_KEEPALIVE int sim_test_disable_screen_timeout() {
|
extern "C" EMSCRIPTEN_KEEPALIVE int sim_test_disable_screen_timeout() {
|
||||||
if (!g_sim_ready) return 0;
|
if (!g_sim_ready) return 0;
|
||||||
NodePrefs* prefs = the_mesh.getNodePrefs();
|
NodePrefs* prefs = the_mesh.getNodePrefs();
|
||||||
|
|||||||
@@ -55,9 +55,11 @@ fi
|
|||||||
# Which frontend: SIM_UI=new (default, 128x64 OLED-style ui-new) or
|
# Which frontend: SIM_UI=new (default, 128x64 OLED-style ui-new) or
|
||||||
# SIM_UI=lvgl (320x240 touch ui-lvgl, Wio Tracker L2 shape -> web/lvgl.html).
|
# SIM_UI=lvgl (320x240 touch ui-lvgl, Wio Tracker L2 shape -> web/lvgl.html).
|
||||||
# The lvgl build takes the LVGL 9 sources from PlatformIO's libdeps of the L2
|
# The lvgl build takes the LVGL 9 sources from PlatformIO's libdeps of the L2
|
||||||
# env, so run `pio run -e Wio_Tracker_L2_companion_solo_lvgl` once first.
|
# env, so run `pio run -e Wio_Tracker_L2_companion_solo_lvgl` once first, or
|
||||||
|
# point LVGL_DIR at a checkout of the same version (CI does, see
|
||||||
|
# .github/workflows/build-solo-sim.yml).
|
||||||
SIM_UI="${SIM_UI:-new}"
|
SIM_UI="${SIM_UI:-new}"
|
||||||
LVGL_DIR="$REPO_ROOT/.pio/libdeps/Wio_Tracker_L2_companion_solo_lvgl/lvgl"
|
LVGL_DIR="${LVGL_DIR:-$REPO_ROOT/.pio/libdeps/Wio_Tracker_L2_companion_solo_lvgl/lvgl}"
|
||||||
if [ "$SIM_UI" = "lvgl" ] && [ ! -f "$LVGL_DIR/lvgl.h" ]; then
|
if [ "$SIM_UI" = "lvgl" ] && [ ! -f "$LVGL_DIR/lvgl.h" ]; then
|
||||||
echo "error: LVGL sources not found at $LVGL_DIR" >&2
|
echo "error: LVGL sources not found at $LVGL_DIR" >&2
|
||||||
echo "Fetch them first: pio run -e Wio_Tracker_L2_companion_solo_lvgl" >&2
|
echo "Fetch them first: pio run -e Wio_Tracker_L2_companion_solo_lvgl" >&2
|
||||||
|
|||||||
Reference in New Issue
Block a user