12 #define LE_WORD(x) (x&0xFF), (x>>8)
19 REQ_CODE_GET_STATUS = 0,
20 REQ_CODE_CLEAR_FEATURE = 1,
21 REQ_CODE_SET_FEATURE = 3,
22 REQ_CODE_SET_ADDR = 5,
23 REQ_CODE_GET_DESC = 6,
24 REQ_CODE_SET_DESC = 7,
25 REQ_CODE_GET_CONFIG = 8,
26 REQ_CODE_SET_CONFIG = 9,
27 REQ_CODE_GET_INTERFACE = 10,
28 REQ_CODE_SET_INTERFACE = 11,
29 REQ_CODE_SYNCH_FRAME = 12,
34 RECIPIENT_INTERFACE = 1,
35 RECIPIENT_ENDPOINT = 2,
47 DIR_HOST_TO_DEVICE = 0,
48 DIR_DEVICE_TO_HOST = 1,
54 SETUP_RECIPIENT recipient :5;
60 SETUP_REQ_CODE bRequest;
64 }__attribute__((__packed__)) USB_SETUP_PACKET;
71 DESC_TYPE_INTERFACE = 4,
72 DESC_TYPE_ENDPOINT = 5,
73 DESC_TYPE_DEVICE_QUALIFIER = 6,
74 DESC_TYPE_OTHER_SPEED_CONF = 7,
75 DESC_TYPE_INTERFACE_POWER = 8,
89 uint16_t remoteWakeup :1;
90 uint16_t selfPowered :1;
97 uint8_t bDescriptorType;
100 uint8_t bDeviceSubClass;
101 uint8_t bDeviceProtocol;
102 uint8_t bMaxPacketSize0;
106 uint8_t iManufacturer;
108 uint8_t iSerialNumber;
109 uint8_t bNumConfigurations;
110 }__attribute__((__packed__)) USB_DESC_DEVICE;
114 uint8_t bDescriptorType;
115 uint16_t wTotalLength;
116 uint8_t bNumInterfaces;
117 uint8_t bConfigurationValue;
118 uint8_t iConfiguration;
119 uint8_t bmAttributes;
121 }__attribute__((__packed__)) USB_DESC_CONFIG;
123 const static uint8_t DESC_CONFIG_ATTR_RESERVED = 0x80;
124 const static uint8_t DESC_CONFIG_ATTR_SELF_POWERED = 0x40;
125 const static uint8_t DESC_CONFIG_ATTR_REMOTE_WAKEUP = 0x20;
133 CLASS_PHYSICAL = 0x05,
135 CLASS_PRINTER = 0x07,
136 CLASS_MASS_STORAGE = 0x08,
138 CLASS_CDC_DATA = 0x0a,
139 CLASS_SMART_CARD = 0x0b,
140 CLASS_SECURITY = 0x0d,
142 CLASS_HEALTHCARE = 0x0f,
143 CLASS_DIAG_DEVICE = 0xdc,
144 CLASS_WIRELESS = 0xe0,
146 CLASS_APP_SPECIFIC = 0xfe,
147 CLASS_VEND_SPECIFIC = 0xff
152 SUB_CLASS_LOG_OUT = 0x65,
153 SUB_CLASS_COM = 0x66,
154 SUB_CLASS_TRACE = 0x67
155 } EMBKERNEL_SUB_CLASS;
159 uint8_t bDescriptorType;
160 uint8_t bInterfaceNumber;
161 uint8_t bAlternateSetting;
162 uint8_t bNumEndpoints;
163 CLASS bInterfaceClass;
164 uint8_t bInterfaceSubClass;
165 uint8_t bInterfaceProtocol;
167 }__attribute__((__packed__)) USB_DESC_INTERFACE;
170 EP_TRANSF_TYPE_CTRL = 0x00,
171 EP_TRANSF_TYPE_ISO = 0x01,
172 EP_TRANSF_TYPE_BULK = 0x02,
173 EP_TRANSF_TYPE_INT = 0x03,
178 uint8_t bDescriptorType;
185 EP_TRANSF_TYPE transferType :2;
190 uint16_t wMaxPacketSize;
192 }__attribute__((__packed__)) USB_DESC_EP;
196 uint8_t bDescriptorType;
197 }__attribute__((__packed__)) USB_DESC_COMMON;
199 const static
size_t MAX_PACKET_SIZE = 64;
210 uint8_t bytes[MAX_PACKET_SIZE];
212 }__attribute__((__packed__)) PKT;