Open Lighting Architecture  Latest Git
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
ola::plugin::usbdmx::AsyncUsbTransceiverBase Class Referenceabstract

Detailed Description

A base class that implements common functionality to send or receive DMX asynchronously to a libusb_device.

Inheritance diagram for ola::plugin::usbdmx::AsyncUsbTransceiverBase:
Inheritance graph
Collaboration diagram for ola::plugin::usbdmx::AsyncUsbTransceiverBase:
Collaboration graph

Public Member Functions

 AsyncUsbTransceiverBase (ola::usb::LibUsbAdaptor *const adaptor, libusb_device *usb_device)
 Create a new AsyncUsbTransceiverBase. More...
virtual ~AsyncUsbTransceiverBase ()
bool Init ()
 Initialize the transceiver. More...
virtual void TransferComplete (struct libusb_transfer *transfer)=0
 Called from the libusb callback when the asynchronous transfer completes. More...
libusb_device_handle * GetHandle ()
 Get the libusb_device_handle of an already opened widget. More...

Protected Types


Protected Member Functions

virtual libusb_device_handle * SetupHandle ()=0
 Open the device handle. More...
virtual void PostTransferHook ()
 Called when the transfer completes. More...
void CancelTransfer ()
 Cancel any pending transfers.
void FillControlTransfer (unsigned char *buffer, unsigned int timeout)
 Fill a control transfer. More...
void FillBulkTransfer (unsigned char endpoint, unsigned char *buffer, int length, unsigned int timeout)
 Fill a bulk transfer.
void FillInterruptTransfer (unsigned char endpoint, unsigned char *buffer, int length, unsigned int timeout)
 Fill an interrupt transfer.
int SubmitTransfer ()
 Submit the transfer for tx. More...

Protected Attributes

ola::usb::LibUsbAdaptor *const m_adaptor
 The LibUsbAdaptor passed in the constructor.
libusb_device *const m_usb_device
 The libusb_device passed in the constructor.
libusb_device_handle * m_usb_handle
bool m_suppress_continuation
struct libusb_transfer * m_transfer
TransferState m_transfer_state
ola::thread::Mutex m_mutex

Constructor & Destructor Documentation

ola::plugin::usbdmx::AsyncUsbTransceiverBase::AsyncUsbTransceiverBase ( ola::usb::LibUsbAdaptor *const  adaptor,
libusb_device *  usb_device 

Create a new AsyncUsbTransceiverBase.

adaptorthe LibUsbAdaptor to use.
usb_devicethe libusb_device to use for the widget.

Member Function Documentation

void ola::plugin::usbdmx::AsyncUsbTransceiverBase::FillControlTransfer ( unsigned char *  buffer,
unsigned int  timeout 

Fill a control transfer.

bufferpassed to libusb_fill_control_transfer.
timeoutpassed to libusb_fill_control_transfer.
libusb_device_handle* ola::plugin::usbdmx::AsyncUsbTransceiverBase::GetHandle ( )

Get the libusb_device_handle of an already opened widget.

the handle of the widget or NULL if it was not opened
bool ola::plugin::usbdmx::AsyncUsbTransceiverBase::Init ( )

Initialize the transceiver.

true if SetupHandle() returned a valid handle, false otherwise.
virtual void ola::plugin::usbdmx::AsyncUsbTransceiverBase::PostTransferHook ( )

Called when the transfer completes.

Some devices require multiple transfers per DMX frame. This provides a hook for continuation.

Reimplemented in ola::plugin::usbdmx::DMXCProjectsNodleU1AsyncUsbSender, ola::plugin::usbdmx::VellemanAsyncUsbSender, ola::plugin::usbdmx::DMXCreator512BasicAsyncUsbSender, and ola::plugin::usbdmx::AsyncUsbSender.

virtual libusb_device_handle* ola::plugin::usbdmx::AsyncUsbTransceiverBase::SetupHandle ( )
protectedpure virtual
int ola::plugin::usbdmx::AsyncUsbTransceiverBase::SubmitTransfer ( )

Submit the transfer for tx.

the result of libusb_submit_transfer().
virtual void ola::plugin::usbdmx::AsyncUsbTransceiverBase::TransferComplete ( struct libusb_transfer *  transfer)
pure virtual

Called from the libusb callback when the asynchronous transfer completes.

transferthe completed transfer.

Implemented in ola::plugin::usbdmx::AsyncUsbReceiver, and ola::plugin::usbdmx::AsyncUsbSender.

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