Return status information on a URB
#include <sys/usbdi.h>
int usbd_urb_status( struct usbd_urb *urb, 
                     uint32_t *status, 
                     uint32_t *len )
- urb
 
- An opaque handle (from usbd_alloc_urb()).
 
- status
 
- Completion status (see below).
 
- len
 
- The actual length (in bytes) of the data transfer.
 
libusbdi
You use the usbd_urb_status() function to extract
completion status and data-transfer length from a URB.
The status field contains the completion status
information, which includes the following flags:
- USBD_STATUS_INPROG          
 
- The operation is in progress.
            
 
- USBD_STATUS_CMP             
 
- The operation is complete.
               
 
- USBD_STATUS_CMP_ERR         
 
- The operation is complete, but an error occurred.
           
 
- USBD_STATUS_TIMEOUT         
 
- The operation timed out.
           
 
- USBD_STATUS_ABORTED         
 
- The operation aborted.
           
 
- USBD_STATUS_CRC_ERR         
 
- The last packet from the endpoint contained a CRC error.
           
 
- USBD_STATUS_BITSTUFFING     
 
- The last packet from the endpoint contained a bit-stuffing violation.
       
 
- USBD_STATUS_TOGGLE_MISMATCH 
 
- The last packet from the endpoint had the wrong data-toggle PID.
   
 
- USBD_STATUS_STALL           
 
- The endpoint returned a STALL PID.
             
 
- USBD_STATUS_DEV_NOANSWER    
 
- Device didn't respond to token (IN) or didn't provide a handshake (OUT).
      
 
- USBD_STATUS_PID_FAILURE     
 
- Check bits on PID from endpoint failed on data PID (IN) or handshake (OUT).
       
 
- USBD_STATUS_BAD_PID         
 
- Receive PID was invalid or undefined.
           
 
- USBD_STATUS_DATA_OVERRUN    
 
- The endpoint returned more data than the allowable maximum.
      
 
- USBD_STATUS_DATA_UNDERRUN   
 
- The endpoint didn't return enough data to fill the specified buffer.
     
 
- USBD_STATUS_BUFFER_OVERRUN  
 
- During an IN, the host controller received data from the
endpoint faster than it could be written to system memory.
    
 
- USBD_STATUS_BUFFER_UNDERRUN 
 
- During an OUT, the host controller couldn't retrieve data fast enough.
   
 
- USBD_STATUS_NOT_ACCESSED    
 
- Controller didn't execute request.
      
 
- EOK
 
- Success.
 
- EBUSY
 
- URB I/O still active.
 
- ETIMEDOUT
 
- Timeout occurred.
 
- EINTR
 
- Operation aborted/interrupted.
 
- ENODEV
 
- Device removed.
 
- EIO
 
- I/O error.
 
QNX Neutrino, QNX 4
| Safety: |  | 
| Cancellation point | 
    No | 
| Interrupt handler | 
    No | 
| Signal handler | 
    No | 
| Thread | 
    Yes | 
usbd_args_lookup(),
usbd_configuration_descriptor(),
usbd_device_lookup(),
usbd_device_extra(),
usbd_device_descriptor(),
usbd_endpoint_descriptor(),
usbd_hcd_info(),
usbd_hub_descriptor(),
usbd_interface_descriptor(),
usbd_languages_descriptor(),
usbd_parse_descriptors(),
usbd_string()