Packet.Core
0.19.0
See the version list below for details.
dotnet add package Packet.Core --version 0.19.0
NuGet\Install-Package Packet.Core -Version 0.19.0
<PackageReference Include="Packet.Core" Version="0.19.0" />
<PackageVersion Include="Packet.Core" Version="0.19.0" />
<PackageReference Include="Packet.Core" />
paket add Packet.Core --version 0.19.0
#r "nuget: Packet.Core, 0.19.0"
#:package Packet.Core@0.19.0
#addin nuget:?package=Packet.Core&version=0.19.0
#tool nuget:?package=Packet.Core&version=0.19.0
Packet.Core
Shared primitive types for the Packet.NET amateur-radio stack.
Packet.Core holds the small, dependency-free building blocks the rest of the stack is built on: callsigns, AX.25 address slots, the FCS CRC, and the strict-vs-pragmatic parse options. It's the foundation package that Packet.Ax25, Packet.Kiss, Packet.Aprs and downstream applications depend on. Part of Packet.NET, a .NET amateur-radio / AX.25 packet stack.
Install
dotnet add package Packet.Core
Quick start
using Packet.Core;
// Parse a human-typed callsign ("BASE" or "BASE-SSID"), strictly.
var call = Callsign.Parse("Q0PDN-7");
Console.WriteLine(call.Base); // "Q0PDN"
Console.WriteLine(call.Ssid); // 7
Console.WriteLine(call.ToString()); // "Q0PDN-7"
// Encode one 7-octet AX.25 address slot, then read it back.
var addr = new Ax25Address(call, CrhBit: true, ExtensionBit: false);
Span<byte> slot = stackalloc byte[Ax25Address.EncodedLength]; // 7
addr.Write(slot);
var decoded = Ax25Address.Read(slot); // lenient by default
Console.WriteLine(decoded == addr); // True (round-trips)
// Strict spec parsing: reject pragmatic accommodations (e.g. all-space slots).
var strict = Ax25Address.Read(slot, Ax25ParseOptions.Strict);
// AX.25 frame check sequence (CRC-16/X-25).
ushort fcs = Crc16Ccitt.Compute("123456789"u8); // 0x906E
Callsign.Parse / TryParse stay strict (≥1 char, A–Z / 0–9, SSID 0–15) because they're for user-typed input. The wire-parse path (Ax25Address.Read) is lenient by default — it accepts real-world quirks like all-space address slots — and you opt into strictness via Ax25ParseOptions.Strict.
Key types
Callsign— a base callsign + SSID (0–15) value type, with strictParse/TryParseover text.Ax25Address— one 7-octet AX.25 header address slot;Read/Writebetween the value and its wire form, with the C/H and extension bits.Ax25ParseOptions— named, individually-toggleable pragmatic-parse flags withStrict/Lenientand peer presets (Bpq,Xrouter,Direwolf).Crc16Ccitt— the AX.25 frame check sequence (CRC-16/X-25, polynomial 0x1021).
See also
- Source & issues
- Packet.Ax25 — the AX.25 framing and session layer built on these primitives.
- Packet.Kiss — KISS TNC framing.
MIT-licensed. Part of the Packet.NET stack.
| 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 (5)
Showing the top 5 NuGet packages that depend on Packet.Core:
| Package | Downloads |
|---|---|
|
Packet.Ax25
AX.25 v2.2 protocol library: frame codec for U/S/I frames with mod-8 sequence numbers, SDL-driven connected-mode session machine, Ax25Listener for inbound session acceptance with per-peer caching, AcceptIncoming toggle, and frame-traced event hooks. Walks the AX.25 SDL transitions from Packet.Ax25.Sdl. Source: github.com/packet-net/packet.net. |
|
|
Packet.Axudp
AXUDP transport for the Packet.NET stack: AxudpSocket, a bidirectional AX.25-over-IP (RFC 1226) endpoint that UDP-encapsulates AX.25 frames. It unconditionally appends + validates the 2-octet AX.25 FCS (CRC-16-CCITT) exactly as every real AXIP/AXUDP peer does (ax25ipd, LinBPQ BPQAXIP, XRouter), with a raw escape hatch for replaying captures. Source: github.com/packet-net/packet.net. |
|
|
Packet.Aprs
Automatic Packet Reporting System (APRS) payload parsing per APRS12c.pdf — position (the four DTI variants !, =, /, @), mic-E (`, '), message, object, item, status, and telemetry, with Strict/Lenient/Direwolf/AprsIs parse-option presets. Decode-focused. Source: github.com/packet-net/packet.net. |
|
|
Packet.NetRom
NET/ROM networking for the Packet.NET stack: the L3 routing layer (NODES broadcasts, routing table + quality model), the L4 circuit state machine (CircuitManager / NetRomCircuit), and the INP3 time-routing overlay (L3RTT, RIF/RIP) — with BPQ / XRouter / Strict / Lenient quirk profiles pinned to real on-air behaviour. Build a .NET NET/ROM node or router on top of Packet.Ax25. Source: github.com/packet-net/packet.net. |
|
|
Packet.Tune.Core
Coordination primitives for tuning a NinoTNC + radio pair with the two ends apart: the tuning-telegram protocol (ITuningLink), an SDM flavour riding the radio's own side channel (Packet.Radio.IRadioSideChannel; Tait CCDI short data messages — radio-native FFSK, independent of the TNC mode/pot under tune), a WebSocket flavour with a PIN-rendezvous relay, the shared meter/tuned assistant loop, a mode-coordination protocol (propose/confirm/commit a TNC mode + radio channel switch, probe-verify, revert-to-home on failure), and a capability doctor for the whole TNC↔radio stack. Source: github.com/packet-net/packet.net. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.24.0 | 55 | 7/20/2026 |
| 0.23.0 | 177 | 7/14/2026 |
| 0.22.0 | 183 | 7/14/2026 |
| 0.21.0 | 187 | 7/9/2026 |
| 0.20.0 | 185 | 7/5/2026 |
| 0.19.0 | 188 | 7/5/2026 |
| 0.18.0 | 185 | 7/5/2026 |
| 0.17.0 | 179 | 6/23/2026 |
| 0.16.0 | 177 | 6/23/2026 |
| 0.15.0 | 174 | 6/23/2026 |
| 0.14.0 | 149 | 6/22/2026 |
| 0.13.0 | 152 | 6/22/2026 |
| 0.12.0 | 147 | 6/21/2026 |
| 0.11.0 | 156 | 6/18/2026 |
| 0.10.0 | 143 | 6/17/2026 |
| 0.9.0 | 256 | 6/17/2026 |
| 0.8.0 | 151 | 6/12/2026 |
| 0.7.0 | 143 | 6/10/2026 |
| 0.6.1 | 156 | 6/7/2026 |
| 0.6.0 | 151 | 6/5/2026 |