NanoOcp
Minimal AES70 / OCP.1 TCP client/server library for d&b Soundscape devices
Loading...
Searching...
No Matches
NanoOcp1::Ocp1CommandDefinition Struct Reference

Parameter bundle that fully describes one OCA controllable property. More...

#include <Ocp1Message.h>

Inherited by NanoOcp1::Amp5D::dbOcaObjectDef_ChStatus_Gr, NanoOcp1::Amp5D::dbOcaObjectDef_ChStatus_GrHead, NanoOcp1::Amp5D::dbOcaObjectDef_ChStatus_Isp, NanoOcp1::Amp5D::dbOcaObjectDef_ChStatus_Ovl, NanoOcp1::Amp5D::dbOcaObjectDef_Settings_PwrOn, NanoOcp1::AmpDx::dbOcaObjectDef_ChStatus_GrHead, NanoOcp1::AmpDxDy::dbOcaObjectDef_ChStatus_Gr, NanoOcp1::AmpDxDy::dbOcaObjectDef_ChStatus_Isp, NanoOcp1::AmpDxDy::dbOcaObjectDef_ChStatus_Ovl, NanoOcp1::AmpDxDy::dbOcaObjectDef_Settings_PwrOn, NanoOcp1::AmpDy::dbOcaObjectDef_ChStatus_GrHead, NanoOcp1::AmpGeneric::dbOcaObjectDef_Config_Mute, NanoOcp1::AmpGeneric::dbOcaObjectDef_Config_PotiLevel, NanoOcp1::DS100::dbOcaObjDef_MatrixSettings_ReverbRoomIdEnableds, NanoOcp1::DS100::dbOcaObjDef_MatrixSettings_ReverbRoomIdNames, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_Flip, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_Name, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_P1_real, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_P1_virtual, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_P2_real, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_P3_real, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_P3_virtual, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_P4_real, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMappingSettings_Type, NanoOcp1::DS100::dbOcaObjectDef_CoordinateMapping_Source_Position, NanoOcp1::DS100::dbOcaObjectDef_Error_ErrorText, NanoOcp1::DS100::dbOcaObjectDef_Error_GnrlErr, NanoOcp1::DS100::dbOcaObjectDef_Fixed_GUID, NanoOcp1::DS100::dbOcaObjectDef_Fixed_HardwareVariant, NanoOcp1::DS100::dbOcaObjectDef_Fixed_SerNr, NanoOcp1::DS100::dbOcaObjectDef_FunctionGroup_Delay, NanoOcp1::DS100::dbOcaObjectDef_FunctionGroup_Name, NanoOcp1::DS100::dbOcaObjectDef_FunctionGroup_SpreadFactor, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_ChannelName, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_Delay, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_DelayEnable, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_EqEnable, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_Gain, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_ISP, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_LevelMeterIn, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_LevelMeterPostMute, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_LevelMeterPreMute, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_Mute, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_Polarity, NanoOcp1::DS100::dbOcaObjectDef_MatrixInput_ReverbSendGain, NanoOcp1::DS100::dbOcaObjectDef_MatrixNode_Delay, NanoOcp1::DS100::dbOcaObjectDef_MatrixNode_DelayEnable, NanoOcp1::DS100::dbOcaObjectDef_MatrixNode_Enable, NanoOcp1::DS100::dbOcaObjectDef_MatrixNode_Gain, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_ChannelName, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_Delay, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_DelayEnable, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_EqEnable, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_Gain, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_LevelMeterIn, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_LevelMeterPostMute, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_LevelMeterPreMute, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_Mute, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_OSP, NanoOcp1::DS100::dbOcaObjectDef_MatrixOutput_Polarity, NanoOcp1::DS100::dbOcaObjectDef_MatrixSettings_PositioningEnable, NanoOcp1::DS100::dbOcaObjectDef_MatrixSettings_ReverbEnable, NanoOcp1::DS100::dbOcaObjectDef_MatrixSettings_ReverbPredelayFactor, NanoOcp1::DS100::dbOcaObjectDef_MatrixSettings_ReverbRearLevel, NanoOcp1::DS100::dbOcaObjectDef_MatrixSettings_ReverbRoomId, NanoOcp1::DS100::dbOcaObjectDef_Positioning_Source_DelayMode, NanoOcp1::DS100::dbOcaObjectDef_Positioning_Source_Enable, NanoOcp1::DS100::dbOcaObjectDef_Positioning_Source_Position, NanoOcp1::DS100::dbOcaObjectDef_Positioning_Source_Speaker_Group, NanoOcp1::DS100::dbOcaObjectDef_Positioning_Source_Speaker_Position, NanoOcp1::DS100::dbOcaObjectDef_Positioning_Source_Spread, NanoOcp1::DS100::dbOcaObjectDef_Positioning_Speaker_Group, NanoOcp1::DS100::dbOcaObjectDef_Positioning_Speaker_Position, NanoOcp1::DS100::dbOcaObjectDef_ReverbInputProcessing_EqEnable, NanoOcp1::DS100::dbOcaObjectDef_ReverbInputProcessing_Gain, NanoOcp1::DS100::dbOcaObjectDef_ReverbInputProcessing_LevelMeter, NanoOcp1::DS100::dbOcaObjectDef_ReverbInputProcessing_Mute, NanoOcp1::DS100::dbOcaObjectDef_ReverbInput_Gain, NanoOcp1::DS100::dbOcaObjectDef_SceneAgent, NanoOcp1::DS100::dbOcaObjectDef_Scene_SceneComment, NanoOcp1::DS100::dbOcaObjectDef_Scene_SceneIndex, NanoOcp1::DS100::dbOcaObjectDef_Scene_SceneName, NanoOcp1::DS100::dbOcaObjectDef_Settings_DeviceName, NanoOcp1::DS100::dbOcaObjectDef_SoundObjectRouting_Gain, NanoOcp1::DS100::dbOcaObjectDef_SoundObjectRouting_Mute, NanoOcp1::DS100::dbOcaObjectDef_Status_AudioNetworkSampleStatus, and NanoOcp1::DS100::dbOcaObjectDef_Status_StatusText.

Public Member Functions

 Ocp1CommandDefinition ()
 
 Ocp1CommandDefinition (std::uint32_t targetOno, std::uint16_t propertyType, std::uint16_t propertyDefLevel, std::uint16_t propertyIndex, std::uint8_t paramCount=static_cast< std::uint8_t >(0), const ByteVector &parameterData=std::vector< std::uint8_t >())
 
virtual ~Ocp1CommandDefinition ()=default
 
virtual Ocp1CommandDefinition AddSubscriptionCommand () const
 
virtual Ocp1CommandDefinition RemoveSubscriptionCommand () const
 
virtual Ocp1CommandDefinition GetValueCommand () const
 
virtual Ocp1CommandDefinition SetValueCommand (const Variant &newValue) const
 
virtual Ocp1CommandDefinitionClone () const
 
Ocp1DataType GetDataType () const
 

Public Attributes

std::uint32_t m_targetOno
 
std::uint16_t m_propertyType
 
std::uint16_t m_propertyDefLevel
 
std::uint16_t m_propertyIndex
 
std::uint8_t m_paramCount
 
ByteVector m_parameterData
 

Detailed Description

Parameter bundle that fully describes one OCA controllable property.

Every OCA property on a device is identified by three coordinates in the AES70 class hierarchy:

  • Target ONo — which object (encoded device address: type, channel, box).
  • Property def-level — which class in the inheritance chain defines the property (e.g. DefLevel_OcaGain = 4 for gain properties defined at the OcaGain class).
  • Property index — which property within that class (e.g. 1 = Prop_Gain).

Ocp1CommandDefinition stores these plus the data type and any fixed parameter bytes, so that the four factory methods (AddSubscriptionCommand(), RemoveSubscriptionCommand(), GetValueCommand(), SetValueCommand()) can produce ready-to-send Ocp1CommandResponseRequired objects without the caller having to manually build the binary parameter data.

Concrete subclasses

Each controllable parameter on each device type has a dedicated struct in Ocp1ObjectDefinitions.h and Ocp1DS100ObjectDefinitions.h, e.g.:

// Instantiate for sound object channel 5 on a DS100
// Build and send a GetValue command:
uint32_t handle;
auto cmd = Ocp1CommandResponseRequired(def.GetValueCommand(), handle);
client->sendData(cmd.GetSerializedData());
// Build and send a SetValue command:
Variant newPos(0.5f, 0.5f, 0.0f);
auto setCmd = Ocp1CommandResponseRequired(def.SetValueCommand(newPos), handle);
client->sendData(setCmd.GetSerializedData());
Type-erased OCA parameter value with built-in marshal/unmarshal support.
Definition Variant.h:102
OCA definition for a sound object's 3D position in real-world space (En-Scene).

DeviceController (Umsci) usage

DeviceController::CreateKnownONosMap() pre-constructs one Ocp1CommandDefinition per (RemObjIdent, channel/record address) pair, keyed by ONo. The reverse map (ONo → RemObjIdent) allows incoming Notifications and Responses to be matched back to logical parameter names without a linear search.

Definition at line 71 of file Ocp1Message.h.

Constructor & Destructor Documentation

◆ Ocp1CommandDefinition() [1/2]

◆ Ocp1CommandDefinition() [2/2]

NanoOcp1::Ocp1CommandDefinition::Ocp1CommandDefinition ( std::uint32_t  targetOno,
std::uint16_t  propertyType,
std::uint16_t  propertyDefLevel,
std::uint16_t  propertyIndex,
std::uint8_t  paramCount = static_cast<std::uint8_t>(0),
const ByteVector parameterData = std::vector<std::uint8_t>() 
)
inline

Parameterized struct constructor.

Definition at line 88 of file Ocp1Message.h.

◆ ~Ocp1CommandDefinition()

virtual NanoOcp1::Ocp1CommandDefinition::~Ocp1CommandDefinition ( )
virtualdefault

Struct destructor.

Member Function Documentation

◆ AddSubscriptionCommand()

Ocp1CommandDefinition NanoOcp1::Ocp1CommandDefinition::AddSubscriptionCommand ( ) const
virtual

Generates a Ocp1CommandDefinition for a typical AddSubscription command. Can be overriden for custom object AddSubscription commands.

Returns
An AddSubscription command definition.

Definition at line 36 of file Ocp1Message.cpp.

References NanoOcp1::DataFromOnoForSubscription(), m_propertyType, m_targetOno, and Ocp1CommandDefinition().

◆ Clone()

Ocp1CommandDefinition * NanoOcp1::Ocp1CommandDefinition::Clone ( ) const
virtual

Clone this object. To prevent slicing, this method must be overriden whenever new members or methods are added to a subclass.

Returns
A pointer to a copy of this object. It is the caller's responsibility to worry about the object's ownership.

Reimplemented in NanoOcp1::DS100::dbOcaObjDef_MatrixSettings_ReverbRoomIdNames, NanoOcp1::DS100::dbOcaObjDef_MatrixSettings_ReverbRoomIdEnableds, and NanoOcp1::DS100::dbOcaObjectDef_SceneAgent.

Definition at line 78 of file Ocp1Message.cpp.

References Ocp1CommandDefinition().

◆ GetDataType()

Ocp1DataType NanoOcp1::Ocp1CommandDefinition::GetDataType ( ) const
inline

Convenience getter method for the Ocp1CommandDefinition's type.

Returns
the Ocp1CommandDefinition's type as a Ocp1DataType.

Definition at line 153 of file Ocp1Message.h.

References m_propertyType.

Referenced by SetValueCommand().

◆ GetValueCommand()

Ocp1CommandDefinition NanoOcp1::Ocp1CommandDefinition::GetValueCommand ( ) const
virtual

Generates a Ocp1CommandDefinition for a typical GetValue command (methodIndex 1). Can be overriden for custom object GetValue commands.

Returns
A GetValue command definition.

Reimplemented in NanoOcp1::DS100::dbOcaObjDef_MatrixSettings_ReverbRoomIdNames, and NanoOcp1::DS100::dbOcaObjDef_MatrixSettings_ReverbRoomIdEnableds.

Definition at line 56 of file Ocp1Message.cpp.

References m_propertyDefLevel, m_propertyType, m_targetOno, and Ocp1CommandDefinition().

◆ RemoveSubscriptionCommand()

Ocp1CommandDefinition NanoOcp1::Ocp1CommandDefinition::RemoveSubscriptionCommand ( ) const
virtual

Generates a Ocp1CommandDefinition for a typical Removeubscription command. Can be overriden for custom object RemoveSubscription commands.

Returns
A RemoveSubscription command definition.

Definition at line 46 of file Ocp1Message.cpp.

References NanoOcp1::DataFromOnoForSubscription(), m_propertyType, m_targetOno, and Ocp1CommandDefinition().

◆ SetValueCommand()

Ocp1CommandDefinition NanoOcp1::Ocp1CommandDefinition::SetValueCommand ( const Variant newValue) const
virtual

Generates a Ocp1CommandDefinition for a typical SetValue command (methodIndex 2). Can be overriden for custom object SetValue commands.

Returns
A SetValue command definition.

Definition at line 66 of file Ocp1Message.cpp.

References GetDataType(), m_propertyDefLevel, m_propertyType, m_targetOno, Ocp1CommandDefinition(), and NanoOcp1::Variant::ToParamData().

Member Data Documentation

◆ m_paramCount

std::uint8_t NanoOcp1::Ocp1CommandDefinition::m_paramCount

Definition at line 163 of file Ocp1Message.h.

◆ m_parameterData

ByteVector NanoOcp1::Ocp1CommandDefinition::m_parameterData

Definition at line 164 of file Ocp1Message.h.

◆ m_propertyDefLevel

◆ m_propertyIndex

std::uint16_t NanoOcp1::Ocp1CommandDefinition::m_propertyIndex

Definition at line 162 of file Ocp1Message.h.

Referenced by NanoOcp1::Ocp1Notification::MatchesObject().

◆ m_propertyType

◆ m_targetOno


The documentation for this struct was generated from the following files: