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