// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef DEVICE_USB_USB_DESCRIPTORS_H_ #define DEVICE_USB_USB_DESCRIPTORS_H_ #include #include #include "base/strings/string16.h" namespace device { enum UsbTransferType { USB_TRANSFER_CONTROL = 0, USB_TRANSFER_ISOCHRONOUS, USB_TRANSFER_BULK, USB_TRANSFER_INTERRUPT, }; enum UsbEndpointDirection { USB_DIRECTION_INBOUND = 0, USB_DIRECTION_OUTBOUND, }; enum UsbSynchronizationType { USB_SYNCHRONIZATION_NONE = 0, USB_SYNCHRONIZATION_ASYNCHRONOUS, USB_SYNCHRONIZATION_ADAPTIVE, USB_SYNCHRONIZATION_SYNCHRONOUS, }; enum UsbUsageType { USB_USAGE_DATA = 0, USB_USAGE_FEEDBACK, USB_USAGE_EXPLICIT_FEEDBACK }; struct UsbEndpointDescriptor { UsbEndpointDescriptor(); ~UsbEndpointDescriptor(); uint8_t address; UsbEndpointDirection direction; uint16_t maximum_packet_size; UsbSynchronizationType synchronization_type; UsbTransferType transfer_type; UsbUsageType usage_type; uint16_t polling_interval; std::vector extra_data; }; struct UsbInterfaceDescriptor { UsbInterfaceDescriptor(); ~UsbInterfaceDescriptor(); uint8_t interface_number; uint8_t alternate_setting; uint8_t interface_class; uint8_t interface_subclass; uint8_t interface_protocol; std::vector endpoints; std::vector extra_data; }; struct UsbConfigDescriptor { UsbConfigDescriptor(); ~UsbConfigDescriptor(); uint8_t configuration_value; bool self_powered; bool remote_wakeup; uint16_t maximum_power; std::vector interfaces; std::vector extra_data; }; bool ParseUsbStringDescriptor(const std::vector& descriptor, base::string16* output); } // namespace device #endif // DEVICE_USB_USB_DESCRIPTORS_H_