Note: Message Types for Simple Nodes

The full OpenLCB protocol is complicated, because it has to enable complete discovery and routing into the future along with supporting multiple data transfer protocols.

But simple nodes, e.g. a board on a CAN segment, only have to handle a subset of the full protocol. This note discusses that.

For the purposes of this note, we consider a "simple board" to:

Initialization

The simple board must take part in the CIM, RIM protocol to get a alias allocated.

Once that process is done, the simple board must send an "Initialization Complete" message.

It must follow that with "Producer Identified" and "Consumer Identified" messages for each of the events that it produces and consumes, respectively.

Monitoring

The simple board must listen for "Verify Node ID Number" and "Verify Node ID Number" with its NID present. When found, the board needs to reply.

Events

Producing

To produce an event, the simple board must send "Producer/Consumer Event Report" messages.

Consuming

To comsume an event, the simple board must listen for "Producer/Consumer Event Report" messages that match events its monitoring.

Notification

If the node produces or consumes events, it must listen for "Identify Producers" and "Identify Consumers" messages, respectively, with Event IDs that match its own internal Event IDs, and "Identify Events" messages that match its Node ID (NID).

If found, it must reply with it's own "Producer Identified" and "Consumer Identified" messages.

Summary: Bus Monitoring

The simple board must listen for the following CAN frames, and respond to them. All others can be ignored, e.g. via CAN filters.

For a CAN node, at a minimum a board must receive and process two CIM, RIM segment specific messages, plus one (two if Addressed/Unaddressed is separately counted) common OpenLCB message. Configuration process not included here

If the board can also produce and consume events, it has to receive and process four more message types.

Alternately, here are the messages a simple CAN board can ignore, perhaps via filtering:


Site hosted by

This is SVN $Revision: 781 $