Patrick,
For Question #1:
It is expected that messages sent to a SUB_DEVICE_ALL_CALL for a specific UID respond back to the controller. Since you are communicating to a specific UID, there aren't any collision issues that you would have using an ALL_CALL with other root devices.
You'll see in the message templates for the Controller and Response messages that 0xFFFF is included in the Sub-Device field as valid for response messages.
For Question #2:
For a GET sent to all the SUB_DEVICE_ALL_CALL the answer is a little less clear. There is no defined behavior I can think of that specifies a useful response here. It's kind of a non-sensical request to get from a controller for some devices.
Some options you have:
- If you have determined that all your devices in fact have the same value for all sub-devices you could respond with the actual data value with the SUB_DEVICE_ALL_CALL.
- You could Queue up messages for ALL the Sub-devices and return them one at a time with the QUEUED_MESSAGE request. Could be a bit messy though.
- Probably the safest thing I can think of would be to NACK it with NR_SUB_DEVICE_OUT_OF_RANGE, that way there is no confusion about what you're going to do with that GET request for all the sub-devices.