usbd_setup_vendor()

Set up a URB for a vendor-specific transfer

Synopsis:

#include <sys/usbdi.h>

int usbd_setup_vendor( struct usbd_urb *urb,
                       uint32_t flags,
                       uint16_t request, 
                       uint16_t rtype,
                       uint16_t value, 
                       uint16_t index,
                       void *addr, 
                       uint32_t len );

Arguments:

urb
An opaque handle (from usbd_alloc_urb()).
flags
One of the following:

You can optionally OR in the following:

request
A device-specific request.
rtype
The type of request; one of the following:

ORed with one of the following:

value
This varies, depending on the request. It's used for passing a parameter to the device.
index
This varies, depending on the request. It's used for passing a parameter to the device.
addr
The address for the start of the transfer. You must use the buffer allocated by usbd_alloc().
len
The length (in bytes) of the data transfer.

Library:

libusbdi

Description:

This routine sets up a URB for a vendor-specific transfer.


Note: For this release of the USB DDK, vendor requests are synchronous only. Therefore, the func parameter in usbd_io() must be NULL.

Returns:

EOK
Success.

Classification:

QNX Neutrino, QNX 4

Safety:
Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes

Caveats:

To ensure that the correct physical address will be used, you must use the buffer allocated by usbd_alloc() for the addr parameter.

See also:

usbd_descriptor(), usbd_feature(), usbd_io(), usbd_setup_bulk(), usbd_setup_control(), usbd_setup_interrupt(), usbd_setup_isochronous(), usbd_status()