Files
cute-handshake-capture/handshake-capture-c6/PRODUCTION.md
drjones 804e71e175 handshake-capture-c6: production SD gating (SD_IsReady), v1.0.1
- 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
2026-03-21 01:12:12 -07:00

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_FRAMES in HandshakeCapture.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() / requires SD_IsReady() before startMultiCapture() (not SD.cardType() alone — shared SPI + WiFi).
  • Authorization: Operator must comply with local law and organizational policy.