21#ifndef INCLUDE_OLAD_PORT_H_
22#define INCLUDE_OLAD_PORT_H_
28#include <ola/timecode/TimeCode.h>
29#include <olad/DmxSource.h>
32#include <olad/Universe.h>
57 virtual unsigned int PortId()
const = 0;
190 virtual bool SupportsTimeCode()
const = 0;
205 unsigned int port_id,
207 bool supports_rdm =
false);
209 unsigned int PortId()
const {
return m_port_id; }
213 virtual std::string
UniqueId()
const;
246 virtual const DmxBuffer &ReadDMX()
const = 0;
249 virtual uint8_t InheritedPriority()
const {
254 virtual bool PreSetUniverse(Universe *, Universe *) {
return true; }
256 virtual void PostSetUniverse(Universe *, Universe *) {}
262 virtual bool SupportsPriorities()
const {
return false; }
265 const unsigned int m_port_id;
268 mutable std::string m_port_string;
269 Universe *m_universe;
270 AbstractDevice *m_device;
271 DmxSource m_dmx_source;
272 const PluginAdaptor *m_plugin_adaptor;
289 unsigned int port_id,
290 bool start_rdm_discovery_on_patch =
false,
291 bool supports_rdm =
false);
293 unsigned int PortId()
const {
return m_port_id; }
329 virtual bool SupportsTimeCode()
const {
return false; }
340 virtual void PostSetUniverse(Universe *, Universe *) { }
346 virtual bool SupportsPriorities()
const {
return false; }
354 const unsigned int m_port_id;
355 const bool m_discover_on_patch;
358 mutable std::string m_port_string;
359 Universe *m_universe;
360 AbstractDevice *m_device;
371template<
class PortClass>
375bool IsInputPort<OutputPort>();
A class used to hold a single universe of DMX data.
Provides a wrapper for the DeviceManager and SelectServer objects so that the plugins can register de...
Different priority modes and priority capabilities. Please make sure to visit [Merging Algorithms] (h...
Classes that represent RDM commands.
Definitions and Interfaces to implement an RDMController that sends a single message at a time.
The base class for all 1 argument callbacks.
Definition Callback.h:982
port_priority_capability PriorityCapability() const
Get the priority capabilities for this port.
Definition Port.h:307
BasicOutputPort(AbstractDevice *parent, unsigned int port_id, bool start_rdm_discovery_on_patch=false, bool supports_rdm=false)
Create a new BasicOutputPort.
Definition Port.cpp:120
AbstractDevice * GetDevice() const
Get the device which owns this Port.
Definition Port.h:294
uint8_t GetPriority() const
Get the numeric priority for this Port.
Definition Port.h:299
port_priority_mode GetPriorityMode() const
Get the Priority Mode for this Port.
Definition Port.h:301
std::string UniqueId() const
Return the globally unique id for a Port.
Definition Port.cpp:150
virtual void UniverseNameChanged(const std::string &new_name)
Called if the universe name changes.
Definition Port.h:303
virtual void RunIncrementalDiscovery(ola::rdm::RDMDiscoveryCallback *on_complete)
This is a noop for ports that don't support RDM.
Definition Port.cpp:188
unsigned int PortId() const
Get the Port ID. This is the index within the device.
Definition Port.h:293
virtual void SendRDMRequest(ola::rdm::RDMRequest *request, ola::rdm::RDMCallback *callback)
Handle an RDMRequest, subclasses can implement this to support RDM.
Definition Port.cpp:168
virtual bool SupportsRDM() const
Check if this Port supports RDM or not.
Definition Port.h:342
Universe * GetUniverse() const
Fetch the universe this Port is bound to.
Definition Port.h:296
bool SetPriority(uint8_t priority)
Set the Priority for this Port.
Definition Port.cpp:160
bool SetUniverse(Universe *universe)
Bind this port to a universe.
Definition Port.cpp:134
void UpdateUIDs(const ola::rdm::UIDSet &uids)
Called when the discovery triggered by patching completes.
Definition Port.cpp:194
virtual bool SendTimeCode(const ola::timecode::TimeCode &)
This is a noop for ports that don't support TimeCode.
Definition Port.h:334
virtual void RunFullDiscovery(ola::rdm::RDMDiscoveryCallback *on_complete)
This is a noop for ports that don't support RDM.
Definition Port.cpp:182
void SetPriorityMode(port_priority_mode mode)
Set the Priority Mode for this Port.
Definition Port.h:300
Used to hold a single universe of DMX data.
Definition DmxBuffer.h:49
Definition DmxSource.h:36
A port that sends DMX512 data.
Definition Port.h:163
virtual void UniverseNameChanged(const std::string &new_name)=0
Called if the universe name changes.
virtual void SendRDMRequest(ola::rdm::RDMRequest *request, ola::rdm::RDMCallback *callback)=0
Send a RDM command.
virtual bool WriteDMX(const DmxBuffer &buffer, uint8_t priority)=0
Write DMX data to this port.
virtual void RunFullDiscovery(ola::rdm::RDMDiscoveryCallback *on_complete)=0
Start a full discovery operation.
virtual void RunIncrementalDiscovery(ola::rdm::RDMDiscoveryCallback *on_complete)=0
Start an incremental discovery operation.
Definition PluginAdaptor.h:41
The base port class.
Definition Port.h:49
virtual bool SetUniverse(Universe *universe)=0
Bind this port to a universe.
virtual bool SetPriority(uint8_t priority)=0
Set the Priority for this Port.
virtual AbstractDevice * GetDevice() const =0
Get the device which owns this Port.
virtual bool SupportsRDM() const =0
Check if this Port supports RDM or not.
virtual port_priority_capability PriorityCapability() const =0
Get the priority capabilities for this port.
virtual std::string UniqueId() const =0
Return the globally unique id for a Port.
virtual void SetPriorityMode(port_priority_mode mode)=0
Set the Priority Mode for this Port.
virtual unsigned int PortId() const =0
Get the Port ID. This is the index within the device.
virtual uint8_t GetPriority() const =0
Get the numeric priority for this Port.
virtual Universe * GetUniverse() const =0
Fetch the universe this Port is bound to.
virtual std::string Description() const =0
Fetch the string description for a Port.
virtual port_priority_mode GetPriorityMode() const =0
Get the Priority Mode for this Port.
The interface that can send RDM commands, as well as perform discovery operations.
Definition RDMControllerInterface.h:104
RDM Commands that represent requests (GET, SET or DISCOVER).
Definition RDMCommand.h:234
Represents a set of RDM UIDs.
Definition UIDSet.h:48
port_priority_capability
Defines the priority capability of a Port.
Definition PortConstants.h:58
port_priority_mode
Defines the different priority modes that OLA supports.
Definition PortConstants.h:44
@ CAPABILITY_STATIC
Definition PortConstants.h:62
@ CAPABILITY_FULL
Definition PortConstants.h:64
@ CAPABILITY_NONE
Definition PortConstants.h:60
static const uint8_t SOURCE_PRIORITY_MIN
The minimum priority for a source.
Definition SourcePriorities.h:36
The namespace containing all OLA symbols.
Definition Credentials.cpp:44
bool IsInputPort()
This allows switching based on Port type.
Definition Port.cpp:201