11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef DEVICE_USB_USB_DESCRIPTORS_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define DEVICE_USB_USB_DESCRIPTORS_H_ 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <stdint.h> 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <vector> 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace device { 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum UsbTransferType { 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_TRANSFER_CONTROL = 0, 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_TRANSFER_ISOCHRONOUS, 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_TRANSFER_BULK, 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_TRANSFER_INTERRUPT, 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum UsbEndpointDirection { 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_DIRECTION_INBOUND = 0, 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_DIRECTION_OUTBOUND, 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum UsbSynchronizationType { 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_SYNCHRONIZATION_NONE = 0, 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_SYNCHRONIZATION_ASYNCHRONOUS, 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_SYNCHRONIZATION_ADAPTIVE, 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_SYNCHRONIZATION_SYNCHRONOUS, 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum UsbUsageType { 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_USAGE_DATA = 0, 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_USAGE_FEEDBACK, 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci USB_USAGE_EXPLICIT_FEEDBACK 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct UsbEndpointDescriptor { 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UsbEndpointDescriptor(); 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~UsbEndpointDescriptor(); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef std::vector<UsbEndpointDescriptor>::const_iterator Iterator; 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint8_t address; 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UsbEndpointDirection direction; 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint16_t maximum_packet_size; 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UsbSynchronizationType synchronization_type; 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UsbTransferType transfer_type; 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UsbUsageType usage_type; 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint16_t polling_interval; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<uint8_t> extra_data; 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct UsbInterfaceDescriptor { 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UsbInterfaceDescriptor(); 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~UsbInterfaceDescriptor(); 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef std::vector<UsbInterfaceDescriptor>::const_iterator Iterator; 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint8_t interface_number; 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint8_t alternate_setting; 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint8_t interface_class; 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint8_t interface_subclass; 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint8_t interface_protocol; 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<UsbEndpointDescriptor> endpoints; 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<uint8_t> extra_data; 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct UsbConfigDescriptor { 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UsbConfigDescriptor(); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~UsbConfigDescriptor(); 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint8_t configuration_value; 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool self_powered; 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool remote_wakeup; 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint16_t maximum_power; 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<UsbInterfaceDescriptor> interfaces; 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<uint8_t> extra_data; 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace device 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // DEVICE_USB_USB_DESCRIPTORS_H_ 84