• 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 DEVICE_USB_USB_DEVICE_FILTER_H_
6 #define DEVICE_USB_USB_DEVICE_FILTER_H_
7 
8 #include <vector>
9 
10 #include "base/memory/ref_counted.h"
11 
12 namespace base {
13 class Value;
14 }
15 
16 namespace device {
17 
18 class UsbDevice;
19 
20 class UsbDeviceFilter {
21  public:
22   UsbDeviceFilter();
23   ~UsbDeviceFilter();
24 
25   void SetVendorId(uint16 vendor_id);
26   void SetProductId(uint16 product_id);
27   void SetInterfaceClass(uint8 interface_class);
28   void SetInterfaceSubclass(uint8 interface_subclass);
29   void SetInterfaceProtocol(uint8 interface_protocol);
30 
31   bool Matches(scoped_refptr<UsbDevice> device) const;
32   base::Value* ToValue() const;
33 
34   static bool MatchesAny(scoped_refptr<UsbDevice> device,
35                          const std::vector<UsbDeviceFilter>& filters);
36 
37  private:
38   uint16 vendor_id_;
39   uint16 product_id_;
40   uint8 interface_class_;
41   uint8 interface_subclass_;
42   uint8 interface_protocol_;
43   bool vendor_id_set_ : 1;
44   bool product_id_set_ : 1;
45   bool interface_class_set_ : 1;
46   bool interface_subclass_set_ : 1;
47   bool interface_protocol_set_ : 1;
48 };
49 
50 }  // namespace device
51 
52 #endif  // DEVICE_USB_USB_DEVICE_FILTER_H_
53