Hardware services are GraphQL server endpoints that take in queries and mutations and exercise the hardware API to complete them.
It is highly recommended that you first read about GraphQL:
Hardware services function mostly as a passthrough to the API, managing control of the resource. Each hardware service has only a single worker thread, so the hardware will not be damaged or report an incorrect state due to simultaneous conflicting transactions.
In order to see the the full schema of a service, which details its available commands and telemetry objects, connect to the service’s GraphiQL endpoint and click the “Docs” button in the upper-right hand corner.
Queries are telemetry requests. Usually (if the hardware has the capability), when a query is submitted, the hardware service retrieves the live data from the hardware component and completes the transaction, returning it in a JSON format.
Mutations are hardware commands. Submitting a mutation changes the state of the hardware.
There are a few common categories of satellite bus hardware:
- Power Systems (EPS and/or Battery)
- Attitude Determination and Control Systems (ADCS)
- Global Positioning System (GPS)
Other hardware components are given services that are more generalized.
Creating a Service¶
The service outline guide documents the preferred schema for all hardware services. Commonizing the queries available from each service allows greater code re-use and reduces the number of new queries users must learn when swapping between different hardware devices.
The service development guide goes into a bit more detail about the components needed to create and install a new hardware service.
Some hardware services have been created by Kubos and are available for use.
The following list gives links to each service’s documentation:
- Monitor Service - This service is unique in that it communicates with the OBC itself, rather than an external hardware device
- Adcole Maryland Aerospace MAI-400 ADACS
- Clyde Space 3rd Generation EPS
- ISIS Antenna Systems
- ISIS-OBC Supervisor
- NovAtel OEM6 High Precision GNSS Receivers
- NSL Duplex D2 Radio
- Pumpkin Supervisor MCUs
In order to be included in the OBC and automatically started at boot time, the package for each hardware service must be enabled when building Kubos Linux