Module protocol

Module protocol 

Source
Expand description

XLX UDP JSON monitor protocol message types.

XLX reflectors (xlxd) expose a UDP push-notification interface on port 10001 for real-time activity monitoring. The protocol is simple:

  1. Client sends "hello" as a UDP datagram to the reflector’s IP on port 10001.
  2. The server responds with three separate UDP datagrams, each containing one JSON object:
  3. After the initial dump, the server pushes updates as events occur:
  4. Client sends "bye" to disconnect cleanly.

Each UDP datagram contains exactly one complete JSON object (no framing, no length prefix). The maximum node dump is 250 entries per datagram, and the server’s update period is approximately 10 seconds.

§Parsing strategy

Because all messages arrive as untagged JSON objects, parse attempts to deserialize each shape in a specific order. The order matters because some shapes are subsets of others — for example, a {"nodes":[...]} object would match both the nodes shape and a hypothetical catch-all. The parse order is:

  1. OnAir / OffAir — smallest, most distinctive keys.
  2. Reflector — has the unique "reflector" + "modules" combination.
  3. Nodes — has the "nodes" array key.
  4. Stations — has the "stations" array key.
  5. Unknown — fallback for unrecognized messages (logged, not fatal).

Structs§

NodeInfo 🔒
A single connected node entry from the "nodes" array.
NodesMsg 🔒
Helper for {"nodes":[...]}.
OffAirMsg 🔒
Helper for {"offair":"CALLSIGN"}.
OnAirMsg 🔒
Helper for {"onair":"CALLSIGN"}.
ReflectorInfo 🔒
Identity and module list for a reflector.
ReflectorMsg 🔒
Helper for {"reflector":"...","modules":[...]}.
StationInfo 🔒
A single heard station entry from the "stations" array.
StationsMsg 🔒
Helper for {"stations":[...]}.

Enums§

MonitorMessage 🔒
A parsed XLX monitor protocol message.

Functions§

parse 🔒
Attempts to parse a raw UDP datagram payload into a MonitorMessage.