openlcb / documents

The OpenLCB specification: standards, recommended practices and other documentation.
3 stars 7 forks source link

Clarification of CAN alias collision handling #87

Open bobjacobsen opened 1 year ago

bobjacobsen commented 1 year ago

In the OLCB Frame Transport Standard, section 6.2.5 "Node ID Alias Collision Handling" it says in part

If the frame is not a Check ID (CID) frame, the node is in Permitted state, and the received source Node ID alias is the current Node ID alias of the node, the node shall immediately transition to Inhibited state, send an AMR frame to release and then stop using the current Node ID alias.

It been pointed out that section 5 seems to be in conflict with this:

A node in the Inhibited state may transmit Check ID, Reserve ID, and Alias Map Definition frames. A node in the Inhibited state shall not transmit any other frame type.

But note that 6.2.4 "Transition to Inhibited State" defines that transition to include the sending of the AMR:

To transition from the Permitted state to the Inhibited state, a node shall successfully transmit an Alias Map Reset frame with the node's reserved Node ID alias and Node ID.

The section 6.2.5 language should be improved to make clear that the AMR being sent there is part of that associated transition to Inhibited state.

Note that there's also a discussion of whether that AMR should be sent at all. That should be resolved first, before making this clarification of the language.