summaryrefslogtreecommitdiffstats
path: root/device/hid/hid_device_info.h
diff options
context:
space:
mode:
Diffstat (limited to 'device/hid/hid_device_info.h')
-rw-r--r--device/hid/hid_device_info.h63
1 files changed, 50 insertions, 13 deletions
diff --git a/device/hid/hid_device_info.h b/device/hid/hid_device_info.h
index 917a129..7aae955 100644
--- a/device/hid/hid_device_info.h
+++ b/device/hid/hid_device_info.h
@@ -8,6 +8,7 @@
#include <string>
#include <vector>
+#include "base/memory/ref_counted.h"
#include "build/build_config.h"
#include "device/hid/hid_collection_info.h"
@@ -21,28 +22,64 @@ enum HidBusType {
typedef std::string HidDeviceId;
extern const char kInvalidHidDeviceId[];
-struct HidDeviceInfo {
+class HidDeviceInfo : public base::RefCountedThreadSafe<HidDeviceInfo> {
+ public:
HidDeviceInfo();
+
+ // Device identification.
+ const HidDeviceId& device_id() const { return device_id_; }
+ uint16_t vendor_id() const { return vendor_id_; }
+ uint16_t product_id() const { return product_id_; }
+ const std::string& product_name() const { return product_name_; }
+ const std::string& serial_number() const { return serial_number_; }
+ HidBusType bus_type() const { return bus_type_; }
+
+ // Top-Level Collections information.
+ const std::vector<HidCollectionInfo>& collections() const {
+ return collections_;
+ }
+ bool has_report_id() const { return has_report_id_; };
+ size_t max_input_report_size() const { return max_input_report_size_; }
+ size_t max_output_report_size() const { return max_output_report_size_; }
+ size_t max_feature_report_size() const { return max_feature_report_size_; }
+
+#if defined(OS_LINUX)
+ const std::string& device_node() const { return device_node_; }
+#endif
+
+ private:
+ friend class base::RefCountedThreadSafe<HidDeviceInfo>;
+
+ // TODO(reillyg): Define public constructors that make some of these
+ // declarations unnecessary.
+ friend class HidServiceLinux;
+ friend class HidServiceMac;
+ friend class HidServiceWin;
+ friend class MockHidService;
+ friend class HidFilterTest;
+
~HidDeviceInfo();
// Device identification.
- HidDeviceId device_id;
- uint16_t vendor_id;
- uint16_t product_id;
- std::string product_name;
- std::string serial_number;
- HidBusType bus_type;
+ HidDeviceId device_id_;
+ uint16_t vendor_id_;
+ uint16_t product_id_;
+ std::string product_name_;
+ std::string serial_number_;
+ HidBusType bus_type_;
// Top-Level Collections information.
- std::vector<HidCollectionInfo> collections;
- bool has_report_id;
- size_t max_input_report_size;
- size_t max_output_report_size;
- size_t max_feature_report_size;
+ std::vector<HidCollectionInfo> collections_;
+ bool has_report_id_;
+ size_t max_input_report_size_;
+ size_t max_output_report_size_;
+ size_t max_feature_report_size_;
#if defined(OS_LINUX)
- std::string device_node;
+ std::string device_node_;
#endif
+
+ DISALLOW_COPY_AND_ASSIGN(HidDeviceInfo);
};
} // namespace device