Appendix G — Glossary
This glossary defines the OpenLCB/LCC terminology used throughout this documentation.
| Term | Definition |
|---|---|
| ACDI | Abbreviated Default CDI. A simplified identification mechanism that provides manufacturer and user strings via dedicated address spaces (0xFC and 0xFB) without requiring CDI XML parsing. |
| Alias | A 12-bit value used on CAN networks to represent a 48-bit Node ID in the CAN frame header. Aliases are allocated via the CID/RID/AMD login sequence and are only used by the CAN transport layer. |
| AMD | Alias Map Definition. A CAN control frame that announces the binding between a 12-bit alias and a 48-bit Node ID. Sent during login after the alias is reserved. |
| AME | Alias Mapping Enquiry. A CAN control frame requesting nodes to re-announce their alias mappings. An AME with no data field is a global query; with a 6-byte Node ID it targets a specific node. |
| AMR | Alias Map Reset. A CAN control frame announcing that a node is releasing its alias. Receiving nodes must stop using that alias within 100ms. |
| CAN | Controller Area Network. A bus protocol using differential signaling, originally developed for automotive applications. OpenLCB uses CAN 2.0B extended frames with 29-bit identifiers at 125 kbps. |
| CDI | Configuration Description Information. An XML document served from address space 0xFF that describes a node's configurable options, allowing configuration tools to generate a UI automatically. |
| CID | Check ID. A CAN control frame (CID7 through CID4) used during alias reservation. Each CID frame carries 12 bits of the node's 48-bit Node ID for collision detection. |
| Consist | A group of train nodes linked together so that commands sent to the lead train are forwarded to all member (listener) trains. Implemented via the listener attach/detach protocol. |
| Consumer | A node that receives and acts upon a specific Event ID when it is produced (reported via PCER) by another node on the network. |
| Datagram | A reliable, addressed message of up to 72 bytes (64 bytes of payload after protocol overhead). Used for configuration memory read/write operations. Requires acknowledgment (Datagram OK or Rejected). |
| Event ID | A 64-bit (8-byte) value that identifies a specific occurrence or state. Events are the primary mechanism for inter-node communication in OpenLCB. They are produced (PCER) and consumed by nodes. |
| FDI | Function Description Information. An XML document (address space 0xFA) describing the functions available on a train node, similar to CDI but specific to train control functions. |
| FIFO | First In, First Out. A queue data structure used in the library to buffer incoming CAN frames (CAN FIFO) and incoming OpenLCB messages (OpenLCB FIFO) between the RX path and the main loop. |
| float16 | IEEE 754 half-precision floating point. Used by the train protocol for speed values, providing adequate precision (about 3 decimal digits) in just 2 bytes. |
| Inhibited | A CAN-specific node state before alias reservation is complete. An inhibited node may only transmit CID, RID, and AMD frames. After AMD is sent, the node transitions to Permitted. |
| ISR | Interrupt Service Routine. In the library's architecture, the CAN receive ISR reads frames from hardware and pushes them to the CAN FIFO. This is the only code that runs in interrupt context. |
| LCC | Layout Command Control. The NMRA-adopted name for OpenLCB, used in the model railroad industry. LCC and OpenLCB refer to the same protocol. |
| LFSR | Linear Feedback Shift Register. The algorithm used to generate CAN aliases from Node IDs. It produces a deterministic sequence of 12-bit values from a 48-bit seed, with low collision probability. |
| Listener | In the train control context, a consist member node that receives forwarded commands from the lead train. Listeners have flags controlling how speed (reverse), F0 (link F0), and other functions (link Fn) are forwarded. |
| MTI | Message Type Indicator. A 16-bit value that identifies the type of an OpenLCB message. MTI bits encode addressing mode, priority, and whether the message carries an Event ID or destination address. |
| Node | A logical entity on an OpenLCB network identified by a unique 48-bit Node ID. A single physical device may host multiple virtual nodes. Each node can produce and consume events, respond to SNIP queries, and participate in other protocols. |
| Node ID | A globally unique 48-bit (6-byte) identifier assigned to each OpenLCB node. Node IDs are typically written in dotted-hex notation (e.g., 05.01.01.01.00.01). They are allocated from manufacturer-assigned ranges. |
| OIR | Optional Interaction Rejected. A response sent when a node receives an addressed message with an MTI it does not support. Contains the rejected MTI and an error code. |
| OpenLCB | Open Layout Control Bus. An open-source protocol for model railroad control systems. It provides event-based communication, configuration, and train control over CAN, TCP/IP, or other transports. |
| PCER | Producer/Consumer Event Report. The message sent when an event occurs. All nodes consuming that Event ID are notified. PCER may optionally carry a payload (PCER with Payload). |
| Permitted | A CAN-specific node state after alias reservation is complete (AMD sent) but before Initialization Complete is sent. The node has a valid alias but is not yet fully initialized. |
| Producer | A node that generates (produces) a specific Event ID via PCER when a condition or action occurs. Producers announce their events during login via Producer Identified messages. |
| Protocol Support Reply | A 6-byte (48-bit) bit field returned in response to Protocol Support Inquiry. Each bit indicates support for a specific protocol (SNIP, datagram, events, train control, etc.). |
| PSI | Protocol Support Indicator. The individual bit constants (e.g., PSI_DATAGRAM, PSI_EVENT_EXCHANGE) used to build the Protocol Support Reply bit field. |
| RID | Reserve ID. A CAN control frame sent after the 200ms CID wait period to formally claim an alias. No data field. |
| SNIP | Simple Node Information Protocol. A lightweight protocol for retrieving human-readable identification from a node: manufacturer name, model, hardware/software version, and user-assigned name/description. |
| Stream | A bulk data transfer mechanism for transferring large amounts of data with flow control. Defined in the specification but not yet implemented in this library. |
| Virtual Node | A software-only OpenLCB node hosted on a physical device alongside other nodes. Each virtual node has its own unique Node ID and (on CAN) its own alias. From the network perspective, virtual nodes are indistinguishable from physical nodes. |