29 #if !defined(__cplusplus)
30 #define inline __inline
33 #ifndef _SSIZE_T_DEFINED
34 #define _SSIZE_T_DEFINED
37 typedef __int64 ssize_t;
45 #if defined(_MSC_VER) && (_MSC_VER < 1600) && (!defined(_STDINT)) && (!defined(_STDINT_H))
46 typedef unsigned __int8 uint8_t;
47 typedef unsigned __int16 uint16_t;
48 typedef unsigned __int32 uint32_t;
53 #if !defined(_WIN32_WCE)
54 #include <sys/types.h>
57 #if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__) || defined(__HAIKU__)
69 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
71 #if defined(interface)
74 #if !defined(__CYGWIN__)
79 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
80 #define LIBUSB_DEPRECATED_FOR(f) \
81 __attribute__((deprecated("Use " #f " instead")))
83 #define LIBUSB_DEPRECATED_FOR(f)
118 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
119 #define LIBUSB_CALL WINAPI
144 #define LIBUSB_API_VERSION 0x01000104
147 #define LIBUSBX_API_VERSION LIBUSB_API_VERSION
149 #if defined(__cplusplus) || defined(__XC__)
161 static inline uint16_t libusb_cpu_to_le16(
const uint16_t x)
167 _tmp.b8[1] = (uint8_t) (x >> 8);
168 _tmp.b8[0] = (uint8_t) (x & 0xff);
180 #define libusb_le16_to_cpu libusb_cpu_to_le16
186 enum libusb_class_code {
191 LIBUSB_CLASS_PER_INTERFACE = 0,
194 LIBUSB_CLASS_AUDIO = 1,
197 LIBUSB_CLASS_COMM = 2,
200 LIBUSB_CLASS_HID = 3,
203 LIBUSB_CLASS_PHYSICAL = 5,
206 LIBUSB_CLASS_PRINTER = 7,
209 LIBUSB_CLASS_PTP = 6,
210 LIBUSB_CLASS_IMAGE = 6,
213 LIBUSB_CLASS_MASS_STORAGE = 8,
216 LIBUSB_CLASS_HUB = 9,
219 LIBUSB_CLASS_DATA = 10,
222 LIBUSB_CLASS_SMART_CARD = 0x0b,
225 LIBUSB_CLASS_CONTENT_SECURITY = 0x0d,
228 LIBUSB_CLASS_VIDEO = 0x0e,
231 LIBUSB_CLASS_PERSONAL_HEALTHCARE = 0x0f,
234 LIBUSB_CLASS_DIAGNOSTIC_DEVICE = 0xdc,
237 LIBUSB_CLASS_WIRELESS = 0xe0,
240 LIBUSB_CLASS_APPLICATION = 0xfe,
243 LIBUSB_CLASS_VENDOR_SPEC = 0xff
248 enum libusb_descriptor_type {
250 LIBUSB_DT_DEVICE = 0x01,
253 LIBUSB_DT_CONFIG = 0x02,
256 LIBUSB_DT_STRING = 0x03,
259 LIBUSB_DT_INTERFACE = 0x04,
262 LIBUSB_DT_ENDPOINT = 0x05,
265 LIBUSB_DT_BOS = 0x0f,
268 LIBUSB_DT_DEVICE_CAPABILITY = 0x10,
271 LIBUSB_DT_HID = 0x21,
274 LIBUSB_DT_REPORT = 0x22,
277 LIBUSB_DT_PHYSICAL = 0x23,
280 LIBUSB_DT_HUB = 0x29,
283 LIBUSB_DT_SUPERSPEED_HUB = 0x2a,
286 LIBUSB_DT_SS_ENDPOINT_COMPANION = 0x30
290 #define LIBUSB_DT_DEVICE_SIZE 18
291 #define LIBUSB_DT_CONFIG_SIZE 9
292 #define LIBUSB_DT_INTERFACE_SIZE 9
293 #define LIBUSB_DT_ENDPOINT_SIZE 7
294 #define LIBUSB_DT_ENDPOINT_AUDIO_SIZE 9
295 #define LIBUSB_DT_HUB_NONVAR_SIZE 7
296 #define LIBUSB_DT_SS_ENDPOINT_COMPANION_SIZE 6
297 #define LIBUSB_DT_BOS_SIZE 5
298 #define LIBUSB_DT_DEVICE_CAPABILITY_SIZE 3
301 #define LIBUSB_BT_USB_2_0_EXTENSION_SIZE 7
302 #define LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE 10
303 #define LIBUSB_BT_CONTAINER_ID_SIZE 20
306 #define LIBUSB_DT_BOS_MAX_SIZE ((LIBUSB_DT_BOS_SIZE) +\
307 (LIBUSB_BT_USB_2_0_EXTENSION_SIZE) +\
308 (LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE) +\
309 (LIBUSB_BT_CONTAINER_ID_SIZE))
311 #define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0f
312 #define LIBUSB_ENDPOINT_DIR_MASK 0x80
318 enum libusb_endpoint_direction {
320 LIBUSB_ENDPOINT_IN = 0x80,
323 LIBUSB_ENDPOINT_OUT = 0x00
326 #define LIBUSB_TRANSFER_TYPE_MASK 0x03
332 enum libusb_transfer_type {
334 LIBUSB_TRANSFER_TYPE_CONTROL = 0,
337 LIBUSB_TRANSFER_TYPE_ISOCHRONOUS = 1,
340 LIBUSB_TRANSFER_TYPE_BULK = 2,
343 LIBUSB_TRANSFER_TYPE_INTERRUPT = 3,
346 LIBUSB_TRANSFER_TYPE_BULK_STREAM = 4,
351 enum libusb_standard_request {
353 LIBUSB_REQUEST_GET_STATUS = 0x00,
356 LIBUSB_REQUEST_CLEAR_FEATURE = 0x01,
361 LIBUSB_REQUEST_SET_FEATURE = 0x03,
366 LIBUSB_REQUEST_SET_ADDRESS = 0x05,
369 LIBUSB_REQUEST_GET_DESCRIPTOR = 0x06,
372 LIBUSB_REQUEST_SET_DESCRIPTOR = 0x07,
375 LIBUSB_REQUEST_GET_CONFIGURATION = 0x08,
378 LIBUSB_REQUEST_SET_CONFIGURATION = 0x09,
381 LIBUSB_REQUEST_GET_INTERFACE = 0x0A,
384 LIBUSB_REQUEST_SET_INTERFACE = 0x0B,
387 LIBUSB_REQUEST_SYNCH_FRAME = 0x0C,
390 LIBUSB_REQUEST_SET_SEL = 0x30,
394 LIBUSB_SET_ISOCH_DELAY = 0x31,
401 enum libusb_request_type {
403 LIBUSB_REQUEST_TYPE_STANDARD = (0x00 << 5),
406 LIBUSB_REQUEST_TYPE_CLASS = (0x01 << 5),
409 LIBUSB_REQUEST_TYPE_VENDOR = (0x02 << 5),
412 LIBUSB_REQUEST_TYPE_RESERVED = (0x03 << 5)
419 enum libusb_request_recipient {
421 LIBUSB_RECIPIENT_DEVICE = 0x00,
424 LIBUSB_RECIPIENT_INTERFACE = 0x01,
427 LIBUSB_RECIPIENT_ENDPOINT = 0x02,
430 LIBUSB_RECIPIENT_OTHER = 0x03,
433 #define LIBUSB_ISO_SYNC_TYPE_MASK 0x0C
440 enum libusb_iso_sync_type {
442 LIBUSB_ISO_SYNC_TYPE_NONE = 0,
445 LIBUSB_ISO_SYNC_TYPE_ASYNC = 1,
448 LIBUSB_ISO_SYNC_TYPE_ADAPTIVE = 2,
451 LIBUSB_ISO_SYNC_TYPE_SYNC = 3
454 #define LIBUSB_ISO_USAGE_TYPE_MASK 0x30
461 enum libusb_iso_usage_type {
463 LIBUSB_ISO_USAGE_TYPE_DATA = 0,
466 LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1,
469 LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2,
733 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
764 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
894 #define LIBUSB_CONTROL_SETUP_SIZE (sizeof(struct libusb_control_setup))
898 struct libusb_context;
899 struct libusb_device;
900 struct libusb_device_handle;
942 typedef struct libusb_context libusb_context;
959 typedef struct libusb_device libusb_device;
970 typedef struct libusb_device_handle libusb_device_handle;
977 LIBUSB_SPEED_UNKNOWN = 0,
980 LIBUSB_SPEED_LOW = 1,
983 LIBUSB_SPEED_FULL = 2,
986 LIBUSB_SPEED_HIGH = 3,
989 LIBUSB_SPEED_SUPER = 4,
996 enum libusb_supported_speed {
998 LIBUSB_LOW_SPEED_OPERATION = 1,
1001 LIBUSB_FULL_SPEED_OPERATION = 2,
1004 LIBUSB_HIGH_SPEED_OPERATION = 4,
1007 LIBUSB_SUPER_SPEED_OPERATION = 8,
1015 enum libusb_usb_2_0_extension_attributes {
1017 LIBUSB_BM_LPM_SUPPORT = 2,
1025 enum libusb_ss_usb_device_capability_attributes {
1027 LIBUSB_BM_LTM_SUPPORT = 2,
1033 enum libusb_bos_type {
1035 LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1,
1038 LIBUSB_BT_USB_2_0_EXTENSION = 2,
1041 LIBUSB_BT_SS_USB_DEVICE_CAPABILITY = 3,
1044 LIBUSB_BT_CONTAINER_ID = 4,
1059 LIBUSB_ERROR_IO = -1,
1062 LIBUSB_ERROR_INVALID_PARAM = -2,
1065 LIBUSB_ERROR_ACCESS = -3,
1068 LIBUSB_ERROR_NO_DEVICE = -4,
1071 LIBUSB_ERROR_NOT_FOUND = -5,
1074 LIBUSB_ERROR_BUSY = -6,
1077 LIBUSB_ERROR_TIMEOUT = -7,
1080 LIBUSB_ERROR_OVERFLOW = -8,
1083 LIBUSB_ERROR_PIPE = -9,
1086 LIBUSB_ERROR_INTERRUPTED = -10,
1089 LIBUSB_ERROR_NO_MEM = -11,
1092 LIBUSB_ERROR_NOT_SUPPORTED = -12,
1098 LIBUSB_ERROR_OTHER = -99,
1102 #define LIBUSB_ERROR_COUNT 14
1106 enum libusb_transfer_status {
1109 LIBUSB_TRANSFER_COMPLETED,
1112 LIBUSB_TRANSFER_ERROR,
1115 LIBUSB_TRANSFER_TIMED_OUT,
1118 LIBUSB_TRANSFER_CANCELLED,
1122 LIBUSB_TRANSFER_STALL,
1125 LIBUSB_TRANSFER_NO_DEVICE,
1128 LIBUSB_TRANSFER_OVERFLOW,
1136 enum libusb_transfer_flags {
1138 LIBUSB_TRANSFER_SHORT_NOT_OK = 1<<0,
1141 LIBUSB_TRANSFER_FREE_BUFFER = 1<<1,
1147 LIBUSB_TRANSFER_FREE_TRANSFER = 1<<2,
1172 LIBUSB_TRANSFER_ADD_ZERO_PACKET = 1 << 3,
1185 enum libusb_transfer_status
status;
1199 typedef void (LIBUSB_CALL *libusb_transfer_cb_fn)(
struct libusb_transfer *transfer);
1231 enum libusb_transfer_status
status;
1257 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
1270 enum libusb_capability {
1272 LIBUSB_CAP_HAS_CAPABILITY = 0x0000,
1274 LIBUSB_CAP_HAS_HOTPLUG = 0x0001,
1279 LIBUSB_CAP_HAS_HID_ACCESS = 0x0100,
1282 LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER = 0x0101
1295 enum libusb_log_level {
1296 LIBUSB_LOG_LEVEL_NONE = 0,
1297 LIBUSB_LOG_LEVEL_ERROR,
1298 LIBUSB_LOG_LEVEL_WARNING,
1299 LIBUSB_LOG_LEVEL_INFO,
1300 LIBUSB_LOG_LEVEL_DEBUG,
1303 int LIBUSB_CALL libusb_init(libusb_context **ctx);
1304 void LIBUSB_CALL libusb_exit(libusb_context *ctx);
1305 void LIBUSB_CALL libusb_set_debug(libusb_context *ctx,
int level);
1306 const struct libusb_version * LIBUSB_CALL libusb_get_version(
void);
1307 int LIBUSB_CALL libusb_has_capability(uint32_t capability);
1308 const char * LIBUSB_CALL libusb_error_name(
int errcode);
1309 int LIBUSB_CALL libusb_setlocale(
const char *locale);
1310 const char * LIBUSB_CALL libusb_strerror(
enum libusb_error errcode);
1312 ssize_t LIBUSB_CALL libusb_get_device_list(libusb_context *ctx,
1313 libusb_device ***list);
1314 void LIBUSB_CALL libusb_free_device_list(libusb_device **list,
1316 libusb_device * LIBUSB_CALL libusb_ref_device(libusb_device *dev);
1317 void LIBUSB_CALL libusb_unref_device(libusb_device *dev);
1319 int LIBUSB_CALL libusb_get_configuration(libusb_device_handle *dev,
1321 int LIBUSB_CALL libusb_get_device_descriptor(libusb_device *dev,
1323 int LIBUSB_CALL libusb_get_active_config_descriptor(libusb_device *dev,
1325 int LIBUSB_CALL libusb_get_config_descriptor(libusb_device *dev,
1327 int LIBUSB_CALL libusb_get_config_descriptor_by_value(libusb_device *dev,
1329 void LIBUSB_CALL libusb_free_config_descriptor(
1331 int LIBUSB_CALL libusb_get_ss_endpoint_companion_descriptor(
1332 struct libusb_context *ctx,
1335 void LIBUSB_CALL libusb_free_ss_endpoint_companion_descriptor(
1337 int LIBUSB_CALL libusb_get_bos_descriptor(libusb_device_handle *handle,
1340 int LIBUSB_CALL libusb_get_usb_2_0_extension_descriptor(
1341 struct libusb_context *ctx,
1344 void LIBUSB_CALL libusb_free_usb_2_0_extension_descriptor(
1346 int LIBUSB_CALL libusb_get_ss_usb_device_capability_descriptor(
1347 struct libusb_context *ctx,
1350 void LIBUSB_CALL libusb_free_ss_usb_device_capability_descriptor(
1352 int LIBUSB_CALL libusb_get_container_id_descriptor(
struct libusb_context *ctx,
1355 void LIBUSB_CALL libusb_free_container_id_descriptor(
1357 uint8_t LIBUSB_CALL libusb_get_bus_number(libusb_device *dev);
1358 uint8_t LIBUSB_CALL libusb_get_port_number(libusb_device *dev);
1359 int LIBUSB_CALL libusb_get_port_numbers(libusb_device *dev, uint8_t* port_numbers,
int port_numbers_len);
1360 LIBUSB_DEPRECATED_FOR(libusb_get_port_numbers)
1361 int LIBUSB_CALL libusb_get_port_path(libusb_context *ctx, libusb_device *dev, uint8_t* path, uint8_t path_length);
1362 libusb_device * LIBUSB_CALL libusb_get_parent(libusb_device *dev);
1363 uint8_t LIBUSB_CALL libusb_get_device_address(libusb_device *dev);
1364 int LIBUSB_CALL libusb_get_device_speed(libusb_device *dev);
1365 int LIBUSB_CALL libusb_get_max_packet_size(libusb_device *dev,
1366 unsigned char endpoint);
1367 int LIBUSB_CALL libusb_get_max_iso_packet_size(libusb_device *dev,
1368 unsigned char endpoint);
1370 int LIBUSB_CALL libusb_open(libusb_device *dev, libusb_device_handle **handle);
1371 void LIBUSB_CALL libusb_close(libusb_device_handle *dev_handle);
1372 libusb_device * LIBUSB_CALL libusb_get_device(libusb_device_handle *dev_handle);
1374 int LIBUSB_CALL libusb_set_configuration(libusb_device_handle *dev,
1376 int LIBUSB_CALL libusb_claim_interface(libusb_device_handle *dev,
1377 int interface_number);
1378 int LIBUSB_CALL libusb_release_interface(libusb_device_handle *dev,
1379 int interface_number);
1381 libusb_device_handle * LIBUSB_CALL libusb_open_device_with_vid_pid(
1382 libusb_context *ctx, uint16_t vendor_id, uint16_t product_id);
1384 int LIBUSB_CALL libusb_set_interface_alt_setting(libusb_device_handle *dev,
1385 int interface_number,
int alternate_setting);
1386 int LIBUSB_CALL libusb_clear_halt(libusb_device_handle *dev,
1387 unsigned char endpoint);
1388 int LIBUSB_CALL libusb_reset_device(libusb_device_handle *dev);
1390 int LIBUSB_CALL libusb_alloc_streams(libusb_device_handle *dev,
1391 uint32_t num_streams,
unsigned char *endpoints,
int num_endpoints);
1392 int LIBUSB_CALL libusb_free_streams(libusb_device_handle *dev,
1393 unsigned char *endpoints,
int num_endpoints);
1395 int LIBUSB_CALL libusb_kernel_driver_active(libusb_device_handle *dev,
1396 int interface_number);
1397 int LIBUSB_CALL libusb_detach_kernel_driver(libusb_device_handle *dev,
1398 int interface_number);
1399 int LIBUSB_CALL libusb_attach_kernel_driver(libusb_device_handle *dev,
1400 int interface_number);
1401 int LIBUSB_CALL libusb_set_auto_detach_kernel_driver(
1402 libusb_device_handle *dev,
int enable);
1418 static inline unsigned char *libusb_control_transfer_get_data(
1421 return transfer->
buffer + LIBUSB_CONTROL_SETUP_SIZE;
1465 static inline void libusb_fill_control_setup(
unsigned char *buffer,
1477 struct libusb_transfer * LIBUSB_CALL libusb_alloc_transfer(
int iso_packets);
1478 int LIBUSB_CALL libusb_submit_transfer(
struct libusb_transfer *transfer);
1479 int LIBUSB_CALL libusb_cancel_transfer(
struct libusb_transfer *transfer);
1480 void LIBUSB_CALL libusb_free_transfer(
struct libusb_transfer *transfer);
1481 void LIBUSB_CALL libusb_transfer_set_stream_id(
1483 uint32_t LIBUSB_CALL libusb_transfer_get_stream_id(
1514 static inline void libusb_fill_control_transfer(
1522 transfer->
type = LIBUSB_TRANSFER_TYPE_CONTROL;
1524 transfer->
buffer = buffer;
1526 transfer->
length = (int) (LIBUSB_CONTROL_SETUP_SIZE
1527 + libusb_le16_to_cpu(setup->
wLength));
1545 static inline void libusb_fill_bulk_transfer(
struct libusb_transfer *transfer,
1546 libusb_device_handle *dev_handle,
unsigned char endpoint,
1547 unsigned char *buffer,
int length, libusb_transfer_cb_fn callback,
1548 void *user_data,
unsigned int timeout)
1552 transfer->
type = LIBUSB_TRANSFER_TYPE_BULK;
1554 transfer->
buffer = buffer;
1555 transfer->
length = length;
1576 static inline void libusb_fill_bulk_stream_transfer(
1578 unsigned char endpoint, uint32_t stream_id,
1579 unsigned char *buffer,
int length, libusb_transfer_cb_fn callback,
1580 void *user_data,
unsigned int timeout)
1582 libusb_fill_bulk_transfer(transfer, dev_handle, endpoint, buffer,
1583 length, callback, user_data, timeout);
1584 transfer->
type = LIBUSB_TRANSFER_TYPE_BULK_STREAM;
1585 libusb_transfer_set_stream_id(transfer, stream_id);
1601 static inline void libusb_fill_interrupt_transfer(
1603 unsigned char endpoint,
unsigned char *buffer,
int length,
1604 libusb_transfer_cb_fn callback,
void *user_data,
unsigned int timeout)
1608 transfer->
type = LIBUSB_TRANSFER_TYPE_INTERRUPT;
1610 transfer->
buffer = buffer;
1611 transfer->
length = length;
1630 static inline void libusb_fill_iso_transfer(
struct libusb_transfer *transfer,
1631 libusb_device_handle *dev_handle,
unsigned char endpoint,
1632 unsigned char *buffer,
int length,
int num_iso_packets,
1633 libusb_transfer_cb_fn callback,
void *user_data,
unsigned int timeout)
1637 transfer->
type = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS;
1639 transfer->
buffer = buffer;
1640 transfer->
length = length;
1654 static inline void libusb_set_iso_packet_lengths(
1678 static inline unsigned char *libusb_get_iso_packet_buffer(
1688 if (packet > INT_MAX)
1690 _packet = (int) packet;
1695 for (i = 0; i < _packet; i++)
1698 return transfer->
buffer + offset;
1720 static inline unsigned char *libusb_get_iso_packet_buffer_simple(
1728 if (packet > INT_MAX)
1730 _packet = (int) packet;
1740 int LIBUSB_CALL libusb_control_transfer(libusb_device_handle *dev_handle,
1742 unsigned char *data, uint16_t
wLength,
unsigned int timeout);
1744 int LIBUSB_CALL libusb_bulk_transfer(libusb_device_handle *dev_handle,
1745 unsigned char endpoint,
unsigned char *data,
int length,
1746 int *actual_length,
unsigned int timeout);
1748 int LIBUSB_CALL libusb_interrupt_transfer(libusb_device_handle *dev_handle,
1749 unsigned char endpoint,
unsigned char *data,
int length,
1750 int *actual_length,
unsigned int timeout);
1764 static inline int libusb_get_descriptor(libusb_device_handle *dev,
1765 uint8_t desc_type, uint8_t desc_index,
unsigned char *data,
int length)
1767 return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN,
1768 LIBUSB_REQUEST_GET_DESCRIPTOR, (uint16_t) ((desc_type << 8) | desc_index),
1769 0, data, (uint16_t) length, 1000);
1786 static inline int libusb_get_string_descriptor(libusb_device_handle *dev,
1787 uint8_t desc_index, uint16_t langid,
unsigned char *data,
int length)
1789 return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN,
1790 LIBUSB_REQUEST_GET_DESCRIPTOR, (uint16_t)((LIBUSB_DT_STRING << 8) | desc_index),
1791 langid, data, (uint16_t) length, 1000);
1794 int LIBUSB_CALL libusb_get_string_descriptor_ascii(libusb_device_handle *dev,
1795 uint8_t desc_index,
unsigned char *data,
int length);
1799 int LIBUSB_CALL libusb_try_lock_events(libusb_context *ctx);
1800 void LIBUSB_CALL libusb_lock_events(libusb_context *ctx);
1801 void LIBUSB_CALL libusb_unlock_events(libusb_context *ctx);
1802 int LIBUSB_CALL libusb_event_handling_ok(libusb_context *ctx);
1803 int LIBUSB_CALL libusb_event_handler_active(libusb_context *ctx);
1804 void LIBUSB_CALL libusb_lock_event_waiters(libusb_context *ctx);
1805 void LIBUSB_CALL libusb_unlock_event_waiters(libusb_context *ctx);
1806 int LIBUSB_CALL libusb_wait_for_event(libusb_context *ctx,
struct timeval *tv);
1808 int LIBUSB_CALL libusb_handle_events_timeout(libusb_context *ctx,
1809 struct timeval *tv);
1810 int LIBUSB_CALL libusb_handle_events_timeout_completed(libusb_context *ctx,
1811 struct timeval *tv,
int *completed);
1812 int LIBUSB_CALL libusb_handle_events(libusb_context *ctx);
1813 int LIBUSB_CALL libusb_handle_events_completed(libusb_context *ctx,
int *completed);
1814 int LIBUSB_CALL libusb_handle_events_locked(libusb_context *ctx,
1815 struct timeval *tv);
1816 int LIBUSB_CALL libusb_pollfds_handle_timeouts(libusb_context *ctx);
1817 int LIBUSB_CALL libusb_get_next_timeout(libusb_context *ctx,
1818 struct timeval *tv);
1844 typedef void (LIBUSB_CALL *libusb_pollfd_added_cb)(
int fd,
short events,
1856 typedef void (LIBUSB_CALL *libusb_pollfd_removed_cb)(
int fd,
void *user_data);
1858 const struct libusb_pollfd ** LIBUSB_CALL libusb_get_pollfds(
1859 libusb_context *ctx);
1860 void LIBUSB_CALL libusb_free_pollfds(
const struct libusb_pollfd **pollfds);
1861 void LIBUSB_CALL libusb_set_pollfd_notifiers(libusb_context *ctx,
1862 libusb_pollfd_added_cb added_cb, libusb_pollfd_removed_cb removed_cb,
1877 typedef int libusb_hotplug_callback_handle;
1886 LIBUSB_HOTPLUG_NO_FLAGS = 0,
1889 LIBUSB_HOTPLUG_ENUMERATE = 1<<0,
1890 } libusb_hotplug_flag;
1899 LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED = 0x01,
1904 LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT = 0x02,
1905 } libusb_hotplug_event;
1909 #define LIBUSB_HOTPLUG_MATCH_ANY -1
1933 typedef int (LIBUSB_CALL *libusb_hotplug_callback_fn)(libusb_context *ctx,
1934 libusb_device *device,
1935 libusb_hotplug_event event,
1972 int LIBUSB_CALL libusb_hotplug_register_callback(libusb_context *ctx,
1973 libusb_hotplug_event
events,
1974 libusb_hotplug_flag flags,
1975 int vendor_id,
int product_id,
1977 libusb_hotplug_callback_fn cb_fn,
1979 libusb_hotplug_callback_handle *handle);
1992 void LIBUSB_CALL libusb_hotplug_deregister_callback(libusb_context *ctx,
1993 libusb_hotplug_callback_handle handle);
1995 #if defined(__cplusplus) || defined(__XC__)
uint16_t wTotalLength
Definition: libusb.h:756
struct libusb_bos_dev_capability_descriptor * dev_capability[0]
Definition: libusb.h:763
uint8_t bNumDeviceCaps
Definition: libusb.h:760
uint8_t bLength
Definition: libusb.h:748
uint8_t bDescriptorType
Definition: libusb.h:753
uint8_t bLength
Definition: libusb.h:724
uint8_t bDescriptorType
Definition: libusb.h:728
uint8_t bDevCapabilityType
Definition: libusb.h:730
uint8_t dev_capability_data[0]
Definition: libusb.h:738
uint8_t bConfigurationValue
Definition: libusb.h:659
uint8_t iConfiguration
Definition: libusb.h:662
int extra_length
Definition: libusb.h:682
uint8_t bLength
Definition: libusb.h:645
uint8_t bNumInterfaces
Definition: libusb.h:656
uint8_t MaxPower
Definition: libusb.h:671
uint16_t wTotalLength
Definition: libusb.h:653
uint8_t bDescriptorType
Definition: libusb.h:650
const unsigned char * extra
Definition: libusb.h:679
uint8_t bmAttributes
Definition: libusb.h:665
const struct libusb_interface * interface
Definition: libusb.h:675
uint8_t ContainerID[16]
Definition: libusb.h:863
uint8_t bDescriptorType
Definition: libusb.h:852
uint8_t bDevCapabilityType
Definition: libusb.h:857
uint8_t bLength
Definition: libusb.h:847
uint8_t bReserved
Definition: libusb.h:860
uint8_t bRequest
Definition: libusb.h:881
uint8_t bmRequestType
Definition: libusb.h:874
uint16_t wLength
Definition: libusb.h:891
uint16_t wIndex
Definition: libusb.h:888
uint16_t wValue
Definition: libusb.h:884
uint8_t bNumConfigurations
Definition: libusb.h:523
uint8_t iProduct
Definition: libusb.h:517
uint8_t iSerialNumber
Definition: libusb.h:520
uint8_t bMaxPacketSize0
Definition: libusb.h:502
uint8_t bDeviceProtocol
Definition: libusb.h:499
uint16_t idProduct
Definition: libusb.h:508
uint8_t bDescriptorType
Definition: libusb.h:484
uint8_t bDeviceSubClass
Definition: libusb.h:495
uint8_t bDeviceClass
Definition: libusb.h:491
uint8_t iManufacturer
Definition: libusb.h:514
uint16_t idVendor
Definition: libusb.h:505
uint16_t bcdUSB
Definition: libusb.h:488
uint16_t bcdDevice
Definition: libusb.h:511
uint8_t bLength
Definition: libusb.h:479
int extra_length
Definition: libusb.h:573
uint8_t bEndpointAddress
Definition: libusb.h:544
const unsigned char * extra
Definition: libusb.h:570
uint8_t bInterval
Definition: libusb.h:559
uint8_t bDescriptorType
Definition: libusb.h:538
uint8_t bRefresh
Definition: libusb.h:563
uint8_t bmAttributes
Definition: libusb.h:553
uint8_t bLength
Definition: libusb.h:533
uint8_t bSynchAddress
Definition: libusb.h:566
uint16_t wMaxPacketSize
Definition: libusb.h:556
uint8_t bInterfaceSubClass
Definition: libusb.h:605
uint8_t iInterface
Definition: libusb.h:612
uint8_t bInterfaceClass
Definition: libusb.h:601
uint8_t bAlternateSetting
Definition: libusb.h:594
const struct libusb_endpoint_descriptor * endpoint
Definition: libusb.h:616
uint8_t bNumEndpoints
Definition: libusb.h:598
uint8_t bInterfaceProtocol
Definition: libusb.h:609
uint8_t bLength
Definition: libusb.h:583
uint8_t bInterfaceNumber
Definition: libusb.h:591
const unsigned char * extra
Definition: libusb.h:620
int extra_length
Definition: libusb.h:623
uint8_t bDescriptorType
Definition: libusb.h:588
const struct libusb_interface_descriptor * altsetting
Definition: libusb.h:632
int num_altsetting
Definition: libusb.h:635
Definition: libusb.h:1177
unsigned int actual_length
Definition: libusb.h:1182
unsigned int length
Definition: libusb.h:1179
enum libusb_transfer_status status
Definition: libusb.h:1185
Definition: libusb.h:1823
short events
Definition: libusb.h:1831
int fd
Definition: libusb.h:1825
uint16_t wBytesPerInterval
Definition: libusb.h:714
uint8_t bLength
Definition: libusb.h:694
uint8_t bDescriptorType
Definition: libusb.h:699
uint8_t bMaxBurst
Definition: libusb.h:704
uint8_t bmAttributes
Definition: libusb.h:710
uint8_t bDevCapabilityType
Definition: libusb.h:815
uint16_t wSpeedSupported
Definition: libusb.h:825
uint8_t bFunctionalitySupport
Definition: libusb.h:831
uint16_t bU2DevExitLat
Definition: libusb.h:837
uint8_t bLength
Definition: libusb.h:805
uint8_t bmAttributes
Definition: libusb.h:821
uint8_t bU1DevExitLat
Definition: libusb.h:834
uint8_t bDescriptorType
Definition: libusb.h:810
Definition: libusb.h:1207
struct libusb_iso_packet_descriptor iso_packet_desc[0]
Definition: libusb.h:1256
unsigned char endpoint
Definition: libusb.h:1215
enum libusb_transfer_status status
Definition: libusb.h:1231
int length
Definition: libusb.h:1234
libusb_transfer_cb_fn callback
Definition: libusb.h:1243
unsigned char type
Definition: libusb.h:1218
int actual_length
Definition: libusb.h:1239
unsigned char * buffer
Definition: libusb.h:1249
int num_iso_packets
Definition: libusb.h:1253
unsigned int timeout
Definition: libusb.h:1222
void * user_data
Definition: libusb.h:1246
libusb_device_handle * dev_handle
Definition: libusb.h:1209
uint8_t flags
Definition: libusb.h:1212
uint8_t bLength
Definition: libusb.h:779
uint8_t bDevCapabilityType
Definition: libusb.h:789
uint32_t bmAttributes
Definition: libusb.h:795
uint8_t bDescriptorType
Definition: libusb.h:784
const uint16_t micro
Definition: libusb.h:913
const uint16_t major
Definition: libusb.h:907
const char * rc
Definition: libusb.h:919
const uint16_t minor
Definition: libusb.h:910
const char * describe
Definition: libusb.h:922
const uint16_t nano
Definition: libusb.h:916