radio-utils-protocol
radio-utils-protocol is a library implementation of the OpenHPSDR Protocol 1 wire format. It provides the low-level transport and packet logic required to talk to a Hermes-class HPSDR radio.
Features
- Protocol 1 Support: Implementation of the classic 1032-byte UDP packet format.
- Discovery: Tools for broadcasting and parsing discovery requests on the network.
- IQ Packing/Unpacking: Efficient conversion between raw network bytes and complex DSP samples.
- no_std Support: Core types and packet structures are compatible with embedded systems.
Usage
use Duration;
use Protocol1Client;
// Broadcast a discovery probe on every local interface and wait up to 2 s
// for any HPSDR-compatible radio (or emulator) to answer.
let devices = discover.await?;
let device = devices.into_iter.next.expect;
// Open a session, start streaming, and read RX0 IQ samples.
let mut client = connect.await?;
let mut rx_iq = client.rx_iq_stream;
client.start.await?;
// `client.run()` drives the UDP exchange; spawn it alongside your consumer.
spawn;
while let Some = rx_iq.recv.await
See protocol.md at the workspace root for the wire-
format reference this crate implements.
Build
The no_std-friendly core types and packet codecs are available with
--no-default-features (omits tokio, discovery, and the async clients).
License
Dual MIT / Apache-2.0 — see LICENSE-MIT and LICENSE-APACHE.