wut v1.8.0
Wii U Toolchain
Loading...
Searching...
No Matches
uhs_usbspec.h
Go to the documentation of this file.
1#pragma once
2#include <wut.h>
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8/* USB class codes */
9#define USBCLASS_DEVICE 0x00
10#define USBCLASS_AUDIO 0x01
11#define USBCLASS_HID 0x03
12#define USBCLASS_STORAGE 0x08
13
18
19/* USB device descriptor */
20struct WUT_PACKED UhsDeviceDescriptor
21{
22 uint8_t bLength;
24 uint16_t bcdUsb;
25 uint8_t bDeviceClass;
29 uint16_t idVendor;
30 uint16_t idProduct;
31 uint16_t bcdDevice;
33 uint8_t iProduct;
36};
37WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x00, bLength);
38WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x01, bDescriptorType);
39WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x02, bcdUsb);
40WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x04, bDeviceClass);
41WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x05, bDeviceSubclass);
42WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x06, bDeviceProtocol);
43WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x07, bMaxPacketSize);
44WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x08, idVendor);
45WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x0A, idProduct);
46WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x0C, bcdDevice);
47WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x0E, iManufacturer);
48WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x0F, iProduct);
49WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x10, iSerialNumber);
50WUT_CHECK_OFFSET(UhsDeviceDescriptor, 0x11, bNumConfigurations);
51WUT_CHECK_SIZE(UhsDeviceDescriptor, 0x12);
52
53/* USB configuration descriptor */
54struct WUT_PACKED UhsConfigDescriptor
55{
56 uint8_t bLength;
58 uint16_t wTotalLength;
62 uint8_t bmAttributes;
63 uint8_t bMaxPower;
64};
65WUT_CHECK_OFFSET(UhsConfigDescriptor, 0x00, bLength);
66WUT_CHECK_OFFSET(UhsConfigDescriptor, 0x01, bDescriptorType);
67WUT_CHECK_OFFSET(UhsConfigDescriptor, 0x02, wTotalLength);
68WUT_CHECK_OFFSET(UhsConfigDescriptor, 0x04, bNumInterfaces);
69WUT_CHECK_OFFSET(UhsConfigDescriptor, 0x05, bConfigurationValue);
70WUT_CHECK_OFFSET(UhsConfigDescriptor, 0x06, iConfiguration);
71WUT_CHECK_OFFSET(UhsConfigDescriptor, 0x07, bmAttributes);
72WUT_CHECK_OFFSET(UhsConfigDescriptor, 0x08, bMaxPower);
73WUT_CHECK_SIZE(UhsConfigDescriptor, 0x09);
74
75/* USB interface descriptor */
88WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x00, bLength);
89WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x01, bDescriptorType);
90WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x02, bInterfaceNumber);
91WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x03, bAlternateSetting);
92WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x04, bNumEndpoints);
93WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x05, bInterfaceClass);
94WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x06, bInterfaceSubClass);
95WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x07, bInterfaceProtocol);
96WUT_CHECK_OFFSET(UhsInterfaceDescriptor, 0x08, iInterface);
97WUT_CHECK_SIZE(UhsInterfaceDescriptor, 0x09);
98
99/* USB setup packet */
100struct WUT_PACKED UhsSetupPacket
101{
103 uint8_t bRequest;
104 uint16_t wValue;
105 uint16_t wIndex;
106 uint16_t wLength;
107};
108WUT_CHECK_OFFSET(UhsSetupPacket, 0x00, bmRequestType);
109WUT_CHECK_OFFSET(UhsSetupPacket, 0x01, bRequest);
110WUT_CHECK_OFFSET(UhsSetupPacket, 0x02, wValue);
111WUT_CHECK_OFFSET(UhsSetupPacket, 0x04, wIndex);
112WUT_CHECK_OFFSET(UhsSetupPacket, 0x06, wLength);
113WUT_CHECK_SIZE(UhsSetupPacket, 0x08);
114
115#ifdef __cplusplus
116}
117#endif
uint16_t wLength
uint16_t wValue
uint8_t bNumConfigurations
Definition uhs_usbspec.h:35
uint8_t bmRequestType
uint16_t wIndex
uint8_t bConfigurationValue
Definition uhs_usbspec.h:60