1 Commits

Author SHA1 Message Date
sl-android
f4e4f184ef feat: WiFi mesh handoff - seamless AP roaming (Issue #458)
Add WiFi mesh handoff infrastructure:

WiFiState.msg interface:
- SSID, signal strength (dBm), connection status
- AP address, frequency, link quality
- TX/RX rates, roaming flag
- Available APs for handoff decision

WiFi Monitor Node:
- Signal monitoring via iwconfig/nmcli
- Auto-roam at -70dBm threshold
- Seamless wpa_supplicant roaming
- Gateway ping (8.8.8.8) every 5s
- USB tethering fallback if offline >30s
- TTS warnings for connectivity issues
- Coverage logging with AP transitions

Features:
- Configurable roaming threshold (-70dBm default)
- Gateway connectivity verification
- Offline detection with configurable timeout
- USB tethering auto-activation/deactivation
- Signal strength change logging (>5dBm)
- AP transition logging
- Manual rescan/tether control commands

Topics:
- /saltybot/wifi_state (String)
- /saltybot/speech_text (String warnings)
- /saltybot/wifi_cmd (String commands)

Configuration:
- interface: wlan0
- roam_threshold_dbm: -70
- offline_warning_timeout: 30.0
- target_ssid: SaltyLab
- fallback_tether: true
- coverage_log_file: /tmp/wifi_coverage.log

Roaming Behavior:
- Monitors signal continuously
- When signal < -70dBm, scans for stronger AP
- wpa_supplicant performs seamless handoff
- Logs all AP transitions to coverage file

Fallback Behavior:
- Pings gateway every 5 seconds
- If unreachable for >30s, activates USB tether
- TTS alert: 'Warning: Lost WiFi connectivity...'
- Auto-deactivates when WiFi restored

Coverage Mapping:
- Logs timestamp, SSID, signal, connected status
- Tracks roaming events
- Useful for mesh network optimization

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-05 09:20:42 -05:00