Open Lighting Architecture
Latest Git
|
A sub device in the simulated dimmer.
Public Member Functions | |
DimmerSubDevice (const UID &uid, uint16_t sub_device_number, uint16_t total_sub_devices) | |
void | SendRDMRequest (RDMRequest *request, RDMCallback *callback) |
Send a RDM command. More... | |
uint16_t | Footprint () const |
bool | SetDmxStartAddress (uint16_t start_address) |
uint16_t | GetDmxStartAddress () const |
ola::rdm::DimmerSubDevice::DimmerSubDevice | ( | const UID & | uid, |
uint16_t | sub_device_number, | ||
uint16_t | total_sub_devices | ||
) |
We need the total sub device count here because the sub device field in DEVICE_INFO must be the same for both the root and all sub devices (10.5).
|
virtual |
Send a RDM command.
request | the RDMRequest, ownership is transferred. |
on_complete | The callback to run when the request completes. |
Implementors much ensure that the callback is always run at some point. In other words, there must be no way that a request can be dropped in such a way that the callback is never run. Doing so will either block all subsequent requests, or leak memory depending on the implementation.
Also the implementor of this class may want to re-write the transaction #, and possibly the UID (changing src UIDs isn't addressed by the RDM spec).
The RDMRequest may be a DISCOVERY_COMMAND, if the implementation does not support DISCOVERY_COMMANDs then the callback should be run with ola::rdm::RDM_PLUGIN_DISCOVERY_NOT_SUPPORTED.
Implements ola::rdm::RDMControllerInterface.