use the widget mode to determine the appropriate RDM configuration
This commit is contained in:
parent
54b2335c98
commit
2fdef29242
|
@ -16,6 +16,7 @@ target_link_libraries(${PROJECT_NAME}
|
||||||
PUBLIC
|
PUBLIC
|
||||||
LCP::BufferStream
|
LCP::BufferStream
|
||||||
LCP::DMX
|
LCP::DMX
|
||||||
|
LCP::RDM
|
||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
|
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
|
||||||
|
|
|
@ -23,8 +23,6 @@
|
||||||
*/
|
*/
|
||||||
#include "widget.h"
|
#include "widget.h"
|
||||||
|
|
||||||
#include <chrono>
|
|
||||||
|
|
||||||
namespace ENTTEC {
|
namespace ENTTEC {
|
||||||
|
|
||||||
Widget::Widget()
|
Widget::Widget()
|
||||||
|
@ -36,6 +34,8 @@ Widget::Widget()
|
||||||
, usb_mode(USBunknown)
|
, usb_mode(USBunknown)
|
||||||
, rx_update_mode_(Pro::RxNotifyAlways)
|
, rx_update_mode_(Pro::RxNotifyAlways)
|
||||||
, token_data_changed_(nullptr)
|
, token_data_changed_(nullptr)
|
||||||
|
, rdm_controller_(nullptr)
|
||||||
|
, rdm_responder_(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +52,10 @@ Widget::~Widget()
|
||||||
default:
|
default:
|
||||||
break;
|
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_);
|
std::scoped_lock lock(mtx_metadata_);
|
||||||
token_data_changed_ = onDataChange([this](DMX::Universe*){sendDmx();});
|
token_data_changed_ = onDataChange([this](DMX::Universe*){sendDmx();});
|
||||||
device_class_ = DMX::CONTROLLER;
|
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_);
|
std::scoped_lock lock(mtx_metadata_);
|
||||||
token_data_changed_ = nullptr;
|
token_data_changed_ = nullptr;
|
||||||
rx_update_mode_ = mode;
|
rx_update_mode_ = mode;
|
||||||
|
if (rdm_controller_)
|
||||||
|
delete rdm_controller_;
|
||||||
if (featureRDM())
|
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
|
else
|
||||||
device_class_ = DMX::RECEIVER;
|
device_class_ = DMX::RECEIVER;
|
||||||
}
|
}
|
||||||
auto msg = std::make_shared<Pro::MsgRecieveDMXOnChange>();
|
auto msg = std::make_shared<Pro::MsgRecieveDMXOnChange>();
|
||||||
msg->mode = mode;
|
msg->mode = mode;
|
||||||
|
|
|
@ -25,9 +25,11 @@
|
||||||
|
|
||||||
#include "pro.h"
|
#include "pro.h"
|
||||||
|
|
||||||
|
#include <rdm_controller.h>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <future>
|
#include <future>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <responder.h>
|
||||||
#include <universe.h>
|
#include <universe.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -148,6 +150,9 @@ private:
|
||||||
|
|
||||||
mutable std::mutex mtx_metadata_;
|
mutable std::mutex mtx_metadata_;
|
||||||
std::shared_ptr<void> token_data_changed_;
|
std::shared_ptr<void> token_data_changed_;
|
||||||
|
|
||||||
|
RDM::Controller *rdm_controller_;
|
||||||
|
RDM::Responder *rdm_responder_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ENTTEC
|
} // namespace ENTTEC
|
||||||
|
|
Loading…
Reference in New Issue