• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
11 namespace usb_service {
12 
13 enum UsbTransferType {
14   USB_TRANSFER_CONTROL = 0,
15   USB_TRANSFER_ISOCHRONOUS,
16   USB_TRANSFER_BULK,
17   USB_TRANSFER_INTERRUPT,
18 };
19 
20 enum UsbEndpointDirection {
21   USB_DIRECTION_INBOUND = 0,
22   USB_DIRECTION_OUTBOUND,
23 };
24 
25 enum UsbSynchronizationType {
26   USB_SYNCHRONIZATION_NONE = 0,
27   USB_SYNCHRONIZATION_ASYNCHRONOUS,
28   USB_SYNCHRONIZATION_ADAPTIVE,
29   USB_SYNCHRONIZATION_SYNCHRONOUS,
30 };
31 
32 enum UsbUsageType {
33   USB_USAGE_DATA = 0,
34   USB_USAGE_FEEDBACK,
35   USB_USAGE_EXPLICIT_FEEDBACK
36 };
37 
38 class 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 
UsbEndpointDescriptor()52   UsbEndpointDescriptor() {};
~UsbEndpointDescriptor()53   virtual ~UsbEndpointDescriptor() {};
54 
55   DISALLOW_COPY_AND_ASSIGN(UsbEndpointDescriptor);
56 };
57 
58 class 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 
UsbInterfaceAltSettingDescriptor()74   UsbInterfaceAltSettingDescriptor() {};
~UsbInterfaceAltSettingDescriptor()75   virtual ~UsbInterfaceAltSettingDescriptor() {};
76 
77   DISALLOW_COPY_AND_ASSIGN(UsbInterfaceAltSettingDescriptor);
78 };
79 
80 class 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 
UsbInterfaceDescriptor()90   UsbInterfaceDescriptor() {};
~UsbInterfaceDescriptor()91   virtual ~UsbInterfaceDescriptor() {};
92 
93   DISALLOW_COPY_AND_ASSIGN(UsbInterfaceDescriptor);
94 };
95 
96 class 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 
UsbConfigDescriptor()106   UsbConfigDescriptor() {};
~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