Open Lighting Architecture  Latest Git
Public Member Functions | Protected Member Functions | List of all members
ola::plugin::usbdmx::AsyncUsbReceiver Class Referenceabstract

Detailed Description

A base class that receives DMX data asynchronously from a libusb_device.

This encapsulates much of the asynchronous libusb logic. Subclasses should implement the SetupHandle() and PerformTransfer() methods.

Inheritance diagram for ola::plugin::usbdmx::AsyncUsbReceiver:
Inheritance graph
[legend]
Collaboration diagram for ola::plugin::usbdmx::AsyncUsbReceiver:
Collaboration graph
[legend]

Public Member Functions

 AsyncUsbReceiver (ola::usb::LibUsbAdaptor *const adaptor, libusb_device *usb_device, PluginAdaptor *plugin_adaptor)
 Create a new AsyncUsbReceiver. More...
 
virtual ~AsyncUsbReceiver ()
 Destructor.
 
bool Init ()
 Initialize the receiver. More...
 
bool Init (libusb_device_handle *handle)
 Initialize the receiver with an already setup handle. More...
 
bool Start ()
 Start receiving DMX. More...
 
void SetReceiveCallback (Callback0< void > *callback)
 Set the callback to be called when the receive buffer is updated. More...
 
void GetDmx (DmxBuffer *buffer)
 Get DMX Buffer. More...
 
void TransferComplete (struct libusb_transfer *transfer)
 Called from the libusb callback when the asynchronous transfer completes. More...
 
- Public Member Functions inherited from ola::plugin::usbdmx::AsyncUsbTransceiverBase
 AsyncUsbTransceiverBase (ola::usb::LibUsbAdaptor *const adaptor, libusb_device *usb_device)
 Create a new AsyncUsbTransceiverBase. More...
 
virtual ~AsyncUsbTransceiverBase ()
 Destructor.
 
bool Init ()
 Initialize the transceiver. More...
 
libusb_device_handle * GetHandle ()
 Get the libusb_device_handle of an already opened widget. More...
 

Protected Member Functions

virtual bool PerformTransfer ()=0
 Start the request of data from the widget. More...
 
virtual bool TransferCompleted (DmxBuffer *buffer, int transferred_size)=0
 Called when the transfer completes. More...
 
- Protected Member Functions inherited from ola::plugin::usbdmx::AsyncUsbTransceiverBase
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...
 

Additional Inherited Members

- Protected Types inherited from ola::plugin::usbdmx::AsyncUsbTransceiverBase
enum  TransferState { IDLE, IN_PROGRESS, DISCONNECTED }
 
- Protected Attributes inherited from ola::plugin::usbdmx::AsyncUsbTransceiverBase
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

◆ AsyncUsbReceiver()

ola::plugin::usbdmx::AsyncUsbReceiver::AsyncUsbReceiver ( ola::usb::LibUsbAdaptor *const  adaptor,
libusb_device *  usb_device,
PluginAdaptor plugin_adaptor 
)

Create a new AsyncUsbReceiver.

Parameters
adaptorthe LibUsbAdaptor to use.
usb_devicethe libusb_device to use for the widget.
plugin_adaptorthe PluginAdaptor to use for the widget.

Member Function Documentation

◆ GetDmx()

void ola::plugin::usbdmx::AsyncUsbReceiver::GetDmx ( DmxBuffer buffer)
inline

Get DMX Buffer.

Parameters
bufferDmxBuffer that will get updated with the current input.

◆ Init() [1/2]

bool ola::plugin::usbdmx::AsyncUsbReceiver::Init ( )

Initialize the receiver.

Returns
true if SetupHandle() returned a valid handle, false otherwise.

◆ Init() [2/2]

bool ola::plugin::usbdmx::AsyncUsbReceiver::Init ( libusb_device_handle *  handle)

Initialize the receiver with an already setup handle.

Parameters
handlethe handle returned by a previous SetupHandle() call
Returns
true

◆ PerformTransfer()

virtual bool ola::plugin::usbdmx::AsyncUsbReceiver::PerformTransfer ( )
protectedpure virtual

Start the request of data from the widget.

Returns
true if the transfer was scheduled, false otherwise.

This method is implemented by the subclass. The subclass should call FillControlTransfer() / FillBulkTransfer() as appropriate and then call SubmitTransfer().

Implemented in ola::plugin::usbdmx::DMXCProjectsNodleU1AsyncUsbReceiver.

◆ SetReceiveCallback()

void ola::plugin::usbdmx::AsyncUsbReceiver::SetReceiveCallback ( Callback0< void > *  callback)
inline

Set the callback to be called when the receive buffer is updated.

Parameters
callbackThe callback to call.

◆ Start()

bool ola::plugin::usbdmx::AsyncUsbReceiver::Start ( )

Start receiving DMX.

Returns
the value of PerformTransfer().

◆ TransferComplete()

void ola::plugin::usbdmx::AsyncUsbReceiver::TransferComplete ( struct libusb_transfer *  transfer)
virtual

Called from the libusb callback when the asynchronous transfer completes.

Parameters
transferthe completed transfer.

Implements ola::plugin::usbdmx::AsyncUsbTransceiverBase.

◆ TransferCompleted()

virtual bool ola::plugin::usbdmx::AsyncUsbReceiver::TransferCompleted ( DmxBuffer buffer,
int  transferred_size 
)
protectedpure virtual

Called when the transfer completes.

Parameters
bufferthe DmxBuffer to receive into
transferred_sizethe number of bytes actually transferred returns true if the buffer was updated

Implemented in ola::plugin::usbdmx::DMXCProjectsNodleU1AsyncUsbReceiver.


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