Skip to content

OcaSwitch#

This document describes the device side implementation of OcaSwitch. This class is documented in the AES70 standard as:

(n)-position switch. Single-pole or multipole, as determined by number of input and output ports. May be instantiated with no ports for use as an option selector.


Overview#

Class Declaration#

The device side implementation has the following signature.

namespace aes70::device
{
  template <class Implementation>
  class OcaSwitch : public OcaActuator<Implementation>
  {

  };
}

The template argument Implementation may implement the following methods.

Note

The signatures given here are just one possibility and that most methods are optional. Implement only those methods which make sense in the context of your device. See the documentation in Implementing AES70 Classes for more details.

class MyOcaSwitchImplementation
{
  // Methods defined by OcaSwitch
  std::tuple<OcaUint16,OcaUint16,OcaUint16> GetPosition();
  void SetPosition(OcaUint16 position);
  OcaString GetPositionName(OcaUint16 Index);
  void SetPositionName(OcaUint16 Index, OcaString Name);
  OcaList<OcaString> GetPositionNames();
  void SetPositionNames(OcaList<OcaString> Names);
  OcaBoolean GetPositionEnableFlag(OcaUint16 Index);
  void SetPositionEnableFlag(OcaUint16 Index, OcaBoolean enabled);
  OcaList<OcaBoolean> GetPositionEnableFlags();
  void SetPositionEnableFlags(OcaList<OcaBoolean> flags);

  // Methods defined by OcaWorker
  OcaBoolean GetEnabled();
  void SetEnabled(OcaBoolean enabled);
  OcaPortID AddPort(OcaString Name, OcaIODirection Mode);
  void DeletePort(OcaPortID ID);
  OcaList<OcaPort> GetPorts();
  OcaString GetPortName(OcaPortID PortID);
  void SetPortName(OcaPortID ID, OcaString Name);
  OcaString GetLabel();
  void SetLabel(OcaString label);
  OcaONo GetOwner();
  OcaTimeInterval GetLatency();
  void SetLatency(OcaTimeInterval latency);
  std::tuple<OcaRolePath,OcaONoPath> GetPath();
  OcaMap<OcaPortID, OcaPortClockMapEntry> GetPortClockMap();
  void SetPortClockMap(OcaMap<OcaPortID, OcaPortClockMapEntry> Map);
  OcaPortClockMapEntry GetPortClockMapEntry(OcaPortID ID);
  void SetPortClockMapEntry(OcaPortID PortID, OcaPortClockMapEntry Entry);
  void DeletePortClockMapEntry(OcaPortID ID);

  // Methods defined by OcaRoot
  OcaBoolean GetLockable();
  void SetLockNoReadWrite();
  void Unlock();
  OcaString GetRole();
  void SetLockNoWrite();
  OcaLockState GetLockState();

};

Events#