1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef COMPONENTS_USB_SERVICE_USB_INTERFACE_H_ 6#define COMPONENTS_USB_SERVICE_USB_INTERFACE_H_ 7 8#include "base/memory/ref_counted.h" 9#include "components/usb_service/usb_service_export.h" 10 11namespace usb_service { 12 13enum UsbTransferType { 14 USB_TRANSFER_CONTROL = 0, 15 USB_TRANSFER_ISOCHRONOUS, 16 USB_TRANSFER_BULK, 17 USB_TRANSFER_INTERRUPT, 18}; 19 20enum UsbEndpointDirection { 21 USB_DIRECTION_INBOUND = 0, 22 USB_DIRECTION_OUTBOUND, 23}; 24 25enum UsbSynchronizationType { 26 USB_SYNCHRONIZATION_NONE = 0, 27 USB_SYNCHRONIZATION_ASYNCHRONOUS, 28 USB_SYNCHRONIZATION_ADAPTIVE, 29 USB_SYNCHRONIZATION_SYNCHRONOUS, 30}; 31 32enum UsbUsageType { 33 USB_USAGE_DATA = 0, 34 USB_USAGE_FEEDBACK, 35 USB_USAGE_EXPLICIT_FEEDBACK 36}; 37 38class USB_SERVICE_EXPORT UsbEndpointDescriptor 39 : public base::RefCounted<const UsbEndpointDescriptor> { 40 public: 41 virtual int GetAddress() const = 0; 42 virtual UsbEndpointDirection GetDirection() const = 0; 43 virtual int GetMaximumPacketSize() const = 0; 44 virtual UsbSynchronizationType GetSynchronizationType() const = 0; 45 virtual UsbTransferType GetTransferType() const = 0; 46 virtual UsbUsageType GetUsageType() const = 0; 47 virtual int GetPollingInterval() const = 0; 48 49 protected: 50 friend class base::RefCounted<const UsbEndpointDescriptor>; 51 52 UsbEndpointDescriptor() {}; 53 virtual ~UsbEndpointDescriptor() {}; 54 55 DISALLOW_COPY_AND_ASSIGN(UsbEndpointDescriptor); 56}; 57 58class USB_SERVICE_EXPORT UsbInterfaceAltSettingDescriptor 59 : public base::RefCounted<const UsbInterfaceAltSettingDescriptor> { 60 public: 61 virtual size_t GetNumEndpoints() const = 0; 62 virtual scoped_refptr<const UsbEndpointDescriptor> GetEndpoint( 63 size_t index) const = 0; 64 65 virtual int GetInterfaceNumber() const = 0; 66 virtual int GetAlternateSetting() const = 0; 67 virtual int GetInterfaceClass() const = 0; 68 virtual int GetInterfaceSubclass() const = 0; 69 virtual int GetInterfaceProtocol() const = 0; 70 71 protected: 72 friend class base::RefCounted<const UsbInterfaceAltSettingDescriptor>; 73 74 UsbInterfaceAltSettingDescriptor() {}; 75 virtual ~UsbInterfaceAltSettingDescriptor() {}; 76 77 DISALLOW_COPY_AND_ASSIGN(UsbInterfaceAltSettingDescriptor); 78}; 79 80class USB_SERVICE_EXPORT UsbInterfaceDescriptor 81 : public base::RefCounted<const UsbInterfaceDescriptor> { 82 public: 83 virtual size_t GetNumAltSettings() const = 0; 84 virtual scoped_refptr<const UsbInterfaceAltSettingDescriptor> GetAltSetting( 85 size_t index) const = 0; 86 87 protected: 88 friend class base::RefCounted<const UsbInterfaceDescriptor>; 89 90 UsbInterfaceDescriptor() {}; 91 virtual ~UsbInterfaceDescriptor() {}; 92 93 DISALLOW_COPY_AND_ASSIGN(UsbInterfaceDescriptor); 94}; 95 96class USB_SERVICE_EXPORT UsbConfigDescriptor 97 : public base::RefCounted<UsbConfigDescriptor> { 98 public: 99 virtual size_t GetNumInterfaces() const = 0; 100 virtual scoped_refptr<const UsbInterfaceDescriptor> GetInterface( 101 size_t index) const = 0; 102 103 protected: 104 friend class base::RefCounted<UsbConfigDescriptor>; 105 106 UsbConfigDescriptor() {}; 107 virtual ~UsbConfigDescriptor() {}; 108 109 DISALLOW_COPY_AND_ASSIGN(UsbConfigDescriptor); 110}; 111 112} // namespace usb_service; 113 114#endif // COMPONENTS_USB_SERVICE_USB_INTERFACE_H_ 115