libusb
|
This page documents libusb's synchronous (blocking) API for USB device I/O. More...
Functions | |
int | libusb_control_transfer (libusb_device_handle *dev_handle, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, unsigned char *data, uint16_t wLength, unsigned int timeout) |
Perform a USB control transfer. | |
int | libusb_bulk_transfer (struct libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout) |
Perform a USB bulk transfer. | |
int | libusb_interrupt_transfer (struct libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout) |
Perform a USB interrupt transfer. |
This page documents libusb's synchronous (blocking) API for USB device I/O.
This interface is easy to use but has some limitations. More advanced users may wish to consider using the asynchronous I/O API instead.
int libusb_control_transfer | ( | libusb_device_handle * | dev_handle, |
uint8_t | bmRequestType, | ||
uint8_t | bRequest, | ||
uint16_t | wValue, | ||
uint16_t | wIndex, | ||
unsigned char * | data, | ||
uint16_t | wLength, | ||
unsigned int | timeout | ||
) |
Perform a USB control transfer.
The direction of the transfer is inferred from the bmRequestType field of the setup packet.
The wValue, wIndex and wLength fields values should be given in host-endian byte order.
dev_handle | a handle for the device to communicate with |
bmRequestType | the request type field for the setup packet |
bRequest | the request field for the setup packet |
wValue | the value field for the setup packet |
wIndex | the index field for the setup packet |
data | a suitably-sized data buffer for either input or output (depending on direction bits within bmRequestType) |
wLength | the length field for the setup packet. The data buffer should be at least this size. |
timeout | timeout (in millseconds) that this function should wait before giving up due to no response being received. For an unlimited timeout, use value 0. |
int libusb_bulk_transfer | ( | struct libusb_device_handle * | dev_handle, |
unsigned char | endpoint, | ||
unsigned char * | data, | ||
int | length, | ||
int * | transferred, | ||
unsigned int | timeout | ||
) |
Perform a USB bulk transfer.
The direction of the transfer is inferred from the direction bits of the endpoint address.
For bulk reads, the length
field indicates the maximum length of data you are expecting to receive. If less data arrives than expected, this function will return that data, so be sure to check the transferred
output parameter.
You should also check the transferred
parameter for bulk writes. Not all of the data may have been written.
Also check transferred
when dealing with a timeout error code. libusb may have to split your transfer into a number of chunks to satisfy underlying O/S requirements, meaning that the timeout may expire after the first few chunks have completed. libusb is careful not to lose any data that may have been transferred; do not assume that timeout conditions indicate a complete lack of I/O.
dev_handle | a handle for the device to communicate with |
endpoint | the address of a valid endpoint to communicate with |
data | a suitably-sized data buffer for either input or output (depending on endpoint) |
length | for bulk writes, the number of bytes from data to be sent. for bulk reads, the maximum number of bytes to receive into the data buffer. |
transferred | output location for the number of bytes actually transferred. |
timeout | timeout (in millseconds) that this function should wait before giving up due to no response being received. For an unlimited timeout, use value 0. |
transferred
) transferred
) int libusb_interrupt_transfer | ( | struct libusb_device_handle * | dev_handle, |
unsigned char | endpoint, | ||
unsigned char * | data, | ||
int | length, | ||
int * | transferred, | ||
unsigned int | timeout | ||
) |
Perform a USB interrupt transfer.
The direction of the transfer is inferred from the direction bits of the endpoint address.
For interrupt reads, the length
field indicates the maximum length of data you are expecting to receive. If less data arrives than expected, this function will return that data, so be sure to check the transferred
output parameter.
You should also check the transferred
parameter for interrupt writes. Not all of the data may have been written.
Also check transferred
when dealing with a timeout error code. libusb may have to split your transfer into a number of chunks to satisfy underlying O/S requirements, meaning that the timeout may expire after the first few chunks have completed. libusb is careful not to lose any data that may have been transferred; do not assume that timeout conditions indicate a complete lack of I/O.
The default endpoint bInterval value is used as the polling interval.
dev_handle | a handle for the device to communicate with |
endpoint | the address of a valid endpoint to communicate with |
data | a suitably-sized data buffer for either input or output (depending on endpoint) |
length | for bulk writes, the number of bytes from data to be sent. for bulk reads, the maximum number of bytes to receive into the data buffer. |
transferred | output location for the number of bytes actually transferred. |
timeout | timeout (in millseconds) that this function should wait before giving up due to no response being received. For an unlimited timeout, use value 0. |
transferred
)