diff options
author | Brian Cully <bjc@kublai.com> | 2019-08-04 15:28:37 -0400 |
---|---|---|
committer | Brian Cully <bjc@kublai.com> | 2019-08-04 16:01:04 -0400 |
commit | 54e051b7dfbfde9083ce4becd80718ea642114fd (patch) | |
tree | b8353bebc8270e87bd9443dd3f6f07b2ab0cef2c /src/descriptor.rs | |
download | usb-host-54e051b7dfbfde9083ce4becd80718ea642114fd.tar.gz usb-host-54e051b7dfbfde9083ce4becd80718ea642114fd.zip |
Initial commit.v0.1.0
Diffstat (limited to 'src/descriptor.rs')
-rw-r--r-- | src/descriptor.rs | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/descriptor.rs b/src/descriptor.rs new file mode 100644 index 0000000..8461413 --- /dev/null +++ b/src/descriptor.rs @@ -0,0 +1,68 @@ +#[derive(Clone, Copy, Debug)] +pub enum DescriptorType { + Device = 1, + Configuration = 2, + String = 3, + Interface = 4, + Endpoint = 5, + DeviceQualifier = 6, + OtherSpeed = 7, + InterfacePower = 8, +} + +#[derive(Copy, Clone, Debug)] +#[repr(C, packed)] +pub struct DeviceDescriptor { + pub b_length: u8, + pub b_descriptor_type: DescriptorType, + pub bcd_usb: u16, + pub b_device_class: u8, + pub b_device_sub_class: u8, + pub b_device_protocol: u8, + pub b_max_packet_size: u8, + pub id_vendor: u16, + pub id_product: u16, + pub bcd_device: u16, + pub i_manufacturer: u8, + pub i_product: u8, + pub i_serial_number: u8, + pub b_num_configurations: u8, +} + +#[derive(Copy, Clone, Debug)] +#[repr(C, packed)] +pub struct ConfigurationDescriptor { + pub b_length: u8, + pub b_descriptor_type: DescriptorType, + pub w_total_length: u16, + pub b_num_interfaces: u8, + pub b_configuration_value: u8, + pub i_configuration: u8, + pub bm_attributes: u8, + pub b_max_power: u8, +} + +#[derive(Copy, Clone, Debug)] +#[repr(C, packed)] +pub struct InterfaceDescriptor { + pub b_length: u8, + pub b_descriptor_type: DescriptorType, + pub b_interface_number: u8, + pub b_alternate_setting: u8, + pub b_num_endpoints: u8, + pub b_interface_class: u8, + pub b_interface_sub_class: u8, + pub b_interface_protocol: u8, + pub i_interface: u8, +} + +#[derive(Copy, Clone, Debug)] +#[repr(C, packed)] +pub struct EndpointDescriptor { + pub b_length: u8, + pub b_descriptor_type: DescriptorType, + pub b_endpoint_address: u8, + pub bm_attributes: u8, + pub w_max_packet_size: u16, + pub b_interval: u8, +} |