Open Lighting Architecture
Latest Git
|
A base class that implements common functionality to send or receive DMX asynchronously to a libusb_device.
Public Member Functions | |
AsyncUsbTransceiverBase (ola::usb::LibUsbAdaptor *const adaptor, libusb_device *usb_device) | |
Create a new AsyncUsbTransceiverBase. More... | |
virtual | ~AsyncUsbTransceiverBase () |
Destructor. | |
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 | |
enum | TransferState { IDLE, IN_PROGRESS, DISCONNECTED } |
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 |
ola::plugin::usbdmx::AsyncUsbTransceiverBase::AsyncUsbTransceiverBase | ( | ola::usb::LibUsbAdaptor *const | adaptor, |
libusb_device * | usb_device | ||
) |
Create a new AsyncUsbTransceiverBase.
adaptor | the LibUsbAdaptor to use. |
usb_device | the libusb_device to use for the widget. |
|
protected |
Fill a control transfer.
buffer | passed to libusb_fill_control_transfer. |
timeout | passed to libusb_fill_control_transfer. |
|
inline |
Get the libusb_device_handle of an already opened widget.
bool ola::plugin::usbdmx::AsyncUsbTransceiverBase::Init | ( | ) |
Initialize the transceiver.
|
inlineprotectedvirtual |
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.
|
protectedpure virtual |
Open the device handle.
Implemented in ola::plugin::usbdmx::DMXCProjectsNodleU1AsyncUsbSender, ola::plugin::usbdmx::VellemanAsyncUsbSender, ola::plugin::usbdmx::DMXCProjectsNodleU1AsyncUsbReceiver, ola::plugin::usbdmx::FadecandyAsyncUsbSender, ola::plugin::usbdmx::ShowJockeyDMXU1AsyncUsbSender, ola::plugin::usbdmx::EuroliteProAsyncUsbSender, ola::plugin::usbdmx::DMXCreator512BasicAsyncUsbSender, ola::plugin::usbdmx::SunliteAsyncUsbSender, ola::plugin::usbdmx::AnymaAsyncUsbSender, and ola::plugin::usbdmx::AVLdiyAsyncUsbSender.
|
protected |
Submit the transfer for tx.
|
pure virtual |
Called from the libusb callback when the asynchronous transfer completes.
transfer | the completed transfer. |
Implemented in ola::plugin::usbdmx::AsyncUsbReceiver, and ola::plugin::usbdmx::AsyncUsbSender.