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 14namespace device { 15 16// HID report descriptor. 17// See section 6.2.2 of HID specifications (v1.11). 18class 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