I agree with most of what's been said, but want to add one more items:
In my opinion NR_SUB_DEVICE_OUT_OF_RANGE should be the first thing you check for.
If the message is sent to a sub-device that doesn't exist (or to any sub-device on a root-only responder) it should be NACK'd with this reason code regardless of the PID and CC.
This is a common mistake: Root-only responders often don't validate the sub-device field, which can have disastrous consequences when the controller sends a broadcast set to a sub-devices.
|