About Depot

Depot is a USB-connected multi-bus adaptor and the client-side libraries that are used to interact with it.

The Adaptor Board

The adaptor is an RP2040-based board running the Depot adaptor firmware. It communicates with a host macOS or Linux computer via an integrated UART-USB bridge, and provides a command set which client-side code can use to manage the adaptor and peripheral devices connected to it.

At this time, the firmware supports I²C and 1-Wire peripherals, and can also be used to control th adaptor’s GPIO pins.

The firmware code is organised as follows:

|___/firmware           // The RP2040 host firmware, written in C
|   |___/pico           // The Raspberry Pi Pico version
|   |___/nano           // An Arduino Nano RP2040 Connect version
|   |___/promicro       // A SparkFun ProMicro RP2040 version
|   |___/qtpy           // An Adafruit QTPy RP2040 version
|   |___/tiny           // A Pimoroni Tiny 2040 version
|   |___/trinkey        // An Adafruit QT2040 Trinkey version
|   |___/common         // Code common to all versions

The firmware is documented on this page.

Client-Side Libraries

Depot clients are applications running on Mac and Linux computers with attached multi-bus adaptor boards.

Client code makes use of a number of key libraries:

  • SerialDriver — This manages the client’s interaction with the host computer’s serial port out to the connected adaptor. It supports macOS and Linux operation.

  • I2CDriver — This provides I²C middleware to allow a client to interact with I²C buses and peripherals connected to the adaptor via SerialDriver.

  • OWDriver — This provides 1-Wire middleware to allow clients to interact with 1-Wire buses and peripherals connected to the adaptor via SerialDriver.

  • GPIO — Provides GPIO control middleware to clients.

All clients require SerialDriver and the associated utils.c file, and these are dependencies of I2CDriver, OWDriver and gpio.c.

The libraries are located as follows:

|   |___/common
|   |   |___gpio.c
|   |   |___gpio.h
|   |   |___serialdriver.c
|   |   |___serialdriver.h
|   |   |___utils.c
|   |   |___utils.h
|   |
|   |___/i2c
|   |   |___i2cdriver.c
|   |   |___i2cdriver.h
|   |
|   |___/onewire
|       |___owdriver.c
|       |___owdriver.h

Other directories under /client contain the code for the sample apps.

The I²C code and clients are documented on this page.

The 1-Wire firmware is covered on this page.