Overview
Rover
│ UDP packets (protobuf-encoded PbEnvelope)
▼
UdpSocket bound on 0.0.0.0:9000
│
├── listener.rs decode → throttle → emit Tauri events → frontend
│
└── sender.rs encode PbEnvelope → send_to rover address
▲
└── dummy.rs generates fake packets for developmentThe socket is created once in service.rs, wrapped in an Arc, and shared between the listener and the sender/dummy so they all use the same bound port.
Graph subject to change as communication gets finalized
