liboni#

Language:

C

Source Code:

github.com/open-ephys/liboni/api/liboni

License:

MIT

liboni is a C library that functions with hardware that implements the ONI Hardware Specification. It is written in C to facilitate cross platform and cross-language use. It is composed of the following files:

  1. onidefs.h: common definitions.

  2. oni.h: core API.

  3. onidriver.h: device driver translation layer that must be implemented for a particular host hardware connection and firmware.

  4. onidriverloader.h: private functions used for dynamically loading the hardware driver. This is used internally by oni.h and can be ignored during both software and driver development.

  5. onix.h: ONIX-specific, out of ONI API specification scope, definitions and functions. Can be ignored for projects that do not interact with ONIX hardware.

The only external dependency aside from the C standard library and dynamic library loading functions is is a device driver translation layer (onidriver.h, “driver” for short) that can communicate with hardware created using the ONI controller specification . This implementation contains the following, ready-to-use driver translators:

  1. Test Driver: Driver emulator for testing.

  2. RIFFA: Open source PCIe stack.

  3. ft600: Closed-source FTDI-based USB stack.

These library elements abstract system calls into a common API function calls. Importantly, the low-level synchronization, resource allocation, and logic required to use the hardware communication backend is implicit to liboni API function calls. Orchestration of the communication backend is not directly managed by the API user.