We've launched our new site at www.openlighting.org. This wiki will remain and be updated with more technical information.
ArtNet, RDM and Packet Interleaving
From wiki.openlighting.org
RDM over Artnet
ArtNet nodes behave as pass-through devices for non-discovery RDM data. The normal sequence of RDM commands looks like this:
The Potential Problem
The problem occurs when the RDM device responds with an ACK_OVERFLOW message.
From the standard:
To receive the remaining data, the controller should continue to send GET_COMMANDS for the same PID. The responder shall send subsequent blocks of data with a response type of RESPONSE_TYPE_ACK_OVERFLOW until the remaining data can fit in a single message. The responder shall set the response type to RESPONSE_TYPE_ACK on the final response message in the sequence, to indicate completion of the data transfer.
Assuming that PID A causes an ACK_OVERFLOW, the sequence now looks like this:
But the standard also states:
The responder shall abort a partial transfer of overflow data for a PID when receiving a command for a different PID before the overflow data transfer is complete. A subsequent command for the overflow PID will result in a new data transfer starting at the beginning of the data set.
So any RDM packet interleaved between the two GET PID A' commands in the above example will cause the transfer to abort.
- Note that the Labpack has a bug where it will not abort the transfer so this continues to work. This is present in version 0x20009