From 57e0fb0aee09f0232c0ccf561ffa2698f6bf928e Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Mon, 6 Apr 2026 14:49:16 -0600 Subject: [PATCH] feat(mux/rust): make cargo-publish ready for v0.1.0 - Add version to donglora-client dependency for crates.io - Set TCP_NODELAY on accepted TCP connections for low-latency framing - Add CHANGELOG.md --- mux/rust/CHANGELOG.md | 20 ++++++++++++++++++++ mux/rust/Cargo.toml | 2 +- mux/rust/src/daemon.rs | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 mux/rust/CHANGELOG.md diff --git a/mux/rust/CHANGELOG.md b/mux/rust/CHANGELOG.md new file mode 100644 index 00000000..9d2099dd --- /dev/null +++ b/mux/rust/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +## 0.1.0 — 2026-04-06 + +Initial release. + +### Features + +- USB multiplexer daemon: share one DongLoRa dongle with multiple applications +- Unix domain socket and optional TCP listeners (same COBS-framed protocol) +- RxPacket broadcast to all connected clients +- Reference-counted StartRx/StopRx across clients +- Config locking: first client sets radio config, others must match or fail +- Auto-reconnect on USB hot-plug with ping verification +- Bounded per-client send queues (256 frames) with backpressure isolation +- Smart interception: redundant commands get synthetic responses without + hitting the dongle +- Graceful shutdown on SIGINT/SIGTERM with socket cleanup +- TCP_NODELAY on accepted connections for low-latency frame delivery +- CLI: `--port`, `--socket`, `--tcp`, `--verbose` options diff --git a/mux/rust/Cargo.toml b/mux/rust/Cargo.toml index 2f356a3d..ebd67429 100644 --- a/mux/rust/Cargo.toml +++ b/mux/rust/Cargo.toml @@ -10,7 +10,7 @@ keywords = ["lora", "radio", "usb", "multiplexer"] categories = ["hardware-support"] [dependencies] -donglora-client = { path = "../../clients/rust" } +donglora-client = { version = "0.1.0", path = "../../clients/rust" } anyhow = "1" clap = { version = "4", features = ["derive"] } tokio = { version = "1", features = ["full"] } diff --git a/mux/rust/src/daemon.rs b/mux/rust/src/daemon.rs index 97762a6e..8b209129 100644 --- a/mux/rust/src/daemon.rs +++ b/mux/rust/src/daemon.rs @@ -495,6 +495,8 @@ async fn accept_tcp_clients( match accept_result { Ok((stream, addr)) => { debug!("TCP connection from {addr}"); + // Low-latency: disable Nagle (COBS frames are small) + let _ = stream.set_nodelay(true); let (read_half, write_half) = stream.into_split(); spawn_client(read_half, write_half, state.clone(), cmd_tx.clone(), shutdown.clone()); }