libusb.h (5b40d9601c72fbb04f32437d529dbf51252dc31e) libusb.h (37d0636aac290cc86ec7149a55167f6c21ad480f)
1/* $FreeBSD$ */
2/*-
3 * Copyright (c) 2009 Sylvestre Gallon. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 87 unchanged lines hidden (view full) ---

96#define LIBUSB_DT_ENDPOINT_SIZE 7
97#define LIBUSB_DT_ENDPOINT_AUDIO_SIZE 9
98#define LIBUSB_DT_HUB_NONVAR_SIZE 7
99#define LIBUSB_DT_SS_ENDPOINT_COMPANION_SIZE 6
100#define LIBUSB_DT_BOS_SIZE 5
101#define LIBUSB_USB_2_0_EXTENSION_DEVICE_CAPABILITY_SIZE 7
102#define LIBUSB_SS_USB_DEVICE_CAPABILITY_SIZE 10
103
1/* $FreeBSD$ */
2/*-
3 * Copyright (c) 2009 Sylvestre Gallon. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 87 unchanged lines hidden (view full) ---

96#define LIBUSB_DT_ENDPOINT_SIZE 7
97#define LIBUSB_DT_ENDPOINT_AUDIO_SIZE 9
98#define LIBUSB_DT_HUB_NONVAR_SIZE 7
99#define LIBUSB_DT_SS_ENDPOINT_COMPANION_SIZE 6
100#define LIBUSB_DT_BOS_SIZE 5
101#define LIBUSB_USB_2_0_EXTENSION_DEVICE_CAPABILITY_SIZE 7
102#define LIBUSB_SS_USB_DEVICE_CAPABILITY_SIZE 10
103
104#define LIBUSB_BT_USB_2_0_EXTENSION_SIZE 7
105#define LIBUSB_BT_SS_USB_DEVICE_CAPABILITY_SIZE 10
106#define LIBUSB_BT_CONTAINER_ID_SIZE 20
107
104#define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0f
105#define LIBUSB_ENDPOINT_DIR_MASK 0x80
106
107enum libusb_endpoint_direction {
108 LIBUSB_ENDPOINT_IN = 0x80,
109 LIBUSB_ENDPOINT_OUT = 0x00,
110};
111

--- 48 unchanged lines hidden (view full) ---

160#define LIBUSB_ISO_USAGE_TYPE_MASK 0x30
161
162enum libusb_iso_usage_type {
163 LIBUSB_ISO_USAGE_TYPE_DATA = 0,
164 LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1,
165 LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2,
166};
167
108#define LIBUSB_ENDPOINT_ADDRESS_MASK 0x0f
109#define LIBUSB_ENDPOINT_DIR_MASK 0x80
110
111enum libusb_endpoint_direction {
112 LIBUSB_ENDPOINT_IN = 0x80,
113 LIBUSB_ENDPOINT_OUT = 0x00,
114};
115

--- 48 unchanged lines hidden (view full) ---

164#define LIBUSB_ISO_USAGE_TYPE_MASK 0x30
165
166enum libusb_iso_usage_type {
167 LIBUSB_ISO_USAGE_TYPE_DATA = 0,
168 LIBUSB_ISO_USAGE_TYPE_FEEDBACK = 1,
169 LIBUSB_ISO_USAGE_TYPE_IMPLICIT = 2,
170};
171
172enum libusb_bos_type {
173 LIBUSB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1,
174 LIBUSB_BT_USB_2_0_EXTENSION = 2,
175 LIBUSB_BT_SS_USB_DEVICE_CAPABILITY = 3,
176 LIBUSB_BT_CONTAINER_ID = 4,
177};
178
168enum libusb_error {
169 LIBUSB_SUCCESS = 0,
170 LIBUSB_ERROR_IO = -1,
171 LIBUSB_ERROR_INVALID_PARAM = -2,
172 LIBUSB_ERROR_ACCESS = -3,
173 LIBUSB_ERROR_NO_DEVICE = -4,
174 LIBUSB_ERROR_NOT_FOUND = -5,
175 LIBUSB_ERROR_BUSY = -6,

--- 168 unchanged lines hidden (view full) ---

344#define LIBUSB_CAPABILITY_FULL_SPEED_OPERATION (1 << 1)
345#define LIBUSB_CAPABILITY_HIGH_SPEED_OPERATION (1 << 2)
346#define LIBUSB_CAPABILITY_5GBPS_OPERATION (1 << 3)
347 uint8_t bFunctionalitySupport;
348 uint8_t bU1DevExitLat;
349 uint16_t wU2DevExitLat;
350} libusb_ss_usb_device_capability_descriptor __aligned(sizeof(void *));
351
179enum libusb_error {
180 LIBUSB_SUCCESS = 0,
181 LIBUSB_ERROR_IO = -1,
182 LIBUSB_ERROR_INVALID_PARAM = -2,
183 LIBUSB_ERROR_ACCESS = -3,
184 LIBUSB_ERROR_NO_DEVICE = -4,
185 LIBUSB_ERROR_NOT_FOUND = -5,
186 LIBUSB_ERROR_BUSY = -6,

--- 168 unchanged lines hidden (view full) ---

355#define LIBUSB_CAPABILITY_FULL_SPEED_OPERATION (1 << 1)
356#define LIBUSB_CAPABILITY_HIGH_SPEED_OPERATION (1 << 2)
357#define LIBUSB_CAPABILITY_5GBPS_OPERATION (1 << 3)
358 uint8_t bFunctionalitySupport;
359 uint8_t bU1DevExitLat;
360 uint16_t wU2DevExitLat;
361} libusb_ss_usb_device_capability_descriptor __aligned(sizeof(void *));
362
363typedef struct libusb_bos_dev_capability_descriptor {
364 uint8_t bLength;
365 uint8_t bDescriptorType;
366 uint8_t bDevCapabilityType;
367 uint8_t dev_capability_data[0];
368} libusb_bos_dev_capability_descriptor __aligned(sizeof(void *));
369
352typedef struct libusb_bos_descriptor {
353 uint8_t bLength;
354 uint8_t bDescriptorType;
355 uint16_t wTotalLength;
356 uint8_t bNumDeviceCapabilities;
357 struct libusb_usb_2_0_device_capability_descriptor *usb_2_0_ext_cap;
358 struct libusb_ss_usb_device_capability_descriptor *ss_usb_cap;
359} libusb_bos_descriptor __aligned(sizeof(void *));
360
370typedef struct libusb_bos_descriptor {
371 uint8_t bLength;
372 uint8_t bDescriptorType;
373 uint16_t wTotalLength;
374 uint8_t bNumDeviceCapabilities;
375 struct libusb_usb_2_0_device_capability_descriptor *usb_2_0_ext_cap;
376 struct libusb_ss_usb_device_capability_descriptor *ss_usb_cap;
377} libusb_bos_descriptor __aligned(sizeof(void *));
378
379typedef struct libusb_usb_2_0_extension_descriptor {
380 uint8_t bLength;
381 uint8_t bDescriptorType;
382 uint8_t bDevCapabilityType;
383 uint32_t bmAttributes;
384} libusb_usb_2_0_extension_descriptor __aligned(sizeof(void *));
385
386typedef struct libusb_container_id_descriptor {
387 uint8_t bLength;
388 uint8_t bDescriptorType;
389 uint8_t bDevCapabilityType;
390 uint8_t bReserved;
391 uint8_t ContainerID[16];
392} libusb_container_id_descriptor __aligned(sizeof(void *));
393
361typedef struct libusb_control_setup {
362 uint8_t bmRequestType;
363 uint8_t bRequest;
364 uint16_t wValue;
365 uint16_t wIndex;
366 uint16_t wLength;
367} libusb_control_setup;
368

--- 68 unchanged lines hidden (view full) ---

437
438/* USB Descriptors */
439
440int libusb_get_device_descriptor(libusb_device * dev, struct libusb_device_descriptor *desc);
441int libusb_get_active_config_descriptor(libusb_device * dev, struct libusb_config_descriptor **config);
442int libusb_get_config_descriptor(libusb_device * dev, uint8_t config_index, struct libusb_config_descriptor **config);
443int libusb_get_config_descriptor_by_value(libusb_device * dev, uint8_t bConfigurationValue, struct libusb_config_descriptor **config);
444void libusb_free_config_descriptor(struct libusb_config_descriptor *config);
394typedef struct libusb_control_setup {
395 uint8_t bmRequestType;
396 uint8_t bRequest;
397 uint16_t wValue;
398 uint16_t wIndex;
399 uint16_t wLength;
400} libusb_control_setup;
401

--- 68 unchanged lines hidden (view full) ---

470
471/* USB Descriptors */
472
473int libusb_get_device_descriptor(libusb_device * dev, struct libusb_device_descriptor *desc);
474int libusb_get_active_config_descriptor(libusb_device * dev, struct libusb_config_descriptor **config);
475int libusb_get_config_descriptor(libusb_device * dev, uint8_t config_index, struct libusb_config_descriptor **config);
476int libusb_get_config_descriptor_by_value(libusb_device * dev, uint8_t bConfigurationValue, struct libusb_config_descriptor **config);
477void libusb_free_config_descriptor(struct libusb_config_descriptor *config);
478int libusb_get_ss_endpoint_companion_descriptor(struct libusb_context *ctx, const struct libusb_endpoint_descriptor *endpoint, struct libusb_ss_endpoint_companion_descriptor **ep_comp);
479void libusb_free_ss_endpoint_companion_descriptor(struct libusb_ss_endpoint_companion_descriptor *ep_comp);
445int libusb_get_string_descriptor(libusb_device_handle * devh, uint8_t desc_index, uint16_t langid, unsigned char *data, int length);
446int libusb_get_string_descriptor_ascii(libusb_device_handle * devh, uint8_t desc_index, uint8_t *data, int length);
447int libusb_get_descriptor(libusb_device_handle * devh, uint8_t desc_type, uint8_t desc_index, uint8_t *data, int length);
448int libusb_parse_ss_endpoint_comp(const void *buf, int len, struct libusb_ss_endpoint_companion_descriptor **ep_comp);
449void libusb_free_ss_endpoint_comp(struct libusb_ss_endpoint_companion_descriptor *ep_comp);
450int libusb_parse_bos_descriptor(const void *buf, int len, struct libusb_bos_descriptor **bos);
451void libusb_free_bos_descriptor(struct libusb_bos_descriptor *bos);
480int libusb_get_string_descriptor(libusb_device_handle * devh, uint8_t desc_index, uint16_t langid, unsigned char *data, int length);
481int libusb_get_string_descriptor_ascii(libusb_device_handle * devh, uint8_t desc_index, uint8_t *data, int length);
482int libusb_get_descriptor(libusb_device_handle * devh, uint8_t desc_type, uint8_t desc_index, uint8_t *data, int length);
483int libusb_parse_ss_endpoint_comp(const void *buf, int len, struct libusb_ss_endpoint_companion_descriptor **ep_comp);
484void libusb_free_ss_endpoint_comp(struct libusb_ss_endpoint_companion_descriptor *ep_comp);
485int libusb_parse_bos_descriptor(const void *buf, int len, struct libusb_bos_descriptor **bos);
486void libusb_free_bos_descriptor(struct libusb_bos_descriptor *bos);
487int libusb_get_bos_descriptor(libusb_device_handle *handle, struct libusb_bos_descriptor **bos);
488int libusb_get_usb_2_0_extension_descriptor(struct libusb_context *ctx, struct libusb_bos_dev_capability_descriptor *dev_cap, struct libusb_usb_2_0_extension_descriptor **usb_2_0_extension);
489void libusb_free_usb_2_0_extension_descriptor(struct libusb_usb_2_0_extension_descriptor *usb_2_0_extension);
490int libusb_get_ss_usb_device_capability_descriptor(struct libusb_context *ctx, struct libusb_bos_dev_capability_descriptor *dev_cap, struct libusb_ss_usb_device_capability_descriptor **ss_usb_device_capability);
491void libusb_free_ss_usb_device_capability_descriptor(struct libusb_ss_usb_device_capability_descriptor *ss_usb_device_capability);
492int libusb_get_container_id_descriptor(struct libusb_context *ctx, struct libusb_bos_dev_capability_descriptor *dev_cap, struct libusb_container_id_descriptor **container_id);
493void libusb_free_container_id_descriptor(struct libusb_container_id_descriptor *container_id);
452
453/* Asynchronous device I/O */
454
455struct libusb_transfer *libusb_alloc_transfer(int iso_packets);
456void libusb_free_transfer(struct libusb_transfer *transfer);
457int libusb_submit_transfer(struct libusb_transfer *transfer);
458int libusb_cancel_transfer(struct libusb_transfer *transfer);
459uint8_t *libusb_get_iso_packet_buffer(struct libusb_transfer *transfer, uint32_t index);

--- 49 unchanged lines hidden ---
494
495/* Asynchronous device I/O */
496
497struct libusb_transfer *libusb_alloc_transfer(int iso_packets);
498void libusb_free_transfer(struct libusb_transfer *transfer);
499int libusb_submit_transfer(struct libusb_transfer *transfer);
500int libusb_cancel_transfer(struct libusb_transfer *transfer);
501uint8_t *libusb_get_iso_packet_buffer(struct libusb_transfer *transfer, uint32_t index);

--- 49 unchanged lines hidden ---