This is the external API for applications to use.
The API is relatively lean and designed to have close analogies to the USB specification.