Quiet pods no longer spam 100 Hz samples; mute wifi logs and throttle BLE
notifies during slave distribution so the wifi task stack does not panic.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prefer ATT MTU 517 and chunk oversized responses so CLIENT_INFO/BATTERY work with many pods; reset the goTool parser after timeouts so partial frames do not poison the next exchange.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a uint16 LE length and 1024-byte max payload so CLIENT_INFO and BATTERY_STATUS no longer fail encoding past ~10 connected pods.
Co-authored-by: Cursor <cursoragent@cursor.com>
Accel/tap use fire-and-forget ESP-NOW with a 10 ms FreeRTOS-safe cadence, OTA recovers from seq gaps and auto-reboots after success, and bootloader app rollback confirms after a stable boot.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow the same staged firmware upload path on BLE as UART, fix distribute stack/event-group crashes, and recover sticky slave OTA sessions instead of failing with err=4.
Co-authored-by: Cursor <cursoragent@cursor.com>
Serve starts without a required port; REST/WS/UI can scan and switch transports, with BLE live ticks and UART-only OTA.
Co-authored-by: Cursor <cursoragent@cursor.com>
Master can speak the same framed protobuf protocol over NimBLE or UART; goTool gains -ble, ble-rtt, and ble-stream timing checks for ESP-NOW coexistence.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose the command via goTool CLI/REST and dashboard controls so log verbosity can be tuned without reflashing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Split ESP-NOW into core/master/slave modules, block non-OTA UART traffic during updates, and hold the host serial port exclusively so dashboard polling cannot interleave with firmware uploads.
Co-authored-by: Cursor <cursoragent@cursor.com>
Document UART command flow, ESP-NOW data paths, and module map for
developers without covering goTool; link from main/README.
Co-authored-by: Cursor <cursoragent@cursor.com>