Skip to content

OcaMatrix#

This document describes the controller implementation of OcaMatrix. This class is documented in the AES70 standard as:

Rectangular array of identical objects (Matrix Members, or just Members in context) that is coordinate addressable and has sets of common input and output ports. An OcaMatrix instance is a container for a two-dimensional collection of members.

Matrix members may be workers (including blocks or other matrices), or agents. All members of a given matrix shall be of the same class (the member class).

No object shall belong to more than one matrix at a time. No object shall appear more than once in a given matrix.

The OcaMatrix object shall not instantiate the Members, but instead shall provide the coordinate addressing, implement the common input and output ports, and provide certain other aggregate functions. The term Matrix means an OcaMatrix object plus the ancillary objects that collectively provide matrixing functionality.

Specifically, a Matrix shall consists of:

  1. One instance of the OcaMatrix class (the matrix object); and
  2. (N x M) members, where each member shall be an instance of the member class; and

The normative specification of the OcaMatrix class is here. The normative specification of the overall Matrix mechanism, with informative examples, is in [AES70-1(Matrices)].


Overview#

Class Declaration#

namespace aes70::controller
{
  class OcaMatrix : public OcaWorker
  {
  public:
    OcaMatrix(std::shared_ptr<connection> connection,
            uin32_t object_number);
    OcaMatrix(const OcaMatrix &o);

    // Control Methods
    // Calls GetCurrentXY and calls on_result or on_failure
    void GetCurrentXY(auto on_result, failure_callback on_failure);
    // Calls SetCurrentXY and calls on_result or on_failure
    void SetCurrentXY(OcaMatrixCoordinate x, OcaMatrixCoordinate y, auto on_result, failure_callback on_failure);
    // Calls SetCurrentXY and does not wait for the response
    void SetCurrentXY(OcaMatrixCoordinate x, OcaMatrixCoordinate y);
    // Calls GetSize and calls on_result or on_failure
    void GetSize(auto on_result, failure_callback on_failure);
    // Calls SetSize and calls on_result or on_failure
    void SetSize(OcaMatrixCoordinate xSize, OcaMatrixCoordinate ySize, auto on_result, failure_callback on_failure);
    // Calls SetSize and does not wait for the response
    void SetSize(OcaMatrixCoordinate xSize, OcaMatrixCoordinate ySize);
    // Calls GetMembers and calls on_result or on_failure
    void GetMembers(auto on_result, failure_callback on_failure);
    // Calls SetMembers and calls on_result or on_failure
    void SetMembers(OcaList2D<OcaONo> members, auto on_result, failure_callback on_failure);
    // Calls SetMembers and does not wait for the response
    void SetMembers(OcaList2D<OcaONo> members);
    // Calls GetMember and calls on_result or on_failure
    void GetMember(OcaMatrixCoordinate x, OcaMatrixCoordinate y, auto on_result, failure_callback on_failure);
    // Calls GetMember and does not wait for the response
    void GetMember(OcaMatrixCoordinate x, OcaMatrixCoordinate y);
    // Calls SetMember and calls on_result or on_failure
    void SetMember(OcaMatrixCoordinate x, OcaMatrixCoordinate y, OcaONo memberONo, auto on_result, failure_callback on_failure);
    // Calls SetMember and does not wait for the response
    void SetMember(OcaMatrixCoordinate x, OcaMatrixCoordinate y, OcaONo memberONo);
    // Calls GetProxy and calls on_result or on_failure
    void GetProxy(auto on_result, failure_callback on_failure);
    // Calls SetProxy and calls on_result or on_failure
    void SetProxy(OcaONo ONo, auto on_result, failure_callback on_failure);
    // Calls SetProxy and does not wait for the response
    void SetProxy(OcaONo ONo);
    // Calls GetPortsPerRow and calls on_result or on_failure
    void GetPortsPerRow(auto on_result, failure_callback on_failure);
    // Calls SetPortsPerRow and calls on_result or on_failure
    void SetPortsPerRow(OcaUint8 Ports, auto on_result, failure_callback on_failure);
    // Calls SetPortsPerRow and does not wait for the response
    void SetPortsPerRow(OcaUint8 Ports);
    // Calls GetPortsPerColumn and calls on_result or on_failure
    void GetPortsPerColumn(auto on_result, failure_callback on_failure);
    // Calls SetPortsPerColumn and calls on_result or on_failure
    void SetPortsPerColumn(OcaUint8 Ports, auto on_result, failure_callback on_failure);
    // Calls SetPortsPerColumn and does not wait for the response
    void SetPortsPerColumn(OcaUint8 Ports);
    // Calls SetCurrentXYLock and calls on_result or on_failure
    void SetCurrentXYLock(OcaMatrixCoordinate x, OcaMatrixCoordinate y, auto on_result, failure_callback on_failure);
    // Calls SetCurrentXYLock and does not wait for the response
    void SetCurrentXYLock(OcaMatrixCoordinate x, OcaMatrixCoordinate y);
    // Calls UnlockCurrent and calls on_result or on_failure
    void UnlockCurrent(auto on_result, failure_callback on_failure);
    // Calls ExecuteMethod and calls on_result or on_failure
    void ExecuteMethod(OcaList32<OcaMatrixCoordinates> TargetMembers, OcaMethodID TargetMethod, OcaList<OcaLongBlob> InData, auto on_result, failure_callback on_failure);
    // Calls ExecuteMethod and does not wait for the response
    void ExecuteMethod(OcaList32<OcaMatrixCoordinates> TargetMembers, OcaMethodID TargetMethod, OcaList<OcaLongBlob> InData);
    // Calls ExecuteCommands and calls on_result or on_failure
    void ExecuteCommands(OcaList32<OcaMatrixCommand> Commands, auto on_result, failure_callback on_failure);
    // Calls ExecuteCommands and does not wait for the response
    void ExecuteCommands(OcaList32<OcaMatrixCommand> Commands);

    // Observing Properties
    subscription observeX(auto callback, failure_callback on_failure);
    subscription observeY(auto callback, failure_callback on_failure);
    subscription observexSize(auto callback, failure_callback on_failure);
    subscription observeySize(auto callback, failure_callback on_failure);
    subscription observeMembers(auto callback, failure_callback on_failure);
    subscription observeProxy(auto callback, failure_callback on_failure);

    // Property Changed Subscriptions
    subscription OnXChanged(auto callback, failure_callback on_failure);
    subscription OnYChanged(auto callback, failure_callback on_failure);
    subscription OnxSizeChanged(auto callback, failure_callback on_failure);
    subscription OnySizeChanged(auto callback, failure_callback on_failure);
    subscription OnMembersChanged(auto callback, failure_callback on_failure);
    subscription OnProxyChanged(auto callback, failure_callback on_failure);
  };
}

Methods#

GetCurrentXY#

void GetCurrentXY(auto on_result, failure_callback on_failure)

Calls the method GetCurrentXY in the remote device.

Parameters:#

  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaMatrixCoordinate x
    • OcaMatrixCoordinate y
  • failure_callback on_failure: A callback which is called on error.

SetCurrentXY#

void SetCurrentXY(OcaMatrixCoordinate x, OcaMatrixCoordinate y, auto on_result, failure_callback on_failure)

Calls the method SetCurrentXY in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaMatrixCoordinate x
  • OcaMatrixCoordinate y
  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

GetSize#

void GetSize(auto on_result, failure_callback on_failure)

Calls the method GetSize in the remote device.

Parameters:#

  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaMatrixCoordinate xSize
    • OcaMatrixCoordinate ySize
    • OcaMatrixCoordinate minXSize
    • OcaMatrixCoordinate maxXSize
    • OcaMatrixCoordinate minYSize
    • OcaMatrixCoordinate maxYSize
  • failure_callback on_failure: A callback which is called on error.

SetSize#

void SetSize(OcaMatrixCoordinate xSize, OcaMatrixCoordinate ySize, auto on_result, failure_callback on_failure)

Calls the method SetSize in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaMatrixCoordinate xSize
  • OcaMatrixCoordinate ySize
  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

GetMembers#

void GetMembers(auto on_result, failure_callback on_failure)

Calls the method GetMembers in the remote device.

Parameters:#

  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaList2D<OcaONo> members
  • failure_callback on_failure: A callback which is called on error.

SetMembers#

void SetMembers(OcaList2D<OcaONo> members, auto on_result, failure_callback on_failure)

Calls the method SetMembers in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaList2D<OcaONo> members
  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

GetMember#

void GetMember(OcaMatrixCoordinate x, OcaMatrixCoordinate y, auto on_result, failure_callback on_failure)

Calls the method GetMember in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaMatrixCoordinate x
  • OcaMatrixCoordinate y
  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaONo memberONo
  • failure_callback on_failure: A callback which is called on error.

SetMember#

void SetMember(OcaMatrixCoordinate x, OcaMatrixCoordinate y, OcaONo memberONo, auto on_result, failure_callback on_failure)

Calls the method SetMember in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaMatrixCoordinate x
  • OcaMatrixCoordinate y
  • OcaONo memberONo
  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

GetProxy#

void GetProxy(auto on_result, failure_callback on_failure)

Calls the method GetProxy in the remote device.

Parameters:#

  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaONo ONo
  • failure_callback on_failure: A callback which is called on error.

SetProxy#

void SetProxy(OcaONo ONo, auto on_result, failure_callback on_failure)

Calls the method SetProxy in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaONo ONo
  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

GetPortsPerRow#

void GetPortsPerRow(auto on_result, failure_callback on_failure)

Calls the method GetPortsPerRow in the remote device.

Parameters:#

  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaUint8 Ports
  • failure_callback on_failure: A callback which is called on error.

SetPortsPerRow#

void SetPortsPerRow(OcaUint8 Ports, auto on_result, failure_callback on_failure)

Calls the method SetPortsPerRow in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaUint8 Ports
  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

GetPortsPerColumn#

void GetPortsPerColumn(auto on_result, failure_callback on_failure)

Calls the method GetPortsPerColumn in the remote device.

Parameters:#

  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaUint8 Ports
  • failure_callback on_failure: A callback which is called on error.

SetPortsPerColumn#

void SetPortsPerColumn(OcaUint8 Ports, auto on_result, failure_callback on_failure)

Calls the method SetPortsPerColumn in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaUint8 Ports
  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

SetCurrentXYLock#

void SetCurrentXYLock(OcaMatrixCoordinate x, OcaMatrixCoordinate y, auto on_result, failure_callback on_failure)

Calls the method SetCurrentXYLock in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaMatrixCoordinate x
  • OcaMatrixCoordinate y
  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

UnlockCurrent#

void UnlockCurrent(auto on_result, failure_callback on_failure)

Calls the method UnlockCurrent in the remote device.

Parameters:#

  • auto on_result: A callable (e.g. a lambda) with 0 arguments.
  • failure_callback on_failure: A callback which is called on error.

ExecuteMethod#

void ExecuteMethod(OcaList32<OcaMatrixCoordinates> TargetMembers, OcaMethodID TargetMethod, OcaList<OcaLongBlob> InData, auto on_result, failure_callback on_failure)

Calls the method ExecuteMethod in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaList32<OcaMatrixCoordinates> TargetMembers
  • OcaMethodID TargetMethod
  • OcaList<OcaLongBlob> InData
  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaList<OcaCommandResult> Results
  • failure_callback on_failure: A callback which is called on error.

ExecuteCommands#

void ExecuteCommands(OcaList32<OcaMatrixCommand> Commands, auto on_result, failure_callback on_failure)

Calls the method ExecuteCommands in the remote device. If no result and error callback is specified, the method will be called without requesting a response.

Parameters:#

  • OcaList32<OcaMatrixCommand> Commands
  • auto on_result: A callable (e.g. a lambda) with the following arguments:
    • OcaList32<OcaCommandResult> Results
  • failure_callback on_failure: A callback which is called on error.

observeX#

subscription observeX(auto callback, failure_callback on_failure)

Fetches the remote property X and subscribes for modifications. The callback is called with the initial values of X and whenever it changes.

Parameters:#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaMatrixCoordinate X
  • failure_callback on_failure: A callback which is called on error.

observeY#

subscription observeY(auto callback, failure_callback on_failure)

Fetches the remote property Y and subscribes for modifications. The callback is called with the initial values of Y and whenever it changes.

Parameters:#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaMatrixCoordinate Y
  • failure_callback on_failure: A callback which is called on error.

observexSize#

subscription observexSize(auto callback, failure_callback on_failure)

Fetches the remote property xSize and subscribes for modifications. The callback is called with the initial values of xSize and whenever it changes.

Parameters:#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaMatrixCoordinate xSize
  • failure_callback on_failure: A callback which is called on error.

observeySize#

subscription observeySize(auto callback, failure_callback on_failure)

Fetches the remote property ySize and subscribes for modifications. The callback is called with the initial values of ySize and whenever it changes.

Parameters:#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaMatrixCoordinate ySize
  • failure_callback on_failure: A callback which is called on error.

observeMembers#

subscription observeMembers(auto callback, failure_callback on_failure)

Fetches the remote property Members and subscribes for modifications. The callback is called with the initial values of Members and whenever it changes.

Parameters:#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaList2D<OcaONo> Members
  • failure_callback on_failure: A callback which is called on error.

observeProxy#

subscription observeProxy(auto callback, failure_callback on_failure)

Fetches the remote property Proxy and subscribes for modifications. The callback is called with the initial values of Proxy and whenever it changes.

Parameters:#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaONo Proxy
  • failure_callback on_failure: A callback which is called on error.

OnXChanged#

subscription OnXChanged(auto callback, failure_callback on_failure)

Parameters#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaMatrixCoordinate X
  • failure_callback on_failure: A callback which is called on error.

OnYChanged#

subscription OnYChanged(auto callback, failure_callback on_failure)

Parameters#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaMatrixCoordinate Y
  • failure_callback on_failure: A callback which is called on error.

OnxSizeChanged#

subscription OnxSizeChanged(auto callback, failure_callback on_failure)

Parameters#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaMatrixCoordinate xSize
  • failure_callback on_failure: A callback which is called on error.

OnySizeChanged#

subscription OnySizeChanged(auto callback, failure_callback on_failure)

Parameters#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaMatrixCoordinate ySize
  • failure_callback on_failure: A callback which is called on error.

OnMembersChanged#

subscription OnMembersChanged(auto callback, failure_callback on_failure)

Parameters#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaList2D<OcaONo> Members
  • failure_callback on_failure: A callback which is called on error.

OnProxyChanged#

subscription OnProxyChanged(auto callback, failure_callback on_failure)

Parameters#

  • auto callback: A callable (e.g. a lambda) with one argument: OcaONo Proxy
  • failure_callback on_failure: A callback which is called on error.