Open Lighting Architecture  Latest Git
Public Member Functions | List of all members
ola::usb::AsynchronousLibUsbAdaptor Class Reference

Detailed Description

A LibUsbAdaptor for use with Asynchronous widgets.

Asynchronous mode requires notifying the LibUsbThread when handles are opened and closed.

Inheritance diagram for ola::usb::AsynchronousLibUsbAdaptor:
Inheritance graph
[legend]
Collaboration diagram for ola::usb::AsynchronousLibUsbAdaptor:
Collaboration graph
[legend]

Public Member Functions

 AsynchronousLibUsbAdaptor (class LibUsbThread *thread)
 
bool OpenDevice (libusb_device *usb_device, libusb_device_handle **usb_handle)
 Open a libusb device. More...
 
bool OpenDeviceAndClaimInterface (libusb_device *usb_device, int interface, libusb_device_handle **usb_handle)
 Open a libusb device and claim an interface. More...
 
void Close (libusb_device_handle *usb_handle)
 Close a libusb handle. More...
 
int ControlTransfer (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)
 Wraps libusb_control_transfer(). More...
 
int BulkTransfer (struct libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout)
 Wraps libusb_bulk_transfer. More...
 
int InterruptTransfer (libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *actual_length, unsigned int timeout)
 Wraps libusb_interrupt_transfer. More...
 
- Public Member Functions inherited from ola::usb::BaseLibUsbAdaptor
libusb_device * RefDevice (libusb_device *dev)
 Wraps libusb_ref_device. More...
 
void UnrefDevice (libusb_device *dev)
 Wraps libusb_unref_device. More...
 
int SetConfiguration (libusb_device_handle *dev, int configuration)
 Wraps libusb_set_configuration. More...
 
int ClaimInterface (libusb_device_handle *dev, int interface_number)
 Wraps libusb_claim_interface. More...
 
int DetachKernelDriver (libusb_device_handle *dev, int interface_number)
 Detach a kernel driver. More...
 
int GetDeviceDescriptor (libusb_device *dev, struct libusb_device_descriptor *descriptor)
 Wraps libusb_get_device_descriptor. More...
 
int GetActiveConfigDescriptor (libusb_device *dev, struct libusb_config_descriptor **config)
 Wraps libusb_get_active_config_descriptor. More...
 
int GetConfigDescriptor (libusb_device *dev, uint8_t config_index, struct libusb_config_descriptor **config)
 Wraps libusb_get_config_descriptor. More...
 
void FreeConfigDescriptor (struct libusb_config_descriptor *config)
 Wraps busb_free_config_descriptor. More...
 
bool GetStringDescriptor (libusb_device_handle *usb_handle, uint8_t descriptor_index, std::string *data)
 Get the value of a string descriptor. More...
 
struct libusb_transfer * AllocTransfer (int iso_packets)
 Wraps libusb_alloc_transfer. More...
 
void FreeTransfer (struct libusb_transfer *transfer)
 Wraps libusb_free_transfer. More...
 
int SubmitTransfer (struct libusb_transfer *transfer)
 Wraps libusb_submit_transfer. More...
 
int CancelTransfer (struct libusb_transfer *transfer)
 Wraps libusb_cancel_transfer. More...
 
void FillControlSetup (unsigned char *buffer, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, uint16_t wLength)
 Wraps libusb_fill_control_setup. More...
 
void FillControlTransfer (struct libusb_transfer *transfer, libusb_device_handle *dev_handle, unsigned char *buffer, libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)
 Wraps libusb_fill_control_transfer. More...
 
void FillBulkTransfer (struct libusb_transfer *transfer, libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *buffer, int length, libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)
 Wraps libusb_fill_bulk_transfer. More...
 
void FillInterruptTransfer (struct libusb_transfer *transfer, libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *buffer, int length, libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)
 Wraps libusb_fill_interrupt_transfer. More...
 
USBDeviceID GetDeviceId (libusb_device *device) const
 Get the USBDeviceID for a device. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ola::usb::LibUsbAdaptor
static bool Initialize (struct libusb_context **context)
 Initialize a new libusb context. More...
 
static bool GetDeviceInfo (struct libusb_device *usb_device, const struct libusb_device_descriptor &device_descriptor, DeviceInformation *device_info)
 Fetch the manufacturer, product and serial strings from a device. More...
 
static bool CheckManufacturer (const std::string &expected, const DeviceInformation &device_info)
 Check if the manufacturer string matches the expected value. More...
 
static bool CheckProduct (const std::string &expected, const DeviceInformation &device_info)
 Check if the product string matches the expected value. More...
 
static bool HotplugSupported ()
 Check if this platform supports hotplug. More...
 
static std::string ErrorCodeToString (const int error_code)
 Try and convert an error code to a string. More...
 

Member Function Documentation

◆ BulkTransfer()

int ola::usb::AsynchronousLibUsbAdaptor::BulkTransfer ( struct libusb_device_handle *  dev_handle,
unsigned char  endpoint,
unsigned char *  data,
int  length,
int *  transferred,
unsigned int  timeout 
)
virtual

Wraps libusb_bulk_transfer.

Returns
0 on success and populates transferred
LIBUSB_ERROR_TIMEOUT if the transfer timed out (and populates transferred)
LIBUSB_ERROR_PIPE if the endpoint halted
LIBUSB_ERROR_OVERFLOW if the device offered more data, see
LIBUSB_ERROR_NO_DEVICE if the device has been disconnected
another LIBUSB_ERROR code on other failures

Reimplemented from ola::usb::BaseLibUsbAdaptor.

◆ Close()

void ola::usb::AsynchronousLibUsbAdaptor::Close ( libusb_device_handle *  usb_handle)
virtual

Close a libusb handle.

Parameters
usb_handlethe handle to close.

Implements ola::usb::LibUsbAdaptor.

◆ ControlTransfer()

int ola::usb::AsynchronousLibUsbAdaptor::ControlTransfer ( 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 
)
virtual

Wraps libusb_control_transfer().

Parameters
dev_handlea handle for the device to communicate with
bmRequestTypethe request type field for the setup packet
bRequestthe request field for the setup packet
wValuethe value field for the setup packet
wIndexthe index field for the setup packet
[in,out]dataa suitably-sized data buffer for either input or output (depending on direction bits within bmRequestType)
wLengththe length field for the setup packet. The data buffer should be at least this size.
timeouttimeout (in milliseconds) that this function should wait before giving up due to no response being received. For an unlimited timeout, use value 0.
Returns
on success, the number of bytes actually transferred

Reimplemented from ola::usb::BaseLibUsbAdaptor.

◆ InterruptTransfer()

int ola::usb::AsynchronousLibUsbAdaptor::InterruptTransfer ( libusb_device_handle *  dev_handle,
unsigned char  endpoint,
unsigned char *  data,
int  length,
int *  actual_length,
unsigned int  timeout 
)
virtual

Wraps libusb_interrupt_transfer.

Returns
0 on success and populates transferred
LIBUSB_ERROR_TIMEOUT if the transfer timed out
LIBUSB_ERROR_PIPE if the endpoint halted
LIBUSB_ERROR_OVERFLOW if the device offered more data, see
LIBUSB_ERROR_NO_DEVICE if the device has been disconnected
another LIBUSB_ERROR code on other error

Reimplemented from ola::usb::BaseLibUsbAdaptor.

◆ OpenDevice()

bool ola::usb::AsynchronousLibUsbAdaptor::OpenDevice ( libusb_device *  usb_device,
libusb_device_handle **  usb_handle 
)
virtual

Open a libusb device.

Parameters
usb_deviceThe usb device to open.
[out]usb_handlethe new device handle.
Returns
true if the device was opened, false otherwise.

Implements ola::usb::LibUsbAdaptor.

◆ OpenDeviceAndClaimInterface()

bool ola::usb::AsynchronousLibUsbAdaptor::OpenDeviceAndClaimInterface ( libusb_device *  usb_device,
int  interface,
libusb_device_handle **  usb_handle 
)
virtual

Open a libusb device and claim an interface.

Parameters
usb_deviceThe usb device to open.
interfacethe interface index to claim.
[out]usb_handlethe new device handle.
Returns
true if the device was opened and the interface claimed, false otherwise.

Implements ola::usb::LibUsbAdaptor.


The documentation for this class was generated from the following files: