1
0
Fork 0

assignable ID numbers at construction

This commit is contained in:
Kevin Matz 2021-08-13 10:04:30 -04:00
parent 16217879c1
commit 2ebc026af7
7 changed files with 24 additions and 17 deletions

View File

@ -30,15 +30,16 @@ namespace RDM {
/**
* @brief Device::Device
*/
Device::Device(Device* parent)
Device::Device(UID id, Device* parent)
: DMX::Device()
, deviceModelID(0)
, deviceModelDescription("Basic RDM Device")
, deviceProductCategory(PRODUCT_CATEGORY_NOT_DECLARED)
, id_(id)
, parent_(parent)
, status_reporting_threshold_(STATUS_ADVISORY)
{
id.manufacturer = MY_ESTA_MANUFACTURER_ID;
id_.manufacturer = MY_ESTA_MANUFACTURER_ID;
queued_statuses_.emplace(STATUS_ADVISORY, std::queue<StatusPtr>());
queued_statuses_.emplace(STATUS_WARNING, std::queue<StatusPtr>());

View File

@ -41,7 +41,7 @@ class Device
: public DMX::Device
{
public:
Device(Device* parent = nullptr);
Device(UID id = UID(), Device* parent = nullptr);
virtual ~Device();
void addSubDevice(uint16_t number, Device* dev);
@ -55,13 +55,13 @@ public:
virtual void identify(bool state) { identifying_ = state; }
virtual void reset(bool hard) { (void)hard; }
UID id;
uint16_t deviceModelID;
std::string deviceModelDescription;
uint16_t deviceProductCategory;
protected:
friend class Responder;
UID id_;
std::unordered_map<uint16_t, Device*> sub_devices_;
std::unordered_map<PID, Parameter*> parameters_;
std::vector<Sensor*> sensors_;

View File

@ -31,8 +31,8 @@ namespace RDM {
/**
* @brief Responder::Responder
*/
Responder::Responder()
: Device()
Responder::Responder(UID id, Device* parent)
: Device(id, parent)
, control_field(0)
{
deviceModelID = 1;
@ -169,7 +169,7 @@ void Responder::receive(const MsgPtr message)
}
// RDM::UID::operator== also returns true for broadcast messages
if (message->destination != id ||
if (message->destination != id_ ||
message->incorrect_sc ||
message->incorrect_sub_sc)
return;
@ -199,7 +199,7 @@ void Responder::receive(const MsgPtr message)
return;
auto response = MsgPtr(new Message());
response->source = id;
response->source = id_;
response->destination = message->source;
response->subDevice = message->subDevice;
response->parameterId = message->parameterId;
@ -362,19 +362,19 @@ void Responder::actionDiscoverUniqueBranch(const MsgPtr message, MsgPtr response
upper.manufacturer = Message::readType<uint16_t>(*message->data(), 6);
upper.device = Message::readType<uint32_t>(*message->data(), 8);
if (id.uid < lower.uid)
if (id_.uid < lower.uid)
{
response->do_no_send = true;
return;
}
if (id.uid > upper.uid)
if (id_.uid > upper.uid)
{
response->do_no_send = true;
return;
}
response->appendData(id.manufacturer);
response->appendData(id.device);
response->appendData(id_.manufacturer);
response->appendData(id_.device);
}

View File

@ -34,7 +34,7 @@ class Responder
: public Device
{
public:
Responder();
Responder(UID id, Device* parent = nullptr);
virtual ~Responder();
union {

View File

@ -41,7 +41,7 @@ class Broker
, public EPT::Client
{
public:
Broker();
Broker(UUID::uuid = UUID::uuid());
virtual ~Broker();
};

View File

@ -28,11 +28,12 @@ namespace RDMnet {
/**
* @brief Controller::Controller
*/
Device::Device(UUID::uuid cid)
Device::Device(UUID::uuid cid, UUID::uuid rid, RDM::UID uid)
: ACN::Component(cid)
, RDM::Responder()
, RDM::Responder(uid)
, LLRP::Target()
, EPT::Client()
, rid_(rid)
{
}

View File

@ -43,8 +43,13 @@ class Device
, public EPT::Client
{
public:
Device(UUID::uuid = UUID::uuid());
Device(UUID::uuid cid = UUID::uuid(),
UUID::uuid rid = UUID::uuid(),
RDM::UID uid = RDM::UID());
virtual ~Device();
private:
UUID::uuid rid_;
};
} // namespace RDMnet