Skip to content

OcaRamper#

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

Agent that gradually changes a property setting from one value to another. Works on a scalar numeric or boolean property of a specified object. Does not work for array, list, map, struct, or string properties.

Contains timer features to allow ramps to start immediately or at any time in the future.

This is a weakly typed class. All ramping parameters are specified as a OcaFloat64 numbers.

For unsigned integer targets, the ramping parameters are coerced to OcaUint64 before comparing., For signed integer targets, the ramping parameters are coerced to OcaInt64 before comparing., For boolean values, the the ramping parameters are coerced to OcaUint8. True is assigned the value One, False is assigned the value Zero.


Overview#

Class Declaration#

The device side implementation has the following signature.

namespace aes70::device
{
  template <class Implementation>
  class OcaRamper : 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 MyOcaRamperImplementation
{
  // Methods defined by OcaRamper
  void Control(OcaRamperCommand Command);
  OcaRamperState GetState();
  OcaProperty GetRampedProperty();
  void SetRampedProperty(OcaProperty property);
  OcaTimeMode GetTimeMode();
  void SetTimeMode(OcaTimeMode TimeMode);
  OcaTimeNTP GetStartTime();
  void SetStartTime(OcaTimeNTP TimeMode);
  std::tuple<OcaTimeInterval,OcaTimeInterval,OcaTimeInterval> GetDuration();
  void SetDuration(OcaTimeInterval Duration);
  OcaRamperInterpolationLaw GetInterpolationLaw();
  void SetInterpolationLaw(OcaRamperInterpolationLaw law);
  OcaFloat64 GetGoal();
  void SetGoal(OcaFloat64 goal);
  OcaWhen GetStartWhen();
  void SetStartWhen(OcaWhen When);

  // 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#