Skip to content

OcaCounterNotifier#

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

Notifier for an OCA counter. Observes the value of the counter and emits a CounterUpdate notification when specified criteria are met.

An OCA counter wishing to notify controllers of its changing value can designate one or more notifier objects to which the controllers may subscribe. See the definition of the OcaCounter datatype for additional detail. Notification criteria are as follows:

Threshold. The counter value meets a certain comparison condition. A selection of comparison operators is available. The Operator property is the comparison operator to use for Threshold., Period. The value of the Period parameter, if nonzero, is a the time interval for the recurrent timed emission of CounterUpdate events. Such events are emitted regardless of the counter's value., CountIncrement. An CounterUpdate event is emitted every time the counter value changes by an amount equal to or greater than the value of this parameter.

For combinations of (1), (2), and (3), the criteria are applied as follows:

if (1) is specified and not satisfied, then no observation is emitted. else if (2) is specified and satisfied or (3) is specified and satisfied, then an observation is emitted. end end

Regardless of filter parameter values, a notification is always emitted when a counter is explicitly reset using a Reset() method.

An OcaCounterNotifier instance and the counter it observes are bound at the time the OcaCounterNotifier instance is constructed. For static devices, construction will occur during manufacture, or possibly during a subsequent hardware configuration step. For reconfigurable devices, construction might be done by online controllers as part of device configuration activity.


Overview#

Class Declaration#

The device side implementation has the following signature.

namespace aes70::device
{
  template <class Implementation>
  class OcaCounterNotifier : public OcaAgent<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 MyOcaCounterNotifierImplementation
{
  // Methods defined by OcaCounterNotifier
  OcaList<OcaCounterUpdate> GetLastUpdate();
  OcaCounterNotifierFilterParameters GetFilterParameters();
  void SetFilterParameters(OcaCounterNotifierFilterParameters Parameters);

  // Methods defined by OcaAgent
  OcaString GetLabel();
  void SetLabel(OcaString Label);
  OcaONo GetOwner();
  std::tuple<OcaRolePath,OcaONoPath> GetPath();

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

};

Events#