1
0
Fork 0

connect RDM responder I/O

This commit is contained in:
Kevin Matz 2023-04-26 10:05:16 -04:00
parent e951c25461
commit fc48300964
2 changed files with 37 additions and 0 deletions

View File

@ -22,6 +22,7 @@
SOFTWARE.
*/
#include "widget.h"
#include <rdm.h>
namespace ENTTEC {
@ -37,6 +38,11 @@ Widget::Widget()
, rdm_controller_(nullptr)
, rdm_responder_(nullptr)
{
token_rdm_receive_ = DMX::Universe::onRxData(RDM::SC_RDM, [this](const std::vector<uint8_t> &data)
{
if (rdm_responder_)
rdm_responder_->receive(data);
});
}
@ -139,6 +145,8 @@ void Widget::setModeBridge(Pro::DMX_RX_MODE mode)
{
RDM::UID id(serial_number, 0x454E); // Use the ENTTEC manufacturer ID?
rdm_responder_ = new RDM::Responder(id);
token_rdm_send_ = rdm_responder_->setSender(std::bind(&Widget::sendRDMdata,
this, std::placeholders::_1));
device_class_ = DMX::RESPONDER;
}
else
@ -592,6 +600,31 @@ void Widget::sendDmx(bool trimmed) const
}
/**
* @brief Request that the USB Device send RDM data.
* @param data
*/
void Widget::sendRDMdata(const std::vector<uint8_t> & data) const
{
auto msg = std::make_shared<Pro::MsgSendRDMData>();
msg->data = data;
sendMessage(msg);
}
/**
* @brief Request that the USB Device send RDM discovery data.
* @param data
*/
void Widget::sendRDMdiscovery(const std::vector<uint8_t> & data) const
{
auto msg = std::make_shared<Pro::MsgSendRDMDiscovery>();
(void)data;
/// \todo copy data to discovery message
sendMessage(msg);
}
/**
* @brief Widget::rxMsgHello
*/

View File

@ -110,6 +110,8 @@ protected:
virtual void sendMessage(std::shared_ptr<Pro::MessageData>) const;
virtual void rebootBootloader();
void sendDmx(bool trimmed = true) const;
void sendRDMdata(const std::vector<uint8_t> &) const;
void sendRDMdiscovery(const std::vector<uint8_t> &) const;
/**
* @brief writeFwPage
@ -150,6 +152,8 @@ private:
mutable std::mutex mtx_metadata_;
std::shared_ptr<void> token_data_changed_;
std::shared_ptr<void> token_rdm_receive_;
std::shared_ptr<void> token_rdm_send_;
RDM::Controller *rdm_controller_;
RDM::Responder *rdm_responder_;