Is Luos for me? 🤔

Services

A service is a feature API that provides a functionality. Services can communicate with any other services present in the Luos network.

A service can be an application or a driver.

Each service provides a particular set of tasks such as managing a motor, handling a laser range finder, or more complex operations like computing inverse-kinematics. Services are stored into packages.

Each service is hosted in a single nodeHardware element (MCU) hosting and running Luos and hosting one or several services. (MCU). Still, a node can handle several services simultaneously and manage communication between them and other services hosted in different nodes, using the same network interface.

As a developer, you will always develop your functionalities as services into packages and never into the main() program. The only information that should be put on the main() code are MCU setup parameters and packages run functions.

Service properties

To properly work, each service has some properties allowing other services to recognize and access it:

NameDescriptionFormat
IDThe ID is a unique number given to each service depending on its physical position. The system automatically assigns each ID during the detection phase. If you move a service from a microcontroller A to a microcontroller B on a given device, the ID will change. In the same way, if you change the wiring order of a microcontroller in the network on a given device, the ID will change too.Integer
e.g. id=1
TYPEThe type defines the service purpose. A few types are predefined and can be used, or new ones can be created. The service type can't be changed after service initialization. See the type page for more information.String
e.g. type=DISTANCE_TYPE
ALIASAlias is the name of the service. It's used to easily identify a service. Each service has a default alias which can be changed by the user. For example, a service with the default alias motor can be named left_knee_motor by the user. This new name will be stored in the non-volatile memory of the board. As we don't want to have multiple services with the same name, a duplicate name on your system will be automatically assigned with an incrementing number at its end in the network. You can go back to the default by setting a void name ("") to a service.String
e.g. alias="gate"