liboni#
- Language:
C
- Source Code:
- License:
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:
onidefs.h: common definitions.
oni.h: core API.
onidriver.h: device driver translation layer that must be implemented for a particular host hardware connection and firmware.
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.
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:
Test Driver: Driver emulator for testing.
RIFFA: Open source PCIe stack.
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.