OpenLCB Specifications
This page provides access to the OpenLCB™ Standards and Technical Note documents.
OpenLCB is not a formal standards-making body, but we are interested in making it clear what’s required and not required for interoperation between OpenLCB nodes. Therefore, we are creating a series of “standards” and corresponding explanatory “technical notes” as specific documents. “Standards” are normative, to the extent that anything this bunch of happy campers does can be proscriptive. “Technical Notes” are coupled statements of explanations and additional information that go with each standard. For more information on the conventions used when writing OpenLCB standards and technical notes, please see the separate “conventions” page.
For background information, informal and development documents, etc, please see the “documentation” index page.
These documents describe the 0.5 version of the OpenLCB protocols.
Layered View
OpenLCB has been created as a layered family of protocols. The basic structure is along the lines of the wildly successful architecture of the ARPA TCP/IP family of protocols. For use on e.g. Controller Area Network (CAN), OpenLCB has to deal with lower-level concepts than the TCP/IP stack does, so OpenLCB is structured like a hybrid of the TCP/IP with the lower-level physical-layer and data-link-layer concepts of the ISO model.
In the following, items marked in light green are complete and adopted. Items marked in teal are in their penultimate form, and only awaiting final comments from the OpenLCB egroup. Items marked in blue are solid drafts, with the next step being discussion and adoption. Uncolored links are to informal and preliminary documents which will eventually form drafts, and then adopted standards and technical notes. The right two columns list the corresponding ISO and TCP/IP layer names, and are not part of OpenLCB.
(We need a strong technical, non-normative introduction of some sort. It’s not clear where it goes in this view of the table of contents. See the prior “Technical Introduction” development document for an example of possible content.)
Common | CAN | TCP/IP | OSI Model Layer | TCP/IP Model Layer |
---|---|---|---|---|
Time Broadcast Protocol [prelim Std (.pdf) (.odt)] [prelim TN (.pdf) (.odt)] [Older Working Note (.pdf)] Train Control Protocol Display Protocol [dev note] Remote Button Protocol [prelim TN (.pdf)(.odt)] Ident Method [dev note] Event Teaching/Learning Protocol [dev note 1] [dev note 2] [dev note 3] Abbreviated Configuration Description Information [obsolete, merged into Configuration Description Information] [obsolete Std Simple Node Identification Protocol [Std Configuration Description Information [Std (.pdf)(.odt)] Memory Configuration Protocol [Std (.pdf)(.odt)] Producer/Consumer Protocol [dev Protocol Identification |
Application | Application | ||
Presentation | ||||
Session | ||||
Stream Transport | OpenLCB-CAN Stream Transport [dev note] |
OpenLCB-TCP/IP Stream Transport | Transport | Transport |
Datagram Transport [Standard (.pdf)(.odt)] [TN (.pdf)(.odt)] Future versions: |
OpenLCB-CAN Datagram Transport (See General Spec) |
OpenLCB-TCP/IP Datagram Transport | ||
OpenLCB Event Transport [Standard (.pdf)(.odt)] [TN (.pdf)(.odt)] Future versions: |
OpenLCB-CAN Event Transport (See General Spec) |
OpenLCB-TCP/IP Event Transport | ||
Message Network [Std (.pdf)(.odt)] [TN (.pdf)(.odt)] |
Network | Internet/Network | ||
Unique Identifiers (Node IDs) [Standard .pdf .odt] [Technical Note .pdf .odt] Future versions: |
OpenLCB-CAN Frame Transfer
[Standard (.pdf)(.odt)] Future versions: Note at the moment |
OpenLCB-TCP Transfer [prelim Std (.pdf)(.odt)] |
Data Link | Network Interface/Subnetwork |
OpenLCB-CAN Physical Layer [Standard .pdf .odt] [Technical Note .pdf .odt] Future versions: None at the moment |
(none) | Physical Interface | ||
Common Information TN (.pdf) (.odt) Future version: None at the moment Glossary of OpenLCB terms Future version: None at the moment |
Background Info | Background Info |
Other Documents
General
We need a strong technical, non-normative introduction of some
sort. See the prior “Technical
Introduction” development document.
Documentation conventions and general background information on
data types, etc, can be found in the “Common
Information TN” adopted version: (.pdf)
(.odt)
Future version: None at the moment.
Glossary of OpenLCB terms
accepted version: (.pdf) (.odt)
Future version: None at the moment.
Allocation Tables
Various numbers have to be allocated and recorded in OpenLCB. This
section documents those.
Unique IDs and Node
IDs
OpenLCB node IDs are a form of unique identifier which are
allocated as described in an adopted
[Standard (.pdf)(.odt)]
and [Technical Note (.pdf)(.odt)].
Specific values are recorded and make available via OpenLCB web
pages:
-
Formatted
tables of assigned unique ID ranges -
Single
table of assigned unique ID ranges -
XML
listing of assigned unique ID ranges - Request
to be assigned a range
Message Type
Indicators (MTIs)
OpenLCB Message Type Indicators (MTIs) are allocated as described
in the message-level documentation. The specific assigned values are
tracked in a [spreadsheet (.pdf)(.ods)].
Event IDs
The specific assigned values are tracked in a [spreadsheet (.pdf)(.ods)].
Protocol ID numbers
Protocol ID bits are defined at the Protocol Identification
Request message of the Message Network specification. [(.pdf)
(.odt)]
Datagram protocol IDs
The specific assigned values are tracked in a spreadsheet
[(.pdf)(.ods)].
Stream protocol IDs
The specific assigned values are tracked in a spreadsheet
[(.pdf)(.ods)].
Memory Spaces
The Memory Configuration Protocol defines memory spaces, some of
which are reserved for specific uses. [(.pdf)
(.ods)]
References
TCP/IP model
http://www.tcpipguide.com/free/t_TCPIPArchitectureandtheTCPIPModel-2.htm
http://www.davidchappell.com/HTML_email/Opinari_No9_01_04.html
OSI model
http://www.tcpipguide.com/free/t_OSIReferenceModelLayerSummary.htm