Home | History | Annotate | Download | only in usb
      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