From 80bfce67b7e490bad7520ea07813342d87d3735a Mon Sep 17 00:00:00 2001 From: Kevin Matz Date: Fri, 14 Apr 2023 10:09:26 -0400 Subject: [PATCH] setting parameters may optionally set the user data --- protocol/enttec/dmx-usb-pro/widget.cpp | 65 ++++++++++++++------------ protocol/enttec/dmx-usb-pro/widget.h | 5 +- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/protocol/enttec/dmx-usb-pro/widget.cpp b/protocol/enttec/dmx-usb-pro/widget.cpp index 3bb215e..56f5726 100644 --- a/protocol/enttec/dmx-usb-pro/widget.cpp +++ b/protocol/enttec/dmx-usb-pro/widget.cpp @@ -278,6 +278,40 @@ void Widget::setUserData(std::vector data) } + +/** + * @brief Widget::getParameters + * @param user_length + */ +void Widget::getParameters(size_t user_length) +{ + auto msg = std::make_shared(); + msg->size = std::min(user_length, Pro::USER_CONFIGURATION_MAX); + sendMessage(msg); +} + + +/** + * @brief Widget::setParameters + * @param user_length + */ +void Widget::setParameters(size_t user_length) const +{ + auto msg = std::make_shared(); + { + std::scoped_lock lock(mtx_metadata_); + msg->break_time = tx_break_intervals; + msg->mab_time = tx_mab_intervals; + msg->rate = tx_rate; + msg->user_data = user_configuration; + } + size_t length = user_length < 0 ? user_configuration.size() : user_length; + length = std::min(length, Pro::USER_CONFIGURATION_MAX); + msg->user_data.resize(length, 0xff); // resized data padded with 0xFF (matching OEM) + sendMessage(msg); +} + + /** * @brief Widget::writeFirmware * @param data @@ -528,37 +562,6 @@ void Widget::getSerialNumber() } -/** - * @brief Widget::getParameters - * @param user_length - * @param timeout Milliseconds to block while waiting for the device to reply. - * @return True if the parameters has been updated. - */ -bool Widget::getParameters(size_t user_length, int timeout) -{ - auto msg = std::make_shared(); - msg->size = std::min(user_length, Pro::USER_CONFIGURATION_MAX); - sendMessage(msg); -} - - -/** - * @brief Widget::setParameters - */ -void Widget::setParameters() const -{ - auto msg = std::make_shared(); - { - std::scoped_lock lock(mtx_metadata_); - msg->break_time = tx_break_intervals; - msg->mab_time = tx_mab_intervals; - msg->rate = tx_rate; - msg->user_data = user_configuration; - } - sendMessage(msg); -} - - /** * @brief Widget::sendDmx * @param trimmed diff --git a/protocol/enttec/dmx-usb-pro/widget.h b/protocol/enttec/dmx-usb-pro/widget.h index 0559f5a..0704d39 100644 --- a/protocol/enttec/dmx-usb-pro/widget.h +++ b/protocol/enttec/dmx-usb-pro/widget.h @@ -85,6 +85,9 @@ public: const std::vector &userData() const; void setUserData(std::vector); + void getParameters(size_t user_length = 0); + void setParameters(size_t user_length = 0) const; + void getSerialNumber(); bool writeFirmware(const uint8_t *, const size_t); @@ -104,8 +107,6 @@ protected: // USB Host operations virtual void sendMessage(std::shared_ptr) const; virtual void rebootBootloader(); - bool getParameters(size_t user_length = 0, int timeout = 0); - void setParameters() const; void sendDmx(bool trimmed = true) const; /**