publicly accessible UID
This commit is contained in:
parent
9b27820873
commit
a1b08fd22d
|
@ -34,17 +34,14 @@ namespace RDM {
|
|||
*/
|
||||
Device::Device(UID id, Device* parent)
|
||||
: DMX::Device()
|
||||
, uid(id)
|
||||
, deviceManufacturerLabel(MY_ESTA_MANUFACTURER_LABEL)
|
||||
, deviceModelDescription("Basic RDM Device")
|
||||
, deviceModelID(0)
|
||||
, deviceProductCategory(PRODUCT_CATEGORY_NOT_DECLARED)
|
||||
, id_(id)
|
||||
, parent_(parent)
|
||||
, status_reporting_threshold_(STATUS_ADVISORY)
|
||||
{
|
||||
if (!id_.manufacturer)
|
||||
id_.manufacturer = MY_ESTA_MANUFACTURER_ID;
|
||||
|
||||
queued_statuses_.emplace(STATUS_ADVISORY, std::queue<StatusPtr>());
|
||||
queued_statuses_.emplace(STATUS_WARNING, std::queue<StatusPtr>());
|
||||
queued_statuses_.emplace(STATUS_ERROR, std::queue<StatusPtr>());
|
||||
|
|
|
@ -47,6 +47,8 @@ public:
|
|||
explicit Device(UID id = UID(), Device* parent = nullptr);
|
||||
virtual ~Device();
|
||||
|
||||
const UID uid; //!< This devices UID
|
||||
|
||||
void addSubDevice(uint16_t number, Device* dev);
|
||||
Device* subDevice(uint16_t number);
|
||||
uint16_t subDeviceCount() const;
|
||||
|
@ -67,7 +69,6 @@ public:
|
|||
|
||||
protected:
|
||||
friend class Responder;
|
||||
UID id_; //!< device UID
|
||||
std::unordered_map<uint16_t, Device*> sub_devices_; //!< sub devices
|
||||
std::unordered_map<PID, Parameter*> parameters_; //!< parameters
|
||||
std::vector<Sensor*> sensors_; //!< sensors
|
||||
|
|
|
@ -126,6 +126,8 @@ void Responder::send(const MsgPtr response)
|
|||
|| response->mdb.cc == SET_COMMAND_RESPONSE))
|
||||
return;
|
||||
|
||||
response->source = uid;
|
||||
|
||||
/// \cite RDM 6.2.8.2 Message Count field for Responder Generated Messages
|
||||
/// If a responder has more than 255 messages queued, then the Message Count
|
||||
/// field shall remain at 255 until the number of queued messages is reduced
|
||||
|
@ -182,7 +184,7 @@ void Responder::receive(const MsgPtr message)
|
|||
}
|
||||
|
||||
// RDM::UID::operator== also returns true for broadcast messages
|
||||
if (message->destination != id_ // not for me
|
||||
if (message->destination != uid // not for me
|
||||
|| message->incorrect_sc // not RDM
|
||||
|| message->incorrect_sub_sc // not a supported RDM format
|
||||
)
|
||||
|
@ -217,7 +219,6 @@ void Responder::receive(const MsgPtr message)
|
|||
}
|
||||
|
||||
auto response = std::make_shared<Message>();
|
||||
response->source = id_; // response is from this device
|
||||
response->destination = message->source; // send response to sender of message
|
||||
response->subDevice = message->subDevice; // copy sub-device
|
||||
response->mdb.pid = message->mdb.pid; // copy PID
|
||||
|
@ -380,19 +381,19 @@ void Responder::actionDiscoverUniqueBranch(const MsgPtr message, MsgPtr response
|
|||
upper.manufacturer = Message::readType<uint16_t>(message->mdb.pd, 6);
|
||||
upper.device = Message::readType<uint32_t>(message->mdb.pd, 8);
|
||||
|
||||
if (id_.uid() < lower.uid())
|
||||
if (uid.uid() < lower.uid())
|
||||
{
|
||||
response->do_not_send = true;
|
||||
return;
|
||||
}
|
||||
if (id_.uid() > upper.uid())
|
||||
if (uid.uid() > upper.uid())
|
||||
{
|
||||
response->do_not_send = true;
|
||||
return;
|
||||
}
|
||||
|
||||
response->appendParameterData(id_.manufacturer);
|
||||
response->appendParameterData(id_.device);
|
||||
response->appendParameterData(uid.manufacturer);
|
||||
response->appendParameterData(uid.device);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue