569bec322f
Adds a second panel target alongside the 7.3": - src/panels/waveshare13e6/v1/ — full epd.h impl with hardware SPI on FSPI, dual-CS dispatch (CS_M/CS_S split halves), PSRAM framebuffer for image/QR/setup-screen render paths - src/test_display_13e6.cpp + [env:test-display-13e6] — self-contained first-pixels color-bar smoke test, kept as a hardware diagnostic - [env:waveshare13e6-v1] — production env: ESP32-S3-WROOM-2 N32R16V with OPI flash + OPI PSRAM (the WROOM-2 is octal flash; QIO mode crashes at do_core_init startup.c:328) - scripts/gen_screens_13e6.py + data/waveshare13e6-v1/ — 1200x1600 portrait setup screens with QR overlay regions matching the driver - scripts/data_dir.py — extra_scripts shim that routes uploadfs to the right data/ tree based on $PIOENV (PlatformIO ignores per-env data_dir) - src/epd.h: epd_setup_pins() abstraction so each panel driver owns its own pinMode + SPI.begin; main/test_display/sim_border lose all panel-specific GPIO and call epd_setup_pins() once at boot - src/operation.h: report PANEL_ID via X-Panel-Id header on every poll so the server can auto-correct Device.model 7.3" production env stays byte-identical, all 43 native tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""
|
|
Per-env data_dir multiplexer.
|
|
|
|
PlatformIO's [platformio].data_dir is a single project-level setting — it
|
|
ignores `data_dir` inside [env:...] blocks. With more than one panel in the
|
|
tree (waveshare73-v1, waveshare13e6-v1), we need to route uploadfs to the
|
|
right LittleFS payload based on the active env.
|
|
|
|
Wired into envs via:
|
|
extra_scripts = pre:scripts/data_dir.py
|
|
|
|
The script runs before SCons evaluates uploadfs and overrides
|
|
PROJECT_DATA_DIR for the envs in `ENV_TO_DATA`. Envs not listed fall
|
|
through to the project default (set in [platformio]).
|
|
"""
|
|
|
|
import os
|
|
|
|
Import("env") # noqa: F821 — provided by PlatformIO's SCons context
|
|
|
|
ENV_TO_DATA = {
|
|
"waveshare73-v1": "waveshare73-v1",
|
|
"test-display": "waveshare73-v1",
|
|
"sim-yellow": "waveshare73-v1",
|
|
"sim-red": "waveshare73-v1",
|
|
"waveshare13e6-v1": "waveshare13e6-v1",
|
|
}
|
|
|
|
pioenv = env["PIOENV"] # noqa: F821
|
|
if pioenv in ENV_TO_DATA:
|
|
data_dir = os.path.join(env["PROJECT_DIR"], "data", ENV_TO_DATA[pioenv]) # noqa: F821
|
|
env.Replace(PROJECT_DATA_DIR=data_dir) # noqa: F821
|
|
print(f"[data_dir] {pioenv} -> {data_dir}")
|