In this page you will find a list of useful tutorials split into two main themes:

  • How to use hardio and its components
  • How to expand hardio

The first section will be targetting users of the framework and will not go into a lot of details about the inner workings of the hardio framework. It will however give all of the necessary knowledge to use the hardio framework properly and will help understand the design choices behind each component. It is therefore strongly recommended to read the usage tutorials first even if you intend to expand the hardio framework.

Quick access list

Here are all the tutorials that are accessible through this page, in a convenient list:

How to use hardio and its components

The hardio framework is split into four main parts:

  • Iocard: The abstraction of an onboard computer, each model of onboard computer (raspberry pi, upboard, etc) will have its own implementation of Iocard. The tutorial for using an Iocard will cover the basics of using an iocard and the general structure of the hardio framework.

  • buses: buses are used to communicate with all devices, Iocards should provide implementations for their supported buses. Knowing how to use buses is essential for any project that uses hardio, the buses and devices tutorial will give all details on how to use buses and devices.

  • Devices: Devices use buses to communicate with sensors and actuators. They basically serve as drivers for the physical devices on the robot. When using the hardio framework, you will mainly use devices. It is therefore essential to know how to use them properly. The buses and devices tutorial will teach you how to properly use devices in your code.

  • Generic devices: These are high level interfaces that are meant to simplify and generalize the usage of abstract device types. For many use cases, a simple generic interface is better to use that the more complete interface that hardio devices provide. Generic devices provide this simple interface. The tutorial about generic devices covers everything you need to know in order to use generic devices.

How to expand hardio

This section contains all information about how to add various components to hardio. The main parts one would want to expand are the following:

  • Iocard: You might need to implement a new Iocard if no implementation exists for your specific board yet. The tutorial about implementing an Iocard covers avarything you need to provide an implementation for any board.

  • buses: The main part of implementing an Iocard is actually implementing its buses, this tutorial is therefore essential if you plan on providing a new Iocard implementation, as well as if you want to add a new type of bus in hardio. The implementing buses tutorial covers both implementing a bus interface and adding a new type of bus to hardio.

  • Devices: Any time you want to add a device to the list of devices supported by hardio you will have to implement a new device. The way devices work in hardio allows developpers to only write a driver once and have the driver work on any Iocard as long as it provides the correct bus implementation. The creating a device tutorial will cover everything about how a device can be implemented.

  • Generic devices: Generic device interfaces are very usefull for end users that just want a simple high level API. Adding such an interface is not very difficult either. The creating a generic device tutorial covers everything for creating a new generic device type that can be implemented by other developpers and used by end users.

Other topics

Some other topics are covered in the more section of the documentation.