3.2 KiB
maze32
maze32 is an ESP32-C6-hosted browser maze game. The firmware mounts LittleFS, serves compressed local pages, exposes a bounded health response, and connects to saved Wi-Fi credentials or starts a fallback provisioning access point.
Prerequisites
- PlatformIO Core installed at
$HOME/.platformio/penv/bin/pio; - a C11 host compiler available as
cc; - Python 3.
Build and verify
Parse the locked PlatformIO configuration:
$HOME/.platformio/penv/bin/pio project config
Run the portable host tests and deterministic asset check:
./scripts/run_host_tests.sh
Build the firmware. The PlatformIO hook checks the application image against
the 2 MiB factory partition:
$HOME/.platformio/penv/bin/pio run
Generate compressed assets explicitly when needed:
$HOME/.platformio/penv/bin/python scripts/generate_web_assets.py
Build the LittleFS image. Asset generation runs automatically before packaging,
and the PlatformIO hook checks the image against the 1,984 KiB littlefs
partition:
$HOME/.platformio/penv/bin/pio run --target buildfs
Device commands
Upload the application and LittleFS image:
$HOME$/.platformio/penv/bin/pio run --target upload
$HOME$/.platformio/penv/bin/pio run --target uploadfs
Monitor startup at 115200 baud:
$HOME/.platformio/penv/bin/pio device monitor
A successful boot reports the firmware version, LittleFS capacity and use,
network state, HTTP service startup, and health state serving.
The production integration/load procedure and its fixed resource thresholds
are documented in docs/INTEGRATION_TESTING.md and
docs/RESOURCE_BUDGET.md. Runtime counters and internal-memory samples are
available from GET /diagnostics; the endpoint contains no credentials,
session tokens, or game projection.
Wi-Fi provisioning and recovery
With no saved credentials, or after a failed station connection, the device
starts an open access point named maze32-XXXX, where XXXX comes from the
device MAC address. Connect to it and open:
http://192.168.4.1/provision
Scan for nearby networks, select or enter an SSID, and save the password. The
device stores a schema-versioned configuration in NVS and retries in station
mode. If the attempt fails, the fallback access point returns automatically.
After a successful connection, /api/wifi/status reports the station address.
To recover from obsolete or incorrect credentials, reconnect to the fallback
access point after the failed attempt and use Удалить настройки сети. The
same reset operation is available as POST /api/wifi/reset. Saving or clearing
credentials always invokes the runtime reconfiguration guard first; a future
active match service can reject the operation until it has explicitly stopped
the match.
The isolated on-device NVS/reboot diagnostic uses a deliberately unavailable SSID, refuses to overwrite unexpected saved credentials, and clears its test record after verifying fallback recovery:
$HOME/.platformio/penv/bin/pio run -e milestone-003-device-test
$HOME/.platformio/penv/bin/pio run -e milestone-003-device-test --target upload
Restore the normal firmware afterward with the standard upload command.