Within KOS the terms device, node, and board have very specific meanings.
A node is a Linux-based computer running KOS.
Nodes within a device can run diverse software, including various components of the KOS stack. For instance, while one node might run Java while another runs a browser. Connected via Ethernet, these nodes communicate seamlessly, enabling the device to function as a distributed system.
In KOS, every device is required to have a single primary node. This node runs the Java component of the KOS stack and serves as the central hub for all other nodes in the device. It oversees the device’s boot sequence and ensures that every node and board is running the correct software or firmware. The primary node also offers centralized features like time synchronization and network routing. In a multi-node device, only the primary node is expected to maintain external connectivity.
Each node within a device has a node type that determines its role within the device, and consequently, the software installed on it. It’s feasible to have various hardware types sharing the same node type. For instance, if a board reaches its end-of-life and a new one is designed as a replacement, there could be a mix of hardware in the field. KOS is engineered to support such scenarios, including the capability to switch to different board types as field replacements and install all necessary software on the new board, all without requiring network connectivity or additional user intervention.
Each node within a device possesses a unique node name, which serves as a qualifier to the node type, providing a distinct identity for every node. For instance, consider a device with two identical heads. While these heads would share the same node type (since they perform identical functions and run the same software) they must have different names for distinction. This arrangement allows nodes of the same type to have unique configurations if necessary.
A board is a type of hardware that interfaces with a node, typically through a communication interface.
Some boards may be equipped with a processor and run firmware, while others might be simpler devices operating over standard interfaces such as USB or I2C. If a hardware component can be detected or updated, it is generally classified as a board. However, very basic hardware, like a switch connected to a GPIO pin, does not fall under this category. Whether an LED connected to I2C is considered a board or not depends on the level of abstraction desired.
A device is a cohesive collection of hardware that functions and is upgraded as a single unit. It contains one or more nodes.
Typically, a device is a standalone box comprising a single node and multiple boards. If an expansion module is added, both the original unit and the expansion hardware are considered part of the device.
With KOS, it’s possible to construct devices that seem like multiple devices but aren’t. For instance, consider a distributed dispenser with a single controller under a counter and two heads. While they may appear as three separate devices and might even be purchased individually, they constitute a single device when combined.