Packet.Kiss 0.21.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Packet.Kiss --version 0.21.0
                    
NuGet\Install-Package Packet.Kiss -Version 0.21.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Packet.Kiss" Version="0.21.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Packet.Kiss" Version="0.21.0" />
                    
Directory.Packages.props
<PackageReference Include="Packet.Kiss" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Packet.Kiss --version 0.21.0
                    
#r "nuget: Packet.Kiss, 0.21.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Packet.Kiss@0.21.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Packet.Kiss&version=0.21.0
                    
Install as a Cake Addin
#tool nuget:?package=Packet.Kiss&version=0.21.0
                    
Install as a Cake Tool

Packet.Kiss

KISS framing, ACKMODE, multi-drop ports, and a TCP transport for AX.25.

Encodes and decodes KISS frames (the SLIP-style framing that TNCs and software modems speak), handles the G8BPQ ACKMODE extension and multi-drop port nibble, and ships KissTcpClient for talking KISS-over-TCP to a TNC or node. Decoded KISS-Data payloads surface as typed Ax25Frame events. Part of Packet.NET, a .NET amateur-radio / AX.25 packet stack.

Install

dotnet add package Packet.Kiss

Quick start

Encode an AX.25 frame to KISS wire bytes, and decode wire bytes back into frames:

using Packet.Kiss;

// Encode: FEND | (port<<4)|cmd | escaped-payload | FEND
byte[] wire = KissEncoder.Encode(port: 0, KissCommand.Data, ax25Bytes);

// Decode is stateful — push bytes as they arrive off the wire, pull frames out.
var decoder = new KissDecoder();
foreach (KissFrame frame in decoder.Push(wire))
{
    if (frame.Command == KissCommand.Data)
    {
        // frame.Payload is the AX.25 frame body (the TNC strips/inserts the FCS).
    }
}

Classify an inbound frame into a typed event (Data → AX.25, ACKMODE-Data, or Unknown):

KissInboundEvent evt = KissFrameClassifier.Classify(frame);
if (evt is Ax25FrameReceivedEvent ax25)
{
    // ax25.Ax25 is a parsed Packet.Ax25.Ax25Frame
}

Talk KISS over TCP to a TNC or node (e.g. a LinBPQ KISS-over-TCP listener):

await using var client = await KissTcpClient.ConnectAsync("127.0.0.1", 8001);

// Fire-and-forget a KISS-Data frame on port 0.
await client.SendFrameAsync(ax25Bytes);

// Or send in ACKMODE and await the TNC's TX-completion echo (timing included).
TxCompletion done = await client.SendAwaitingCompletionAsync(ax25Bytes);

// Stream inbound frames until the link closes.
await foreach (KissFrame frame in client.ReadFramesAsync())
{
    // ...
}

Key types

  • KissEncoder / KissDecoder — encode AX.25 bytes to KISS wire bytes; statefully decode an incoming byte stream into KissFrames.
  • KissFrame — one decoded frame: Port, Command, and raw Payload.
  • KissCommand — KISS command codes (Data, TxDelay, Persistence, SetHardware, AckMode, …).
  • KissFraming — the FEND/FESC/TFEND/TFESC framing constants plus the exit-KISS byte.
  • KissTcpClient — KISS-over-TCP client implementing IAx25Transport; handles framing both directions, ACKMODE TX-completion, CSMA params, and half-open-link idle detection.
  • KissFrameClassifier / KissInboundEvent — map a raw frame to a typed inbound event (Ax25FrameReceivedEvent, AckModeDataReceivedEvent, UnknownInboundEvent).
  • KissAckMode — build/parse the G8BPQ ACKMODE extension (command 0x0C) with its 2-byte sequence tag.
  • KissAx25Bridge — wire a KISS transport to a Packet.Ax25 connected-mode session adapter.

See also


MIT-licensed. Part of the Packet.NET stack.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on Packet.Kiss:

Package Downloads
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.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.

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.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.24.0 48 7/20/2026
0.23.0 130 7/14/2026
0.22.0 131 7/14/2026
0.21.0 141 7/9/2026
0.20.0 136 7/5/2026
0.19.0 137 7/5/2026
0.18.0 142 7/5/2026
0.17.0 129 6/23/2026
0.16.0 135 6/23/2026
0.15.0 122 6/23/2026
0.14.0 124 6/22/2026
0.13.0 125 6/22/2026
0.12.0 128 6/21/2026
0.11.0 133 6/18/2026
0.10.0 124 6/17/2026
0.9.0 231 6/17/2026
0.8.0 129 6/12/2026
0.7.0 123 6/10/2026
0.6.1 127 6/7/2026
0.6.0 130 6/5/2026
Loading failed