Can — Requirements
Normative
Defines what a conformant CAN driver MUST do. Requirements are clustered by severity so the essential contract is read first — expand a cluster below. Keywords per Requirement Keywords; conformance per Conformance. Requirements do not carry individual status — the set-level status applies to all of them. Exact signatures, error codes, and configuration properties are in the API Reference, Errors, and Configuration Reference pages.
Mandatory (MUST) - 26 Requirements
The conformance contract — an implementation MUST satisfy every requirement here.
CHI-CAN-MUST-01 — Driver lifecycle
|
The driver MUST power up in |
CHI-CAN-MUST-02 — Channel state machine
|
Each channel MUST follow the state machine in Concepts. |
CHI-CAN-MUST-03 — Asynchronous state transitions
|
If a transition cannot be confirmed immediately (e.g. it requires status-register polling),
|
CHI-CAN-MUST-04 — Cancel pending messages on leaving the bus
|
On a transition to |
CHI-CAN-MUST-05 — No remote frames
|
The driver MUST NOT transmit messages in response to remote transmission requests, and MUST configure the CAN hardware to ignore and reject all incoming remote transmission requests. |
CHI-CAN-MUST-06 — Bus-off and unrecoverable error handling
|
On detecting bus-off or an unrecoverable channel error, the driver MUST transition the
channel to |
CHI-CAN-MUST-07 — No automatic bus-off recovery
|
The driver MUST disable or suppress any automatic bus-off recovery mechanism; recovery is the upper layer’s responsibility (rationale: Design Decisions). |
CHI-CAN-MUST-08 — Transmit behavior
|
When the target TX hardware object is free, |
CHI-CAN-MUST-09 — Transmit data consistency
|
The driver MUST copy the transmit data directly from the upper-layer buffer. The upper layer
is responsible for keeping that buffer consistent until the |
CHI-CAN-MUST-10 — Retain PDU id for confirmation
|
|
CHI-CAN-MUST-11 — No software priority emulation
|
The driver MUST NOT emulate L-PDU priority in software. Priority MUST rely on hardware capability or be managed by the upper layer. |
CHI-CAN-MUST-12 — Frame format, ID, and length interpretation
|
The driver MUST interpret the two most significant bits of |
CHI-CAN-MUST-13 — Reception notification
|
On receiving an L-PDU, the driver MUST invoke |
CHI-CAN-MUST-14 — Data byte-order mapping
|
For both transmission and reception, byte n of the CAN payload MUST map to element n of the L-SDU buffer (first byte ↔ element 0). If the hardware byte order differs, the driver MUST rearrange the data so the upper layer always sees this order. |
CHI-CAN-MUST-15 — Receive data consistency
|
The driver MUST guarantee received-data consistency until |
CHI-CAN-MUST-16 — Multiple hardware objects per RX mailbox
|
The driver MUST support an RX mailbox backed by multiple hardware objects, implemented as a hardware FIFO or as multiple identically-configured objects (shadow buffer). |
CHI-CAN-MUST-17 — Mailbox and hardware-object handle configuration
|
The driver MUST support configuring multiple TX and RX mailboxes, where each mailbox consists of one or more hardware object handles (HOHs). |
CHI-CAN-MUST-18 — Configurable event handling mode
|
For each channel, the driver MUST support selecting interrupt or polling handling
independently for transmit, reception, and bus-off/error events. |
CHI-CAN-MUST-19 — Upper-layer notifications
|
The driver MUST notify the upper layer of completed transmissions ( |
CHI-CAN-MUST-20 — Scheduling functions
|
The driver MUST provide |
CHI-CAN-MUST-21 — Development error detection
|
When development error reporting is enabled, each API MUST detect and report the invalid conditions listed for it in Errors (e.g. use before init, invalid channel or mailbox id, null pointer, invalid length, invalid state transition). |
CHI-CAN-MUST-22 — Runtime and unrecoverable error reporting
|
The driver MUST report unrecoverable hardware errors via |
CHI-CAN-MUST-23 — API surface and behavior
|
The driver MUST provide the functions specified in API Reference — |
CHI-CAN-MUST-24 — Data types
|
The driver MUST define the types in API Reference ( |
CHI-CAN-MUST-25 — Expected interfaces present
|
The integrator MUST provide the interfaces the driver calls: |
CHI-CAN-MUST-26 — Minimum configuration items
|
The driver MUST support at least the configuration items in Configuration Reference (general options, configuration set, channel, baudrate, mailbox, and filter properties). Vendor-specific extensions are allowed; the configuration toolchain and file schema are implementation-defined. |
Recommended (SHOULD) - 1 Requirement
Strongly advised; ignore only with a clear, understood reason. Not required for conformance.
CHI-CAN-SHOULD-01 — Runtime baudrate switching
|
Where an application changes bit timing at runtime, the driver SHOULD provide
|
Optional (MAY) - 2 Requirements
Truly optional; consumers must not assume these features are present.
CHI-CAN-MAY-01 — Multiplexed transmission
|
The driver MAY support multiplexed transmission by assigning multiple hardware objects to a single TX mailbox and using the corresponding hardware mechanism. |
CHI-CAN-MAY-02 — Lost-frame detection and reporting
|
Where the hardware can detect lost frames (overwrite or FIFO overrun), the driver MAY report
a lost received frame via |