An NCA Device is a physical or virtual device that publishes an NCA-conformant API. This API is organized around the concept of Blocks, which are containers for objects. The control model defines a class named NcBlock that is instantiated to create blocks.
A block can contain other blocks. A contained block is said to be nested inside its containing block.
As illustrated in the figure
NCA Device below, the Device model defines a Device as a root block accompanied by a few control objects. In simple devices, these objects might be contained directly in the root block; in more complex devices, they are contained in a hierarchy of blocks nested inside the root block.
An object contained in a block is called a member of that block.
A Device can have certain application functions the designers wish not to be network-controllable. Such functions might not be represented in the root block or its nested blocks, and consequently might not be in the device’s control API.
Blocks and object roles
Every NCA object has a role that is unique within its containing block (see Identification).
Every NCA object is uniquely identified in the device model by its role path. See Identification (Role path).
Control model interaction
The device model is created by instantiating control model classes as shown in the diagram below.
On the right is an example Device model showing blocks X and Y.