Add esp_now_messages.proto with EspNowMessage types, encode/decode helpers,
and Makefile targets to regenerate firmware and UART schemas together.
Co-authored-by: Cursor <cursoragent@cursor.com>
Slaves send HEARTBEAT every 1s; the master marks clients inactive after
3s without traffic and reactivates on reconnect. CLIENT_INFO reports
last_ping as milliseconds since the last packet, not uptime.
Co-authored-by: Cursor <cursoragent@cursor.com>
Track ESP-NOW slaves in a shared registry and respond to CLIENT_INFO
with protobuf ClientInfoResponse; ESP-NOW path upserts registry entries.
Co-authored-by: Cursor <cursoragent@cursor.com>
Slave responds and logs only on first discover from a given master MAC;
subsequent broadcasts on the same network are silently ignored.
Co-authored-by: Cursor <cursoragent@cursor.com>