1
0
Fork 0

use the widget mode to determine the appropriate RDM configuration

This commit is contained in:
Kevin Matz 2023-04-25 16:48:24 -04:00
parent 54b2335c98
commit 2fdef29242
3 changed files with 24 additions and 4 deletions

View File

@ -16,6 +16,7 @@ target_link_libraries(${PROJECT_NAME}
PUBLIC
LCP::BufferStream
LCP::DMX
LCP::RDM
)
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION})

View File

@ -23,8 +23,6 @@
*/
#include "widget.h"
#include <chrono>
namespace ENTTEC {
Widget::Widget()
@ -36,6 +34,8 @@ Widget::Widget()
, usb_mode(USBunknown)
, rx_update_mode_(Pro::RxNotifyAlways)
, token_data_changed_(nullptr)
, rdm_controller_(nullptr)
, rdm_responder_(nullptr)
{
}
@ -52,6 +52,10 @@ Widget::~Widget()
default:
break;
}
if (rdm_controller_)
delete rdm_controller_;
if (rdm_responder_)
delete rdm_responder_;
}
@ -112,6 +116,10 @@ void Widget::setModeController()
std::scoped_lock lock(mtx_metadata_);
token_data_changed_ = onDataChange([this](DMX::Universe*){sendDmx();});
device_class_ = DMX::CONTROLLER;
if (rdm_responder_)
delete rdm_responder_;
if (featureRDM())
rdm_controller_ = new RDM::Controller();
}
@ -125,10 +133,16 @@ void Widget::setModeBridge(Pro::DMX_RX_MODE mode)
std::scoped_lock lock(mtx_metadata_);
token_data_changed_ = nullptr;
rx_update_mode_ = mode;
if (rdm_controller_)
delete rdm_controller_;
if (featureRDM())
device_class_ = DMX::RESPONDER;
{
RDM::UID id(serial_number, 0x454E); // Use the ENTTEC manufacturer ID?
rdm_responder_ = new RDM::Responder(id);
device_class_ = DMX::RESPONDER;
}
else
device_class_ = DMX::RECEIVER;
device_class_ = DMX::RECEIVER;
}
auto msg = std::make_shared<Pro::MsgRecieveDMXOnChange>();
msg->mode = mode;

View File

@ -25,9 +25,11 @@
#include "pro.h"
#include <rdm_controller.h>
#include <cstring>
#include <future>
#include <mutex>
#include <responder.h>
#include <universe.h>
#include <vector>
@ -148,6 +150,9 @@ private:
mutable std::mutex mtx_metadata_;
std::shared_ptr<void> token_data_changed_;
RDM::Controller *rdm_controller_;
RDM::Responder *rdm_responder_;
};
} // namespace ENTTEC