- Gate capture on SD_IsReady() after successful SD_Init; avoid false 'insert SD' when SD.cardType() lies after WiFi on shared SPI with LCD - SD_Init: LCD CS high, SD.end() on empty card; HandshakeCapture save path retries SD_Init before discard - FAT filename sanitize, discard deadlocks, WPA3 scan labels, docs (README, PRODUCTION, IMPROVEMENTS), firmware version 1.0.1 Made-with: Cursor
1.1 KiB
1.1 KiB
Production notes
This file summarizes behavior locked in for a shippable build. Detailed design history lives in PLAN.md / IMPROVEMENTS.md.
Correctness & robustness
- 4-way only:
HANDSHAKE_EAPOL_FRAMESinHandshakeCapture.h— SD write only when count is reached;stopCapture()only queues save if threshold met. - No SD deadlock: If the card is missing or open/write fails, the pending buffer is dropped and the slot cleared so the state machine and UI keep progressing.
- FAT filenames: Non-portable characters in paths are replaced before
SD.open. - Concurrency: Promiscuous callback uses short critical sections; SD I/O only in
handshakeCaptureProcessPending()on the main loop.
Operational
- Version:
HANDSHAKE_FIRMWARE_VERSION— change on every release; matches serial banner. - Capture gating: Main sketch calls
SD_Init()/ requiresSD_IsReady()beforestartMultiCapture()(notSD.cardType()alone — shared SPI + WiFi). - Authorization: Operator must comply with local law and organizational policy.