Lispified bindings to libusb-0.1.
cl-libusb provides an easy interface to libusb-0.1. There are two systems/packages: libusb-ffi, which provides a (somewhat lispified) ffi to libusb-0.1, and cl-libusb, which provides an easier interface. Buffers are dealt with using unsigned byte static vectors. Converting existing software to use static vectors instead of foreign arrays should be straight-forward: 1. In your project, make sure to use static-vectors instead of antik and grid, 2. If you call USB-BULK-WRITE or USB-INTERRUPT-WRITE, make sure the buffer is a static vector instead of a foreign array: Instead of (GRID:MAKE-FOREIGN-ARRAY '(UNSIGNED-BYTE 8) :DIMENSIONS LENGTH) to make the array, use (STATIC-VECTORS:MAKE-STATIC-VECTOR LENGTH) and fill the array as if it is a normal common lisp array. After the call to -WRITE functions, make sure to use STATIC-VECTORS:FREE-STATIC-VECTOR to ensure the memory will be freed. 3. If you call USB-BULK-READ or USB-INTERRUPT-READ, be aware that the buffer is a static vector instead of a foreign array: The returned array can be simply be used as if it is a normal common lisp array for reading / parsing the output of the -READ functions. Make sure to use STATIC-VECTORS:FREE-STATIC-VECTOR to ensure that the associated memory will be freed. libusb-ffi (and thus cl-libusb) is not complete, but should be usable. Tested and found to work on: linux amd64 (sbcl) linux raspberry pi (sbcl-1.3.1-debian)