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_HID_HID_DEVICE_FILTER_H_
6#define DEVICE_HID_HID_DEVICE_FILTER_H_
7
8#include <stdint.h>
9#include <vector>
10
11namespace device {
12
13struct HidDeviceInfo;
14
15class HidDeviceFilter {
16 public:
17  HidDeviceFilter();
18  ~HidDeviceFilter();
19
20  void SetVendorId(uint16_t vendor_id);
21  void SetProductId(uint16_t product_id);
22  void SetUsagePage(uint16_t usage_page);
23  void SetUsage(uint16_t usage);
24
25  bool Matches(const HidDeviceInfo& device_info) const;
26
27  static bool MatchesAny(const HidDeviceInfo& device_info,
28                         const std::vector<HidDeviceFilter>& filters);
29
30 private:
31  uint16_t vendor_id_;
32  uint16_t product_id_;
33  uint16_t usage_page_;
34  uint16_t usage_;
35  bool vendor_id_set_ : 1;
36  bool product_id_set_ : 1;
37  bool usage_page_set_ : 1;
38  bool usage_set_ : 1;
39};
40
41}  // namespace device
42
43#endif  // DEVICE_HID_HID_DEVICE_FILTER_H_
44