blob: a432bdf289f405ece27c0d20c29cde781a5373ee [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@available(added=7)
library fuchsia.hardware.usb.descriptor;
// USB standard descriptor specifications.
type UsbSpeed = strict enum : uint32 {
UNDEFINED = 0;
FULL = 1;
LOW = 2;
HIGH = 3;
SUPER = 4;
ENHANCED_SUPER = 5;
};
@packed
type UsbSetup = struct {
bm_request_type uint8;
b_request uint8;
w_value uint16;
w_index uint16;
w_length uint16;
};
@packed
type UsbDeviceDescriptor = struct {
b_length uint8;
b_descriptor_type uint8;
bcd_usb uint16;
b_device_class uint8;
b_device_sub_class uint8;
b_device_protocol uint8;
b_max_packet_size0 uint8;
id_vendor uint16;
id_product uint16;
bcd_device uint16;
i_manufacturer uint8;
i_product uint8;
i_serial_number uint8;
b_num_configurations uint8;
};
@packed
type UsbSsEpCompDescriptor = struct {
b_length uint8;
b_descriptor_type uint8;
b_max_burst uint8;
bm_attributes uint8;
w_bytes_per_interval uint16;
};
@packed
type UsbEndpointDescriptor = struct {
b_length uint8;
b_descriptor_type uint8;
b_endpoint_address uint8;
bm_attributes uint8;
w_max_packet_size uint16;
b_interval uint8;
};
@packed
type UsbInterfaceDescriptor = struct {
b_length uint8;
b_descriptor_type uint8;
b_interface_number uint8;
b_alternate_setting uint8;
b_num_endpoints uint8;
b_interface_class uint8;
b_interface_sub_class uint8;
b_interface_protocol uint8;
i_interface uint8;
};