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_REPORT_DESCRIPTOR_H_ 6 #define DEVICE_HID_HID_REPORT_DESCRIPTOR_H_ 7 8 #include <vector> 9 10 #include "base/memory/linked_ptr.h" 11 #include "device/hid/hid_collection_info.h" 12 #include "device/hid/hid_report_descriptor_item.h" 13 14 namespace device { 15 16 // HID report descriptor. 17 // See section 6.2.2 of HID specifications (v1.11). 18 class HidReportDescriptor { 19 20 public: 21 HidReportDescriptor(const uint8_t* bytes, size_t size); 22 ~HidReportDescriptor(); 23 24 const std::vector<linked_ptr<HidReportDescriptorItem> >& items() const { 25 return items_; 26 } 27 28 // Returns top-level collections present in the descriptor, 29 // together with max report sizes 30 void GetDetails(std::vector<HidCollectionInfo>* top_level_collections, 31 bool* has_report_id, 32 uint16_t* max_input_report_size, 33 uint16_t* max_output_report_size, 34 uint16_t* max_feature_report_size); 35 36 private: 37 std::vector<linked_ptr<HidReportDescriptorItem> > items_; 38 }; 39 40 } // namespace device 41 42 #endif // DEVICE_HID_HID_REPORT_DESCRIPTOR_H_ 43