USB_GET_STATUS(9F)      Kernel Functions for Drivers      USB_GET_STATUS(9F)
NAME
       usb_get_status - Get status of a USB device/endpoint/interface
SYNOPSIS
       #include <sys/usb/usba.h>       
int usb_get_status(
dev_info_t *dip, 
usb_pipe_handle_t pipe_handle,            
uint_t request_type, 
uint_t which, 
uint16_t *status,            
usb_flags_t flags);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI)
PARAMETERS
       dip                       Pointer to device's dev_info structure.       
pipe_handle                       Default control pipe handle on which request is made.       
request_type                       bmRequestType. Either:
                       USB_DEV_REQ_RCPT_DEV -- Get device status.
                       USB_DEV_REQ_RCPT_IF -- Get interface status.
                       USB_DEV_REQ_RCPT_EP -- Get endpoint status.       
which                       Device, interface or endpoint from which to get
                       status.  Either  number of interface or endpoint, or
                       0 if device status requested.       
status                       Address into which the status is written.       
flags                       None are recognized.
DESCRIPTION
       The 
usb_get_status() function returns the status of a device,
       interface or endpoint.  All status requests use the default control
       pipe. Length of data returned is USB_GET_STATUS_LEN bytes.  Always
       block and wait for resources if not available, regardless of the
       flags argument.
       When the 
request_type recipient is USB_DEV_REQ_RCPT_DEV, device
       status is requested. Status returned includes bits for
       USB_DEV_SLF_PWRD_STATUS (device is currently  self-powered) and
       USB_DEV_RWAKEUP_STATUS (device has remote  wakeup enabled). A set bit
       indicates the corresponding status.
       When the 
request_type is USB_DEV_REQ_RCPT_EP, endpoint status is
       requested. Status returned includes bits for USB_EP_HALT_STATUS
       (endpoint is halted). A set bit indicates the corresponding status.
       When the 
request_type is USB_DEV_REQ_RCPT_IF, interface status is
       requested and USB_IF_STATUS (zero) is returned.
RETURN VALUES
       USB_SUCCESS                           Status returned successfully in the status
                           argument.       
USB_INVALID_ARGS                           Status pointer and/or dip argument is NULL.       
USB_INVALID_PIPE                           Pipe handle is NULL.       
USB_FAILURE                           Status not returned successfully.
CONTEXT
       May be called from user or kernel context.
EXAMPLES
           uint16_t status;
           if (usb_get_status(
               dip, pipe_handle, USB_DEV_REQ_RCPT_DEV, 0 &status, 0) ==
               USB_SUCCESS) {
                   if (status & USB_DEV_SLF_PWRD_STATUS) {
                           cmn_err (CE_WARN,
                               "%s%d: USB device is running on its own power.",
                               ddi_driver_name(dip), ddi_get_instance(dip));
                   }
           }
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-------------------+
       |  ATTRIBUTE TYPE    |  ATTRIBUTE VALUE  |
       +--------------------+-------------------+
       |Architecture        | PCI-based systems |
       +--------------------+-------------------+
       |Interface stability | Committed         |
       +--------------------+-------------------+
SEE ALSO
       attributes(7), 
usb_clr_feature(9F), 
usb_get_alt_if(9F),       
usb_pipe_get_state(9F), 
usb_get_cfg(9F),
                               January 5, 2004            USB_GET_STATUS(9F)