Packet.Rig
0.23.0
dotnet add package Packet.Rig --version 0.23.0
NuGet\Install-Package Packet.Rig -Version 0.23.0
<PackageReference Include="Packet.Rig" Version="0.23.0" />
<PackageVersion Include="Packet.Rig" Version="0.23.0" />
<PackageReference Include="Packet.Rig" />
paket add Packet.Rig --version 0.23.0
#r "nuget: Packet.Rig, 0.23.0"
#:package Packet.Rig@0.23.0
#addin nuget:?package=Packet.Rig&version=0.23.0
#tool nuget:?package=Packet.Rig&version=0.23.0
Packet.Rig
Station-rig (CAT) control abstraction for amateur-radio transceivers: get/set frequency and mode, PTT, SWR / RF-power metering, and receive-side DCD / signal-strength reads, all behind capability probes.
IRigControl rig = await RigctldRig.ConnectAsync(); // Packet.Rig.Hamlib
// IRigControl rig = await FlrigRig.ConnectAsync(); // Packet.Rig.Flrig
await rig.SetFrequencyAsync(14_074_000);
await rig.SetModeAsync(RigMode.PktUsb);
if (rig.Capabilities.HasFlag(RigCapabilities.SwrMeter))
{
var swr = await rig.ReadSwrAsync(); // dimensionless ratio, 1.0 = perfect
}
if (rig.Capabilities.HasFlag(RigCapabilities.DcdRead))
{
var busy = await rig.ReadDcdAsync(); // true = carrier present / channel busy
}
Design
IRigControlis the cross-backend common subset. Everything a backend might lack is gated byRigCapabilitiesflags discovered at connect time; calling an unadvertised member throwsNotSupportedException.RigModewraps a canonical token (hamlib vocabulary:USB,LSB,CW,PKTUSB, …) with pass-through for backend-native names (RigMode.From("DATA-U")) — mode vocabularies genuinely diverge across backends, so this is not a closed enum.- Receive-side reads —
ReadDcdAsync(true = carrier present / channel busy) andReadSignalStrengthDbmAsync(dBm) are what the packet stack's carrier-sense seam needs; theIRadioControlbridge adapter that consumes them isPacket.Radio'sRigRadioControl. - Errors are typed:
RigConnectionException(link down — retry is sane),RigTimeoutException,RigCommandException(the backend said no; carries its native code),RigProtocolException(unparseable reply). - Poll-only. Current backends (rigctld, flrig) have no push channel; callers own their polling cadence.
This package is deliberately dependency-free — it does not pull in the rest of the Packet.NET AX.25 stack. Backends:
Packet.Rig.Hamlib— hamlib'srigctldnetwork protocol (any of hamlib's 200+ rigs, plus the many rigctld-protocol emulators).Packet.Rig.Flrig— flrig's XML-RPC server.Packet.Radio.Tait—TaitRigControl, a partial view (PTT + relative RF-power meter) of a Tait TM8100/TM8200 over CCDI, demonstrating a backend that honestly advertises only a slice of the surface.
Part of Packet.NET. Design and research notes:
docs/research/rig-control-spike.md in the repo.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Packet.Rig:
| Package | Downloads |
|---|---|
|
Packet.Radio
Radio-control abstraction (IRadioControl: RSSI, carrier-sense/DCD, PTT; IRadioSideChannel: radio-native small-datagram control plane) plus the RssiTaggingTransport decorator that stamps per-frame RSSI/SNR metadata onto any IAx25Transport, and the RigRadioControl bridge that surfaces a CAT rig (Packet.Rig: hamlib rigctld, flrig) through the same seam. Radio-specific implementations (e.g. Packet.Radio.Tait) plug in underneath. Source: github.com/packet-net/packet.net. |
|
|
Packet.Radio.Tait
Tait TM8100/TM8200 CCDI serial control for the Packet.NET stack — per-frame RSSI in dBm, hardware carrier-sense (DCD) events, transmitter keying, and radio telemetry (PA temperature, forward/reverse power), implementing the Packet.Radio IRadioControl abstraction (packet-medium seam) and, via TaitRigControl, the Packet.Rig IRigControl station-control seam (PTT + relative RF-power meter). Source: github.com/packet-net/packet.net. |
|
|
Packet.Rig.Flrig
Client for flrig's XML-RPC rig-control server (default port 12345) implementing the Packet.Rig IRigControl abstraction: get/set frequency and mode, PTT, SWR and RF-power metering with hamlib-compatible meter conversions, plus a raw method-call escape hatch. No dependencies beyond Packet.Rig. Source: github.com/packet-net/packet.net. |
|
|
Packet.Rig.Hamlib
Pure-managed client for hamlib's NET rigctl protocol (rigctld, TCP 4532) implementing the Packet.Rig IRigControl abstraction: get/set frequency and mode, PTT, SWR and RF-power metering, capability discovery via dump_caps, plus raw-command and get-level escape hatches. No native libhamlib dependency. Source: github.com/packet-net/packet.net. |
GitHub repositories
This package is not used by any popular GitHub repositories.