Skip to content

CanKit.Pro.CANopen Namespace

Classes
CanOpen Factory entry point for opening ICanOpenNode instances. Non-instantiable.
CanOpenCobId CiA 301 pre-defined connection set: helpers that translate CANopen node identifiers into the 11-bit COB-IDs used for NMT, SYNC, EMCY, PDO, SDO and heartbeat traffic.
CanOpenDeviceDescription A CiA 306 device description — an EDS (electronic data sheet) or a DCF (device configuration file) — read with the maintainer's EdsDcfNet library and ready to be applied to a node: OpenNode(ICanBus, byte, CanOpenDeviceDescription, CanOpenNodeOptions) creates the node's object dictionary and its PDO, SYNC, EMCY, heartbeat and guarding configuration from it, and reports in DeviceDescriptionReport what it could not take as written.
CanOpenDiscoveredNode One node CanOpenDiscovery found.
CanOpenDiscovery Finds the CANopen nodes on a bus (#131 decision 3; FR-CO-033, FR-CO-034). Listening is the default; scanning is a separate call, made only when the caller asks for it.
CanOpenNodeExtensions Asynchronous disposal for ICanOpenNode.
CanOpenNodeOptions Runtime configuration for a CanOpenNode. All values are captured at construction time and treated as immutable for the node's lifetime; use With(...) to derive a modified template for tests.
CanOpenTransportException Raised when a CANopen frame could not be handed off to the bus (L2 rejection, bus-off, or TX confirmation timeout). Surfaces through the node's BackgroundExceptionOccurred event rather than any single caller — the CANopen wire protocols (SYNC / heartbeat / PDO / EMCY) are fire-and-forget from an application caller's perspective, so there is no single request task to fail. Derives from CanKitException so L2/L3/L4 failures can be caught uniformly across the library (NFR-006 error architecture, arc42 ADR-12).
DeviceDescriptionFinding One entry of a device description the node could not take as written, and what it did instead.
DeviceDescriptionReport The result of applying a CanOpenDeviceDescription to a node: what was loaded and every entry that was degraded, omitted or supplied. A description whose every entry the node implements as written has no Findings.
EmcyReceivedEventArgs Argument type for the EmcyReceived event: a decoded incoming EMCY frame.
FlyingMasterChangedEventArgs Arguments of FlyingMasterChanged.
ForeignPdoObservation What one peer PDO (one mapping record) did with an observed payload.
ForeignPdoObserveResult The outcome of ObserveForeignPdoAsync for one COB-ID. A COB-ID that no live communication record assigns — and that the peer file does not assign either, when that live read failed — has no Observations and a Reason. A COB-ID assigned to more than one PDO has one observation per PDO, in transmit-record order and then receive-record order.
HeartbeatReceivedEventArgs Argument type for the HeartbeatReceived event: a valid CANopen heartbeat with the reported State from the producer's NMT slave state machine.
HeartbeatTimeoutEventArgs Argument type for the HeartbeatTimeout event: the local heartbeat consumer for ProducerNodeId did not observe a heartbeat within the configured timeout.
LifeGuardingEventArgs Argument type for the LifeGuardingEvent: the producer-side (NMT slave) life guarding of CiA 301 §7.2.8.3.2.1, driven by 100Ch (guard time) and 100Dh (life time factor) of this node's object dictionary.
NmtCommandReceivedEventArgs Arguments of NmtCommandReceived.
NmtResetEventArgs Argument type for the NmtCommandReceived event: a decoded incoming NMT master command.
NodeGuardingReceivedEventArgs Argument type for the NodeGuardingReceived event: a valid node-guarding response was received from ProducerNodeId (FR-CO-009, CiA 301 §7.2.8.3.2.1).
NodeGuardingTimeoutEventArgs Argument type for the NodeGuardingTimeout event: the configured life-time (guardTime × lifeTimeFactor) elapsed without a fresh response from ProducerNodeId (FR-CO-009).
ObjectDictionary Thread-safe in-memory Object Dictionary keyed by (index, subindex) per CiA 301 §7.4.6 (FR-CO-001). Provides typed read/write accessors that enforce the declared OdDataType; typed reads against an entry of the wrong data type throw InvalidOperationException.
OdEntry A single subindex entry in the local Object Dictionary (FR-CO-001): value + declared data type + access flags + PDO mappability. Stored inside ObjectDictionary; not intended to be constructed directly by callers — use the fluent Add* methods on the dictionary.
PeerSdoAccessException An SDO client upload or download was refused locally, before any frame was sent, because the (index, sub-index) is not one this node may transfer to that server.
RpdoReceivedEventArgs Argument type for the RpdoReceived event: an RPDO whose mapping the local node knows about was received, unpacked and applied to the local Object Dictionary.
SyncReceivedEventArgs Argument type for the SyncReceived event: a raw incoming SYNC frame.
Structs
ForeignPdoSignal One mapped object taken out of a foreign PDO payload. The bytes are the slice the mapping assigns to Index:SubIndex, little-endian, the same order a PDO carries. A dummy mapping (0001h–0007h) occupies its bits in the payload and is not delivered.
Interfaces
ICanOpenNode A single CANopen node running on top of the CanKit.Pro L2 demux (arc42 §5.3, ADR-5; FR-CO-012). Combines an NMT slave state machine, a local Object Dictionary, an SDO server (for the local OD) and an SDO client (for remote nodes on the same bus), plus the SYNC, EMCY, heartbeat producer/consumer, node-guarding and PDO plumbing of CiA 301 §7.
IForeignPdoSink Receives the objects decoded from a foreign PDO. The observe path writes here and nowhere else: the local object dictionary is not a sink.
Enums
CanOpenNodeProfile Which role a node is opened as. One process can host a device and a tool at once; each node keeps the profile it was constructed with, and the default of 1F80h is chosen from that profile when the communication objects are created.
CanOpenPresenceEvidence What showed that a node is on the bus. A node may carry more than one.
DeviceDescriptionOutcome What the node did with an entry of a device description it could not take as written.
ForeignPdoKind Whether a decoded foreign PDO is one the peer transmits or one the peer receives.
ForeignPdoMappingOrigin Where the mapping that split a foreign PDO came from.
LifeGuardingState State reported by the LifeGuardingEvent (CiA 301 §7.2.8.2.2.2 Table 34).
OdAccess Read/write access flag for an OdEntry. SDO write attempts against a read-only entry produce SDO abort 0x06010002 ("attempt to write a read-only object"). CiA 301's const access is represented as ReadOnly: on the bus both behave the same.
OdDataType Data types supported by the Object Dictionary (CiA 301 §7.4.7 Table 44, the data-type indices 0001h–001Bh a device description names). The fixed-width types imply their on-the-wire size (little-endian) for SDO expedited encoding and PDO mapping (FR-CO-001 / FR-CO-005); the strings and Domain are variable-length.