usb_lookup_ep_data - Lookup endpoint information
#include <sys/usb/usba.h> usb_ep_data_t *usb_lookup_ep_data(dev_info_t *dip, usb_client_dev_data_t *dev_datap, uint_t interface, uint_t alternate, uint_t skip, uint_t type, uint_t direction);
Solaris DDI specific (Solaris DDI)
dip
dev_datap
interface
alternate
skip
type
direction
The usb_lookup_ep_data() function returns endpoint information from the tree embedded in client data returned from usb_get_dev_data. It operates on the current configuration (pointed to by the dev_curr_cfg field of the usb_client_dev_data_t argument). It skips the first <skip> number of endpoints it finds which match the specifications of the other arguments, and then retrieves information on the next matching endpoint it finds. Note that it does not make a copy of the data, but points to the tree itself.
On success: the tree node corresponding to the desired endpoint.
On failure: returns NULL. Fails if dip or dev_datap are NULL, if the desired endpoint does not exist in the tree, or no tree is present in dev_datap.
May be called from user, kernel or interrupt context.
Retrieve the polling interval for the second interrupt endpoint at interface 0, alt 3:
uint8_t interval = 0; usb_ep_data_t *ep_node = usb_lookup_ep_data( dip, dev_datap, 0, 3, 1, USB_EP_ATTR_INTR, USB_EP_DIR_IN); if (ep_node != NULL) { interval = ep_node->ep_descr.bInterval; }
Retrieve the maximum packet size for the first control pipe at interface 0, alt 4:
uint16_t maxPacketSize = 0; usb_ep_data_t *ep_node = usb_lookup_ep_data( dip, dev_datap, 0, 4, 0, USB_EP_ATTR_CONTROL, 0); if (ep_node != NULL) { maxPacketSize = ep_node->ep_descr.wMaxPacketSize; }
See attributes(5) for descriptions of the following attributes:
|
attributes(5), usb_get_dev_data(9F), usb_pipe_open(9F), usb_cfg_descr(9S), usb_if_descr(9S), usb_ep_descr(9S)
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |