Networked Media Open Specifications
DOCS VERSIONS IS BCP MS INFO REG DEVEL SEARCH

Blocks

←NcObject · Index↑ · Managers→

ncBlock is a container class for other classes or blocks. Due to the generic nature of ncBlock it is recommended not to create derived block classes but instead always instantiate ncBlock.

The top most block in the device tree is called a root block and must always have an oId of 1 and a role of root.

Blocks have the following properties (inherited properties from ncObject are not shown here):

Property Name Datatype Readonly Description
enabled ncBoolean Yes Indicates id the block is functional
specId ncString Yes Global ID of blockspec that defines this block
specVersion ncVersionCode Yes Version code of blockspec that defines this block
parentSpecId ncString Yes Global ID of parent of blockspec that defines this block
parentSpecVersion ncVersionCode Yes Version code of parent of blockspec that defines this block
specDescription ncString Yes Description of blockSpec that defines this block
isDynamic ncBoolean Yes Indicates if the contents of the block can change (members, ports or signal paths)
isModified ncBoolean Yes Indicates if the contents of the block have changed since the last restart
members sequence<ncOid> Yes Oids of this block’s members
ports sequence<ncPort> Yes This block’s ports
signalPaths sequence<ncSignalPath> Yes This block’s signal paths

Where the following data types are defined:

typedef ncName ncRole;

typedef sequence(ncName) ncRolePath;

enum ncIoDirection { // Input and/or output
    "undefined", // 0 Flow direction is not defined
    "input", // 1 Samples flow into owning object
    "output", // 2 Samples flow out of owning object
    "bidirectional" // 3 For possible future use
};

interface ncPort {
    attribute ncRole role; // Unique within owning object
    attribute ncIoDirection direction; // Input (sink) or output (source) port
    attribute ncRolePath clockPath; // Rolepath of this port's sample clock or empty if none
};

interface ncSignalPath {
    attribute ncName role; // Unique within owning object
    attribute ncRole source; // path origin
    attribute ncRole sink; // path terminus
);

More information on ports and signal paths can be found in the architecture specification NMOS Control Architecture (NC-Architecture).

Blockspecs are defined in the NMOS Control Blockspecs (NC-Blockspecs) specification.

Tree discovery

Blocks enable device tree discovery by offering enumeration methods.

Descriptors for all the nested members can be retrieved with the getMemberDescriptors method ([element("2m1")]), which expected an ncBoolean recurse argument and returns a response of type ncMethodResultBlockMemberDescriptors.

interface ncBlockMemberDescriptor{
    attribute ncRole role; // Role of member in its containing block
    attribute ncOid oid; // OID of member
    attribute ncBoolean constantOid // TRUE iff member's OID is hardwired into device 
    attribute ncClassIdentity identity; // Class ID & version of member
    attribute ncLabel userLabel; // User label
    attribute ncOid owner; // Containing block's OID

    attribute sequence<ncPropertyConstraint> constraints // Constraints on this member or, for a block, its members.
};

interface ncMethodResultBlockMemberDescriptors : ncMethodResult { // block member descriptors result
    attribute sequence<ncBlockMemberDescriptor> value;
};

Search methods

All blocks also offer some search methods for convenience:

←NcObject · Index↑ · Managers→