use a helper to make the different MessageData specializations
This commit is contained in:
parent
f69c50d66d
commit
c16e999969
|
@ -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
|
||||
|
|
|
@ -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>);
|
||||
|
||||
|
|
Loading…
Reference in New Issue