openusb_xfer_wait, openusb_xfer_aio

Name

openusb_xfer_wait, openusb_xfer_aio -- Issue synchronous I/O request, Issue asynchronous I/O request

Synopsis

int32_t openusb_xfer_wait(openusb_request_handle_t handle);

int32_topenusb_xfer_aio(openusb_request_handle_t handle);

Parameters

handle - Pointer to request handle.

Elements in openusb_request_handle structure:

    
    	   openusb_dev_handle_t     dev; /* device handle */
    	   uint8_t                 interface;      /* ignored for ep0 */
    	   uint8_t                 endpoint; 
    	   openusb_transfer_type_t  type; /* transfer type */
    
    	   union openusb_request {
    	       openusb_ctrl_request_t   *ctrl;
    	       openusb_intr_request_t   *intr;
    	       openusb_bulk_request_t   *bulk;
    	       openusb_isoc_request_t   *isoc;
    	   } req;
    
    	   int32_t (*cb)(struct openusb_request_handle *handle); /* callback of this request */
    	   void    *arg;   /* additional arg for callback */
       

Description

openusb_xfer_wait() can be called by application to do synchronous USB transfers. Alternately, application can call openusb_xfer_aio() to do asynchronous USB transfer.

For both functions, application should allocate a request handle and fill required parameters in it. When application calls openusb_xfer_wait(), they don't have to set request callback. For openusb_xfer_aio(), if application wants to use openusb_wait() or openusb_poll() to get completed request, it must not set callback cb in the request handle. (In implementation of OpenUSB, if cb is not NULL, it will be called immediately after this request is accomplished. Otherwise, the completed request is put on a list for application to retrieve by using openusb_wait/openusb_poll )

Return Value

openusb_xfer_wait(), openusb_xfer_aio() returns 0 on success. Otherwise, a openusb error is returned. NOTE, when an error happens, it just means submission of this request fails. The data status should be checked in result of individual request type.

OPENUSB_SUCCESS - No errors.

OPENUSB_BADARG - handle or elements in handle is not valid.

OPENUSB_UNKNOWN_DEVICE - Device handle dev is not valid.

OPENUSB_PLATFORM_FAILURE - Unspecified kernel/driver failure.

OPENUSB_NO_RESOURCES - Memory allocation failure.

OPENUSB_IO_* - USB host controller errors.

See Also

openusb_wait, openusb_poll