1
0
Fork 0

use a helper to make the different MessageData specializations

This commit is contained in:
Kevin Matz 2023-04-09 19:43:54 -04:00
parent f69c50d66d
commit c16e999969
2 changed files with 61 additions and 0 deletions

View File

@ -290,6 +290,65 @@ bool Widget::writeFirmware(const uint8_t *data, const size_t size)
}
/**
* @brief Widget::MessageDataFactory
* @param label
* @param mode
* @return
*/
std::shared_ptr<Pro::MessageData> Widget::MessageDataFactory(Pro::MESSAGE_LABEL label,
OperatingMode mode)
{
switch (label) {
case Pro::OpReprogramFirmware:
return std::make_shared<Pro::MsgReprogramFirmware>();
case Pro::OpProgramFlashPage:
switch (mode) {
case USBdevice:
return std::make_shared<Pro::MsgProgramFlashPageReply>();
case USBhost:
return std::make_shared<Pro::MsgProgramFlashPageRequest>();
default:
return std::make_shared<Pro::MsgNoop>();
}
case Pro::OpGetWidgetParameters:
switch (mode) {
case USBdevice:
return std::make_shared<Pro::MsgGetWidgetParametersReply>();
case USBhost:
return std::make_shared<Pro::MsgGetWidgetParametersRequest>();
default:
return std::make_shared<Pro::MsgNoop>();
}
case Pro::OpSetWidgetParameters:
return std::make_shared<Pro::MsgSetWidgetParametersRequest>();
case Pro::OpRecievedDmxPacket:
return std::make_shared<Pro::MsgRecievedDmxPacket>();
case Pro::OpOutputOnlySendDMX:
return std::make_shared<Pro::MsgOutputOnlySendDMX>();
case Pro::OpSendRDMData:
return std::make_shared<Pro::MsgSendRDMData>();
case Pro::OpRecieveDMXOnChange:
return std::make_shared<Pro::MsgRecieveDMXOnChange>();
case Pro::OpRecievedDMXChanged:
return std::make_shared<Pro::MsgRecievedDMXChanged>();
case Pro::OpGetWidgetSerial:
switch (mode) {
case USBdevice:
return std::make_shared<Pro::MsgGetWidgetSerialReply>();
case USBhost:
return std::make_shared<Pro::MsgGetWidgetSerialRequest>();
default:
return std::make_shared<Pro::MsgNoop>();
}
case Pro::OpSendRDMDiscovery:
return std::make_shared<Pro::MsgSendRDMDiscovery>();
default:
return std::make_shared<Pro::MsgNoop>();
}
}
/**
* @brief Widget::routeRxMessage
* @param msg

View File

@ -81,6 +81,8 @@ public:
USBdevice
};
static std::shared_ptr<Pro::MessageData> MessageDataFactory(Pro::MESSAGE_LABEL, OperatingMode);
protected:
void routeRxMessage(std::shared_ptr<Pro::MessageData>);