NcObject
←Introduction · Index↑ · Blocks→
NcObject is the base abstract control class for any control class in the control model. Any other control class MUST be derived directly or indirectly from this class.
The control class model for NcObject is listed in the Framework.
The role
is a structural identifier which MUST be persisted across restarts.
The role
of an object MUST be unique within its containing block.
Object ids (oid
property) MUST uniquely identity objects in the device model.
Once an object in the device model is allocated an object id, it MUST not change until the device undergoes a reboot.
If an object has a constant oid (has the same value across system restarts) it MUST signal this behaviour using the constantOid
property by setting its value to true
.
Object user labels (userLabel
property) MUST be persisted across device reboots.
Generic getter and setter
NcObject offers two generic methods for retrieving and setting a property on an object.
- The Get method (
[element("1m1")]
) accepts NcPropertyId as an argument and returns NcMethodResultPropertyValue. - The Set method (
[element("1m2")]
) accepts NcPropertyId and any value (type depends on the underlying property type) as arguments. The return type is the base NcMethodResult.
The value of any property of a control class MUST be retrievable using the Get method.
The readonly
token clearly marks properties which MUST be read only (their values MUST not be changeable by calling the Set method, but instead devices MUST correctly respond with an NcMethodResultError datatype and Readonly status when the Set method is invoked).
Lack of the readonly
token does not guarantee the property can be changed using the Set method due to device internal restrictions or operational context. In such cases the device MUST correctly respond with an NcMethodResultError datatype.
PropertyChanged event
NcObject defines a PropertyChanged event [element("1e1")]
which MUST trigger anytime a property on the object is changed.
The event data is of type NcPropertyChangedEventData.
Events can only be consumed as notifications when subscribed to. Subscriptions and their implementation are protocol-specific. For more details refer to IS-12 NMOS Control Protocol.
Working with collections inside an NcObject
There are generic methods for getting, setting, adding and deleting items inside a collection property as part of NcObject
.
Getting a collection item is done through the GetSequenceItem
method ([element(“1m3”)]) by specifying the property identifier NcPropertyId and the index as arguments.
The result is of type NcMethodResultPropertyValue.
Setting a collection item is done through the SetSequenceItem
method ([element(“1m4”)]) by specifying the property identifier NcPropertyId, the index and the value as arguments.
The result is of type NcMethodResult.
Adding an item to a collection is done through the AddSequenceItem
method ([element(“1m5”)]) by specifying the property identifier NcPropertyId and the value as arguments.
The result is of type NcMethodResultId which contains the index where the value was added.
Removing an item from a collection is done through the RemoveSequenceItem
method ([element(“1m6”)]) by specifying the property identifier NcPropertyId and the index as arguments.
The result is of type NcMethodResult.
Checking the size of a collection is done through the GetSequenceLength
method ([element(“1m7”)]) by specifying the property identifier NcPropertyId as an argument.
The result is of type NcMethodResultLength.
Touchpoints
Touchpoints represent the way in which a control model object may expose identity mappings across other contexts.
All NcObject
MAY have touchpoints.
The NcTouchpoint datatype specifies a namespace and a resource of type NcTouchpointResource.
For general NMOS contexts (IS-04, IS-05 and IS-07) the NcTouchpointNmos datatype MUST be used which has a resource of type NcTouchpointResourceNmos. This allows specifying the UUID of the underlying NMOS resource.
For IS-08 Audio Channel Mapping the NcTouchpointResourceNmosChannelMapping datatype MUST be used which allows linking to a UUID and an input or output id.
Architectural information about the touchpoints concept is available in MS-05-01 Identification.