fix(13e6): X-Draw-Pending recovery handshake + CDC serial routing

When drawNeeded survives a power-loss-mid-draw, send X-Draw-Pending: 1
on the next poll so the server suppresses rotation advancement (incl.
the X-Boot-Reason: cold force-resync) and returns the SAME image back.
Without this, cold-boot rotation defeats the existing 304-with-drawNeeded
recovery branch — the device chases a fresh image every reset and the
13.3 panel ends up showing torn frames as draws keep getting interrupted.

Also enable ARDUINO_USB_CDC_ON_BOOT=1 for the 13.3 env so Serial routes
through the S3's native USB-CDC (visible as the "Espressif USB JTAG
serial debug unit" ACM port when awake). Without this, Serial goes to
UART0, whose pins aren't wired to either USB endpoint on the 13.3E6
board — making firmware logs invisible over USB and forcing reliance
on server-side telemetry alone.

Adds two unit tests covering header-present-when-set and absent-when-clear.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-14 17:43:08 -04:00
parent e9f2ec0629
commit 3d7a793115
3 changed files with 57 additions and 0 deletions
+7
View File
@@ -126,6 +126,13 @@ build_flags =
-DPIN_PWR=1
-DPANEL_ID=\"waveshare-13.3-spectra6\"
-DBOARD_HAS_PSRAM
; Route Serial through the S3's native USB-CDC. Without this the default
; arduino-esp32 routing sends Serial to UART0, whose pins aren't wired to
; either USB endpoint on the 13.3E6 board — making firmware logs invisible
; over USB and forcing reliance on server-side telemetry alone. The CDC
; endpoint enumerates as the "Espressif USB JTAG serial debug unit" ACM
; port; it disappears when the chip deep-sleeps and re-enumerates on wake.
-DARDUINO_USB_CDC_ON_BOOT=1
lib_deps =
ricmoo/QRCode@^0.0.1