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),

illumos January 5, 2004 USB_GET_STATUS(9F)