52 #define POST_PACK __attribute__((__packed__))
53 #define ALIGNED(n) __attribute__((aligned (n)))
55 #define PRE_PACK __packed
57 #define ALIGNED(n) __align(n)
61 PRE_PACK
struct POST_PACK _WB_T
67 typedef struct _WB_T WB_T;
70 PRE_PACK
union POST_PACK __WORD_BYTE
76 typedef union __WORD_BYTE WORD_BYTE;
82 #define REQUEST_HOST_TO_DEVICE 0
84 #define REQUEST_DEVICE_TO_HOST 1
91 #define REQUEST_STANDARD 0
93 #define REQUEST_CLASS 1
95 #define REQUEST_VENDOR 2
97 #define REQUEST_RESERVED 3
104 #define REQUEST_TO_DEVICE 0
106 #define REQUEST_TO_INTERFACE 1
108 #define REQUEST_TO_ENDPOINT 2
110 #define REQUEST_TO_OTHER 3
114 PRE_PACK
struct POST_PACK _BM_T
116 uint8_t Recipient : 5;
121 typedef struct _BM_T BM_T;
124 PRE_PACK
union POST_PACK _REQUEST_TYPE
130 typedef union _REQUEST_TYPE REQUEST_TYPE;
136 #define USB_REQUEST_GET_STATUS 0
138 #define USB_REQUEST_CLEAR_FEATURE 1
140 #define USB_REQUEST_SET_FEATURE 3
142 #define USB_REQUEST_SET_ADDRESS 5
144 #define USB_REQUEST_GET_DESCRIPTOR 6
146 #define USB_REQUEST_SET_DESCRIPTOR 7
148 #define USB_REQUEST_GET_CONFIGURATION 8
150 #define USB_REQUEST_SET_CONFIGURATION 9
152 #define USB_REQUEST_GET_INTERFACE 10
154 #define USB_REQUEST_SET_INTERFACE 11
156 #define USB_REQUEST_SYNC_FRAME 12
163 #define USB_GETSTATUS_SELF_POWERED 0x01
165 #define USB_GETSTATUS_REMOTE_WAKEUP 0x02
167 #define USB_GETSTATUS_ENDPOINT_STALL 0x01
174 #define USB_FEATURE_ENDPOINT_STALL 0
176 #define USB_FEATURE_REMOTE_WAKEUP 1
178 #define USB_FEATURE_TEST_MODE 2
182 PRE_PACK
struct POST_PACK _USB_SETUP_PACKET
204 typedef struct _USB_SETUP_PACKET USB_SETUP_PACKET;
211 #define USB_DEVICE_DESCRIPTOR_TYPE 1
213 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 2
215 #define USB_STRING_DESCRIPTOR_TYPE 3
217 #define USB_INTERFACE_DESCRIPTOR_TYPE 4
219 #define USB_ENDPOINT_DESCRIPTOR_TYPE 5
221 #define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 6
223 #define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7
225 #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 8
227 #define USB_OTG_DESCRIPTOR_TYPE 9
229 #define USB_DEBUG_DESCRIPTOR_TYPE 10
231 #define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 11
238 #define USB_DEVICE_CLASS_RESERVED 0x00
240 #define USB_DEVICE_CLASS_AUDIO 0x01
242 #define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
244 #define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
246 #define USB_DEVICE_CLASS_MONITOR 0x04
248 #define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
250 #define USB_DEVICE_CLASS_POWER 0x06
252 #define USB_DEVICE_CLASS_PRINTER 0x07
254 #define USB_DEVICE_CLASS_STORAGE 0x08
256 #define USB_DEVICE_CLASS_HUB 0x09
258 #define USB_DEVICE_CLASS_MISCELLANEOUS 0xEF
260 #define USB_DEVICE_CLASS_APP 0xFE
262 #define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
269 #define USB_CONFIG_POWERED_MASK 0x40
271 #define USB_CONFIG_BUS_POWERED 0x80
273 #define USB_CONFIG_SELF_POWERED 0xC0
275 #define USB_CONFIG_REMOTE_WAKEUP 0x20
279 #define USB_CONFIG_POWER_MA(mA) ((mA)/2)
285 #define USB_ENDPOINT_DIRECTION_MASK 0x80
287 #define USB_ENDPOINT_OUT(addr) ((addr) | 0x00)
289 #define USB_ENDPOINT_IN(addr) ((addr) | 0x80)
296 #define USB_ENDPOINT_TYPE_MASK 0x03
298 #define USB_ENDPOINT_TYPE_CONTROL 0x00
300 #define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
302 #define USB_ENDPOINT_TYPE_BULK 0x02
304 #define USB_ENDPOINT_TYPE_INTERRUPT 0x03
306 #define USB_ENDPOINT_SYNC_MASK 0x0C
308 #define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00
310 #define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04
312 #define USB_ENDPOINT_SYNC_ADAPTIVE 0x08
314 #define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0C
316 #define USB_ENDPOINT_USAGE_MASK 0x30
318 #define USB_ENDPOINT_USAGE_DATA 0x00
320 #define USB_ENDPOINT_USAGE_FEEDBACK 0x10
322 #define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20
324 #define USB_ENDPOINT_USAGE_RESERVED 0x30
328 #define USB_ENDPOINT_0_HS_MAXP 64
330 #define USB_ENDPOINT_0_LS_MAXP 8
332 #define USB_ENDPOINT_BULK_HS_MAXP 512
335 PRE_PACK
struct POST_PACK _USB_DEVICE_DESCRIPTOR
401 typedef struct _USB_DEVICE_DESCRIPTOR USB_DEVICE_DESCRIPTOR;
404 PRE_PACK
struct POST_PACK _USB_DEVICE_QUALIFIER_DESCRIPTOR
417 typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR USB_DEVICE_QUALIFIER_DESCRIPTOR;
420 PRE_PACK
struct POST_PACK _USB_CONFIGURATION_DESCRIPTOR
477 typedef struct _USB_CONFIGURATION_DESCRIPTOR USB_CONFIGURATION_DESCRIPTOR;
480 PRE_PACK
struct POST_PACK _USB_INTERFACE_DESCRIPTOR
526 typedef struct _USB_INTERFACE_DESCRIPTOR USB_INTERFACE_DESCRIPTOR;
529 PRE_PACK
struct POST_PACK _USB_ENDPOINT_DESCRIPTOR
609 typedef struct _USB_ENDPOINT_DESCRIPTOR USB_ENDPOINT_DESCRIPTOR;
612 PRE_PACK
struct POST_PACK _USB_STRING_DESCRIPTOR
619 typedef struct _USB_STRING_DESCRIPTOR USB_STRING_DESCRIPTOR;
622 PRE_PACK
struct POST_PACK _USB_COMMON_DESCRIPTOR
628 typedef struct _USB_COMMON_DESCRIPTOR USB_COMMON_DESCRIPTOR;
631 PRE_PACK
struct POST_PACK _USB_OTHER_SPEED_CONFIGURATION
638 uint8_t IConfiguration;
643 typedef struct _USB_OTHER_SPEED_CONFIGURATION USB_OTHER_SPEED_CONFIGURATION;