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_get_port_number VSF_LINUX_LIBUSB_WRAPPER(libusb_get_port_number)
44#define libusb_get_parent VSF_LINUX_LIBUSB_WRAPPER(libusb_get_parent)
45#define libusb_reset_device VSF_LINUX_LIBUSB_WRAPPER(libusb_reset_device)
46#define libusb_clear_halt VSF_LINUX_LIBUSB_WRAPPER(libusb_clear_halt)
47#define libusb_alloc_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_alloc_transfer)
48#define libusb_fill_control_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_control_transfer)
49#define libusb_fill_control_setup VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_control_setup)
50#define libusb_fill_bulk_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_bulk_transfer)
51#define libusb_fill_interrupt_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_interrupt_transfer)
52#define libusb_fill_iso_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_fill_iso_transfer)
53#define libusb_get_iso_packet_buffer_simple VSF_LINUX_LIBUSB_WRAPPER(libusb_get_iso_packet_buffer_simple)
54#define libusb_set_iso_packet_lengths VSF_LINUX_LIBUSB_WRAPPER(libusb_set_iso_packet_lengths)
55#define libusb_free_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_free_transfer)
56#define libusb_submit_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_submit_transfer)
57#define libusb_cancel_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_cancel_transfer)
58#define libusb_control_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_control_transfer)
59#define libusb_control_transfer_get_data VSF_LINUX_LIBUSB_WRAPPER(libusb_control_transfer_get_data)
60#define libusb_bulk_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_bulk_transfer)
61#define libusb_interrupt_transfer VSF_LINUX_LIBUSB_WRAPPER(libusb_interrupt_transfer)
62#define libusb_get_string_descriptor_ascii VSF_LINUX_LIBUSB_WRAPPER(libusb_get_string_descriptor_ascii)
63#define libusb_get_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_config_descriptor)
64#define libusb_get_config_descriptor_by_value VSF_LINUX_LIBUSB_WRAPPER(libusb_get_config_descriptor_by_value)
65#define libusb_get_active_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_active_config_descriptor)
66#define libusb_free_config_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_free_config_descriptor)
67#define libusb_get_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_descriptor)
68#define libusb_get_string_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_string_descriptor)
69#define libusb_set_interface_alt_setting VSF_LINUX_LIBUSB_WRAPPER(libusb_set_interface_alt_setting)
70#define libusb_handle_events_timeout_completed VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_timeout_completed)
71#define libusb_handle_events_completed VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_completed)
72#define libusb_handle_events_timeout VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events_timeout)
73#define libusb_handle_events VSF_LINUX_LIBUSB_WRAPPER(libusb_handle_events)
74#define libusb_get_pollfds VSF_LINUX_LIBUSB_WRAPPER(libusb_get_pollfds)
75#define libusb_free_pollfds VSF_LINUX_LIBUSB_WRAPPER(libusb_free_pollfds)
76#define libusb_get_ss_endpoint_companion_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_get_ss_endpoint_companion_descriptor)
77#define libusb_free_ss_endpoint_companion_descriptor VSF_LINUX_LIBUSB_WRAPPER(libusb_free_ss_endpoint_companion_descriptor)
78#define libusb_claim_interface VSF_LINUX_LIBUSB_WRAPPER(libusb_claim_interface)
79#define libusb_release_interface VSF_LINUX_LIBUSB_WRAPPER(libusb_release_interface)
80#define libusb_hotplug_register_callback VSF_LINUX_LIBUSB_WRAPPER(libusb_hotplug_register_callback)
81#define libusb_hotplug_deregister_callback VSF_LINUX_LIBUSB_WRAPPER(libusb_hotplug_deregister_callback)
82#define libusb_get_next_timeout VSF_LINUX_LIBUSB_WRAPPER(libusb_get_next_timeout)
83#define libusb_has_capability VSF_LINUX_LIBUSB_WRAPPER(libusb_has_capability)
84#define libusb_attach_kernel_driver VSF_LINUX_LIBUSB_WRAPPER(libusb_attach_kernel_driver)
85#define libusb_detach_kernel_driver VSF_LINUX_LIBUSB_WRAPPER(libusb_detach_kernel_driver)
86#define libusb_kernel_driver_active VSF_LINUX_LIBUSB_WRAPPER(libusb_kernel_driver_active)
87#define libusb_ref_device VSF_LINUX_LIBUSB_WRAPPER(libusb_ref_device)
88#define libusb_unref_device VSF_LINUX_LIBUSB_WRAPPER(libusb_unref_device)
89#define libusb_get_max_packet_size VSF_LINUX_LIBUSB_WRAPPER(libusb_get_max_packet_size)
90#define libusb_get_device_speed VSF_LINUX_LIBUSB_WRAPPER(libusb_get_device_speed)
91#define libusb_set_configuration VSF_LINUX_LIBUSB_WRAPPER(libusb_set_configuration)
92#define libusb_get_configuration VSF_LINUX_LIBUSB_WRAPPER(libusb_get_configuration)
93#endif
94
95#define LIBUSB_CALL
96#define LIBUSB_HOTPLUG_MATCH_ANY -1
97#define LIBUSB_PACKED VSF_CAL_PACKED
98
99#define libusb_device_descriptor usb_device_desc_t
100
116};
117
123};
124
131};
132
133#define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0F
134#define LIBUSB_ENDPOINT_DIR_MASK USB_DIR_MASK
138};
139
145};
146
152};
153
166};
167
189};
190
200};
201
208};
209
217
218struct libusb_version {
219 const uint16_t major;
220 const uint16_t minor;
221 const uint16_t micro;
222 const uint16_t nano;
223 const char *rc;
224 const char *describe;
225};
226
228 implement(usb_endpoint_desc_t)
229
230 const unsigned char *extra;
231 int extra_length;
232};
233
235 implement(usb_interface_desc_t)
236
238 const unsigned char *extra;
239 int extra_length;
240};
241
242struct libusb_interface {
244 int num_altsetting;
245};
246
248 implement(usb_config_desc_t)
249 const unsigned char *desc;
250
252 const unsigned char *extra;
253 int extra_length;
254};
255
257 implement(usb_ctrlrequest_t)
259
260#define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup))
261
263
264struct libusb_context {
265 int dummy;
266};
268
269struct libusb_device;
273
274typedef enum {
278
279typedef enum {
283
285 libusb_device *device, libusb_hotplug_event event, void *user_data);
286
287
288struct libusb_pollfd {
289 struct pollfd;
291};
292
301};
302
303#define LIBUSB_TRANSFER_TYPE_MASK USB_ENDPOINT_XFERTYPE_MASK
310};
311
317};
318
320 unsigned int length;
321 unsigned int actual_length;
323};
324
325struct libusb_transfer;
326typedef void (*libusb_transfer_cb_fn)(struct libusb_transfer *transfer);
327struct libusb_transfer {
330 unsigned char endpoint;
331 unsigned char type;
332 unsigned int timeout;
334 int length;
335 int actual_length;
337 void *user_data;
338 unsigned char *buffer;
339 int num_iso_packets;
341};
342
350
351#define libusb_cpu_to_le16 cpu_to_le16
352#define libusb_le16_to_cpu le16_to_cpu
353
354static inline void libusb_fill_control_transfer(
355 struct libusb_transfer *transfer, libusb_device_handle *dev_handle,
356 unsigned char *buffer, libusb_transfer_cb_fn callback, void *user_data,
357 unsigned int timeout)
358{
359 // no idea why libusb_control_setup can not be used for c++ here
360 struct usb_ctrlrequest_t *setup = (struct usb_ctrlrequest_t *)(void *)buffer;
361 transfer->dev_handle = dev_handle;
362 transfer->endpoint = 0;
364 transfer->timeout = timeout;
365 transfer->buffer = buffer;
366 if (setup)
367 transfer->length = (int) (LIBUSB_CONTROL_SETUP_SIZE + le16_to_cpu(setup->wLength));
368 transfer->user_data = user_data;
369 transfer->callback = callback;
370}
371
372static inline void libusb_fill_control_setup(unsigned char *buffer,
375{
376 struct libusb_control_setup *setup = (struct libusb_control_setup *)(void *)buffer;
377 // use use_as__usb_ctrlrequest_t in header for cpp
378 setup->use_as__usb_ctrlrequest_t.bRequestType = bRequestType;
379 setup->use_as__usb_ctrlrequest_t.bRequest = bRequest;
380 setup->use_as__usb_ctrlrequest_t.wValue = cpu_to_le16(wValue);
381 setup->use_as__usb_ctrlrequest_t.wIndex = cpu_to_le16(wIndex);
382 setup->use_as__usb_ctrlrequest_t.wLength = cpu_to_le16(wLength);
383}
384
385static inline unsigned char *libusb_control_transfer_get_data(
386 struct libusb_transfer *transfer)
387{
388 return transfer->buffer + LIBUSB_CONTROL_SETUP_SIZE;
389}
390
391static inline struct libusb_control_setup * libusb_control_transfer_get_setup(
392 struct libusb_transfer *transfer)
393{
394 return (struct libusb_control_setup *)transfer->buffer;
395}
396
397static inline void libusb_fill_bulk_transfer(struct libusb_transfer *transfer,
398 libusb_device_handle *dev_handle, unsigned char endpoint,
399 unsigned char *buffer, int length, libusb_transfer_cb_fn callback,
400 void *user_data, unsigned int timeout)
401{
402 transfer->dev_handle = dev_handle;
403 transfer->endpoint = endpoint;
405 transfer->timeout = timeout;
406 transfer->buffer = buffer;
407 transfer->length = length;
408 transfer->user_data = user_data;
409 transfer->callback = callback;
410}
411
412static inline void libusb_fill_interrupt_transfer(
413 struct libusb_transfer *transfer, libusb_device_handle *dev_handle,
414 unsigned char endpoint, unsigned char *buffer, int length,
415 libusb_transfer_cb_fn callback, 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_iso_transfer(struct libusb_transfer *transfer,
428 libusb_device_handle *dev_handle, unsigned char endpoint,
429 unsigned char *buffer, int length, int num_iso_packets,
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->num_iso_packets = num_iso_packets;
439 transfer->user_data = user_data;
440 transfer->callback = callback;
441}
442
443static inline unsigned char *libusb_get_iso_packet_buffer_simple(
444 struct libusb_transfer *transfer, unsigned int packet)
445{
446 int _packet;
447 if (packet > 0x80000000)
448 return NULL;
449 _packet = (int) packet;
450
451 if (_packet >= transfer->num_iso_packets)
452 return NULL;
453
454 return transfer->buffer + ((int) transfer->iso_packet_desc[0].length * _packet);
455}
456
457static inline void libusb_set_iso_packet_lengths(
458 struct libusb_transfer *transfer, unsigned int length)
459{
460 int i;
461 for (i = 0; i < transfer->num_iso_packets; i++)
462 transfer->iso_packet_desc[i].length = length;
463}
464
465#if VSF_LINUX_APPLET_USE_LIBUSB == ENABLED
466typedef struct vsf_linux_libusb_vplt_t {
468
488
496
499
508
511
514
518
521
526
533
537# ifndef __VSF_APPLET__
539# endif
540#endif
541
542#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_LIBUSB_LIB__))\
543 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_LIBUSB == ENABLED
544
545#ifndef VSF_LINUX_APPLET_LIBUSB_VPLT
546# if VSF_LINUX_USE_APPLET == ENABLED
547# define VSF_LINUX_APPLET_LIBUSB_VPLT \
548 ((vsf_linux_libusb_vplt_t *)(VSF_LINUX_APPLET_VPLT->libusb_vplt))
549# else
550# define VSF_LINUX_APPLET_LIBUSB_VPLT \
551 ((vsf_linux_libusb_vplt_t *)vsf_vplt((void *)0))
552# endif
553#endif
554
555#define VSF_LINUX_APPLET_LIBUSB_ENTRY(__NAME) \
556 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_LIBUSB_VPLT, __NAME)
557#define VSF_LINUX_APPLET_LIBUSB_IMP(...) \
558 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_LIBUSB_VPLT, __VA_ARGS__)
559
560VSF_LINUX_APPLET_LIBUSB_IMP(libusb_strerror, const char *, int code) {
562 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_strerror)(code);
563}
564VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_version, const struct libusb_version *, void) {
566 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_version)();
567}
568VSF_LINUX_APPLET_LIBUSB_IMP(libusb_init, int, libusb_context **ctx) {
570 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_init)(ctx);
571}
572VSF_LINUX_APPLET_LIBUSB_IMP(libusb_exit, void, libusb_context *ctx) {
574 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_exit)(ctx);
575}
576VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_debug, void, libusb_context *ctx, int level) {
578 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_debug)(ctx, level);
579}
580VSF_LINUX_APPLET_LIBUSB_IMP(libusb_error_name, const char *, int errcode) {
582 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_error_name)(errcode);
583}
584VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_list, ssize_t, libusb_context *ctx, libusb_device ***list) {
586 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_list)(ctx, list);
587}
588VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_device_list, void, libusb_device **list, int unref_devices) {
590 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_device_list)(list, unref_devices);
591}
592VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_descriptor, int, libusb_device *dev, struct libusb_device_descriptor *desc) {
594 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_descriptor)(dev, desc);
595}
596VSF_LINUX_APPLET_LIBUSB_IMP(libusb_open, int, libusb_device *dev, libusb_device_handle **dev_handle) {
598 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_open)(dev, dev_handle);
599}
600VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device, libusb_device *, libusb_device_handle *dev_handle) {
602 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device)(dev_handle);
603}
604VSF_LINUX_APPLET_LIBUSB_IMP(libusb_open_device_with_vid_pid, libusb_device_handle *, libusb_context *ctx, uint16_t vendor_id, uint16_t product_id) {
606 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_open_device_with_vid_pid)(ctx, vendor_id, product_id);
607}
608VSF_LINUX_APPLET_LIBUSB_IMP(libusb_close, void, libusb_device_handle *dev_handle) {
610 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_close)(dev_handle);
611}
612VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_address, uint8_t, libusb_device *dev) {
614 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_address)(dev);
615}
616VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_bus_number, uint8_t, libusb_device *dev) {
618 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_bus_number)(dev);
619}
620VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_port_number, uint8_t, libusb_device *dev) {
622 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_port_number)(dev);
623}
624VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_parent, libusb_device *, libusb_device *dev) {
626 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_parent)(dev);
627}
628VSF_LINUX_APPLET_LIBUSB_IMP(libusb_release_interface, int, libusb_device_handle *dev_handle, int interface_number) {
630 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_release_interface)(dev_handle, interface_number);
631}
632VSF_LINUX_APPLET_LIBUSB_IMP(libusb_claim_interface, int, libusb_device_handle *dev_handle, int interface_number) {
634 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_claim_interface)(dev_handle, interface_number);
635}
636VSF_LINUX_APPLET_LIBUSB_IMP(libusb_alloc_transfer, struct libusb_transfer *, int iso_packets) {
638 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_alloc_transfer)(iso_packets);
639}
640VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_transfer, void, struct libusb_transfer *transfer) {
642 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_transfer)(transfer);
643}
644VSF_LINUX_APPLET_LIBUSB_IMP(libusb_submit_transfer, int, struct libusb_transfer *transfer) {
646 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_submit_transfer)(transfer);
647}
648VSF_LINUX_APPLET_LIBUSB_IMP(libusb_cancel_transfer, int, struct libusb_transfer *transfer) {
650 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_cancel_transfer)(transfer);
651}
652VSF_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) {
654 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_control_transfer)(dev_handle, bRequestType, bRequest, wValue, wIndex, data, wLength ,timeout);
655}
656VSF_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) {
658 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_bulk_transfer)(dev_handle, endpoint, data, length, actual_length, timeout);
659}
660VSF_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) {
662 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_interrupt_transfer)(dev_handle, endpoint, data, length, actual_length, timeout);
663}
664VSF_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) {
666 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);
667}
668VSF_LINUX_APPLET_LIBUSB_IMP(libusb_hotplug_deregister_callback, void, libusb_context *ctx, libusb_hotplug_callback_handle callback_handle) {
670 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_hotplug_deregister_callback)(ctx, callback_handle);
671}
672VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_string_descriptor_ascii, int, libusb_device_handle *dev_handle, uint8_t desc_index, unsigned char *data, int length) {
674 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_string_descriptor_ascii)(dev_handle, desc_index, data, length);
675}
676VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_config_descriptor, int, libusb_device *dev, uint8_t config_index, struct libusb_config_descriptor **config) {
678 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_config_descriptor)(dev, config_index, config);
679}
680VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_config_descriptor_by_value, int, libusb_device *dev, uint8_t value, struct libusb_config_descriptor **config) {
682 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_config_descriptor_by_value)(dev, value, config);
683}
684VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_active_config_descriptor, int, libusb_device *dev, struct libusb_config_descriptor **config) {
686 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_active_config_descriptor)(dev, config);
687}
688VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_config_descriptor, void, struct libusb_config_descriptor *config) {
690 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_config_descriptor)(config);
691}
692VSF_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) {
694 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_descriptor)(dev_handle, desc_type, desc_index, data, length);
695}
696VSF_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) {
698 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_string_descriptor)(dev_handle, desc_index, langid, data, length);
699}
700VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_interface_alt_setting, int, libusb_device_handle *dev_handle, int interface_number, int alternate_setting) {
702 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_interface_alt_setting)(dev_handle, interface_number, alternate_setting);
703}
704VSF_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) {
706 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_ss_endpoint_companion_descriptor)(ctx, endpoint, ep_comp);
707}
708VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_ss_endpoint_companion_descriptor, void, struct libusb_ss_endpoint_companion_descriptor *ep_comp) {
710 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_ss_endpoint_companion_descriptor)(ep_comp);
711}
712VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_next_timeout, int, libusb_context *ctx, struct timeval *tv) {
714 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_next_timeout)(ctx, tv);
715}
716VSF_LINUX_APPLET_LIBUSB_IMP(libusb_has_capability, int, uint32_t capability) {
718 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_has_capability)(capability);
719}
720VSF_LINUX_APPLET_LIBUSB_IMP(libusb_attach_kernel_driver, int, libusb_device_handle *dev_handle, int interface_number) {
722 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_attach_kernel_driver)(dev_handle, interface_number);
723}
724VSF_LINUX_APPLET_LIBUSB_IMP(libusb_detach_kernel_driver, int, libusb_device_handle *dev_handle, int interface_number) {
726 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_detach_kernel_driver)(dev_handle, interface_number);
727}
728VSF_LINUX_APPLET_LIBUSB_IMP(libusb_kernel_driver_active, int, libusb_device_handle *dev_handle, int interface_number) {
730 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_kernel_driver_active)(dev_handle, interface_number);
731}
732VSF_LINUX_APPLET_LIBUSB_IMP(libusb_ref_device, libusb_device *, libusb_device *dev) {
734 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_ref_device)(dev);
735}
736VSF_LINUX_APPLET_LIBUSB_IMP(libusb_unref_device, void, libusb_device *dev) {
738 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_unref_device)(dev);
739}
740VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_max_packet_size, int, libusb_device *dev, unsigned char endpoint) {
742 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_max_packet_size)(dev, endpoint);
743}
744VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_device_speed, int, libusb_device *dev) {
746 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_device_speed)(dev);
747}
748VSF_LINUX_APPLET_LIBUSB_IMP(libusb_set_configuration, int, libusb_device_handle *dev_handle, int configuration) {
750 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_set_configuration)(dev_handle, configuration);
751}
752VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_configuration, int, libusb_device_handle *dev_handle, int *config) {
754 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_configuration)(dev_handle, config);
755}
756VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_timeout_completed, int, libusb_context *ctx, struct timeval *tv, int *completed) {
758 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_timeout_completed)(ctx, tv, completed);
759}
760VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_completed, int, libusb_context *ctx, int *completed) {
762 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_completed)(ctx, completed);
763}
764VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events_timeout, int, libusb_context *ctx, struct timeval *tv) {
766 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events_timeout)(ctx, tv);
767}
768VSF_LINUX_APPLET_LIBUSB_IMP(libusb_handle_events, int, libusb_context *ctx) {
770 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_handle_events)(ctx);
771}
772VSF_LINUX_APPLET_LIBUSB_IMP(libusb_get_pollfds, const struct libusb_pollfd**, libusb_context *ctx) {
774 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_get_pollfds)(ctx);
775}
776VSF_LINUX_APPLET_LIBUSB_IMP(libusb_free_pollfds, void, const struct libusb_pollfd **pollfds) {
778 VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_free_pollfds)(pollfds);
779}
780VSF_LINUX_APPLET_LIBUSB_IMP(libusb_reset_device, int, libusb_device_handle *dev_handle) {
782 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_reset_device)(dev_handle);
783}
784VSF_LINUX_APPLET_LIBUSB_IMP(libusb_clear_halt, int, libusb_device_handle *dev_handle, unsigned char endpoint) {
786 return VSF_LINUX_APPLET_LIBUSB_ENTRY(libusb_clear_halt)(dev_handle, endpoint);
787}
788
789#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_LIBUSB
790
791const char * libusb_strerror(int code);
792const struct libusb_version * libusb_get_version(void);
793int libusb_init(libusb_context **ctx);
794void libusb_exit(libusb_context *ctx);
795void libusb_set_debug(libusb_context *ctx, int level);
796const char * libusb_error_name(int errcode);
798void libusb_free_device_list(libusb_device **list, int unref_devices);
800int libusb_open(libusb_device *dev, libusb_device_handle **dev_handle);
803 uint16_t vendor_id, uint16_t product_id);
804void libusb_close(libusb_device_handle *dev_handle);
809int libusb_release_interface(libusb_device_handle *dev_handle, int interface_number);
810int libusb_claim_interface(libusb_device_handle *dev_handle, int interface_number);
811
812struct libusb_transfer *libusb_alloc_transfer(int iso_packets);
813void libusb_free_transfer(struct libusb_transfer *transfer);
814int libusb_submit_transfer(struct libusb_transfer *transfer);
815int libusb_cancel_transfer(struct libusb_transfer *transfer);
817 uint8_t bRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex,
818 unsigned char *data, uint16_t wLength, unsigned int timeout);
820 unsigned char endpoint, unsigned char *data, int length,
821 int *actual_length, unsigned int timeout);
823 unsigned char endpoint, unsigned char *data, int length,
824 int *actual_length, unsigned int timeout);
825
829 int vendor_id,
830 int product_id,
831 int dev_class,
833 void *user_data,
834 libusb_hotplug_callback_handle *callback_handle);
836 libusb_hotplug_callback_handle callback_handle);
837
839 uint8_t desc_index, unsigned char *data, int length);
841 struct libusb_config_descriptor **config);
843 struct libusb_config_descriptor **config);
845 struct libusb_config_descriptor **config);
848 uint8_t desc_type, uint8_t desc_index, unsigned char *data, int length);
850 uint8_t desc_index, uint16_t langid, unsigned char *data, int length);
852 int interface_number, int alternate_setting);
853
855 struct libusb_context *ctx,
860
863
867
870
871int libusb_get_max_packet_size(libusb_device *dev, unsigned char endpoint);
873
876
878 struct timeval *tv, int *completed);
879int libusb_handle_events_completed(libusb_context *ctx, int *completed);
883void libusb_free_pollfds(const struct libusb_pollfd **pollfds);
884
885void vsf_linux_libusb_startup(void);
886
888int libusb_clear_halt(libusb_device_handle *dev_handle, unsigned char endpoint);
889
890#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_LIBUSB
891
892// libusb 0.1 compatibility
893#if VSF_LINUX_LIBUSB_CFG_01_COMPATIBLE == ENABLED
894#define usb_dev_handle libusb_device_handle
895#define USB_ENDPOINT_IN LIBUSB_ENDPOINT_IN
896#define USB_ENDPOINT_OUT LIBUSB_ENDPOINT_OUT
897
898#define usb_init() libusb_init(NULL)
899#define usb_set_debug(__level) libusb_set_debug(NULL, (__level))
900#define usb_device(__handle) (struct usb_device *)(__handle)
901#define usb_get_string libusb_get_string_descriptor
902#define usb_get_string_simple libusb_get_string_descriptor_ascii
903#define usb_control_msg libusb_control_transfer
904#define usb_set_configuration libusb_set_configuration
905#define usb_claim_interface libusb_claim_interface
906#define usb_release_interface libusb_release_interface
907#define usb_get_descriptor libusb_get_descriptor
908#define usb_find_busses() 1
909#define usb_strerror() "usb_strerror not_supported!!!"
910
911// TODO: implement later
912//#define usb_get_descriptor_by_endpoint
913//#define usb_set_altinterface
914//#define usb_resetep
915//#define usb_clear_halt
916//#define usb_reset
917
918struct usb_device;
919struct usb_bus {
920 struct usb_bus *next, *prev;
921 struct usb_device *devices;
922 struct usb_device *root_dev;
923};
924struct usb_device {
925 struct usb_device *next, *prev;
928
929 // actually libusb_device
930 void *dev;
933 struct usb_device **children;
934
935 // private
937};
938
939int usb_find_devices(void);
940struct usb_bus *usb_get_busses(void);
941
942int usb_get_driver_np(usb_dev_handle *dev, int interface, char *name, unsigned int namelen);
943int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface);
944
946int usb_close(usb_dev_handle *dev);
947
948int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
949int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
950
951int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
952int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
953#endif // VSF_LINUX_LIBUSB_CFG_01_COMPATIBLE
954
955#ifdef __cplusplus
956}
957#endif
958
959#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_DT_CONFIG
Definition libusb.h:193
@ LIBUSB_DT_STRING
Definition libusb.h:194
@ LIBUSB_DT_DEVICE
Definition libusb.h:192
@ LIBUSB_DT_DEVICE_CAPABILITY
Definition libusb.h:198
@ LIBUSB_DT_INTERFACE
Definition libusb.h:195
@ LIBUSB_DT_ENDPOINT
Definition libusb.h:196
@ LIBUSB_DT_SS_ENDPOINT_COMPANION
Definition libusb.h:199
@ LIBUSB_DT_BOS
Definition libusb.h:197
libusb_request_type
Definition libusb.h:140
@ LIBUSB_REQUEST_TYPE_VENDOR
Definition libusb.h:143
@ LIBUSB_REQUEST_TYPE_STANDARD
Definition libusb.h:141
@ LIBUSB_REQUEST_TYPE_CLASS
Definition libusb.h:142
@ LIBUSB_REQUEST_TYPE_RESERVED
Definition libusb.h:144
libusb_transfer_flags
Definition libusb.h:312
libusb_request_recipient
Definition libusb.h:147
@ LIBUSB_RECIPIENT_ENDPOINT
Definition libusb.h:150
@ LIBUSB_RECIPIENT_INTERFACE
Definition libusb.h:149
@ LIBUSB_RECIPIENT_OTHER
Definition libusb.h:151
@ LIBUSB_RECIPIENT_DEVICE
Definition libusb.h:148
@ LIBUSB_SPEED_FULL
Definition libusb.h:128
@ LIBUSB_SPEED_HIGH
Definition libusb.h:129
@ LIBUSB_SPEED_LOW
Definition libusb.h:127
@ LIBUSB_SPEED_SUPER
Definition libusb.h:130
@ LIBUSB_SPEED_UNKNOWN
Definition libusb.h:126
libusb_log_level
Definition libusb.h:210
@ LIBUSB_LOG_LEVEL_WARNING
Definition libusb.h:213
@ LIBUSB_LOG_LEVEL_INFO
Definition libusb.h:214
@ LIBUSB_LOG_LEVEL_ERROR
Definition libusb.h:212
@ LIBUSB_LOG_LEVEL_NONE
Definition libusb.h:211
@ LIBUSB_LOG_LEVEL_DEBUG
Definition libusb.h:215
int libusb_hotplug_callback_handle
Definition libusb.h:262
libusb_standard_request
Definition libusb.h:154
@ LIBUSB_REQUEST_CLEAR_FEATURE
Definition libusb.h:156
@ LIBUSB_REQUEST_GET_INTERFACE
Definition libusb.h:163
@ LIBUSB_REQUEST_GET_DESCRIPTOR
Definition libusb.h:159
@ LIBUSB_REQUEST_SET_DESCRIPTOR
Definition libusb.h:160
@ LIBUSB_REQUEST_GET_STATUS
Definition libusb.h:155
@ LIBUSB_REQUEST_SET_FEATURE
Definition libusb.h:157
@ LIBUSB_REQUEST_SET_INTERFACE
Definition libusb.h:164
@ LIBUSB_REQUEST_SET_ADDRESS
Definition libusb.h:158
@ LIBUSB_REQUEST_GET_CONFIGURATION
Definition libusb.h:161
@ LIBUSB_REQUEST_SYNCH_FRAME
Definition libusb.h:165
@ LIBUSB_REQUEST_SET_CONFIGURATION
Definition libusb.h:162
libusb_endpoint_direction
Definition libusb.h:135
@ LIBUSB_ENDPOINT_IN
Definition libusb.h:136
@ LIBUSB_ENDPOINT_OUT
Definition libusb.h:137
libusb_hotplug_flag
Definition libusb.h:279
libusb_transfer_status
Definition libusb.h:293
libusb_capability
Definition libusb.h:118
@ LIBUSB_CAP_HAS_CAPABILITY
Definition libusb.h:119
@ LIBUSB_CAP_HAS_HOTPLUG
Definition libusb.h:120
@ LIBUSB_CAP_HAS_HID_ACCESS
Definition libusb.h:121
@ LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER
Definition libusb.h:122
@ LIBUSB_ERROR_NOT_SUPPORTED
Definition libusb.h:114
@ LIBUSB_ERROR_ACCESS
Definition libusb.h:105
@ LIBUSB_ERROR_PIPE
Definition libusb.h:111
@ LIBUSB_ERROR_NOT_FOUND
Definition libusb.h:107
@ LIBUSB_ERROR_BUSY
Definition libusb.h:108
@ LIBUSB_ERROR_INTERRUPTED
Definition libusb.h:112
@ LIBUSB_SUCCESS
Definition libusb.h:102
@ LIBUSB_ERROR_INVALID_PARAM
Definition libusb.h:104
@ LIBUSB_ERROR_IO
Definition libusb.h:103
@ LIBUSB_ERROR_OTHER
Definition libusb.h:115
@ LIBUSB_ERROR_TIMEOUT
Definition libusb.h:109
@ LIBUSB_ERROR_OVERFLOW
Definition libusb.h:110
@ LIBUSB_ERROR_NO_DEVICE
Definition libusb.h:106
@ LIBUSB_ERROR_NO_MEM
Definition libusb.h:113
libusb_class_code
Definition libusb.h:168
@ LIBUSB_CLASS_AUDIO
Definition libusb.h:170
@ LIBUSB_CLASS_HUB
Definition libusb.h:178
@ LIBUSB_CLASS_MISCELLANEOUS
Definition libusb.h:186
@ LIBUSB_CLASS_APPLICATION
Definition libusb.h:187
@ LIBUSB_CLASS_CONTENT_SECURITY
Definition libusb.h:181
@ LIBUSB_CLASS_DIAGNOSTIC_DEVICE
Definition libusb.h:184
@ LIBUSB_CLASS_PHYSICAL
Definition libusb.h:173
@ LIBUSB_CLASS_COMM
Definition libusb.h:171
@ LIBUSB_CLASS_VIDEO
Definition libusb.h:182
@ LIBUSB_CLASS_DATA
Definition libusb.h:179
@ LIBUSB_CLASS_WIRELESS
Definition libusb.h:185
@ LIBUSB_CLASS_PRINTER
Definition libusb.h:176
@ LIBUSB_CLASS_PERSONAL_HEALTHCARE
Definition libusb.h:183
@ LIBUSB_CLASS_PTP
Definition libusb.h:175
@ LIBUSB_CLASS_PER_INTERFACE
Definition libusb.h:169
@ LIBUSB_CLASS_MASS_STORAGE
Definition libusb.h:177
@ LIBUSB_CLASS_HID
Definition libusb.h:172
@ LIBUSB_CLASS_VENDOR_SPEC
Definition libusb.h:188
@ LIBUSB_CLASS_IMAGE
Definition libusb.h:174
@ LIBUSB_CLASS_SMART_CARD
Definition libusb.h:180
libusb_transfer_type
Definition libusb.h:304
libusb_descriptor_size
Definition libusb.h:202
@ LIBUSB_DT_ENDPOINT_AUDIO_SIZE
Definition libusb.h:207
@ LIBUSB_DT_INTERFACE_SIZE
Definition libusb.h:205
@ LIBUSB_DT_ENDPOINT_SIZE
Definition libusb.h:206
@ LIBUSB_DT_DEVICE_SIZE
Definition libusb.h:203
@ LIBUSB_DT_CONFIG_SIZE
Definition libusb.h:204
#define libusb_get_port_number
Definition libusb.h:43
usb_dev_handle * usb_open(struct usb_device *dev)
Definition vsf_linux_libusb.c:1443
int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1464
#define libusb_handle_events_timeout
Definition libusb.h:72
int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1480
int usb_get_driver_np(usb_dev_handle *dev, int interface, char *name, unsigned int namelen)
Definition vsf_linux_libusb.c:1386
#define libusb_submit_transfer
Definition libusb.h:56
int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1472
struct libusb_ss_endpoint_companion_descriptor VSF_CAL_PACKED
#define libusb_get_pollfds
Definition libusb.h:74
void(* libusb_transfer_cb_fn)(struct libusb_transfer *transfer)
Definition libusb.h:326
#define libusb_exit
Definition libusb.h:31
@ LIBUSB_TRANSFER_ADD_ZERO_PACKET
Definition libusb.h:316
@ LIBUSB_TRANSFER_FREE_TRANSFER
Definition libusb.h:315
@ LIBUSB_TRANSFER_SHORT_NOT_OK
Definition libusb.h:313
@ LIBUSB_TRANSFER_FREE_BUFFER
Definition libusb.h:314
#define libusb_get_bus_number
Definition libusb.h:42
#define libusb_hotplug_register_callback
Definition libusb.h:80
int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
Definition vsf_linux_libusb.c:1456
#define libusb_get_parent
Definition libusb.h:44
#define libusb_attach_kernel_driver
Definition libusb.h:84
#define libusb_has_capability
Definition libusb.h:83
#define LIBUSB_PACKED
Definition libusb.h:97
#define libusb_get_ss_endpoint_companion_descriptor
Definition libusb.h:76
#define libusb_free_pollfds
Definition libusb.h:75
#define libusb_set_interface_alt_setting
Definition libusb.h:69
int libusb_hotplug_callback_handle
Definition libusb.h:262
int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface)
Definition vsf_linux_libusb.c:1391
#define libusb_set_configuration
Definition libusb.h:91
#define libusb_kernel_driver_active
Definition libusb.h:86
#define libusb_get_iso_packet_buffer_simple
Definition libusb.h:53
libusb_hotplug_event
Definition libusb.h:274
@ LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED
Definition libusb.h:275
@ LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT
Definition libusb.h:276
#define libusb_detach_kernel_driver
Definition libusb.h:85
#define libusb_set_debug
Definition libusb.h:32
#define libusb_get_string_descriptor_ascii
Definition libusb.h:62
#define libusb_release_interface
Definition libusb.h:79
#define libusb_interrupt_transfer
Definition libusb.h:61
#define libusb_get_device
Definition libusb.h:38
#define libusb_open_device_with_vid_pid
Definition libusb.h:37
#define libusb_get_config_descriptor
Definition libusb.h:63
#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:70
#define libusb_control_transfer_get_data
Definition libusb.h:59
#define libusb_reset_device
Definition libusb.h:45
#define libusb_get_next_timeout
Definition libusb.h:82
#define usb_dev_handle
Definition libusb.h:894
int(* libusb_hotplug_callback_fn)(libusb_context *ctx, libusb_device *device, libusb_hotplug_event event, void *user_data)
Definition libusb.h:284
int usb_find_devices(void)
Definition vsf_linux_libusb.c:1396
#define libusb_get_configuration
Definition libusb.h:92
#define libusb_cancel_transfer
Definition libusb.h:57
libusb_hotplug_flag
Definition libusb.h:279
@ LIBUSB_HOTPLUG_ENUMERATE
Definition libusb.h:281
@ LIBUSB_HOTPLUG_NO_FLAGS
Definition libusb.h:280
#define libusb_get_active_config_descriptor
Definition libusb.h:65
#define libusb_handle_events_completed
Definition libusb.h:71
#define libusb_open
Definition libusb.h:36
#define libusb_alloc_transfer
Definition libusb.h:47
#define libusb_get_max_packet_size
Definition libusb.h:89
@ LIBUSB_TRANSFER_STALL
Definition libusb.h:299
@ LIBUSB_TRANSFER_COMPLETED
Definition libusb.h:294
@ LIBUSB_TRANSFER_CANCELLED
Definition libusb.h:296
@ LIBUSB_TRANSFER_ERROR
Definition libusb.h:295
@ LIBUSB_TRANSFER_OVERFLOW
Definition libusb.h:300
@ LIBUSB_TRANSFER_NO_DEVICE
Definition libusb.h:297
@ LIBUSB_TRANSFER_TIMED_OUT
Definition libusb.h:298
__VSF_VPLT_DECORATOR__ vsf_linux_libusb_vplt_t vsf_linux_libusb_vplt
Definition vsf_linux_libusb.c:1321
#define libusb_control_transfer
Definition libusb.h:58
struct usb_bus * usb_get_busses(void)
Definition vsf_linux_libusb.c:1401
#define libusb_fill_interrupt_transfer
Definition libusb.h:51
#define libusb_strerror
Definition libusb.h:28
#define libusb_fill_control_setup
Definition libusb.h:49
@ LIBUSB_TRANSFER_TYPE_BULK_STREAM
Definition libusb.h:309
@ LIBUSB_TRANSFER_TYPE_ISOCHRONOUS
Definition libusb.h:306
@ LIBUSB_TRANSFER_TYPE_CONTROL
Definition libusb.h:305
@ LIBUSB_TRANSFER_TYPE_BULK
Definition libusb.h:307
@ LIBUSB_TRANSFER_TYPE_INTERRUPT
Definition libusb.h:308
#define libusb_handle_events
Definition libusb.h:73
#define libusb_fill_control_transfer
Definition libusb.h:48
#define libusb_fill_bulk_transfer
Definition libusb.h:50
#define libusb_get_device_descriptor
Definition libusb.h:40
void vsf_linux_libusb_startup(void)
Definition vsf_linux_libusb.c:323
#define libusb_ref_device
Definition libusb.h:87
#define libusb_free_device_list
Definition libusb.h:35
#define libusb_free_ss_endpoint_companion_descriptor
Definition libusb.h:77
#define libusb_unref_device
Definition libusb.h:88
#define libusb_free_transfer
Definition libusb.h:55
#define libusb_clear_halt
Definition libusb.h:46
#define libusb_set_iso_packet_lengths
Definition libusb.h:54
#define libusb_get_string_descriptor
Definition libusb.h:68
#define libusb_error_name
Definition libusb.h:33
#define libusb_get_descriptor
Definition libusb.h:67
#define libusb_fill_iso_transfer
Definition libusb.h:52
#define libusb_claim_interface
Definition libusb.h:78
#define libusb_init
Definition libusb.h:30
#define libusb_free_config_descriptor
Definition libusb.h:66
#define libusb_get_device_speed
Definition libusb.h:90
#define LIBUSB_CONTROL_SETUP_SIZE
Definition libusb.h:260
#define libusb_close
Definition libusb.h:39
#define libusb_hotplug_deregister_callback
Definition libusb.h:81
int usb_close(usb_dev_handle *dev)
Definition vsf_linux_libusb.c:1450
#define libusb_bulk_transfer
Definition libusb.h:60
#define libusb_get_version
Definition libusb.h:29
#define libusb_get_config_descriptor_by_value
Definition libusb.h:64
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 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:206
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:243
Definition usb_common.h:230
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_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_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_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_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_DEVICE
Definition usb_common.h:152
@ USB_SPEED_LOW
Definition usb_common.h:272
@ USB_SPEED_FULL
Definition usb_common.h:272
@ USB_SPEED_HIGH
Definition usb_common.h:273
@ USB_SPEED_UNKNOWN
Definition usb_common.h:271
@ USB_SPEED_SUPER
Definition usb_common.h:275
@ 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:291
@ USB_ENDPOINT_XFER_INT
Definition usb_common.h:292
@ USB_ENDPOINT_XFER_ISOC
Definition usb_common.h:290
@ USB_ENDPOINT_XFER_BULK_STREAM
Definition usb_common.h:293
@ USB_ENDPOINT_XFER_CONTROL
Definition usb_common.h:289
@ 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
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@1c19fdc