diff options
Diffstat (limited to 'lib/stream/builtin/libusb.c.draft')
-rw-r--r-- | lib/stream/builtin/libusb.c.draft | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/lib/stream/builtin/libusb.c.draft b/lib/stream/builtin/libusb.c.draft deleted file mode 100644 index 122859d..0000000 --- a/lib/stream/builtin/libusb.c.draft +++ /dev/null @@ -1,115 +0,0 @@ -#include "../internals.h" -#ifndef LIBTIO_DISABLED_LIBUSB -# include <libusb.h> - -/* `free_context()`: free the libusb context passed as a `void *`. */ - -TIO_HOOK(void) free_context(void *vcontext) -{ - libusb_exit((libusb_context *)context); -} - -/* `get_context()`: get the default libusb context. */ - -TIO_LOCAL libusb_context *tio_libusb_context = NULL; - -TIO_LOCAL int get_context(libusb_context **context) -{ - libusb_context *ctx; - int lerr, err; - - if (tio_libusb_context) { - *context = tio_libusb_context; - return (tio_ok); - } - - if ((lerr = libusb_init(&ctx))) - return (tio_error_unknown); - if ((err = tio_add_exit(free_context, ctx))) { - libusb_exit(&ctx); - return (err); - } - - tio_libusb_context = ctx; - *context = ctx; - return (tio_ok); -} - -/* `find_descriptor()`: find a descriptor out of bus/host number. */ - -TIO_LOCAL int find_descriptor(int bus, int addr, - libusb_device *device, struct libusb_device_descriptor *descp) -{ - libusb_context *ctx = NULL; - int device_count, err; - - /* Open up the context. */ - - if ((err = get_context(&ctx) - - if (libusb_init(&context)) { - msg((ll_fatal, "Couldn't create a libusb context.")); - err = tio_error_alloc; - goto fail; - } - - /* Get the device list. */ - - device_count = libusb_get_device_list(context, &device_list); - if (device_count < 0) { - msg((ll_fatal, "couldn't get device list.")); - err = tio_error_nodevice; /* FIXME */ - goto fail; - } - - /* Look for the device. */ - - for (id = 0; id < device_count; id++) { - /* Check the position on the bus. */ - - if (bus >= 0) { - if (libusb_get_bus_number(device_list[id]) != bus) - continue; - - if (addr >= 0 - && libusb_get_device_address(device_list[id]) != addr) - continue; - } - - /* Get the device descriptor. */ - - if (libusb_get_device_descriptor(device_list[id], descp)) - continue ; - - device = device_list[id]; - break; - } - - err = tio_no_error; -fail: - libusb_free_device_list(device_list, 1); - return (err); -} - -/* `tio_open_libusb()`: open a USB device. */ - -int TIO_EXPORT tio_open_libusb(tio_stream_t **streamp, int bus, int addr) -{ - int err = 0; - libusb_context *context = NULL; - libusb_device *device = NULL; - - /* Get the device list. */ - - find_descriptor(bus, addr, &device, &descp -} - -/* `tio_open_libusb_device()`: find a USB device. */ - -int TIO_EXPORT tio_open_libusb_device(tio_stream_t **streamp, - libusb_device *device) -{ - int err = 0; -} - -#endif |