Navigation
Unreal Engine C++ API Reference > Plugins > DMXProtocol > Interfaces
Inheritance Hierarchy
- TSharedFromThis
- IDMXProtocolBase
- IDMXProtocol
References
Module | DMXProtocol |
Header | /Engine/Plugins/VirtualProduction/DMX/DMXProtocol/Source/DMXProtocol/Public/Interfaces/IDMXProtocol.h |
Include | #include "Interfaces/IDMXProtocol.h" |
Syntax
class IDMXProtocol : public IDMXProtocolBase
Remarks
Serves as a higher level abstraction of a specific protocol such as Art-Net or sACN with the purpose to hide its complexity.
By that the commonly expected responsability of the implementation is to:
- Provide a way to send and receive protocol specific DMX from and to the system.
- Push received DXM as generic DMXSignals to the registered DMXInputPorts.
- Pull generic DMXSignals from the registered DMXOutputPorts and send it as Protocol specific DMX.
For an overview for DMX and protocol developers, see DMXPortManager (in IO folder) For an exemplary implementation, see DMXProtocolArtNet (in ProtocolArtNetModule)
DMX Protocol Life-Cycle
Startup:
All DMX Modules should be set to load in the Predefault loading phase and bind to FDMXProtocolModule::GetOnRequestProtocolRegistration().
At the end of the Pre-Default loading phase DMXProtocol Broadcasts GetOnRequestProtocolRegistration. Protocol should now provide their Name and DMXProtocolFactory. All protocols registered can be selected in Project Settings -> Plugins -> DMX -> Communication settings
When a Input Port of a specific Protocol is created in Project Settings: a) The input Port calls IDMXProtocol::RegisterInputPort. If the Protocol cannot handle the Input Port, e.g. because the network interface is not reachable, the protocol needs to return false. b) The Protocol should pass received DMX by calling DMXInputPort::SingleProducerInputDMXSignal to the Input Ports. Note: The Input Ports do the required filtering for relevant universes.
When an Output port of a specific Protocol is created in Project Settings: a) The protocol needs to return an object that implements IDMXSender for each registered OutputPort. If the Protocol cannot handle the Output Port, e.g. because the network interface is not reachable, the protocol needs to return nullptr.
See DMXProtocolArtNet for an example of a Protocol implementation.
Functions
Type | Name | Description | |
---|---|---|---|
![]() ![]() |
IDMXProtocolPtr | If protocol exists return the pointer otherwise it create a new protocol first and then return the pointer. | |
![]() ![]() |
FName | ||
![]() ![]() |
const TArray< EDMXCommunicationType > | Returns the communication types the protocol supports for its input ports. | |
![]() ![]() |
int32 | Get maximum supported universe ID for protocol | |
![]() ![]() |
int32 | Get minimum supported universe ID for protocol | |
![]() ![]() |
const TArray< EDMXCommunicationType > | Returns the communication types the protocol supports for its input ports. | |
![]() ![]() |
const TMap< FName, IDMXProtocolFactory * > & | ~End IDMXProtocol Interface definition | |
![]() ![]() |
const FName & | Get the Protocol Name | |
![]() ![]() |
const TArray< FName > & | ||
![]() ![]() |
const TMap< FName, IDMXProtocolPtr > & | GetProtocols () |
|
![]() |
bool | IsCausingLoopback
(
EDMXCommunicationType InCommunicationType |
Called to deduce if the communication type will be heard by corresponding input ports. |
![]() ![]() |
bool | IsEnabled () |
Whether protocol enabled |
![]() ![]() |
bool | IsValidUniverseID
(
int32 UniverseID |
Returns true if the Universe ID is valid for the protocol |
![]() ![]() |
int32 | MakeValidUniverseID
(
int32 DesiredUniverseID |
Returns a valid Universe ID as close as possible to the provided Universe ID |
![]() |
bool | RegisterInputPort
(
const FDMXInputPortSharedRef& InputPort |
Called to register a DMXInputPort with the protocol. |
![]() |
TArray< TSharedPtr< IDMXSender > > | RegisterOutputPort
(
const FDMXOutputPortSharedRef& OutputPort |
Called to register a DMXOutputPort with the protocol. |
![]() ![]() |
bool | Returns true if the Protocol supports a priority setting to filter inbound and outbound signals | |
![]() |
void | UnregisterInputPort
(
const FDMXInputPortSharedRef& InputPort |
Called to unregister a DMXInputPort with the protocol. |
![]() |
void | UnregisterOutputPort
(
const FDMXOutputPortSharedRef& OutputPort |
Called to unregister a DMXOutputPort with the protocol. |