feat(eink): landscape and portrait builds, 8x13 font in landscape

The L1 e-ink solo build splits in two, one per screen shape, so each
screen can be laid out for a single shape. Settings > Rotation now only
turns the screen upside down, and the joystick turns with it.

Landscape writes in misc-fixed 8x13 at the panel's own resolution
(EINK_LARGE_FONT); portrait keeps the 6x9. All drawing moves into
EinkGfxDisplay, which the panel driver and the simulator share; the
FreeSans fonts and the CRC32 library go.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-02 19:24:36 +02:00
co-authored by Claude Opus 5.5
parent a733b8bcf5
commit b0e24bb076
11 changed files with 2459 additions and 323 deletions
+21 -3
View File
@@ -4,8 +4,14 @@
; variants in variants/, so this repo's Solo-specific additions don't get
; mixed in with configs other MeshCore forks/upstream also carry.
;
; Dual BLE+USB with added Solo
[env:WioTrackerL1Eink_companion_solo_dual]
; Two builds, one per orientation: each screen is laid out for one shape, and
; Settings > Rotation only turns it upside down. Landscape writes in the 8x13
; font at the panel's own resolution (EINK_LARGE_FONT); portrait keeps the 6x9,
; whose narrow width wants the smaller cell. The joystick reads upright with the
; panel at rotation 1 (landscape) and turns with it (JOYSTICK_UPRIGHT_ROTATION).
;
; Both: Dual BLE+USB with added Solo.
[eink_solo]
extends = WioTrackerL1Eink
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
@@ -14,10 +20,22 @@ extends = WioTrackerL1Eink
; The offline queue (messages held for the phone app while it's away) at 128,
; not the board's 256: on the nRF52 the 256 x 177 B left ~5 KB of heap next to
; the on-device UI (which keeps its own history), too little for a sign buffer.
build_unflags = -Ofast -D OFFLINE_QUEUE_SIZE=256
build_unflags = -Ofast -D OFFLINE_QUEUE_SIZE=256 -D DISPLAY_ROTATION=1
build_flags = ${WioTrackerL1Eink.build_flags}
-D OFFLINE_QUEUE_SIZE=128
-D DUAL_SERIAL=1
-D ENABLE_SCREENSHOT
-D JOYSTICK_UPRIGHT_ROTATION=1
-Os
extra_scripts = post:create-uf2.py
[env:WioTrackerL1Eink_landscape_solo_dual]
extends = eink_solo
build_flags = ${eink_solo.build_flags}
-D DISPLAY_ROTATION=1
-D EINK_LARGE_FONT=1
[env:WioTrackerL1Eink_portrait_solo_dual]
extends = eink_solo
build_flags = ${eink_solo.build_flags}
-D DISPLAY_ROTATION=0