29#ifdef USB_GLOBAL_INCLUDE_FILE
30#include USB_GLOBAL_INCLUDE_FILE
32#include <sys/stdint.h>
33#include <sys/stddef.h>
38#include <sys/kernel.h>
40#include <sys/module.h>
43#include <sys/condvar.h>
44#include <sys/sysctl.h>
46#include <sys/unistd.h>
47#include <sys/callout.h>
48#include <sys/malloc.h>
55#define USB_DEBUG_VAR usb_debug
87 start = (uint8_t *)cd;
89 desc = (uint8_t *)_desc;
103 if ((desc_next <
start) || (desc_next > end))
143 (
id->bLength >=
sizeof(*id))) {
152 DPRINTF(
"Interface(%u) has more than 256 alternate settings\n",
153 id->bInterfaceNumber);
163 if (ps->
desc == NULL) {
165 }
else if (new_iface) {
173#if (USB_IFACE_MAX <= 0)
174#error "USB_IFACE_MAX must be defined greater than zero"
178 DPRINTF(
"Interface limit reached\n");
301 ifaceno =
id->bInterfaceNumber;
310 if (
id->bInterfaceNumber == ifaceno) {
struct usb_descriptor * desc
#define UDESC_ENDPOINT_SS_COMP
struct usb_endpoint_descriptor desc
struct usb_endpoint_ss_comp_descriptor * usb_ed_comp_foreach(struct usb_config_descriptor *cd, struct usb_endpoint_ss_comp_descriptor *ped)
struct usb_endpoint_descriptor * usb_edesc_foreach(struct usb_config_descriptor *cd, struct usb_endpoint_descriptor *ped)
uint8_t usbd_get_no_descriptors(struct usb_config_descriptor *cd, uint8_t type)
struct usb_descriptor * usb_desc_foreach(struct usb_config_descriptor *cd, struct usb_descriptor *_desc)
struct usb_interface_descriptor * usb_idesc_foreach(struct usb_config_descriptor *cd, struct usb_idesc_parse_state *ps)
uint8_t usbd_get_no_alts(struct usb_config_descriptor *cd, struct usb_interface_descriptor *id)