1 // Copyright © 2016, bitbegin
2 // Licensed under the MIT License <LICENSE.md>
3 //! USB Spec Definitions.
4 ENUM!{enum USB_DEVICE_SPEED {
5 UsbLowSpeed = 0,
6 UsbFullSpeed,
7 UsbHighSpeed,
8 UsbSuperSpeed,
9 }}
10 ENUM!{enum USB_DEVICE_TYPE {
11 Usb11Device = 0,
12 Usb20Device,
13 }}
14 STRUCT!{struct BM_REQUEST_TYPE {
15 _BM: ::UCHAR,
16 B: ::UCHAR,
17 }}
18 BITFIELD!{BM_REQUEST_TYPE _BM: ::UINT8 [
19 Recipient set_Recipient[0..2],
20 Reserved set_Reserved[2..5],
21 Type set_Type[5..7],
22 Dir set_Dir[7..8],
23 ]}
24 pub type PBM_REQUEST_TYPE = *mut BM_REQUEST_TYPE;
25
26 STRUCT!{#[repr(packed)] struct USB_CONFIGURATION_DESCRIPTOR {
27 bLength: ::UCHAR,
28 bDescriptorType: ::UCHAR,
29 wTotalLength: ::USHORT,
30 bNumInterfaces: ::UCHAR,
31 bConfigurationValue: ::UCHAR,
32 iConfiguration: ::UCHAR,
33 bmAttributes: ::UCHAR,
34 MaxPower: ::UCHAR,
35 }}
36 pub type PUSB_CONFIGURATION_DESCRIPTOR = *mut USB_CONFIGURATION_DESCRIPTOR;
37 #[test]
test_USB_CONFIGURATION_DESCRIPTOR_size()38 fn test_USB_CONFIGURATION_DESCRIPTOR_size() {
39 use std::mem::size_of;
40 assert_eq!(size_of::<USB_CONFIGURATION_DESCRIPTOR>(), 9)
41 }
42