LCOS provides a uniform, systematic way of identifying and addressing layout objects. This page will explain how object identification and addressing works.
One consequence of a de-centralized, nodal structure is that each node has to be able to distinguish between and track the state of objects it controls and objects other nodes control.
Contextual Identification #
The objects controlled by a Client Node are local objects for that Node. A standard Client Node can monitor up to 8 local blocks and control up to 8 local turnouts.
A Client Node may also need to know about objects controlled by a different Node. These objects are remote with respect to the first Client Node, and their state may affect signals or other objects it controls. A standard Client Node can monitor up to 8 remote blocks and 8 remote turnouts.
The important concept is that layout objects can be either local or remote depending on context: objects are local in the context of the Node that physically controls them, and remote in all other contexts. This difference is reflected throughout the configuration system.
Nodes keep each other informed of the state of objects they control through the messaging system. State changes on a local block or turnout will cause the controlling Node to broadcast a state change message. Nodes listening for messages concerning those layout objects will note the change to the remote block or turnout and react in an appropriate way, such as by changing a signal aspect.
Object Identification #
Each node maintains lists of its local objects and remote objects that affect it. The system of identifying objects is structured to treat all objects of the same type in a uniform way.
It does that in part by ID segmentation. Local blocks and turnouts are assigned sequential ID’s from 0 to 7. Remote objects have sequential local IDs from 8 to 15. Accordingly, blocks 0 through 7 and turnouts 0 through 7 are local objects. Blocks 8 through 15 and turnouts 8 through 15 are remote objects a Node is monitoring.
Numbering is always sequential from 0 (if local) or 8 (if remote) through the number of objects. So, in a layout with 2 Client Nodes, Node 01 might have blocks 0 through 4 plus block 8 in its block list, while Node 02 has block 0 plus blocks 8 to 12 in its list; both sets of blocks are referring to the same objects in different contexts.
UID – the Uniform Identifier #
Every addressable layout object has a UID or Uniform Identifier. The UID system collapses all possible local layout objects a Node could manage into a single list of up to 256 objects, where the UID always refers to the same object. In other words, UID 0 always refers to block 0, UID 1 refers to block 1, UID 8 refers to turnout 0, UID 9 refers to turnout 1 and so on.
Accordingly, the absolute address of any layout object is its Node ID plus its UID.