#ifndef _KERNEL_DEVICE_USB_H #define _KERNEL_DEVICE_USB_H #include #include struct usb_desc_hdr { uint8_t length; uint8_t desc_type; } PACKED; struct usb_device_desc { struct usb_desc_hdr hdr; uint16_t bcd_usb; uint8_t dev_class; uint8_t dev_subclass; uint8_t dev_proto; uint8_t max_packet_size; uint16_t vendor_id; uint16_t product_id; uint16_t bcd_device; uint8_t manufacturer; uint8_t product; uint8_t serial_num; uint8_t num_configs; } PACKED; struct usb_string_lang_desc { struct usb_desc_hdr hdr; uint16_t langs[126]; } PACKED; struct usb_config_desc { struct usb_desc_hdr hdr; uint16_t total_length; uint8_t num_ifs; uint8_t config_value; uint8_t config; uint8_t attrs; uint8_t max_power; uint8_t data[245]; } PACKED; struct usb_if_desc { struct usb_desc_hdr hdr; uint8_t if_num; uint8_t alt_setting; uint8_t num_endpoints; uint8_t if_class; uint8_t if_subclass; uint8_t if_proto; uint8_t if1; } PACKED; struct usb_endpoint_desc { struct usb_desc_hdr hdr; uint8_t endpoint_addr; uint8_t attrs; uint16_t max_packet_size; uint8_t interval; } PACKED; #endif // _KERNEL_DEVICE_USB_H