VSF Documented
libusb.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_LIBUSB_H__
2#define __VSF_LINUX_LIBUSB_H__
3
5
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "./poll.h"
8# include "./sys/time.h"
9# include "./unistd.h"
10#else
11# include <poll.h>
12# include <sys/time.h>
13# include <unistd.h>
14#endif
15#include <stdarg.h>
16
17// for USB constants
19// for endian APIs
20#include "hal/arch/vsf_arch.h"
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#if VSF_LINUX_LIBUSB_CFG_WRAPPER == ENABLED
27#define VSF_LINUX_LIBUSB_WRAPPER(__api) VSF_SHELL_WRAPPER(vsf_linux_libusb, __api)
28
29#define libusb_strerror VSF_LINUX_LIBUSB_WRAPPER(libusb_strerror)
30#define libusb_get_version VSF_LINUX_LIBUSB_WRAPPER(libusb_get_version)
31#define libusb_init VSF_LINUX_LIBUSB_WRAPPER(libusb_init)
32#define libusb_exit VSF_LINUX_LIBUSB_WRAPPER(libusb_exit)
33#define libusb_set_debug VSF_LINUX_LIBUSB_WRAPPER(libusb_set_debug)
34#define libusb_error_name VSF_LINUX_LIBUSB_WRAPPER(libusb_error_name)
35#define libusb_get_device_list VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_list)
36#define libusb_free_device_list VSF_LINUX_LIBUSB_WRAPPER(libusb_free_device_list)
37#define libusb_open VSF_LINUX_LIBUSB_WRAPPER(libusb_open)
38#define libusb_open_device_with_vid_pid VSF_LINUX_LIBUSB_WRAPPER(libusb_open_device_with_vid_pid)
39#define libusb_get_device VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device)
40#define libusb_close VSF_LINUX_LIBUSB_WRAPPER(libusb_close)
41#define libusb_get_device_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_descriptor)
42#define libusb_get_device_address VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_address)
43#define libusb_get_bus_number VSF_LINUX_LIBUSB_WRAPPER(libusb_get_bus_number)
44#define libusb_get_port_number VSF_LINUX_LIBUSB_WRAPPER(libusb_get_port_number)
45#define libusb_get_port_numbers VSF_LINUX_LIBUSB_WRAPPER(libusb_get_port_numbers)
46#define libusb_get_parent VSF_LINUX_LIBUSB_WRAPPER(libusb_get_parent)
47#define libusb_reset_device VSF_LINUX_LIBUSB_WRAPPER(libusb_reset_device)
48#define libusb_clear_halt VSF_LINUX_LIBUSB_WRAPPER(libusb_clear_halt)
49#define libusb_alloc_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_alloc_transfer)
50#define libusb_fill_control_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_control_transfer)
51#define libusb_fill_control_setup VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_control_setup)
52#define libusb_fill_bulk_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_bulk_transfer)
53#define libusb_fill_interrupt_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_interrupt_transfer)
54#define libusb_fill_iso_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_iso_transfer)
55#define libusb_get_iso_packet_buffer_simple VSF_LINUX_LIBUSB_WRAPPER(libusb_get_iso_packet_buffer_simple)
56#define libusb_set_iso_packet_lengths VSF_LINUX_LIBUSB_WRAPPER(libusb_set_iso_packet_lengths)
57#define libusb_free_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_free_transfer)
58#define libusb_submit_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_submit_transfer)
59#define libusb_cancel_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_cancel_transfer)
60#define libusb_control_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_control_transfer)
61#define libusb_control_transfer_get_data VSF_LINUX_LIBUSB_WRAPPER(libusb_control_transfer_get_data)
62#define libusb_bulk_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_bulk_transfer)
63#define libusb_interrupt_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_interrupt_transfer)
64#define libusb_get_string_descriptor_ascii VSF_LINUX_LIBUSB_WRAPPER(libusb_get_string_descriptor_ascii)
65#define libusb_get_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_config_descriptor)
66#define libusb_get_config_descriptor_by_value VSF_LINUX_LIBUSB_WRAPPER(libusb_get_config_descriptor_by_value)
67#define libusb_get_active_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_active_config_descriptor)
68#define libusb_free_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_free_config_descriptor)
69#define libusb_get_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_descriptor)
70#define libusb_get_string_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_string_descriptor)
71#define libusb_set_interface_alt_setting VSF_LINUX_LIBUSB_WRAPPER(libusb_set_interface_alt_setting)
72#define libusb_handle_events_timeout_completed VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_timeout_completed)
73#define libusb_handle_events_completed VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_completed)
74#define libusb_handle_events_timeout VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_timeout)
75#define libusb_handle_events VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events)
76#define libusb_get_pollfds VSF_LINUX_LIBUSB_WRAPPER(libusb_get_pollfds)
77#define libusb_free_pollfds VSF_LINUX_LIBUSB_WRAPPER(libusb_free_pollfds)
78#define libusb_get_ss_endpoint_companion_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_ss_endpoint_companion_descriptor)
79#define libusb_free_ss_endpoint_companion_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_free_ss_endpoint_companion_descriptor)
80#define libusb_claim_interface VSF_LINUX_LIBUSB_WRAPPER(libusb_claim_interface)
81#define libusb_release_interface VSF_LINUX_LIBUSB_WRAPPER(libusb_release_interface)
82#define libusb_hotplug_register_callback VSF_LINUX_LIBUSB_WRAPPER(libusb_hotplug_register_callback)
83#define libusb_hotplug_deregister_callback VSF_LINUX_LIBUSB_WRAPPER(libusb_hotplug_deregister_callback)
84#define libusb_get_next_timeout VSF_LINUX_LIBUSB_WRAPPER(libusb_get_next_timeout)
85#define libusb_has_capability VSF_LINUX_LIBUSB_WRAPPER(libusb_has_capability)
86#define libusb_attach_kernel_driver VSF_LINUX_LIBUSB_WRAPPER(libusb_attach_kernel_driver)
87#define libusb_detach_kernel_driver VSF_LINUX_LIBUSB_WRAPPER(libusb_detach_kernel_driver)
88#define libusb_kernel_driver_active VSF_LINUX_LIBUSB_WRAPPER(libusb_kernel_driver_active)
89#define libusb_ref_device VSF_LINUX_LIBUSB_WRAPPER(libusb_ref_device)
90#define libusb_unref_device VSF_LINUX_LIBUSB_WRAPPER(libusb_unref_device)
91#define libusb_get_max_packet_size VSF_LINUX_LIBUSB_WRAPPER(libusb_get_max_packet_size)
92#define libusb_get_device_speed VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_speed)
93#define libusb_set_configuration VSF_LINUX_LIBUSB_WRAPPER(libusb_set_configuration)
94#define libusb_get_configuration VSF_LINUX_LIBUSB_WRAPPER(libusb_get_configuration)
95#define libusb_set_option VSF_LINUX_LIBUSB_WRAPPER(libusb_set_option)
96
97#endif
98
99#define LIBUSB_CALL
100#define LIBUSB_HOTPLUG_MATCH_ANY -1
101#define LIBUSB_PACKED VSF_CAL_PACKED
102
103#define libusb_device_descriptor usb_device_desc_t
104
120};
121
127};
128
135};
136
137#define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0F
138#define LIBUSB_ENDPOINT_DIR_MASK USB_DIR_MASK
142};
143
149};
150
156};
157
170};
171
193};
194
210};
211
218};
219
227
231};
232
233struct libusb_version {
234 const uint16_t major;
235 const uint16_t minor;
236 const uint16_t micro;
237 const uint16_t nano;
238 const char *rc;
239 const char *describe;
240};
241
243 implement(usb_endpoint_desc_t)
244
245 const unsigned char *extra;
246 int extra_length;
247};
248
250 implement(usb_interface_desc_t)
251
253 const unsigned char *extra;
254 int extra_length;
255};
256
257struct libusb_interface {
259 int num_altsetting;
260};
261
263 implement(usb_config_desc_t)
264 const unsigned char *desc;
265
267 const unsigned char *extra;
268 int extra_length;
269};
270
272 implement(usb_ctrlrequest_t)
274
275#define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup))
276
278
279struct libusb_context {
280 int dummy;
281};
283
284struct libusb_device;
288
289typedef enum {
293
294typedef enum {
298
300 libusb_device *device, libusb_hotplug_event event, void *user_data);
301
302
303struct libusb_pollfd {
304 struct pollfd;
306};
307
316};
317
318#define LIBUSB_TRANSFER_TYPE_MASK USB_ENDPOINT_XFERTYPE_MASK
325};
326
332};
333
335 unsigned int length;
336 unsigned int actual_length;
338};
339
340struct libusb_transfer;
341typedef void (*libusb_transfer_cb_fn)(struct libusb_transfer *transfer);
342struct libusb_transfer {
345 unsigned char endpoint;
346 unsigned char type;
347 unsigned int timeout;
349 int length;
350 int actual_length;
352 void *user_data;
353 unsigned char *buffer;
354 int num_iso_packets;
356};
357
365
366#define libusb_cpu_to_le16 cpu_to_le16
367#define libusb_le16_to_cpu le16_to_cpu
368
369static inline void libusb_fill_control_transfer(
370 struct libusb_transfer *transfer, libusb_device_handle *dev_handle,
371 unsigned char *buffer, libusb_transfer_cb_fn callback, void *user_data,
372 unsigned int timeout)
373{
374 // no idea why libusb_control_setup can not be used for c++ here
375 struct usb_ctrlrequest_t *setup = (struct usb_ctrlrequest_t *)(void *)buffer;
376 transfer->dev_handle = dev_handle;
377 transfer->endpoint = 0;
379 transfer->timeout = timeout;
380 transfer->buffer = buffer;
381 if (setup)
382 transfer->length = (int) (LIBUSB_CONTROL_SETUP_SIZE + le16_to_cpu(setup->wLength));
383 transfer->user_data = user_data;
384 transfer->callback = callback;
385}
386
387static inline void libusb_fill_control_setup(unsigned char *buffer,
390{
391 struct libusb_control_setup *setup = (struct libusb_control_setup *)(void *)buffer;
392 // use use_as__usb_ctrlrequest_t in header for cpp
393 setup->use_as__usb_ctrlrequest_t.bRequestType = bRequestType;
394 setup->use_as__usb_ctrlrequest_t.bRequest = bRequest;
395 setup->use_as__usb_ctrlrequest_t.wValue = cpu_to_le16(wValue);
396 setup->use_as__usb_ctrlrequest_t.wIndex = cpu_to_le16(wIndex);
397 setup->use_as__usb_ctrlrequest_t.wLength = cpu_to_le16(wLength);
398}
399
400static inline unsigned char *libusb_control_transfer_get_data(
401 struct libusb_transfer *transfer)
402{
403 return transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE;
404}
405
406static inline struct libusb_control_setup * libusb_control_transfer_get_setup(
407 struct libusb_transfer *transfer)
408{
409 return (struct libusb_control_setup *)transfer->buffer;
410}
411
412static inline void libusb_fill_bulk_transfer(struct libusb_transfer *transfer,
413 libusb_device_handle *dev_handle, unsigned char endpoint,
414 unsigned char *buffer, int length, libusb_transfer_cb_fn callback,
415 void *user_data, unsigned int timeout)
416{
417 transfer->dev_handle = dev_handle;
418 transfer->endpoint = endpoint;
420 transfer->timeout = timeout;
421 transfer->buffer = buffer;
422 transfer->length = length;
423 transfer->user_data = user_data;
424 transfer->callback = callback;
425}
426
427static inline void libusb_fill_interrupt_transfer(
428 struct libusb_transfer *transfer, libusb_device_handle *dev_handle,
429 unsigned char endpoint, unsigned char *buffer, int length,
430 libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)
431{
432 transfer->dev_handle = dev_handle;
433 transfer->endpoint = endpoint;
435 transfer->timeout = timeout;
436 transfer->buffer = buffer;
437 transfer->length = length;
438 transfer->user_data = user_data;
439 transfer->callback = callback;
440}
441
442static inline void libusb_fill_iso_transfer(struct libusb_transfer *transfer,
443 libusb_device_handle *dev_handle, unsigned char endpoint,
444 unsigned char *buffer, int length, int num_iso_packets,
445 libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)
446{
447 transfer->dev_handle = dev_handle;
448 transfer->endpoint = endpoint;
450 transfer->timeout = timeout;
451 transfer->buffer = buffer;
452 transfer->length = length;
453 transfer->num_iso_packets = num_iso_packets;
454 transfer->user_data = user_data;
455 transfer->callback = callback;
456}
457
458static inline unsigned char *libusb_get_iso_packet_buffer_simple(
459 struct libusb_transfer *transfer, unsigned int packet)
460{
461 int _packet;
462 if (packet > 0x80000000)
463 return NULL;
464 _packet = (int) packet;
465
466 if (_packet >= transfer->num_iso_packets)
467 return NULL;
468
469 return transfer->buffer + ((int) transfer->iso_packet_desc[0].length * _packet);
470}
471
472static inline void libusb_set_iso_packet_lengths(
473 struct libusb_transfer *transfer, unsigned int length)
474{
475 int i;
476 for (i = 0; i < transfer->num_iso_packets; i++)
477 transfer->iso_packet_desc[i].length = length;
478}
479
480#if VSF_LINUX_APPLET_USE_LIBUSB == ENABLED
481typedef struct vsf_linux_libusb_vplt_t {
483
504
512
515
524
527
530
534
537
542
549
555# ifndef __VSF_APPLET__
557# endif
558#endif
559
560#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_LIBUSB_LIB__))\
561 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_LIBUSB == ENABLED
562
563#ifndef VSF_LINUX_APPLET_LIBUSB_VPLT
564# if VSF_LINUX_USE_APPLET == ENABLED
565# define VSF_LINUX_APPLET_LIBUSB_VPLT \
566 ((vsf_linux_libusb_vplt_t *)(VSF_LINUX_APPLET_VPLT->libusb_vplt))
567# else
568# define VSF_LINUX_APPLET_LIBUSB_VPLT \
569 ((vsf_linux_libusb_vplt_t *)vsf_vplt((void *)0))
570# endif
571#endif
572
573#define VSF_LINUX_APPLET_LIBUSB_ENTRY(__NAME) \
574 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_LIBUSB_VPLT, __NAME)
575#define VSF_LINUX_APPLET_LIBUSB_IMP(...) \
576 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_LIBUSB_VPLT, __VA_ARGS__)
577
578VSF_LINUX_APPLET_LIBUSB_IMP(libusb_strerror, const char *, int code) {
580 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_strerror)(code);
581}
582VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_version, const struct libusb_version *, void) {
584 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_version)();
585}
586VSF_LINUX_APPLET_LIBUSB_IMP(libusb_init, int, libusb_context **ctx) {
588 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_init)(ctx);
589}
590VSF_LINUX_APPLET_LIBUSB_IMP(libusb_exit, void, libusb_context *ctx) {
592 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_exit)(ctx);
593}
594VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_debug, void, libusb_context *ctx, int level) {
596 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_debug)(ctx, level);
597}
598VSF_LINUX_APPLET_LIBUSB_IMP(libusb_error_name, const char *, int errcode) {
600 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_error_name)(errcode);
601}
602VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_list, ssize_t, libusb_context *ctx, libusb_device ***list) {
604 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_list)(ctx, list);
605}
606VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_device_list, void, libusb_device **list, int unref_devices) {
608 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_device_list)(list, unref_devices);
609}
610VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_descriptor, int, libusb_device *dev, struct libusb_device_descriptor *desc) {
612 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_descriptor)(dev, desc);
613}
614VSF_LINUX_APPLET_LIBUSB_IMP(libusb_open, int, libusb_device *dev, libusb_device_handle **dev_handle) {
616 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_open)(dev, dev_handle);
617}
618VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device, libusb_device *, libusb_device_handle *dev_handle) {
620 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device)(dev_handle);
621}
622VSF_LINUX_APPLET_LIBUSB_IMP(libusb_open_device_with_vid_pid, libusb_device_handle *, libusb_context *ctx, uint16_t vendor_id, uint16_t product_id) {
624 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_open_device_with_vid_pid)(ctx, vendor_id, product_id);
625}
626VSF_LINUX_APPLET_LIBUSB_IMP(libusb_close, void, libusb_device_handle *dev_handle) {
628 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_close)(dev_handle);
629}
630VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_address, uint8_t, libusb_device *dev) {
632 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_address)(dev);
633}
634VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_bus_number, uint8_t, libusb_device *dev) {
636 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_bus_number)(dev);
637}
638VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_port_number, uint8_t, libusb_device *dev) {
640 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_port_number)(dev);
641}
642VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_port_numbers, int, libusb_device *dev, uint8_t *port_numbers, int port_numbers_len) {
644 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_port_numbers)(dev, port_numbers, port_numbers_len);
645}
646VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_parent, libusb_device *, libusb_device *dev) {
648 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_parent)(dev);
649}
650VSF_LINUX_APPLET_LIBUSB_IMP(libusb_release_interface, int, libusb_device_handle *dev_handle, int interface_number) {
652 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_release_interface)(dev_handle, interface_number);
653}
654VSF_LINUX_APPLET_LIBUSB_IMP(libusb_claim_interface, int, libusb_device_handle *dev_handle, int interface_number) {
656 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_claim_interface)(dev_handle, interface_number);
657}
658VSF_LINUX_APPLET_LIBUSB_IMP(libusb_alloc_transfer, struct libusb_transfer *, int iso_packets) {
660 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_alloc_transfer)(iso_packets);
661}
662VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_transfer, void, struct libusb_transfer *transfer) {
664 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_transfer)(transfer);
665}
666VSF_LINUX_APPLET_LIBUSB_IMP(libusb_submit_transfer, int, struct libusb_transfer *transfer) {
668 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_submit_transfer)(transfer);
669}
670VSF_LINUX_APPLET_LIBUSB_IMP(libusb_cancel_transfer, int, struct libusb_transfer *transfer) {
672 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_cancel_transfer)(transfer);
673}
674VSF_LINUX_APPLET_LIBUSB_IMP(libusb_control_transfer, int, libusb_device_handle *dev_handle, uint8_t bRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout) {
676 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_control_transfer)(dev_handle, bRequestType, bRequest, wValue, wIndex, data, wLength ,timeout);
677}
678VSF_LINUX_APPLET_LIBUSB_IMP(libusb_bulk_transfer, int, libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *actual_length, unsigned int timeout) {
680 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_bulk_transfer)(dev_handle, endpoint, data, length, actual_length, timeout);
681}
682VSF_LINUX_APPLET_LIBUSB_IMP(libusb_interrupt_transfer, int, libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *actual_length, unsigned int timeout) {
684 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_interrupt_transfer)(dev_handle, endpoint, data, length, actual_length, timeout);
685}
686VSF_LINUX_APPLET_LIBUSB_IMP(libusb_hotplug_register_callback, int, libusb_context *ctx, libusb_hotplug_event events, libusb_hotplug_flag flags, int vendor_id, int product_id, int dev_class, libusb_hotplug_callback_fn cb_fn, void *user_data, libusb_hotplug_callback_handle *callback_handle) {
688 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_hotplug_register_callback)(ctx, events, flags, vendor_id, product_id, dev_class, cb_fn, user_data, callback_handle);
689}
690VSF_LINUX_APPLET_LIBUSB_IMP(libusb_hotplug_deregister_callback, void, libusb_context *ctx, libusb_hotplug_callback_handle callback_handle) {
692 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_hotplug_deregister_callback)(ctx, callback_handle);
693}
694VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_string_descriptor_ascii, int, libusb_device_handle *dev_handle, uint8_t desc_index, unsigned char *data, int length) {
696 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_string_descriptor_ascii)(dev_handle, desc_index, data, length);
697}
698VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_config_descriptor, int, libusb_device *dev, uint8_t config_index, struct libusb_config_descriptor **config) {
700 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_config_descriptor)(dev, config_index, config);
701}
702VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_config_descriptor_by_value, int, libusb_device *dev, uint8_t value, struct libusb_config_descriptor **config) {
704 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_config_descriptor_by_value)(dev, value, config);
705}
706VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_active_config_descriptor, int, libusb_device *dev, struct libusb_config_descriptor **config) {
708 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_active_config_descriptor)(dev, config);
709}
710VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_config_descriptor, void, struct libusb_config_descriptor *config) {
712 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_config_descriptor)(config);
713}
714VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_descriptor, int, libusb_device_handle *dev_handle, uint8_t desc_type, uint8_t desc_index, unsigned char *data, int length) {
716 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_descriptor)(dev_handle, desc_type, desc_index, data, length);
717}
718VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_string_descriptor, int, libusb_device_handle *dev_handle, uint8_t desc_index, uint16_t langid, unsigned char *data, int length) {
720 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_string_descriptor)(dev_handle, desc_index, langid, data, length);
721}
722VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_interface_alt_setting, int, libusb_device_handle *dev_handle, int interface_number, int alternate_setting) {
724 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_interface_alt_setting)(dev_handle, interface_number, alternate_setting);
725}
726VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_ss_endpoint_companion_descriptor, int, struct libusb_context *ctx, const struct libusb_endpoint_descriptor *endpoint, struct libusb_ss_endpoint_companion_descriptor **ep_comp) {
728 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_ss_endpoint_companion_descriptor)(ctx, endpoint, ep_comp);
729}
730VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_ss_endpoint_companion_descriptor, void, struct libusb_ss_endpoint_companion_descriptor *ep_comp) {
732 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_ss_endpoint_companion_descriptor)(ep_comp);
733}
734VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_next_timeout, int, libusb_context *ctx, struct timeval *tv) {
736 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_next_timeout)(ctx, tv);
737}
738VSF_LINUX_APPLET_LIBUSB_IMP(libusb_has_capability, int, uint32_t capability) {
740 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_has_capability)(capability);
741}
742VSF_LINUX_APPLET_LIBUSB_IMP(libusb_attach_kernel_driver, int, libusb_device_handle *dev_handle, int interface_number) {
744 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_attach_kernel_driver)(dev_handle, interface_number);
745}
746VSF_LINUX_APPLET_LIBUSB_IMP(libusb_detach_kernel_driver, int, libusb_device_handle *dev_handle, int interface_number) {
748 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_detach_kernel_driver)(dev_handle, interface_number);
749}
750VSF_LINUX_APPLET_LIBUSB_IMP(libusb_kernel_driver_active, int, libusb_device_handle *dev_handle, int interface_number) {
752 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_kernel_driver_active)(dev_handle, interface_number);
753}
754VSF_LINUX_APPLET_LIBUSB_IMP(libusb_ref_device, libusb_device *, libusb_device *dev) {
756 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_ref_device)(dev);
757}
758VSF_LINUX_APPLET_LIBUSB_IMP(libusb_unref_device, void, libusb_device *dev) {
760 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_unref_device)(dev);
761}
762VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_max_packet_size, int, libusb_device *dev, unsigned char endpoint) {
764 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_max_packet_size)(dev, endpoint);
765}
766VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_speed, int, libusb_device *dev) {
768 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_speed)(dev);
769}
770VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_configuration, int, libusb_device_handle *dev_handle, int configuration) {
772 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_configuration)(dev_handle, configuration);
773}
774VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_configuration, int, libusb_device_handle *dev_handle, int *config) {
776 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_configuration)(dev_handle, config);
777}
778VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_timeout_completed, int, libusb_context *ctx, struct timeval *tv, int *completed) {
780 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_timeout_completed)(ctx, tv, completed);
781}
782VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_completed, int, libusb_context *ctx, int *completed) {
784 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_completed)(ctx, completed);
785}
786VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_timeout, int, libusb_context *ctx, struct timeval *tv) {
788 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_timeout)(ctx, tv);
789}
790VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events, int, libusb_context *ctx) {
792 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events)(ctx);
793}
794VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_pollfds, const struct libusb_pollfd**, libusb_context *ctx) {
796 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_pollfds)(ctx);
797}
798VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_pollfds, void, const struct libusb_pollfd **pollfds) {
800 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_pollfds)(pollfds);
801}
802VSF_LINUX_APPLET_LIBUSB_IMP(libusb_reset_device, int, libusb_device_handle *dev_handle) {
804 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_reset_device)(dev_handle);
805}
806VSF_LINUX_APPLET_LIBUSB_IMP(libusb_clear_halt, int, libusb_device_handle *dev_handle, unsigned char endpoint) {
808 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_clear_halt)(dev_handle, endpoint);
809}
810VSF_LINUX_APPLET_LIBUSB_IMP(__libusb_set_option_va, int, libusb_context *ctx, enum libusb_option option, va_list ap) {
812 return VSF_LINUX_APPLET_LIBUSB_ENTRY(__libusb_set_option_va)(ctx, option, ap);
813}
814
816 int result;
817 va_list ap;
818 va_start(ap, option);
819 result = __libusb_set_option_va(ctx, option, ap);
820 va_end(ap);
821 return result;
822}
823
824#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_LIBUSB
825
826const char * libusb_strerror(int code);
827const struct libusb_version * libusb_get_version(void);
828int libusb_init(libusb_context **ctx);
829void libusb_exit(libusb_context *ctx);
830void libusb_set_debug(libusb_context *ctx, int level);
831const char * libusb_error_name(int errcode);
833void libusb_free_device_list(libusb_device **list, int unref_devices);
835int libusb_open(libusb_device *dev, libusb_device_handle **dev_handle);
838 uint16_t vendor_id, uint16_t product_id);
839void libusb_close(libusb_device_handle *dev_handle);
843int libusb_get_port_numbers(libusb_device *dev, uint8_t *port_numbers, int port_numbers_len);
845int libusb_release_interface(libusb_device_handle *dev_handle, int interface_number);
846int libusb_claim_interface(libusb_device_handle *dev_handle, int interface_number);
847
848struct libusb_transfer *libusb_alloc_transfer(int iso_packets);
849void libusb_free_transfer(struct libusb_transfer *transfer);
850int libusb_submit_transfer(struct libusb_transfer *transfer);
851int libusb_cancel_transfer(struct libusb_transfer *transfer);
853 uint8_t bRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex,
854 unsigned char *data, uint16_t wLength, unsigned int timeout);
856 unsigned char endpoint, unsigned char *data, int length,
857 int *actual_length, unsigned int timeout);
859 unsigned char endpoint, unsigned char *data, int length,
860 int *actual_length, unsigned int timeout);
861
865 int vendor_id,
866 int product_id,
867 int dev_class,
869 void *user_data,
870 libusb_hotplug_callback_handle *callback_handle);
872 libusb_hotplug_callback_handle callback_handle);
873
875 uint8_t desc_index, unsigned char *data, int length);
877 struct libusb_config_descriptor **config);
879 struct libusb_config_descriptor **config);
881 struct libusb_config_descriptor **config);
884 uint8_t desc_type, uint8_t desc_index, unsigned char *data, int length);
886 uint8_t desc_index, uint16_t langid, unsigned char *data, int length);
888 int interface_number, int alternate_setting);
889
891 struct libusb_context *ctx,
896
899
903
906
907int libusb_get_max_packet_size(libusb_device *dev, unsigned char endpoint);
909
912
914 struct timeval *tv, int *completed);
915int libusb_handle_events_completed(libusb_context *ctx, int *completed);
919void libusb_free_pollfds(const struct libusb_pollfd **pollfds);
920
921void vsf_linux_libusb_startup(void);
922
924int libusb_clear_halt(libusb_device_handle *dev_handle, unsigned char endpoint);
925
928
929#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_LIBUSB
930
931// libusb 0.1 compatibility
932#if VSF_LINUX_LIBUSB_CFG_01_COMPATIBLE == ENABLED
933#define usb_dev_handle libusb_device_handle
934#define USB_ENDPOINT_IN LIBUSB_ENDPOINT_IN
935#define USB_ENDPOINT_OUT LIBUSB_ENDPOINT_OUT
936
937#define usb_init() libusb_init(NULL)
938#define usb_set_debug(__level) libusb_set_debug(NULL, (__level))
939#define usb_device(__handle) (struct usb_device *)(__handle)
940#define usb_get_string libusb_get_string_descriptor
941#define usb_get_string_simple libusb_get_string_descriptor_ascii
942#define usb_control_msg libusb_control_transfer
943#define usb_set_configuration libusb_set_configuration
944#define usb_claim_interface libusb_claim_interface
945#define usb_release_interface libusb_release_interface
946#define usb_get_descriptor libusb_get_descriptor
947#define usb_find_busses() 1
948#define usb_strerror() "usb_strerror not_supported!!!"
949
950// TODO: implement later
951//#define usb_get_descriptor_by_endpoint
952//#define usb_set_altinterface
953//#define usb_resetep
954//#define usb_clear_halt
955//#define usb_reset
956
957struct usb_device;
958struct usb_bus {
959 struct usb_bus *next, *prev;
960 struct usb_device *devices;
961 struct usb_device *root_dev;
962};
963struct usb_device {
964 struct usb_device *next, *prev;
967
968 // actually libusb_device
969 void *dev;
972 struct usb_device **children;
973
974 // private
976};
977
978int usb_find_devices(void);
979struct usb_bus *usb_get_busses(void);
980
981int usb_get_driver_np(usb_dev_handle *dev, int interface, char *name, unsigned int namelen);
982int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface);
983
985int usb_close(usb_dev_handle *dev);
986
987int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
988int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
989
990int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
991int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
992#endif // VSF_LINUX_LIBUSB_CFG_01_COMPATIBLE
993
994#ifdef __cplusplus
995}
996#endif
997
998#endif
Definition vsf_linux_fs.h:115
struct ieee80211_ext_chansw_ie data
Definition ieee80211.h:80
__le16 timeout
Definition ieee80211.h:94
__le16 capability
Definition ieee80211.h:134
libusb_descriptor_type
Definition libusb.h:191
libusb_request_type
Definition libusb.h:140
libusb_transfer_flags
Definition libusb.h:312
libusb_request_recipient
Definition libusb.h:147
libusb_log_level
Definition libusb.h:210
int libusb_hotplug_callback_handle
Definition libusb.h:262
libusb_standard_request
Definition libusb.h:154
libusb_endpoint_direction
Definition libusb.h:135
libusb_hotplug_flag
Definition libusb.h:279
libusb_transfer_status
Definition libusb.h:293
libusb_capability
Definition libusb.h:118
libusb_class_code
Definition libusb.h:168
libusb_transfer_type
Definition libusb.h:304
libusb_descriptor_size
Definition libusb.h:202
#define libusb_get_port_number
Definition libusb.h:44
usb_dev_handle * usb_open(struct usb_device *dev)
Definition vsf_linux_libusb.c:1483
int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1504
libusb_option
Definition libusb.h:228
@ LIBUSB_OPTION_MAX
Definition libusb.h:230
@ LIBUSB_OPTION_LOG_LEVEL
Definition libusb.h:229
@ LIBUSB_DT_HUB
Definition libusb.h:207
@ LIBUSB_DT_CONFIG
Definition libusb.h:197
@ LIBUSB_DT_STRING
Definition libusb.h:198
@ LIBUSB_DT_HID
Definition libusb.h:204
@ LIBUSB_DT_REPORT
Definition libusb.h:205
@ LIBUSB_DT_DEVICE
Definition libusb.h:196
@ LIBUSB_DT_DEVICE_CAPABILITY
Definition libusb.h:203
@ LIBUSB_DT_SUPERSPEED_HUB
Definition libusb.h:208
@ LIBUSB_DT_PHYSICAL
Definition libusb.h:206
@ LIBUSB_DT_INTERFACE
Definition libusb.h:199
@ LIBUSB_DT_ENDPOINT
Definition libusb.h:200
@ LIBUSB_DT_SS_ENDPOINT_COMPANION
Definition libusb.h:209
@ LIBUSB_DT_BOS
Definition libusb.h:202
@ LIBUSB_DT_INTERFACE_ASSOCIATION
Definition libusb.h:201
@ LIBUSB_REQUEST_TYPE_VENDOR
Definition libusb.h:147
@ LIBUSB_REQUEST_TYPE_STANDARD
Definition libusb.h:145
@ LIBUSB_REQUEST_TYPE_CLASS
Definition libusb.h:146
@ LIBUSB_REQUEST_TYPE_RESERVED
Definition libusb.h:148
#define libusb_handle_events_timeout
Definition libusb.h:74
int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1520
int usb_get_driver_np(usb_dev_handle *dev, int interface, char *name, unsigned int namelen)
Definition vsf_linux_libusb.c:1426
#define libusb_submit_transfer
Definition libusb.h:58
int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1512
struct libusb_ss_endpoint_companion_descriptor VSF_CAL_PACKED
#define libusb_get_pollfds
Definition libusb.h:76
void(* libusb_transfer_cb_fn)(struct libusb_transfer *transfer)
Definition libusb.h:341
#define libusb_exit
Definition libusb.h:32
@ LIBUSB_TRANSFER_ADD_ZERO_PACKET
Definition libusb.h:331
@ LIBUSB_TRANSFER_FREE_TRANSFER
Definition libusb.h:330
@ LIBUSB_TRANSFER_SHORT_NOT_OK
Definition libusb.h:328
@ LIBUSB_TRANSFER_FREE_BUFFER
Definition libusb.h:329
@ LIBUSB_RECIPIENT_ENDPOINT
Definition libusb.h:154
@ LIBUSB_RECIPIENT_INTERFACE
Definition libusb.h:153
@ LIBUSB_RECIPIENT_OTHER
Definition libusb.h:155
@ LIBUSB_RECIPIENT_DEVICE
Definition libusb.h:152
#define libusb_get_bus_number
Definition libusb.h:43
#define libusb_hotplug_register_callback
Definition libusb.h:82
int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1496
#define libusb_get_parent
Definition libusb.h:46
#define libusb_attach_kernel_driver
Definition libusb.h:86
@ LIBUSB_SPEED_FULL
Definition libusb.h:132
@ LIBUSB_SPEED_HIGH
Definition libusb.h:133
@ LIBUSB_SPEED_LOW
Definition libusb.h:131
@ LIBUSB_SPEED_SUPER
Definition libusb.h:134
@ LIBUSB_SPEED_UNKNOWN
Definition libusb.h:130
@ LIBUSB_LOG_LEVEL_WARNING
Definition libusb.h:223
@ LIBUSB_LOG_LEVEL_INFO
Definition libusb.h:224
@ LIBUSB_LOG_LEVEL_ERROR
Definition libusb.h:222
@ LIBUSB_LOG_LEVEL_NONE
Definition libusb.h:221
@ LIBUSB_LOG_LEVEL_DEBUG
Definition libusb.h:225
#define libusb_has_capability
Definition libusb.h:85
#define LIBUSB_PACKED
Definition libusb.h:101
#define libusb_get_ss_endpoint_companion_descriptor
Definition libusb.h:78
#define libusb_get_port_numbers
Definition libusb.h:45
#define libusb_free_pollfds
Definition libusb.h:77
#define libusb_set_interface_alt_setting
Definition libusb.h:71
int libusb_hotplug_callback_handle
Definition libusb.h:277
int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface)
Definition vsf_linux_libusb.c:1431
#define libusb_set_configuration
Definition libusb.h:93
#define libusb_kernel_driver_active
Definition libusb.h:88
#define libusb_get_iso_packet_buffer_simple
Definition libusb.h:55
libusb_hotplug_event
Definition libusb.h:289
@ LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED
Definition libusb.h:290
@ LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT
Definition libusb.h:291
#define libusb_detach_kernel_driver
Definition libusb.h:87
#define libusb_set_debug
Definition libusb.h:33
@ LIBUSB_REQUEST_CLEAR_FEATURE
Definition libusb.h:160
@ LIBUSB_REQUEST_GET_INTERFACE
Definition libusb.h:167
@ LIBUSB_REQUEST_GET_DESCRIPTOR
Definition libusb.h:163
@ LIBUSB_REQUEST_SET_DESCRIPTOR
Definition libusb.h:164
@ LIBUSB_REQUEST_GET_STATUS
Definition libusb.h:159
@ LIBUSB_REQUEST_SET_FEATURE
Definition libusb.h:161
@ LIBUSB_REQUEST_SET_INTERFACE
Definition libusb.h:168
@ LIBUSB_REQUEST_SET_ADDRESS
Definition libusb.h:162
@ LIBUSB_REQUEST_GET_CONFIGURATION
Definition libusb.h:165
@ LIBUSB_REQUEST_SYNCH_FRAME
Definition libusb.h:169
@ LIBUSB_REQUEST_SET_CONFIGURATION
Definition libusb.h:166
int __libusb_set_option_va(libusb_context *ctx, enum libusb_option option, va_list ap)
Definition vsf_linux_libusb.c:1345
#define libusb_get_string_descriptor_ascii
Definition libusb.h:64
#define libusb_release_interface
Definition libusb.h:81
#define libusb_interrupt_transfer
Definition libusb.h:63
#define libusb_get_device
Definition libusb.h:39
#define libusb_open_device_with_vid_pid
Definition libusb.h:38
#define libusb_get_config_descriptor
Definition libusb.h:65
#define libusb_get_device_address
Definition libusb.h:42
#define libusb_get_device_list
Definition libusb.h:35
#define libusb_handle_events_timeout_completed
Definition libusb.h:72
#define libusb_control_transfer_get_data
Definition libusb.h:61
#define libusb_reset_device
Definition libusb.h:47
#define libusb_get_next_timeout
Definition libusb.h:84
#define usb_dev_handle
Definition libusb.h:933
int(* libusb_hotplug_callback_fn)(libusb_context *ctx, libusb_device *device, libusb_hotplug_event event, void *user_data)
Definition libusb.h:299
int usb_find_devices(void)
Definition vsf_linux_libusb.c:1436
#define libusb_get_configuration
Definition libusb.h:94
@ LIBUSB_ENDPOINT_IN
Definition libusb.h:140
@ LIBUSB_ENDPOINT_OUT
Definition libusb.h:141
#define libusb_cancel_transfer
Definition libusb.h:59
#define libusb_set_option
Definition libusb.h:95
libusb_hotplug_flag
Definition libusb.h:294
@ LIBUSB_HOTPLUG_ENUMERATE
Definition libusb.h:296
@ LIBUSB_HOTPLUG_NO_FLAGS
Definition libusb.h:295
#define libusb_get_active_config_descriptor
Definition libusb.h:67
#define libusb_handle_events_completed
Definition libusb.h:73
#define libusb_open
Definition libusb.h:37
#define libusb_alloc_transfer
Definition libusb.h:49
#define libusb_get_max_packet_size
Definition libusb.h:91
@ LIBUSB_TRANSFER_STALL
Definition libusb.h:314
@ LIBUSB_TRANSFER_COMPLETED
Definition libusb.h:309
@ LIBUSB_TRANSFER_CANCELLED
Definition libusb.h:311
@ LIBUSB_TRANSFER_ERROR
Definition libusb.h:310
@ LIBUSB_TRANSFER_OVERFLOW
Definition libusb.h:315
@ LIBUSB_TRANSFER_NO_DEVICE
Definition libusb.h:312
@ LIBUSB_TRANSFER_TIMED_OUT
Definition libusb.h:313
__VSF_VPLT_DECORATOR__ vsf_linux_libusb_vplt_t vsf_linux_libusb_vplt
Definition vsf_linux_libusb.c:1361
#define libusb_control_transfer
Definition libusb.h:60
struct usb_bus * usb_get_busses(void)
Definition vsf_linux_libusb.c:1441
#define libusb_fill_interrupt_transfer
Definition libusb.h:53
@ LIBUSB_CAP_HAS_CAPABILITY
Definition libusb.h:123
@ LIBUSB_CAP_HAS_HOTPLUG
Definition libusb.h:124
@ LIBUSB_CAP_HAS_HID_ACCESS
Definition libusb.h:125
@ LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER
Definition libusb.h:126
@ LIBUSB_ERROR_NOT_SUPPORTED
Definition libusb.h:118
@ LIBUSB_ERROR_ACCESS
Definition libusb.h:109
@ LIBUSB_ERROR_PIPE
Definition libusb.h:115
@ LIBUSB_ERROR_NOT_FOUND
Definition libusb.h:111
@ LIBUSB_ERROR_BUSY
Definition libusb.h:112
@ LIBUSB_ERROR_INTERRUPTED
Definition libusb.h:116
@ LIBUSB_SUCCESS
Definition libusb.h:106
@ LIBUSB_ERROR_INVALID_PARAM
Definition libusb.h:108
@ LIBUSB_ERROR_IO
Definition libusb.h:107
@ LIBUSB_ERROR_OTHER
Definition libusb.h:119
@ LIBUSB_ERROR_TIMEOUT
Definition libusb.h:113
@ LIBUSB_ERROR_OVERFLOW
Definition libusb.h:114
@ LIBUSB_ERROR_NO_DEVICE
Definition libusb.h:110
@ LIBUSB_ERROR_NO_MEM
Definition libusb.h:117
#define libusb_strerror
Definition libusb.h:29
#define libusb_fill_control_setup
Definition libusb.h:51
@ LIBUSB_CLASS_AUDIO
Definition libusb.h:174
@ LIBUSB_CLASS_HUB
Definition libusb.h:182
@ LIBUSB_CLASS_MISCELLANEOUS
Definition libusb.h:190
@ LIBUSB_CLASS_APPLICATION
Definition libusb.h:191
@ LIBUSB_CLASS_CONTENT_SECURITY
Definition libusb.h:185
@ LIBUSB_CLASS_DIAGNOSTIC_DEVICE
Definition libusb.h:188
@ LIBUSB_CLASS_PHYSICAL
Definition libusb.h:177
@ LIBUSB_CLASS_COMM
Definition libusb.h:175
@ LIBUSB_CLASS_VIDEO
Definition libusb.h:186
@ LIBUSB_CLASS_DATA
Definition libusb.h:183
@ LIBUSB_CLASS_WIRELESS
Definition libusb.h:189
@ LIBUSB_CLASS_PRINTER
Definition libusb.h:180
@ LIBUSB_CLASS_PERSONAL_HEALTHCARE
Definition libusb.h:187
@ LIBUSB_CLASS_PTP
Definition libusb.h:179
@ LIBUSB_CLASS_PER_INTERFACE
Definition libusb.h:173
@ LIBUSB_CLASS_MASS_STORAGE
Definition libusb.h:181
@ LIBUSB_CLASS_HID
Definition libusb.h:176
@ LIBUSB_CLASS_VENDOR_SPEC
Definition libusb.h:192
@ LIBUSB_CLASS_IMAGE
Definition libusb.h:178
@ LIBUSB_CLASS_SMART_CARD
Definition libusb.h:184
@ LIBUSB_TRANSFER_TYPE_BULK_STREAM
Definition libusb.h:324
@ LIBUSB_TRANSFER_TYPE_ISOCHRONOUS
Definition libusb.h:321
@ LIBUSB_TRANSFER_TYPE_CONTROL
Definition libusb.h:320
@ LIBUSB_TRANSFER_TYPE_BULK
Definition libusb.h:322
@ LIBUSB_TRANSFER_TYPE_INTERRUPT
Definition libusb.h:323
#define libusb_handle_events
Definition libusb.h:75
#define libusb_fill_control_transfer
Definition libusb.h:50
#define libusb_fill_bulk_transfer
Definition libusb.h:52
#define libusb_get_device_descriptor
Definition libusb.h:41
void vsf_linux_libusb_startup(void)
Definition vsf_linux_libusb.c:323
#define libusb_ref_device
Definition libusb.h:89
#define libusb_free_device_list
Definition libusb.h:36
#define libusb_free_ss_endpoint_companion_descriptor
Definition libusb.h:79
#define libusb_unref_device
Definition libusb.h:90
@ LIBUSB_DT_ENDPOINT_AUDIO_SIZE
Definition libusb.h:217
@ LIBUSB_DT_INTERFACE_SIZE
Definition libusb.h:215
@ LIBUSB_DT_ENDPOINT_SIZE
Definition libusb.h:216
@ LIBUSB_DT_DEVICE_SIZE
Definition libusb.h:213
@ LIBUSB_DT_CONFIG_SIZE
Definition libusb.h:214
#define libusb_free_transfer
Definition libusb.h:57
#define libusb_clear_halt
Definition libusb.h:48
#define libusb_set_iso_packet_lengths
Definition libusb.h:56
#define libusb_get_string_descriptor
Definition libusb.h:70
#define libusb_error_name
Definition libusb.h:34
#define libusb_get_descriptor
Definition libusb.h:69
#define libusb_fill_iso_transfer
Definition libusb.h:54
#define libusb_claim_interface
Definition libusb.h:80
#define libusb_init
Definition libusb.h:31
#define libusb_free_config_descriptor
Definition libusb.h:68
#define libusb_get_device_speed
Definition libusb.h:92
#define LIBUSB_CONTROL_SETUP_SIZE
Definition libusb.h:275
#define libusb_close
Definition libusb.h:40
#define libusb_hotplug_deregister_callback
Definition libusb.h:83
int usb_close(usb_dev_handle *dev)
Definition vsf_linux_libusb.c:1490
#define libusb_bulk_transfer
Definition libusb.h:62
#define libusb_get_version
Definition libusb.h:30
#define libusb_get_config_descriptor_by_value
Definition libusb.h:66
int ssize_t
Definition types.h:71
#define NULL
Definition lvgl.h:26
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition device.h:33
Definition vsf_libusb_hcd.c:87
const unsigned char * extra
Definition libusb.h:252
int extra_length
Definition libusb.h:253
usb_config_desc_t const unsigned char * desc
Definition libusb.h:249
struct libusb_interface * interface
Definition libusb.h:251
Definition libusb.h:264
int dummy
Definition libusb.h:265
Definition libusb.h:256
Definition vsf_libusb_hcd.c:84
Definition libusb.h:227
int extra_length
Definition libusb.h:231
usb_endpoint_desc_t const unsigned char * extra
Definition libusb.h:230
Definition libusb.h:234
const unsigned char * extra
Definition libusb.h:238
usb_interface_desc_t const struct libusb_endpoint_descriptor * endpoint
Definition libusb.h:237
int extra_length
Definition libusb.h:239
Definition libusb.h:242
const struct libusb_interface_descriptor * altsetting
Definition libusb.h:243
int num_altsetting
Definition libusb.h:244
Definition libusb.h:319
unsigned int actual_length
Definition libusb.h:321
unsigned int length
Definition libusb.h:320
enum libusb_transfer_status status
Definition libusb.h:322
Definition libusb.h:288
vsf_linux_fd_t * sfd
Definition libusb.h:290
uint16_t wBytesPerInterval
Definition libusb.h:348
uint8_t bLength
Definition libusb.h:344
uint8_t bDescriptorType
Definition libusb.h:345
uint8_t bMaxBurst
Definition libusb.h:346
uint8_t bmAttributes
Definition libusb.h:347
Definition libusb.h:327
unsigned char endpoint
Definition libusb.h:330
void * user_data
Definition libusb.h:337
enum libusb_transfer_status status
Definition libusb.h:333
int length
Definition libusb.h:334
libusb_transfer_cb_fn callback
Definition libusb.h:336
unsigned char type
Definition libusb.h:331
int actual_length
Definition libusb.h:335
int num_iso_packets
Definition libusb.h:339
unsigned char * buffer
Definition libusb.h:338
unsigned int timeout
Definition libusb.h:332
libusb_device_handle * dev_handle
Definition libusb.h:328
uint8_t flags
Definition libusb.h:329
struct libusb_iso_packet_descriptor iso_packet_desc[0]
Definition libusb.h:340
Definition libusb.h:218
const uint16_t micro
Definition libusb.h:221
const uint16_t major
Definition libusb.h:219
const uint16_t minor
Definition libusb.h:220
const char * describe
Definition libusb.h:224
const uint16_t nano
Definition libusb.h:222
const char * rc
Definition libusb.h:223
Definition getopt.h:53
Definition poll.h:47
Definition time.h:42
Definition libusb.h:919
struct usb_bus * prev
Definition libusb.h:920
struct usb_bus * next
Definition libusb.h:920
struct usb_device * devices
Definition libusb.h:921
struct usb_device * root_dev
Definition libusb.h:922
Definition usb_common.h:207
Definition usb_common.h:85
uint16_t wIndex
Definition usb_common.h:92
uint8_t bRequestType
Definition usb_common.h:87
uint8_t bRequest
Definition usb_common.h:90
uint16_t wValue
Definition usb_common.h:91
uint16_t wLength
Definition usb_common.h:93
Definition libusb.h:924
struct usb_device * prev
Definition libusb.h:925
void * dev
Definition libusb.h:930
struct usb_device ** children
Definition libusb.h:933
struct libusb_config_descriptor * config
Definition libusb.h:927
struct libusb_config_descriptor __config
Definition libusb.h:936
uint8_t num_children
Definition libusb.h:932
struct libusb_device_descriptor descriptor
Definition libusb.h:926
uint8_t devnum
Definition libusb.h:931
Definition usb_common.h:244
Definition usb_common.h:231
Definition libusb.h:466
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_strerror)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_close)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_ref_device)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_set_option)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_configuration)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_set_interface_alt_setting)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_version)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_handle_events_timeout)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_free_device_list)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_cancel_transfer)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_set_configuration)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_kernel_driver_active)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_next_timeout)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_bus_number)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_free_pollfds)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_free_ss_endpoint_companion_descriptor)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_port_number)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_hotplug_register_callback)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_ss_endpoint_companion_descriptor)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_handle_events)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_release_interface)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_open_device_with_vid_pid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__libusb_set_option_va)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_exit)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_reset_device)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_device_list)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_hotplug_deregister_callback)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_device_speed)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_parent)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_error_name)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_config_descriptor)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_has_capability)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_device_descriptor)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_active_config_descriptor)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_detach_kernel_driver)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_port_numbers)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_control_transfer)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_free_transfer)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_pollfds)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_config_descriptor_by_value)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_device)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_string_descriptor_ascii)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_interrupt_transfer)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_string_descriptor)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_handle_events_timeout_completed)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_clear_halt)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_unref_device)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_free_config_descriptor)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_handle_events_completed)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_set_debug)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_device_address)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_claim_interface)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_max_packet_size)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_bulk_transfer)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_submit_transfer)
vsf_vplt_info_t info
Definition libusb.h:467
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_open)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_alloc_transfer)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_get_descriptor)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(libusb_attach_kernel_driver)
Definition vsf_cfg.h:95
#define USB_DT_ENDPOINT_AUDIO_SIZE
Definition usb_common.h:51
#define USB_DT_ENDPOINT_SIZE
Definition usb_common.h:50
@ USB_DT_DEVICE_CAPABILITY
Definition usb_common.h:162
@ USB_DT_ENDPOINT
Definition usb_common.h:156
@ USB_DT_INTERFACE_ASSOCIATION
Definition usb_common.h:160
@ USB_DT_SS_ENDPOINT_COMP
Definition usb_common.h:163
@ USB_DT_CONFIG
Definition usb_common.h:153
@ USB_DT_INTERFACE
Definition usb_common.h:155
@ USB_DT_BOS
Definition usb_common.h:161
@ USB_DT_STRING
Definition usb_common.h:154
@ USB_DT_REPORT
Definition usb_common.h:172
@ USB_DT_HID
Definition usb_common.h:171
@ USB_DT_PHYSICAL
Definition usb_common.h:173
@ USB_DT_HUB
Definition usb_common.h:174
@ USB_DT_SUPERSPEED_HUB
Definition usb_common.h:175
@ USB_DT_DEVICE
Definition usb_common.h:152
@ USB_SPEED_LOW
Definition usb_common.h:273
@ USB_SPEED_FULL
Definition usb_common.h:273
@ USB_SPEED_HIGH
Definition usb_common.h:274
@ USB_SPEED_UNKNOWN
Definition usb_common.h:272
@ USB_SPEED_SUPER
Definition usb_common.h:276
@ USB_RECIP_ENDPOINT
Definition usb_common.h:122
@ USB_RECIP_DEVICE
Definition usb_common.h:120
@ USB_RECIP_OTHER
Definition usb_common.h:123
@ USB_RECIP_INTERFACE
Definition usb_common.h:121
@ USB_ENDPOINT_XFER_BULK
Definition usb_common.h:292
@ USB_ENDPOINT_XFER_INT
Definition usb_common.h:293
@ USB_ENDPOINT_XFER_ISOC
Definition usb_common.h:291
@ USB_ENDPOINT_XFER_BULK_STREAM
Definition usb_common.h:294
@ USB_ENDPOINT_XFER_CONTROL
Definition usb_common.h:290
@ USB_TYPE_RESERVED
Definition usb_common.h:115
@ USB_TYPE_VENDOR
Definition usb_common.h:114
@ USB_TYPE_CLASS
Definition usb_common.h:113
@ USB_TYPE_STANDARD
Definition usb_common.h:112
#define USB_DT_CONFIG_SIZE
Definition usb_common.h:48
@ USB_DIR_OUT
Definition usb_common.h:81
@ USB_DIR_IN
Definition usb_common.h:82
@ USB_REQ_SYNCH_FRAME
Definition usb_common.h:107
@ USB_REQ_SET_INTERFACE
Definition usb_common.h:106
@ USB_REQ_GET_DESCRIPTOR
Definition usb_common.h:101
@ USB_REQ_SET_DESCRIPTOR
Definition usb_common.h:102
@ USB_REQ_CLEAR_FEATURE
Definition usb_common.h:98
@ USB_REQ_GET_INTERFACE
Definition usb_common.h:105
@ USB_REQ_GET_CONFIGURATION
Definition usb_common.h:103
@ USB_REQ_SET_ADDRESS
Definition usb_common.h:100
@ USB_REQ_SET_CONFIGURATION
Definition usb_common.h:104
@ USB_REQ_GET_STATUS
Definition usb_common.h:97
@ USB_REQ_SET_FEATURE
Definition usb_common.h:99
#define USB_DT_DEVICE_SIZE
Definition usb_common.h:47
#define USB_DT_INTERFACE_SIZE
Definition usb_common.h:49
#define le16_to_cpu
Definition vsf_arch_abstraction.h:198
#define cpu_to_le16
Definition vsf_arch_abstraction.h:195
vk_av_control_value_t value
Definition vsf_audio.h:171
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
libusb_speed
Definition vsf_libusb_hcd.c:91
usb_dev_handle libusb_device_handle
Definition vsf_libusb_hcd.c:76
libusb_hotplug_event
Definition vsf_libusb_hcd.c:79
libusb_error
Definition vsf_libusb_hcd.c:48
#define VSF_APPLET_VPLT_FUNC_DECORATOR(__NAME)
Definition vsf_linux_applet_lib.c:1
uint32_t size
Definition vsf_memfs.h:50
vsf_msgt_node_offset_t next
Definition vsf_msg_tree.h:192
uint_fast8_t length
Definition vsf_pbuf.c:38
struct event_t events[32]
Definition vsf_xboot.c:36
Generated from commit: vsfteam/vsf@f33b89f