1
0
Fork 0

publicly accessible UID

This commit is contained in:
Kevin Matz 2023-04-28 21:02:35 -04:00
parent 9b27820873
commit a1b08fd22d
3 changed files with 10 additions and 11 deletions

View File

@ -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>());

View File

@ -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

View File

@ -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);
}