Packages¶
Nine packages, one version number, released together to nuget.org. Take only the layers you need: an ISO-TP application pulls in five of them, a plain demultiplexer one.
1.0.0 – 1.2.3 are withdrawn
These six versions were published as stable before the API had been reviewed against the specifications, and are unlisted and deprecated on nuget.org. 1.3.0 is the first release whose API is stable; use it or later. See Versioning.
Everything targets netstandard2.0 and net10.0, so .NET Framework 4.6.2+, .NET 8 and .NET 10
all work. Every package depends on CanKit.Abstractions where it touches a bus and on nothing
vendor-specific anywhere.
L2 · Infrastructure¶
The layer every protocol stack needs and usually rebuilds: how instances share a bus, on which thread state changes, how a timeout is guaranteed to fire, how an ID is composed.
| Package | What it gives you | Depends on | |
|---|---|---|---|
| CanKit.Pro.RawCan | N independent, filtered, read-only views of one ICanBus, reconfigurable at runtime, plus SendConfirmedAsync for a uniform TX confirmation. |
CanKit.Abstractions | |
| CanKit.Pro.Actor | ProtocolActor: single-mailbox, single-writer execution with an event-driven timer queue and one background-exception channel. |
— | |
| CanKit.Pro.Addressing | Validated 11/29-bit CAN IDs, J1939 PGN/priority/PDU/source-address composition, J1939 NAME and PGN catalogues. | — | |
| CanKit.Pro.Reliability | Deadlines whose expiry is guaranteed to be checked, and a BusStateMonitor that pushes bus-state transitions and recovery. |
CanKit.Abstractions, Actor |
L3 · Transports¶
| Package | What it gives you | Standard | |
|---|---|---|---|
| CanKit.Pro.IsoTp | SF/FF/CF/FC codec, bounds-checked PCI parsing, STmin pacing, and an actor-driven IIsoTpChannel over CAN and CAN FD; functional (1:N) addressing. |
ISO 15765-2 | |
| CanKit.Pro.J1939Tp | TP.BAM broadcast and TP.CM connection mode (RTS/CTS/EndOfMsgAck), multi-session, all timers on the actor. | SAE J1939-21 |
L4 · Application protocols¶
| Package | What it gives you | Standard | |
|---|---|---|---|
| CanKit.Pro.Uds | Client over ISO-TP: session control, security access, read/write by identifier, routine control, upload/download, P2/P2* timing and 0x78 response-pending. | ISO 14229-1 | |
| CanKit.Pro.CANopen | Node whose object dictionary carries the communication profile and drives it: SDO client/server incl. block transfer, PDO engine with every CiA 301 transmission type and SDO-configurable mapping, NMT, heartbeat, node and life guarding, SYNC, EMCY; object dictionary loadable from an EDS/DCF; CANopen Safety: SRDO/GFC, opt-in. | CiA 301, CiA 302-2, CiA 304 (DSP V1.0), CiA 306, CiA 319 (v2.0.0) | |
| CanKit.Pro.J1939 | Node: address claim with arbitrary-address fallback, PGN send/receive with automatic TP routing, SPN extraction, fixed-rate periodic send. | SAE J1939 |
Who depends on whom¶
Arrows point at dependencies. The L2 packages are leaves or nearly so; everything above composes them and never talks to a vendor SDK.
flowchart BT
ABS["CanKit.Abstractions<br/><small>upstream, nuget.org</small>"]:::upstream
ACT["CanKit.Pro.Actor"]:::l2
ADR["CanKit.Pro.Addressing"]:::l2
RAW["CanKit.Pro.RawCan"]:::l2
REL["CanKit.Pro.Reliability"]:::l2
ISO["CanKit.Pro.IsoTp"]:::l3
JTP["CanKit.Pro.J1939Tp"]:::l3
UDS["CanKit.Pro.Uds"]:::l4
CO["CanKit.Pro.CANopen"]:::l4
J["CanKit.Pro.J1939"]:::l4
RAW --> ABS
REL --> ABS
REL --> ACT
ISO --> RAW & ACT & REL
JTP --> RAW & ACT & REL & ADR
UDS --> ISO
CO --> RAW & ACT & REL
J --> JTP & ADR
classDef upstream stroke:#8a97ab,stroke-width:1.5px,stroke-dasharray:4 3
classDef l2 stroke:#7f9fd0,stroke-width:2.5px
classDef l3 stroke:#1fb6d0,stroke-width:2.5px
classDef l4 stroke:#f5b342,stroke-width:2.5px
Install¶
# CanKit itself: the core plus one adapter for the hardware you talk to
dotnet add package CanKit.Core
dotnet add package CanKit.Adapter.Virtual # loopback, no hardware
# dotnet add package CanKit.Adapter.PCAN # or Kvaser, Vector, SocketCAN, ZLG, ControlCAN
# CanKit.Pro: the protocol you need brings its own infrastructure along
dotnet add package CanKit.Pro.Uds # pulls IsoTp, RawCan, Actor, Reliability
dotnet add package CanKit.Pro.CANopen
dotnet add package CanKit.Pro.J1939 # pulls J1939Tp, Addressing, RawCan, Actor, Reliability
Each package page below is the package's own README, the same text that ships inside the
.nupkg and appears on nuget.org.