10#include <usb_langid.h>
12enum class eDesc_t : uint8_t {
19 eDesc_Other_Spd_Cfg = 0x07,
23 eDesc_IntfAssoc = 0x0B,
25 eDesc_CS_EndPt = 0x25,
28enum class eDevClassID_t : uint8_t {
29 eClassID_UseIntf = 0x00,
32 eClassID_BillBoard = 0x11,
33 eClassID_Diagnostic = 0xDC,
35 eClassID_Vendor = 0xFF
39enum class eClassID_t : uint8_t {
40 eClassID_Audio = 0x01,
43 eClassID_Physical = 0x05,
44 eClassID_StillImage = 0x06,
48 eClassID_CDC_Data = 0x0A,
49 eClassID_SmartCard = 0x0B,
50 eClassID_ContentSec = 0x0C,
51 eClassID_Video = 0x0D,
52 eClassID_Health = 0x0F,
54 eClassID_BillBoard = 0x11,
55 eClassID_USBC_Bridge = 0x12,
56 eClassID_Diagnostic = 0xDC,
57 eClassID_Wireless = 0xE0,
60 eClassID_Vendor = 0xFF
63enum class eSubClass_CDC_t : uint8_t {
64 eSubClass_CDC_DLC = 0x01,
65 eSubClass_CDC_ACM = 0x02,
66 eSubClass_CDC_PSTN = 0x03,
67 eSubClass_CDC_MC = 0x04,
68 eSubClass_CDC_CAPI = 0x05,
69 eSubClass_CDC_Eth = 0x06,
70 eSubClass_CDC_ATM = 0x07,
71 eSubClass_CDC_WHS = 0x08,
72 eSubClass_CDC_Mgmnt = 0x09,
73 eSubClass_CDC_MobDLC = 0x0A,
74 eSubClass_CDC_OBEX = 0x0B,
75 eSubClass_CDC_EthEmu = 0x0C,
76 eSubClass_CDC_NetCtl = 0x0D,
79enum class eProto_CDC_t : uint8_t {
80 eProto_CDC_None = 0x00,
81 eProto_CDC_V250 = 0x01,
82 eProto_CDC_PCCA = 0x02,
83 eProto_CDC_PCCA_ANX = 0x03,
84 eProto_CDC_GSM = 0x04,
86 eProto_CDC_CDMA = 0x06,
87 eProto_CDC_EthEm = 0x07,
88 eProto_CDC_Ext = 0xFE,
90 eProto_CDC_Vendor = 0xFF,
93enum class eProto_CDCData_t : uint8_t {
94 eProto_CDCData_None = 0x00,
95 eProto_CDCDATA_NetBlock = 0x01,
96 eProto_CDCDATA_ISDN_BRI = 0x30,
97 eProto_CDCDATA_HDLC = 0x31,
98 eProto_CDCDATA_TRN = 0x32,
99 eProto_CDCDATA_Q921_Mgmnt = 0x50,
100 eProto_CDCDATA_Q921_Data = 0x51,
101 eProto_CDCDATA_Q921_Mplx = 0x52,
102 eProto_CDCDATA_V42_Cmprss = 0x90,
103 eProto_CDCDATA_EU_ISDN_Ctl = 0x91,
104 eProto_CDCDATA_V24_ISDN = 0x92,
105 eProto_CDCDATA_CAPI_Cmd = 0x93,
106 eProto_CDCDATA_Host_Cfg = 0xFD,
107 eProto_CDCDATA_Ext = 0xFE,
109 eProto_CDCDATA_Vendor = 0xFF,
112enum class eSubClass_HID_t : uint8_t {
113 eSubClass_HID_None = 0x00,
114 eSubClass_HID_Boot = 0x01,
117enum class eProto_HID_t : uint8_t {
118 eProto_HID_None = 0x00,
119 eProto_HID_Keyboard = 0x01,
120 eProto_HID_Mouse = 0x02,
123enum class eSubClass_AVD_t : uint8_t {
124 eSubClass_AVD_Ctl = 0x01,
125 eSubClass_AVD_Video = 0x02,
126 eSubClass_AVD_Audio = 0x03,
129enum class eProtoHub_t : uint8_t {
132 eProtoHub_MutiTT = 0x02,
135enum class eCfgAttr_t : uint8_t {
136 eCfgAttr_RemoteWkup = 0x20,
137 eCfgAttr_SelfPwr = 0x40,
140enum class eEndPt_t : uint8_t {
146 eEndPt_INVALID = 0xFF
149enum class eIsoSync_t : uint8_t {
150 eIsoSync_None = 0x00,
151 eIsoSync_Async = 0x01,
152 eIsoSync_Adapt = 0x02,
153 eIsoSync_Synch = 0x03,
156enum class eIsoUsage_t : uint8_t {
157 eIsoUsage_Data = 0x00,
158 eIsoUsage_Feedback = 0x01,
159 eIsoUsage_Implicit = 0x02,
166 uint8_t bDescriptorType;
170struct usb_desc_str_zero_t {
172 uint8_t bDescriptorType;
174} __attribute__((packed));
176struct usb_desc_str_t {
178 uint8_t bDescriptorType;
180} __attribute__((packed));
185 uint8_t bDescriptorType;
186 uint8_t bEndpointAddress;
190 uint8_t bmAttributes;
191 leuint16_t wMaxPacketSize;
212} __attribute__((packed));
213#define USB_DESC_ENDPT_SIZE (7)
217struct usb_intf_assoc_t {
219 uint8_t bDescriptorType;
220 uint8_t bFirstInterface;
221 uint8_t bInterfaceCount;
222 uint8_t bFunctionClass;
223 uint8_t bFunctionSubClass;
224 uint8_t bFunctionProtocol;
226} __attribute__((packed));
227#define USB_DESC_INTF_ASSOC_SIZE (8)
233 uint8_t bDescriptorType;
234 uint8_t bInterfaceNumber;
235 uint8_t bAlternateSetting;
236 uint8_t bNumEndpoints;
237 uint8_t bInterfaceClass;
238 uint8_t bInterfaceSubClass;
239 uint8_t bInterfaceProtocol;
243 const usb_intf_t *pAltSetting;
244 const usb_intf_assoc_t *pIntfAssoc;
245 const usb_endpt_t *endpt;
248} __attribute__((packed));
249#define USB_DESC_INTF_SIZE (9)
255 uint8_t bDescriptorType;
256 leuint16_t wTotalLength;
259 uint8_t bNumInterfaces;
260 uint8_t bConfigurationValue;
261 uint8_t iConfiguration;
262 uint8_t bmAttributes;
266 const usb_intf_t *intf;
268} __attribute__((packed));
269#define USB_DESC_CFG_SIZE (9)
273struct usb_other_spd_t {
275 uint8_t bDescriptorType;
276 leuint16_t wTotalLength;
279 uint8_t bNumInterfaces;
280 uint8_t bConfigurationValue;
281 uint8_t iConfiguration;
282 uint8_t bmAttributes;
286 const usb_intf_t *intf;
289} __attribute__((packed));
290#define USB_DESC_OTHER_SPD_SIZE (9)
300struct usb_dev_qual_t {
302 uint8_t bDescriptorType;
304 uint8_t bDeviceClass;
305 uint8_t bDeviceSubClass;
306 uint8_t bDeviceProtocol;
307 uint8_t bMaxPacketSize0;
308 uint8_t bNumConfigurations;
310} __attribute__((packed));
311#define USB_DESC_DEV_QUALIFIER_SIZE (10)
317 uint8_t bDescriptorType;
319 uint8_t bDeviceClass;
320 uint8_t bDeviceSubClass;
321 uint8_t bDeviceProtocol;
322 uint8_t bMaxPacketSize0;
324 leuint16_t idProduct;
325 leuint16_t bcdDevice;
326 uint8_t iManufacture;
328 uint8_t iSerialNumber;
329 uint8_t bNumConfigurations;
330} __attribute__((packed));
331#define USB_DESC_DEVICE_SIZE (18)