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
16// for USB constants
18// for endian APIs
19#include "hal/arch/vsf_arch.h"
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#if VSF_LINUX_LIBUSB_CFG_WRAPPER == ENABLED
26#define VSF_LINUX_LIBUSB_WRAPPER(__api) VSF_SHELL_WRAPPER(vsf_linux_libusb, __api)
27
28#define libusb_strerror VSF_LINUX_LIBUSB_WRAPPER(libusb_strerror)
29#define libusb_get_version VSF_LINUX_LIBUSB_WRAPPER(libusb_get_version)
30#define libusb_init VSF_LINUX_LIBUSB_WRAPPER(libusb_init)
31#define libusb_exit VSF_LINUX_LIBUSB_WRAPPER(libusb_exit)
32#define libusb_set_debug VSF_LINUX_LIBUSB_WRAPPER(libusb_set_debug)
33#define libusb_error_name VSF_LINUX_LIBUSB_WRAPPER(libusb_error_name)
34#define libusb_get_device_list VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_list)
35#define libusb_free_device_list VSF_LINUX_LIBUSB_WRAPPER(libusb_free_device_list)
36#define libusb_open VSF_LINUX_LIBUSB_WRAPPER(libusb_open)
37#define libusb_open_device_with_vid_pid VSF_LINUX_LIBUSB_WRAPPER(libusb_open_device_with_vid_pid)
38#define libusb_get_device VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device)
39#define libusb_close VSF_LINUX_LIBUSB_WRAPPER(libusb_close)
40#define libusb_get_device_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_descriptor)
41#define libusb_get_device_address VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_address)
42#define libusb_get_bus_number VSF_LINUX_LIBUSB_WRAPPER(libusb_get_bus_number)
43#define libusb_alloc_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_alloc_transfer)
44#define libusb_fill_control_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_control_transfer)
45#define libusb_fill_control_setup VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_control_setup)
46#define libusb_fill_bulk_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_bulk_transfer)
47#define libusb_fill_interrupt_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_interrupt_transfer)
48#define libusb_fill_iso_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_iso_transfer)
49#define libusb_get_iso_packet_buffer_simple VSF_LINUX_LIBUSB_WRAPPER(libusb_get_iso_packet_buffer_simple)
50#define libusb_set_iso_packet_lengths VSF_LINUX_LIBUSB_WRAPPER(libusb_set_iso_packet_lengths)
51#define libusb_free_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_free_transfer)
52#define libusb_submit_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_submit_transfer)
53#define libusb_cancel_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_cancel_transfer)
54#define libusb_control_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_control_transfer)
55#define libusb_control_transfer_get_data VSF_LINUX_LIBUSB_WRAPPER(libusb_control_transfer_get_data)
56#define libusb_bulk_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_bulk_transfer)
57#define libusb_interrupt_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_interrupt_transfer)
58#define libusb_get_string_descriptor_ascii VSF_LINUX_LIBUSB_WRAPPER(libusb_get_string_descriptor_ascii)
59#define libusb_get_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_config_descriptor)
60#define libusb_get_config_descriptor_by_value VSF_LINUX_LIBUSB_WRAPPER(libusb_get_config_descriptor_by_value)
61#define libusb_get_active_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_active_config_descriptor)
62#define libusb_free_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_free_config_descriptor)
63#define libusb_get_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_descriptor)
64#define libusb_get_string_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_string_descriptor)
65#define libusb_set_interface_alt_setting VSF_LINUX_LIBUSB_WRAPPER(libusb_set_interface_alt_setting)
66#define libusb_handle_events_timeout_completed VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_timeout_completed)
67#define libusb_handle_events_completed VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_completed)
68#define libusb_handle_events_timeout VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_timeout)
69#define libusb_handle_events VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events)
70#define libusb_get_pollfds VSF_LINUX_LIBUSB_WRAPPER(libusb_get_pollfds)
71#define libusb_free_pollfds VSF_LINUX_LIBUSB_WRAPPER(libusb_free_pollfds)
72#define libusb_get_ss_endpoint_companion_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_ss_endpoint_companion_descriptor)
73#define libusb_free_ss_endpoint_companion_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_free_ss_endpoint_companion_descriptor)
74#define libusb_claim_interface VSF_LINUX_LIBUSB_WRAPPER(libusb_claim_interface)
75#define libusb_release_interface VSF_LINUX_LIBUSB_WRAPPER(libusb_release_interface)
76#define libusb_hotplug_register_callback VSF_LINUX_LIBUSB_WRAPPER(libusb_hotplug_register_callback)
77#define libusb_hotplug_deregister_callback VSF_LINUX_LIBUSB_WRAPPER(libusb_hotplug_deregister_callback)
78#define libusb_get_next_timeout VSF_LINUX_LIBUSB_WRAPPER(libusb_get_next_timeout)
79#define libusb_has_capability VSF_LINUX_LIBUSB_WRAPPER(libusb_has_capability)
80#define libusb_attach_kernel_driver VSF_LINUX_LIBUSB_WRAPPER(libusb_attach_kernel_driver)
81#define libusb_detach_kernel_driver VSF_LINUX_LIBUSB_WRAPPER(libusb_detach_kernel_driver)
82#define libusb_kernel_driver_active VSF_LINUX_LIBUSB_WRAPPER(libusb_kernel_driver_active)
83#define libusb_ref_device VSF_LINUX_LIBUSB_WRAPPER(libusb_ref_device)
84#define libusb_unref_device VSF_LINUX_LIBUSB_WRAPPER(libusb_unref_device)
85#define libusb_get_max_packet_size VSF_LINUX_LIBUSB_WRAPPER(libusb_get_max_packet_size)
86#define libusb_get_device_speed VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_speed)
87#define libusb_set_configuration VSF_LINUX_LIBUSB_WRAPPER(libusb_set_configuration)
88#define libusb_get_configuration VSF_LINUX_LIBUSB_WRAPPER(libusb_get_configuration)
89#endif
90
91#define LIBUSB_CALL
92#define LIBUSB_HOTPLUG_MATCH_ANY -1
93
94#define libusb_device_descriptor usb_device_desc_t
95
111};
112
118};
119
126};
127
132};
133
139};
140
146};
147
160};
161
183};
184
194};
195
202};
203
211
217 const char *rc;
218 const char *describe;
219};
220
222 implement(usb_endpoint_desc_t)
223
224 const unsigned char *extra;
226};
227
229 implement(usb_interface_desc_t)
230
231 const struct libusb_endpoint_descriptor *endpoint;
232 const unsigned char *extra;
234};
235
239};
240
242 implement(usb_config_desc_t)
243 const unsigned char *desc;
244
245 struct libusb_interface *interface;
246 const unsigned char *extra;
247 int extra_length;
248};
249
251 implement(usb_ctrlrequest_t)
252};
253
254#define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup))
255
257
259 int dummy;
260};
262
263struct libusb_device;
267
268typedef enum {
272
273typedef enum {
277
279 libusb_device *device, libusb_hotplug_event event, void *user_data);
280
281
283 struct pollfd;
285};
286
295};
296
303};
304
310};
311
313 unsigned int length;
314 unsigned int actual_length;
316};
317
318struct libusb_transfer;
319typedef void (*libusb_transfer_cb_fn)(struct libusb_transfer *transfer);
323 unsigned char endpoint;
324 unsigned char type;
325 unsigned int timeout;
331 unsigned char *buffer;
333 struct libusb_iso_packet_descriptor iso_packet_desc[0];
334};
335
343
344static inline void libusb_fill_control_transfer(
345 struct libusb_transfer *transfer, libusb_device_handle *dev_handle,
346 unsigned char *buffer, libusb_transfer_cb_fn callback, void *user_data,
347 unsigned int timeout)
348{
349 // no idea why libusb_control_setup can not be used for c++ here
350 struct usb_ctrlrequest_t *setup = (struct usb_ctrlrequest_t *)(void *)buffer;
351 transfer->dev_handle = dev_handle;
352 transfer->endpoint = 0;
354 transfer->timeout = timeout;
355 transfer->buffer = buffer;
356 if (setup)
357 transfer->length = (int) (LIBUSB_CONTROL_SETUP_SIZE + le16_to_cpu(setup->wLength));
358 transfer->user_data = user_data;
359 transfer->callback = callback;
360}
361
362static inline void libusb_fill_control_setup(unsigned char *buffer,
363 uint8_t bRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex,
364 uint16_t wLength)
365{
366 struct libusb_control_setup *setup = (struct libusb_control_setup *)(void *)buffer;
367 // use use_as__usb_ctrlrequest_t in header for cpp
368 setup->use_as__usb_ctrlrequest_t.bRequestType = bRequestType;
369 setup->use_as__usb_ctrlrequest_t.bRequest = bRequest;
370 setup->use_as__usb_ctrlrequest_t.wValue = cpu_to_le16(wValue);
371 setup->use_as__usb_ctrlrequest_t.wIndex = cpu_to_le16(wIndex);
372 setup->use_as__usb_ctrlrequest_t.wLength = cpu_to_le16(wLength);
373}
374
375static inline unsigned char *libusb_control_transfer_get_data(
376 struct libusb_transfer *transfer)
377{
378 return transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE;
379}
380
381static inline void libusb_fill_bulk_transfer(struct libusb_transfer *transfer,
382 libusb_device_handle *dev_handle, unsigned char endpoint,
383 unsigned char *buffer, int length, libusb_transfer_cb_fn callback,
384 void *user_data, unsigned int timeout)
385{
386 transfer->dev_handle = dev_handle;
387 transfer->endpoint = endpoint;
389 transfer->timeout = timeout;
390 transfer->buffer = buffer;
391 transfer->length = length;
392 transfer->user_data = user_data;
393 transfer->callback = callback;
394}
395
396static inline void libusb_fill_interrupt_transfer(
397 struct libusb_transfer *transfer, libusb_device_handle *dev_handle,
398 unsigned char endpoint, unsigned char *buffer, int length,
399 libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)
400{
401 transfer->dev_handle = dev_handle;
402 transfer->endpoint = endpoint;
404 transfer->timeout = timeout;
405 transfer->buffer = buffer;
406 transfer->length = length;
407 transfer->user_data = user_data;
408 transfer->callback = callback;
409}
410
411static inline void libusb_fill_iso_transfer(struct libusb_transfer *transfer,
412 libusb_device_handle *dev_handle, unsigned char endpoint,
413 unsigned char *buffer, int length, int num_iso_packets,
414 libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)
415{
416 transfer->dev_handle = dev_handle;
417 transfer->endpoint = endpoint;
419 transfer->timeout = timeout;
420 transfer->buffer = buffer;
421 transfer->length = length;
422 transfer->num_iso_packets = num_iso_packets;
423 transfer->user_data = user_data;
424 transfer->callback = callback;
425}
426
427static inline unsigned char *libusb_get_iso_packet_buffer_simple(
428 struct libusb_transfer *transfer, unsigned int packet)
429{
430 int _packet;
431 if (packet > 0x80000000)
432 return NULL;
433 _packet = (int) packet;
434
435 if (_packet >= transfer->num_iso_packets)
436 return NULL;
437
438 return transfer->buffer + ((int) transfer->iso_packet_desc[0].length * _packet);
439}
440
441static inline void libusb_set_iso_packet_lengths(
442 struct libusb_transfer *transfer, unsigned int length)
443{
444 int i;
445 for (i = 0; i < transfer->num_iso_packets; i++)
446 transfer->iso_packet_desc[i].length = length;
447}
448
449#if VSF_LINUX_APPLET_USE_LIBUSB == ENABLED
452
470
478
481
490
493
496
500
503
508
515
518# ifndef __VSF_APPLET__
520# endif
521#endif
522
523#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_LIBUSB_LIB__))\
524 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_LIBUSB == ENABLED
525
526#ifndef VSF_LINUX_APPLET_LIBUSB_VPLT
527# if VSF_LINUX_USE_APPLET == ENABLED
528# define VSF_LINUX_APPLET_LIBUSB_VPLT \
529 ((vsf_linux_libusb_vplt_t *)(VSF_LINUX_APPLET_VPLT->libusb_vplt))
530# else
531# define VSF_LINUX_APPLET_LIBUSB_VPLT \
532 ((vsf_linux_libusb_vplt_t *)vsf_vplt((void *)0))
533# endif
534#endif
535
536#define VSF_LINUX_APPLET_LIBUSB_ENTRY(__NAME) \
537 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_LIBUSB_VPLT, __NAME)
538#define VSF_LINUX_APPLET_LIBUSB_IMP(...) \
539 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_LIBUSB_VPLT, __VA_ARGS__)
540
541VSF_LINUX_APPLET_LIBUSB_IMP(libusb_strerror, const char *, int code) {
543 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_strerror)(code);
544}
545VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_version, const struct libusb_version *, void) {
547 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_version)();
548}
549VSF_LINUX_APPLET_LIBUSB_IMP(libusb_init, int, libusb_context **ctx) {
551 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_init)(ctx);
552}
553VSF_LINUX_APPLET_LIBUSB_IMP(libusb_exit, void, libusb_context *ctx) {
555 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_exit)(ctx);
556}
557VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_debug, void, libusb_context *ctx, int level) {
559 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_debug)(ctx, level);
560}
561VSF_LINUX_APPLET_LIBUSB_IMP(libusb_error_name, const char *, int errcode) {
563 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_error_name)(errcode);
564}
565VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_list, ssize_t, libusb_context *ctx, libusb_device ***list) {
567 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_list)(ctx, list);
568}
569VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_device_list, void, libusb_device **list, int unref_devices) {
571 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_device_list)(list, unref_devices);
572}
573VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_descriptor, int, libusb_device *dev, struct libusb_device_descriptor *desc) {
575 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_descriptor)(dev, desc);
576}
577VSF_LINUX_APPLET_LIBUSB_IMP(libusb_open, int, libusb_device *dev, libusb_device_handle **dev_handle) {
579 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_open)(dev, dev_handle);
580}
581VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device, libusb_device *, libusb_device_handle *dev_handle) {
583 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device)(dev_handle);
584}
585VSF_LINUX_APPLET_LIBUSB_IMP(libusb_open_device_with_vid_pid, libusb_device_handle *, libusb_context *ctx, uint16_t vendor_id, uint16_t product_id) {
587 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_open_device_with_vid_pid)(ctx, vendor_id, product_id);
588}
589VSF_LINUX_APPLET_LIBUSB_IMP(libusb_close, void, libusb_device_handle *dev_handle) {
591 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_close)(dev_handle);
592}
593VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_address, uint8_t, libusb_device *dev) {
595 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_address)(dev);
596}
597VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_bus_number, uint8_t, libusb_device *dev) {
599 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_bus_number)(dev);
600}
601VSF_LINUX_APPLET_LIBUSB_IMP(libusb_release_interface, int, libusb_device_handle *dev_handle, int interface_number) {
603 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_release_interface)(dev_handle, interface_number);
604}
605VSF_LINUX_APPLET_LIBUSB_IMP(libusb_claim_interface, int, libusb_device_handle *dev_handle, int interface_number) {
607 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_claim_interface)(dev_handle, interface_number);
608}
609VSF_LINUX_APPLET_LIBUSB_IMP(libusb_alloc_transfer, struct libusb_transfer *, int iso_packets) {
611 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_alloc_transfer)(iso_packets);
612}
613VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_transfer, void, struct libusb_transfer *transfer) {
615 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_transfer)(transfer);
616}
617VSF_LINUX_APPLET_LIBUSB_IMP(libusb_submit_transfer, int, struct libusb_transfer *transfer) {
619 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_submit_transfer)(transfer);
620}
621VSF_LINUX_APPLET_LIBUSB_IMP(libusb_cancel_transfer, int, struct libusb_transfer *transfer) {
623 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_cancel_transfer)(transfer);
624}
625VSF_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) {
627 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_control_transfer)(dev_handle, bRequestType, bRequest, wValue, wIndex, data, wLength ,timeout);
628}
629VSF_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) {
631 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_bulk_transfer)(dev_handle, endpoint, data, length, actual_length, timeout);
632}
633VSF_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) {
635 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_interrupt_transfer)(dev_handle, endpoint, data, length, actual_length, timeout);
636}
637VSF_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) {
639 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);
640}
641VSF_LINUX_APPLET_LIBUSB_IMP(libusb_hotplug_deregister_callback, void, libusb_context *ctx, libusb_hotplug_callback_handle callback_handle) {
643 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_hotplug_deregister_callback)(ctx, callback_handle);
644}
645VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_string_descriptor_ascii, int, libusb_device_handle *dev_handle, uint8_t desc_index, unsigned char *data, int length) {
647 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_string_descriptor_ascii)(dev_handle, desc_index, data, length);
648}
649VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_config_descriptor, int, libusb_device *dev, uint8_t config_index, struct libusb_config_descriptor **config) {
651 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_config_descriptor)(dev, config_index, config);
652}
653VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_config_descriptor_by_value, int, libusb_device *dev, uint8_t value, struct libusb_config_descriptor **config) {
655 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_config_descriptor_by_value)(dev, value, config);
656}
657VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_active_config_descriptor, int, libusb_device *dev, struct libusb_config_descriptor **config) {
659 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_active_config_descriptor)(dev, config);
660}
661VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_config_descriptor, void, struct libusb_config_descriptor *config) {
663 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_config_descriptor)(config);
664}
665VSF_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) {
667 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_descriptor)(dev_handle, desc_type, desc_index, data, length);
668}
669VSF_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) {
671 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_string_descriptor)(dev_handle, desc_index, langid, data, length);
672}
673VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_interface_alt_setting, int, libusb_device_handle *dev_handle, int interface_number, int alternate_setting) {
675 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_interface_alt_setting)(dev_handle, interface_number, alternate_setting);
676}
677VSF_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) {
679 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_ss_endpoint_companion_descriptor)(ctx, endpoint, ep_comp);
680}
681VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_ss_endpoint_companion_descriptor, void, struct libusb_ss_endpoint_companion_descriptor *ep_comp) {
683 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_ss_endpoint_companion_descriptor)(ep_comp);
684}
685VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_next_timeout, int, libusb_context *ctx, struct timeval *tv) {
687 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_next_timeout)(ctx, tv);
688}
689VSF_LINUX_APPLET_LIBUSB_IMP(libusb_has_capability, int, uint32_t capability) {
691 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_has_capability)(capability);
692}
693VSF_LINUX_APPLET_LIBUSB_IMP(libusb_attach_kernel_driver, int, libusb_device_handle *dev_handle, int interface_number) {
695 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_attach_kernel_driver)(dev_handle, interface_number);
696}
697VSF_LINUX_APPLET_LIBUSB_IMP(libusb_detach_kernel_driver, int, libusb_device_handle *dev_handle, int interface_number) {
699 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_detach_kernel_driver)(dev_handle, interface_number);
700}
701VSF_LINUX_APPLET_LIBUSB_IMP(libusb_kernel_driver_active, int, libusb_device_handle *dev_handle, int interface_number) {
703 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_kernel_driver_active)(dev_handle, interface_number);
704}
705VSF_LINUX_APPLET_LIBUSB_IMP(libusb_ref_device, libusb_device *, libusb_device *dev) {
707 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_ref_device)(dev);
708}
709VSF_LINUX_APPLET_LIBUSB_IMP(libusb_unref_device, void, libusb_device *dev) {
711 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_unref_device)(dev);
712}
713VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_max_packet_size, int, libusb_device *dev, unsigned char endpoint) {
715 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_max_packet_size)(dev, endpoint);
716}
717VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_speed, int, libusb_device *dev) {
719 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_speed)(dev);
720}
721VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_configuration, int, libusb_device_handle *dev_handle, int configuration) {
723 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_configuration)(dev_handle, configuration);
724}
725VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_configuration, int, libusb_device_handle *dev_handle, int *config) {
727 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_configuration)(dev_handle, config);
728}
729VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_timeout_completed, int, libusb_context *ctx, struct timeval *tv, int *completed) {
731 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_timeout_completed)(ctx, tv, completed);
732}
733VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_completed, int, libusb_context *ctx, int *completed) {
735 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_completed)(ctx, completed);
736}
737VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_timeout, int, libusb_context *ctx, struct timeval *tv) {
739 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_timeout)(ctx, tv);
740}
741VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events, int, libusb_context *ctx) {
743 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events)(ctx);
744}
745VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_pollfds, const struct libusb_pollfd**, libusb_context *ctx) {
747 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_pollfds)(ctx);
748}
749VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_pollfds, void, const struct libusb_pollfd **pollfds) {
751 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_pollfds)(pollfds);
752}
753VSF_LINUX_APPLET_LIBUSB_IMP(libusb_reset_device, int, libusb_device_handle *dev_handle) {
755 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_reset_device)(dev_handle);
756}
757
758#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_LIBUSB
759
760const char * libusb_strerror(int code);
761const struct libusb_version * libusb_get_version(void);
762int libusb_init(libusb_context **ctx);
763void libusb_exit(libusb_context *ctx);
764void libusb_set_debug(libusb_context *ctx, int level);
765const char * libusb_error_name(int errcode);
767void libusb_free_device_list(libusb_device **list, int unref_devices);
769int libusb_open(libusb_device *dev, libusb_device_handle **dev_handle);
772 uint16_t vendor_id, uint16_t product_id);
773void libusb_close(libusb_device_handle *dev_handle);
776int libusb_release_interface(libusb_device_handle *dev_handle, int interface_number);
777int libusb_claim_interface(libusb_device_handle *dev_handle, int interface_number);
778
779struct libusb_transfer *libusb_alloc_transfer(int iso_packets);
780void libusb_free_transfer(struct libusb_transfer *transfer);
781int libusb_submit_transfer(struct libusb_transfer *transfer);
782int libusb_cancel_transfer(struct libusb_transfer *transfer);
784 uint8_t bRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex,
785 unsigned char *data, uint16_t wLength, unsigned int timeout);
787 unsigned char endpoint, unsigned char *data, int length,
788 int *actual_length, unsigned int timeout);
790 unsigned char endpoint, unsigned char *data, int length,
791 int *actual_length, unsigned int timeout);
792
796 int vendor_id,
797 int product_id,
798 int dev_class,
800 void *user_data,
801 libusb_hotplug_callback_handle *callback_handle);
803 libusb_hotplug_callback_handle callback_handle);
804
806 uint8_t desc_index, unsigned char *data, int length);
808 struct libusb_config_descriptor **config);
810 struct libusb_config_descriptor **config);
812 struct libusb_config_descriptor **config);
815 uint8_t desc_type, uint8_t desc_index, unsigned char *data, int length);
817 uint8_t desc_index, uint16_t langid, unsigned char *data, int length);
819 int interface_number, int alternate_setting);
820
822 struct libusb_context *ctx,
823 const struct libusb_endpoint_descriptor *endpoint,
827
830
831int libusb_attach_kernel_driver(libusb_device_handle *dev_handle, int interface_number);
832int libusb_detach_kernel_driver(libusb_device_handle *dev_handle, int interface_number);
833int libusb_kernel_driver_active(libusb_device_handle *dev_handle, int interface_number);
834
837
838int libusb_get_max_packet_size(libusb_device *dev, unsigned char endpoint);
840
841int libusb_set_configuration(libusb_device_handle *dev_handle, int configuration);
842int libusb_get_configuration(libusb_device_handle *dev_handle, int *config);
843
845 struct timeval *tv, int *completed);
846int libusb_handle_events_completed(libusb_context *ctx, int *completed);
850void libusb_free_pollfds(const struct libusb_pollfd **pollfds);
851
852void vsf_linux_libusb_startup(void);
853
855
856#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_LIBUSB
857
858// libusb 0.1 compatibility
859#if VSF_LINUX_LIBUSB_CFG_01_COMPATIBLE == ENABLED
860#define usb_dev_handle libusb_device_handle
861#define USB_ENDPOINT_IN LIBUSB_ENDPOINT_IN
862#define USB_ENDPOINT_OUT LIBUSB_ENDPOINT_OUT
863
864#define usb_init() libusb_init(NULL)
865#define usb_set_debug(__level) libusb_set_debug(NULL, (__level))
866#define usb_device(__handle) (struct usb_device *)(__handle)
867#define usb_get_string libusb_get_string_descriptor
868#define usb_get_string_simple libusb_get_string_descriptor_ascii
869#define usb_control_msg libusb_control_transfer
870#define usb_set_configuration libusb_set_configuration
871#define usb_claim_interface libusb_claim_interface
872#define usb_release_interface libusb_release_interface
873#define usb_get_descriptor libusb_get_descriptor
874#define usb_find_busses() 1
875#define usb_strerror() "usb_strerror not_supported!!!"
876
877// TODO: implement later
878//#define usb_get_descriptor_by_endpoint
879//#define usb_set_altinterface
880//#define usb_resetep
881//#define usb_clear_halt
882//#define usb_reset
883
884struct usb_device;
885struct usb_bus {
886 struct usb_bus *next, *prev;
889};
891 struct usb_device *next, *prev;
892 struct libusb_device_descriptor descriptor;
894
895 // actually libusb_device
896 void *dev;
900
901 // private
903};
904
905int usb_find_devices(void);
906struct usb_bus *usb_get_busses(void);
907
908int usb_get_driver_np(usb_dev_handle *dev, int interface, char *name, unsigned int namelen);
909int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface);
910
912int usb_close(usb_dev_handle *dev);
913
914int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
915int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
916
917int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
918int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
919#endif // VSF_LINUX_LIBUSB_CFG_01_COMPATIBLE
920
921#ifdef __cplusplus
922}
923#endif
924
925#endif
Definition vsf_linux_fs.h:110
struct ieee80211_ext_chansw_ie data
Definition ieee80211.h:80
__le16 timeout
Definition ieee80211.h:94
__le16 capability
Definition ieee80211.h:134
usb_dev_handle * usb_open(struct usb_device *dev)
Definition vsf_linux_libusb.c:1379
int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1400
libusb_descriptor_type
Definition libusb.h:185
@ LIBUSB_DT_CONFIG
Definition libusb.h:187
@ LIBUSB_DT_STRING
Definition libusb.h:188
@ LIBUSB_DT_DEVICE
Definition libusb.h:186
@ LIBUSB_DT_DEVICE_CAPABILITY
Definition libusb.h:192
@ LIBUSB_DT_INTERFACE
Definition libusb.h:189
@ LIBUSB_DT_ENDPOINT
Definition libusb.h:190
@ LIBUSB_DT_SS_ENDPOINT_COMPANION
Definition libusb.h:193
@ LIBUSB_DT_BOS
Definition libusb.h:191
libusb_request_type
Definition libusb.h:134
@ LIBUSB_REQUEST_TYPE_VENDOR
Definition libusb.h:137
@ LIBUSB_REQUEST_TYPE_STANDARD
Definition libusb.h:135
@ LIBUSB_REQUEST_TYPE_CLASS
Definition libusb.h:136
@ LIBUSB_REQUEST_TYPE_RESERVED
Definition libusb.h:138
#define libusb_handle_events_timeout
Definition libusb.h:68
int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1416
int usb_get_driver_np(usb_dev_handle *dev, int interface, char *name, unsigned int namelen)
Definition vsf_linux_libusb.c:1322
#define libusb_submit_transfer
Definition libusb.h:52
int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1408
#define libusb_get_pollfds
Definition libusb.h:70
void(* libusb_transfer_cb_fn)(struct libusb_transfer *transfer)
Definition libusb.h:319
#define libusb_exit
Definition libusb.h:31
libusb_transfer_flags
Definition libusb.h:305
@ LIBUSB_TRANSFER_ADD_ZERO_PACKET
Definition libusb.h:309
@ LIBUSB_TRANSFER_FREE_TRANSFER
Definition libusb.h:308
@ LIBUSB_TRANSFER_SHORT_NOT_OK
Definition libusb.h:306
@ LIBUSB_TRANSFER_FREE_BUFFER
Definition libusb.h:307
libusb_request_recipient
Definition libusb.h:141
@ LIBUSB_RECIPIENT_ENDPOINT
Definition libusb.h:144
@ LIBUSB_RECIPIENT_INTERFACE
Definition libusb.h:143
@ LIBUSB_RECIPIENT_OTHER
Definition libusb.h:145
@ LIBUSB_RECIPIENT_DEVICE
Definition libusb.h:142
#define libusb_get_bus_number
Definition libusb.h:42
int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1392
#define libusb_attach_kernel_driver
Definition libusb.h:80
@ LIBUSB_SPEED_FULL
Definition libusb.h:123
@ LIBUSB_SPEED_HIGH
Definition libusb.h:124
@ LIBUSB_SPEED_LOW
Definition libusb.h:122
@ LIBUSB_SPEED_SUPER
Definition libusb.h:125
@ LIBUSB_SPEED_UNKNOWN
Definition libusb.h:121
libusb_log_level
Definition libusb.h:204
@ LIBUSB_LOG_LEVEL_WARNING
Definition libusb.h:207
@ LIBUSB_LOG_LEVEL_INFO
Definition libusb.h:208
@ LIBUSB_LOG_LEVEL_ERROR
Definition libusb.h:206
@ LIBUSB_LOG_LEVEL_NONE
Definition libusb.h:205
@ LIBUSB_LOG_LEVEL_DEBUG
Definition libusb.h:209
#define libusb_get_ss_endpoint_companion_descriptor
Definition libusb.h:72
#define libusb_free_pollfds
Definition libusb.h:71
#define libusb_set_interface_alt_setting
Definition libusb.h:65
int libusb_hotplug_callback_handle
Definition libusb.h:256
int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface)
Definition vsf_linux_libusb.c:1327
#define libusb_set_configuration
Definition libusb.h:87
#define libusb_kernel_driver_active
Definition libusb.h:82
#define libusb_get_iso_packet_buffer_simple
Definition libusb.h:49
#define libusb_detach_kernel_driver
Definition libusb.h:81
#define libusb_set_debug
Definition libusb.h:32
libusb_standard_request
Definition libusb.h:148
@ LIBUSB_REQUEST_CLEAR_FEATURE
Definition libusb.h:150
@ LIBUSB_REQUEST_GET_INTERFACE
Definition libusb.h:157
@ LIBUSB_REQUEST_GET_DESCRIPTOR
Definition libusb.h:153
@ LIBUSB_REQUEST_SET_DESCRIPTOR
Definition libusb.h:154
@ LIBUSB_REQUEST_GET_STATUS
Definition libusb.h:149
@ LIBUSB_REQUEST_SET_FEATURE
Definition libusb.h:151
@ LIBUSB_REQUEST_SET_INTERFACE
Definition libusb.h:158
@ LIBUSB_REQUEST_SET_ADDRESS
Definition libusb.h:152
@ LIBUSB_REQUEST_GET_CONFIGURATION
Definition libusb.h:155
@ LIBUSB_REQUEST_SYNCH_FRAME
Definition libusb.h:159
@ LIBUSB_REQUEST_SET_CONFIGURATION
Definition libusb.h:156
#define libusb_get_string_descriptor_ascii
Definition libusb.h:58
#define libusb_release_interface
Definition libusb.h:75
#define libusb_interrupt_transfer
Definition libusb.h:57
#define libusb_open_device_with_vid_pid
Definition libusb.h:37
#define libusb_get_config_descriptor
Definition libusb.h:59
#define libusb_get_device_address
Definition libusb.h:41
#define libusb_get_device_list
Definition libusb.h:34
#define libusb_handle_events_timeout_completed
Definition libusb.h:66
#define libusb_control_transfer_get_data
Definition libusb.h:55
#define libusb_get_next_timeout
Definition libusb.h:78
#define usb_dev_handle
Definition libusb.h:860
int(* libusb_hotplug_callback_fn)(libusb_context *ctx, libusb_device *device, libusb_hotplug_event event, void *user_data)
Definition libusb.h:278
int usb_find_devices(void)
Definition vsf_linux_libusb.c:1332
#define libusb_get_configuration
Definition libusb.h:88
struct libusb_ss_endpoint_companion_descriptor PACKED
libusb_endpoint_direction
Definition libusb.h:128
@ LIBUSB_ENDPOINT_DIR_MASK
Definition libusb.h:131
@ LIBUSB_ENDPOINT_IN
Definition libusb.h:129
@ LIBUSB_ENDPOINT_OUT
Definition libusb.h:130
#define libusb_cancel_transfer
Definition libusb.h:53
libusb_hotplug_flag
Definition libusb.h:273
@ LIBUSB_HOTPLUG_ENUMERATE
Definition libusb.h:275
@ LIBUSB_HOTPLUG_NO_FLAGS
Definition libusb.h:274
#define libusb_get_active_config_descriptor
Definition libusb.h:61
#define libusb_handle_events_completed
Definition libusb.h:67
#define libusb_open
Definition libusb.h:36
#define libusb_alloc_transfer
Definition libusb.h:43
#define libusb_get_max_packet_size
Definition libusb.h:85
libusb_transfer_status
Definition libusb.h:287
@ LIBUSB_TRANSFER_STALL
Definition libusb.h:293
@ LIBUSB_TRANSFER_COMPLETED
Definition libusb.h:288
@ LIBUSB_TRANSFER_CANCELLED
Definition libusb.h:290
@ LIBUSB_TRANSFER_ERROR
Definition libusb.h:289
@ LIBUSB_TRANSFER_OVERFLOW
Definition libusb.h:294
@ LIBUSB_TRANSFER_NO_DEVICE
Definition libusb.h:291
@ LIBUSB_TRANSFER_TIMED_OUT
Definition libusb.h:292
__VSF_VPLT_DECORATOR__ vsf_linux_libusb_vplt_t vsf_linux_libusb_vplt
Definition vsf_linux_libusb.c:1261
#define libusb_get_version
Definition libusb.h:29
struct usb_bus * usb_get_busses(void)
Definition vsf_linux_libusb.c:1337
#define libusb_fill_interrupt_transfer
Definition libusb.h:47
libusb_capability
Definition libusb.h:113
@ LIBUSB_CAP_HAS_CAPABILITY
Definition libusb.h:114
@ LIBUSB_CAP_HAS_HOTPLUG
Definition libusb.h:115
@ LIBUSB_CAP_HAS_HID_ACCESS
Definition libusb.h:116
@ LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER
Definition libusb.h:117
@ LIBUSB_ERROR_NOT_SUPPORTED
Definition libusb.h:109
@ LIBUSB_ERROR_ACCESS
Definition libusb.h:100
@ LIBUSB_ERROR_PIPE
Definition libusb.h:106
@ LIBUSB_ERROR_NOT_FOUND
Definition libusb.h:102
@ LIBUSB_ERROR_BUSY
Definition libusb.h:103
@ LIBUSB_ERROR_INTERRUPTED
Definition libusb.h:107
@ LIBUSB_SUCCESS
Definition libusb.h:97
@ LIBUSB_ERROR_INVALID_PARAM
Definition libusb.h:99
@ LIBUSB_ERROR_IO
Definition libusb.h:98
@ LIBUSB_ERROR_OTHER
Definition libusb.h:110
@ LIBUSB_ERROR_TIMEOUT
Definition libusb.h:104
@ LIBUSB_ERROR_OVERFLOW
Definition libusb.h:105
@ LIBUSB_ERROR_NO_DEVICE
Definition libusb.h:101
@ LIBUSB_ERROR_NO_MEM
Definition libusb.h:108
#define libusb_strerror
Definition libusb.h:28
#define libusb_fill_control_setup
Definition libusb.h:45
libusb_class_code
Definition libusb.h:162
@ LIBUSB_CLASS_AUDIO
Definition libusb.h:164
@ LIBUSB_CLASS_HUB
Definition libusb.h:172
@ LIBUSB_CLASS_MISCELLANEOUS
Definition libusb.h:180
@ LIBUSB_CLASS_APPLICATION
Definition libusb.h:181
@ LIBUSB_CLASS_CONTENT_SECURITY
Definition libusb.h:175
@ LIBUSB_CLASS_DIAGNOSTIC_DEVICE
Definition libusb.h:178
@ LIBUSB_CLASS_PHYSICAL
Definition libusb.h:167
@ LIBUSB_CLASS_COMM
Definition libusb.h:165
@ LIBUSB_CLASS_VIDEO
Definition libusb.h:176
@ LIBUSB_CLASS_DATA
Definition libusb.h:173
@ LIBUSB_CLASS_WIRELESS
Definition libusb.h:179
@ LIBUSB_CLASS_PRINTER
Definition libusb.h:170
@ LIBUSB_CLASS_PERSONAL_HEALTHCARE
Definition libusb.h:177
@ LIBUSB_CLASS_PTP
Definition libusb.h:169
@ LIBUSB_CLASS_PER_INTERFACE
Definition libusb.h:163
@ LIBUSB_CLASS_MASS_STORAGE
Definition libusb.h:171
@ LIBUSB_CLASS_HID
Definition libusb.h:166
@ LIBUSB_CLASS_VENDOR_SPEC
Definition libusb.h:182
@ LIBUSB_CLASS_IMAGE
Definition libusb.h:168
@ LIBUSB_CLASS_SMART_CARD
Definition libusb.h:174
libusb_transfer_type
Definition libusb.h:297
@ LIBUSB_TRANSFER_TYPE_ISOCHRONOUS
Definition libusb.h:299
@ LIBUSB_TRANSFER_TYPE_CONTROL
Definition libusb.h:298
@ LIBUSB_TRANSFER_TYPE_MASK
Definition libusb.h:302
@ LIBUSB_TRANSFER_TYPE_BULK
Definition libusb.h:300
@ LIBUSB_TRANSFER_TYPE_INTERRUPT
Definition libusb.h:301
#define libusb_handle_events
Definition libusb.h:69
#define libusb_fill_control_transfer
Definition libusb.h:44
#define libusb_fill_bulk_transfer
Definition libusb.h:46
#define libusb_get_device_descriptor
Definition libusb.h:40
void vsf_linux_libusb_startup(void)
Definition vsf_linux_libusb.c:313
#define libusb_ref_device
Definition libusb.h:83
#define libusb_free_device_list
Definition libusb.h:35
#define libusb_free_ss_endpoint_companion_descriptor
Definition libusb.h:73
#define libusb_unref_device
Definition libusb.h:84
libusb_descriptor_size
Definition libusb.h:196
@ LIBUSB_DT_ENDPOINT_AUDIO_SIZE
Definition libusb.h:201
@ LIBUSB_DT_INTERFACE_SIZE
Definition libusb.h:199
@ LIBUSB_DT_ENDPOINT_SIZE
Definition libusb.h:200
@ LIBUSB_DT_DEVICE_SIZE
Definition libusb.h:197
@ LIBUSB_DT_CONFIG_SIZE
Definition libusb.h:198
#define libusb_free_transfer
Definition libusb.h:51
#define libusb_set_iso_packet_lengths
Definition libusb.h:50
#define libusb_get_string_descriptor
Definition libusb.h:64
#define libusb_error_name
Definition libusb.h:33
#define libusb_get_descriptor
Definition libusb.h:63
#define libusb_fill_iso_transfer
Definition libusb.h:48
#define libusb_init
Definition libusb.h:30
#define libusb_free_config_descriptor
Definition libusb.h:62
#define LIBUSB_CONTROL_SETUP_SIZE
Definition libusb.h:254
#define libusb_hotplug_deregister_callback
Definition libusb.h:77
int usb_close(usb_dev_handle *dev)
Definition vsf_linux_libusb.c:1386
#define libusb_bulk_transfer
Definition libusb.h:56
#define libusb_get_config_descriptor_by_value
Definition libusb.h:60
struct libusb_device_handle libusb_device_handle
Definition libusb.h:266
libusb_transfer_status
Definition libusb.h:287
#define NULL
Definition stddef.h:52
int ssize_t
Definition types.h:68
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
Definition libusb.h:258
int dummy
Definition libusb.h:259
Definition libusb.h:250
Definition vsf_libusb_hcd.c:84
Definition libusb.h:221
int extra_length
Definition libusb.h:225
usb_endpoint_desc_t const unsigned char * extra
Definition libusb.h:224
Definition libusb.h:228
Definition libusb.h:236
const struct libusb_interface_descriptor * altsetting
Definition libusb.h:237
int num_altsetting
Definition libusb.h:238
Definition libusb.h:312
unsigned int actual_length
Definition libusb.h:314
unsigned int length
Definition libusb.h:313
enum libusb_transfer_status status
Definition libusb.h:315
Definition libusb.h:282
vsf_linux_fd_t * sfd
Definition libusb.h:284
uint16_t wBytesPerInterval
Definition libusb.h:341
uint8_t bLength
Definition libusb.h:337
uint8_t bDescriptorType
Definition libusb.h:338
uint8_t bMaxBurst
Definition libusb.h:339
uint8_t bmAttributes
Definition libusb.h:340
Definition libusb.h:320
unsigned char endpoint
Definition libusb.h:323
void * user_data
Definition libusb.h:330
enum libusb_transfer_status status
Definition libusb.h:326
int length
Definition libusb.h:327
libusb_transfer_cb_fn callback
Definition libusb.h:329
unsigned char type
Definition libusb.h:324
int actual_length
Definition libusb.h:328
int num_iso_packets
Definition libusb.h:332
unsigned char * buffer
Definition libusb.h:331
unsigned int timeout
Definition libusb.h:325
libusb_device_handle * dev_handle
Definition libusb.h:321
uint8_t flags
Definition libusb.h:322
struct libusb_iso_packet_descriptor iso_packet_desc[0]
Definition libusb.h:333
Definition libusb.h:212
const uint16_t micro
Definition libusb.h:215
const uint16_t major
Definition libusb.h:213
const uint16_t minor
Definition libusb.h:214
const char * describe
Definition libusb.h:218
const uint16_t nano
Definition libusb.h:216
const char * rc
Definition libusb.h:217
Definition poll.h:47
Definition time.h:42
Definition libusb.h:885
struct usb_bus * next
Definition libusb.h:886
struct usb_device * devices
Definition libusb.h:887
struct usb_device * root_dev
Definition libusb.h:888
Definition usb_common.h:203
Definition usb_common.h:85
uint16_t wLength
Definition usb_common.h:90
Definition libusb.h:890
void * dev
Definition libusb.h:896
struct usb_device ** children
Definition libusb.h:899
struct usb_device * next
Definition libusb.h:891
struct libusb_config_descriptor * config
Definition libusb.h:893
uint8_t num_children
Definition libusb.h:898
uint8_t devnum
Definition libusb.h:897
Definition usb_common.h:240
Definition usb_common.h:227
Definition libusb.h:450
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_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_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_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_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_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_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:451
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:159
@ USB_DT_ENDPOINT
Definition usb_common.h:153
@ USB_DT_SS_ENDPOINT_COMP
Definition usb_common.h:160
@ USB_DT_CONFIG
Definition usb_common.h:150
@ USB_DT_INTERFACE
Definition usb_common.h:152
@ USB_DT_BOS
Definition usb_common.h:158
@ USB_DT_STRING
Definition usb_common.h:151
@ USB_DT_DEVICE
Definition usb_common.h:149
@ USB_SPEED_LOW
Definition usb_common.h:269
@ USB_SPEED_FULL
Definition usb_common.h:269
@ USB_SPEED_HIGH
Definition usb_common.h:270
@ USB_SPEED_UNKNOWN
Definition usb_common.h:268
@ USB_SPEED_SUPER
Definition usb_common.h:272
@ USB_RECIP_ENDPOINT
Definition usb_common.h:119
@ USB_RECIP_DEVICE
Definition usb_common.h:117
@ USB_RECIP_OTHER
Definition usb_common.h:120
@ USB_RECIP_INTERFACE
Definition usb_common.h:118
@ USB_ENDPOINT_XFERTYPE_MASK
Definition usb_common.h:285
@ USB_ENDPOINT_XFER_BULK
Definition usb_common.h:288
@ USB_ENDPOINT_XFER_INT
Definition usb_common.h:289
@ USB_ENDPOINT_XFER_ISOC
Definition usb_common.h:287
@ USB_ENDPOINT_XFER_CONTROL
Definition usb_common.h:286
@ USB_TYPE_RESERVED
Definition usb_common.h:112
@ USB_TYPE_VENDOR
Definition usb_common.h:111
@ USB_TYPE_CLASS
Definition usb_common.h:110
@ USB_TYPE_STANDARD
Definition usb_common.h:109
#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_DIR_MASK
Definition usb_common.h:80
@ USB_REQ_SYNCH_FRAME
Definition usb_common.h:104
@ USB_REQ_SET_INTERFACE
Definition usb_common.h:103
@ USB_REQ_GET_DESCRIPTOR
Definition usb_common.h:98
@ USB_REQ_SET_DESCRIPTOR
Definition usb_common.h:99
@ USB_REQ_CLEAR_FEATURE
Definition usb_common.h:95
@ USB_REQ_GET_INTERFACE
Definition usb_common.h:102
@ USB_REQ_GET_CONFIGURATION
Definition usb_common.h:100
@ USB_REQ_SET_ADDRESS
Definition usb_common.h:97
@ USB_REQ_SET_CONFIGURATION
Definition usb_common.h:101
@ USB_REQ_GET_STATUS
Definition usb_common.h:94
@ USB_REQ_SET_FEATURE
Definition usb_common.h:96
#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:154
#define cpu_to_le16
Definition vsf_arch_abstraction.h:151
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
#define libusb_has_capability(...)
Definition vsf_libusb_hcd.c:67
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_HOTPLUG_EVENT_DEVICE_ARRIVED
Definition vsf_libusb_hcd.c:80
@ LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT
Definition vsf_libusb_hcd.c:81
#define libusb_get_device_speed(__dev)
Definition vsf_libusb_hcd.c:99
#define libusb_get_device(__handle)
Definition vsf_libusb_hcd.c:100
#define libusb_reset_device
Definition vsf_libusb_hcd.c:72
#define libusb_hotplug_register_callback(...)
Definition vsf_libusb_hcd.c:66
#define libusb_control_transfer
Definition vsf_libusb_hcd.c:74
libusb_error
Definition vsf_libusb_hcd.c:48
#define libusb_claim_interface
Definition vsf_libusb_hcd.c:73
#define libusb_close
Definition vsf_libusb_hcd.c:69
uint32_t size
Definition vsf_memfs.h:50
uint_fast8_t length
Definition vsf_pbuf.c:38
struct event_t events[32]
Definition vsf_xboot.c:36