Packet.Ax25.Sdl
0.10.2
dotnet add package Packet.Ax25.Sdl --version 0.10.2
NuGet\Install-Package Packet.Ax25.Sdl -Version 0.10.2
<PackageReference Include="Packet.Ax25.Sdl" Version="0.10.2" />
<PackageVersion Include="Packet.Ax25.Sdl" Version="0.10.2" />
<PackageReference Include="Packet.Ax25.Sdl" />
paket add Packet.Ax25.Sdl --version 0.10.2
#r "nuget: Packet.Ax25.Sdl, 0.10.2"
#:package Packet.Ax25.Sdl@0.10.2
#addin nuget:?package=Packet.Ax25.Sdl&version=0.10.2
#tool nuget:?package=Packet.Ax25.Sdl&version=0.10.2
ax25sdl
Tooling + distribution for the AX.25 SDL state tables: a codegen pipeline that turns the normative SDL transcriptions into ready-to-consume libraries in seven languages. The figc4.x state-machine figures are encoded once, with discipline, in packethacking/ax25spec — the community home of everything normative about AX.25, prose and figures — and this repo emits that single source of truth as native idiomatic code for C#, Go, TypeScript, JSON, Rust, C, and Python. Downstream runtimes walk the generated tables — they don't have an opinion of their own about what AX.25 says.
Where changes go: figure/spec changes (graphml, yaml transcriptions, citations, catalogues) are PRs against
packethacking/ax25spec; a pin-bump PR here then regenerates the language backends. Only tooling (walker/emitters/lint), generated backends and packaging change in this repo.
Inputs
The SDL sources live in the packethacking/ax25spec git submodule at ax25spec/, pinned to a specific commit (the same pin-bump cadence packet.net uses towards this repo). A spec-sdl -> ax25spec/spec-sdl symlink keeps every historical path working. Clone with git clone --recurse-submodules (or run git submodule update --init after a plain clone).
| Path | What |
|---|---|
spec-sdl/v2.2-errata/data-link/ |
The figc4.1 – figc4.7 data-link state machine (v2.2 + errata), split by artefact kind: sdl/ holds the canonical *.graphml yEd sources, yaml/ holds the *.sdl.yaml transcriptions (derived) plus the *.citations.yaml human-curated sidecars, mmd/ holds the *.g.mmd Mermaid renderings (derived). |
spec-sdl/v2.2/ |
Clean published v2.2 (black-only, no errata). Currently empty — backfill pending. |
spec-sdl/schema/ |
JSON Schema for *.sdl.yaml |
spec-sdl/actions.yaml |
Action-verb normalisation table (figure spellings → canonical verbs) |
spec-sdl/events.yaml |
Canonical event catalog |
| Upstream | The AX.25 v2.2 specification figures themselves — the source of truth for every transcription |
Outputs
| Artefact | Where | Name | In-repo source |
|---|---|---|---|
| C# library | NuGet | Packet.Ax25.Sdl |
spec/csharp/ |
| TypeScript library | npm | ax25sdl |
spec/ts/ |
| Go module | git | github.com/m0lte/ax25sdl/spec/go |
spec/go/ |
| Rust crate | crates.io (publishable; not yet published) | ax25sdl (no_std-capable) |
spec/rust/ |
| C / Python / JSON | not externally packaged | codegen output for in-tree consumers | per-backend dirs |
Tagging v* on main fires .github/workflows/publish.yml — NuGet + npm publish from the same tag, version taken from the tag stripped of its leading v.
Discipline
The transcription rules and how to add a new figure live in:
docs/sdl-primer.md— SDL shape referencedocs/sdl-transcription-runbook.md— end-to-end per-figure workflowdocs/sdl-verb-catalogue.md— action-verb normalisationdocs/adr/0001-sdl-dsl.md— why YAML + codegen rather than hand-written tables
Provenance
Extracted from packet.net (then m0lte/packet.net) on 2026-05-17 — the transcriptions and codegen previously lived alongside the .NET runtime in that monorepo. The SDL transcriptions moved on again to packethacking/ax25spec in 2026-07, making that repo the single normative home (prose + figures) and this one tooling + distribution. History preserved via git filter-repo at both steps.
Sibling repos
| Repo | Relationship |
|---|---|
packethacking/ax25spec |
upstream — normative SDL sources, consumed here as a pinned submodule |
packet-net/packet.net |
consumes Packet.Ax25.Sdl (NuGet) |
packet-net/ax25-ts |
consumes ax25sdl (npm) |
packet-net/packet-term-tui |
transitive: Packet.Ax25 → Packet.Ax25.Sdl |
packet-net/packet-term-web |
transitive: @packet-net/ax25 → ax25sdl |
License
MIT. Spec text and figures derive from the AX.25 v2.2 specification; the transcription discipline that turns figures into machine-checkable YAML is documented in docs/sdl-transcription-runbook.md.
| 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 (8)
Showing the top 5 NuGet packages that depend on Packet.Ax25.Sdl:
| 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.Kiss
KISS (Keep It Simple, Stupid) framing encoder/decoder, ACKMODE handling, multi-drop port support, and TCP transport. Decodes KISS-Data payloads into typed Ax25Frame events. Pair with Packet.Ax25 for connected-mode sessions. Source: github.com/packet-net/packet.net. |
|
|
Packet.Kiss.Serial
Generic serial-port KISS modem implementing IAx25Transport for the Packet.NET stack. Opens a USB-CDC or hardware serial port, speaks KISS framing in both directions, and surfaces inbound frames as an async stream. Pair with Packet.Kiss.NinoTnc for NinoTNC-specific extensions (ACKMODE, SetMode, frame classification). Source: github.com/packet-net/packet.net. |
|
|
Packet.Kiss.NinoTnc
NinoTNC-specific KISS extensions for the Packet.NET stack — ACKMODE TX-completion correlation, SETHW mode switching, TX-Test frame classification, USB port discovery. Built on Packet.Kiss.Serial for generic serial-port plumbing. 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. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.10.2 | 48 | 7/18/2026 |
| 0.10.1 | 44 | 7/18/2026 |
| 0.10.0 | 1,412 | 6/3/2026 |
| 0.9.0 | 111 | 6/2/2026 |
| 0.8.0 | 114 | 6/2/2026 |
| 0.7.1 | 363 | 5/28/2026 |
| 0.7.0 | 164 | 5/28/2026 |
| 0.6.0 | 180 | 5/27/2026 |
| 0.5.3 | 114 | 5/21/2026 |
| 0.5.2 | 107 | 5/21/2026 |
| 0.5.1 | 110 | 5/20/2026 |
| 0.5.0 | 102 | 5/20/2026 |
| 0.4.0 | 112 | 5/19/2026 |
| 0.3.0 | 132 | 5/17/2026 |