QUsbEndpoint Class
This class handles transfers between endpoints and the host. More...
Header: | #include <QUsbEndpoint> |
qmake: | QT += usb |
Inherits: | QIODevice |
Note: All functions in this class are reentrant.
Public Types
enum | Status { transferCompleted, transferError, transferTimeout, transferCanceled, transferStall, …, transferOverflow } |
enum | Type { controlEndpoint, isochronousEndpoint, bulkEndpoint, interruptEndpoint, streamEndpoint } |
enum | bRequest { requestGetStatus, requestClearFeature, requestSetFeature, requestSetAddress, requestGetDescriptor, …, requestIsochDelay } |
enum | bmRequestType { requestStandard, requestClass, requestVendor, requestReserved, recipientDevice, …, recipientOther } |
Properties
Public Functions
QUsbEndpoint(QUsbDevice *dev, QUsbEndpoint::Type type, quint8 ep) | |
virtual | ~QUsbEndpoint() |
quint8 | endpoint() const |
void | makeControlPacket(char *buffer, QUsbEndpoint::bmRequestType bmRequestType, QUsbEndpoint::bRequest bRequest, quint16 wValue, quint16 wIndex, quint16 wLength) const |
bool | poll() |
bool | polling() |
void | setPolling(bool enable) |
QUsbEndpoint::Status | status() const |
QUsbEndpoint::Type | type() const |
Reimplemented Public Functions
virtual qint64 | bytesAvailable() const override |
virtual qint64 | bytesToWrite() const override |
virtual void | close() override |
virtual bool | isSequential() const override |
virtual bool | open(QIODevice::OpenMode mode) override |
virtual bool | waitForBytesWritten(int msecs) override |
virtual bool | waitForReadyRead(int msecs) override |
Public Slots
void | cancelTransfer() |
Signals
void | error(QUsbEndpoint::Status error) |
Reimplemented Protected Functions
virtual qint64 | readData(char *data, qint64 maxSize) override |
virtual qint64 | writeData(const char *data, qint64 maxSize) override |
Detailed Description
It works on top of libusb's async module. The QUsbDevice is set as parent object. You need one object per endpoint and direction.
Member Type Documentation
enum QUsbEndpoint::Status
This enum describres the last transfer status.
Constant | Value | Description |
---|---|---|
QUsbEndpoint::transferCompleted | 0 | Transfer completed without errors. At least one byte transfered. |
QUsbEndpoint::transferError | 1 | Transfer completed with unknown error. |
QUsbEndpoint::transferTimeout | 2 | Transfer timed out. |
QUsbEndpoint::transferCanceled | 3 | Transfer canceled. |
QUsbEndpoint::transferStall | 4 | Transfer stalled (most likely hardware issue). |
QUsbEndpoint::transferNoDevice | 5 | Device not found. |
QUsbEndpoint::transferOverflow | 6 | More data received than requested. |
enum QUsbEndpoint::Type
This enum describres the type of endpoint this object handles.
Constant | Value |
---|---|
QUsbEndpoint::controlEndpoint | 0 |
QUsbEndpoint::isochronousEndpoint | 1 |
QUsbEndpoint::bulkEndpoint | 2 |
QUsbEndpoint::interruptEndpoint | 3 |
QUsbEndpoint::streamEndpoint | 4 |
enum QUsbEndpoint::bRequest
This enum describres a bRequest packet.
Constant | Value |
---|---|
QUsbEndpoint::requestGetStatus | 0x00 |
QUsbEndpoint::requestClearFeature | 0x01 |
QUsbEndpoint::requestSetFeature | 0x03 |
QUsbEndpoint::requestSetAddress | 0x05 |
QUsbEndpoint::requestGetDescriptor | 0x06 |
QUsbEndpoint::requestSetDescriptor | 0x07 |
QUsbEndpoint::requestGetConfiguration | 0x08 |
QUsbEndpoint::requestSetConfiguration | 0x09 |
QUsbEndpoint::requestGetInterface | 0x0A |
QUsbEndpoint::requestSetInterface | 0x0B |
QUsbEndpoint::requestSynchFrame | 0x0C |
QUsbEndpoint::requestSetSel | 0x30 |
QUsbEndpoint::requestIsochDelay | 0x31 |
enum QUsbEndpoint::bmRequestType
This enum describres a bmRequestType packet.
Constant | Value |
---|---|
QUsbEndpoint::requestStandard | (0x00 << 5) |
QUsbEndpoint::requestClass | (0x01 << 5) |
QUsbEndpoint::requestVendor | (0x02 << 5) |
QUsbEndpoint::requestReserved | (0x03 << 5) |
QUsbEndpoint::recipientDevice | 0x00 |
QUsbEndpoint::recipientInterface | 0x01 |
QUsbEndpoint::recipientEndpoint | 0x02 |
QUsbEndpoint::recipientOther | 0x03 |
Property Documentation
[read-only]
endpoint : const quint8
endpoint.
Access functions:
quint8 | endpoint() const |
polling : bool
polling status.
Access functions:
bool | polling() |
void | setPolling(bool enable) |
[read-only]
type : const Type
Transfer type.
Access functions:
QUsbEndpoint::Type | type() const |
Member Function Documentation
QUsbEndpoint::QUsbEndpoint(QUsbDevice *dev, QUsbEndpoint::Type type, quint8 ep)
QUsbEndpoint constructor.
This create an object of the given type for the ep endpoint.
dev will be set as parent object.
[slot]
void QUsbEndpoint::cancelTransfer()
[signal]
void QUsbEndpoint::error(QUsbEndpoint::Status error)
emits a signal on any transfer error.
[virtual]
QUsbEndpoint::~QUsbEndpoint()
Will cancel all transfers on exit.
[override virtual]
qint64 QUsbEndpoint::bytesAvailable() const
Reimplements: QIODevice::bytesAvailable() const.
Bytes available to read.
[override virtual]
qint64 QUsbEndpoint::bytesToWrite() const
Reimplements: QIODevice::bytesToWrite() const.
Bytes left to write.
[override virtual]
void QUsbEndpoint::close()
Reimplements: QIODevice::close().
Close the transfer.
This will cancel any ongoing transfers.
quint8 QUsbEndpoint::endpoint() const
Returns the transfer endpoint
.
Note: Getter function for property endpoint.
[override virtual]
bool QUsbEndpoint::isSequential() const
Reimplements: QIODevice::isSequential() const.
Always returns true
.
void QUsbEndpoint::makeControlPacket(char *buffer, QUsbEndpoint::bmRequestType bmRequestType, QUsbEndpoint::bRequest bRequest, quint16 wValue, quint16 wIndex, quint16 wLength) const
Create a control packet using buffer, bmRequestType, bRequest, wValue, bRequest, wIndex, wLength.
[override virtual]
bool QUsbEndpoint::open(QIODevice::OpenMode mode)
Open the endpoint with mode.
Returns true
on success.
bool QUsbEndpoint::poll()
Manual IN (read) polling.
return true
if successful.
bool QUsbEndpoint::polling()
Get polling status.
return true
if enabled.
Note: Getter function for property polling.
See also setPolling().
[override virtual protected]
qint64 QUsbEndpoint::readData(char *data, qint64 maxSize)
Reimplements: QIODevice::readData(char *data, qint64 maxSize).
/reimp
Read maxSize bytes from the internal buffer to data.
Returns read
bytes.
void QUsbEndpoint::setPolling(bool enable)
enable or disable automating polling.
Note: Setter function for property polling.
See also polling().
QUsbEndpoint::Status QUsbEndpoint::status() const
Get the endpoint status
.
QUsbEndpoint::Type QUsbEndpoint::type() const
Returns the
transfer type.
Note: Getter function for property type.
[override virtual]
bool QUsbEndpoint::waitForBytesWritten(int msecs)
Reimplements: QIODevice::waitForBytesWritten(int msecs).
Wait for at least one byte to be written for msecs milliseconds.
Returns true
if any data was written before timeout.
[override virtual]
bool QUsbEndpoint::waitForReadyRead(int msecs)
Reimplements: QIODevice::waitForReadyRead(int msecs).
Wait for at least one byte to be available for msecs milliseconds.
Returns true
if any data was read before timeout.
[override virtual protected]
qint64 QUsbEndpoint::writeData(const char *data, qint64 maxSize)
Reimplements: QIODevice::writeData(const char *data, qint64 maxSize).
Copies maxSize bytes from data to the internal write buffer and schedules an OUT transfer.
Returns bytes
written to the buffer.