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_SERVICE_WIN_H_ 6#define DEVICE_HID_HID_SERVICE_WIN_H_ 7 8#include <map> 9 10#include "device/hid/hid_device_info.h" 11#include "device/hid/hid_service.h" 12 13#if defined(OS_WIN) 14 15#include <windows.h> 16#include <hidclass.h> 17 18extern "C" { 19#include <hidsdi.h> 20#include <hidpi.h> 21} 22 23#endif // defined(OS_WIN) 24 25namespace device { 26 27class HidConnection; 28 29class HidServiceWin : public HidService { 30 public: 31 HidServiceWin(); 32 33 virtual void GetDevices(std::vector<HidDeviceInfo>* devices) OVERRIDE; 34 35 virtual scoped_refptr<HidConnection> Connect(const HidDeviceId& device_id) 36 OVERRIDE; 37 38 private: 39 virtual ~HidServiceWin(); 40 41 void Enumerate(); 42 static void CollectInfoFromButtonCaps(PHIDP_PREPARSED_DATA preparsed_data, 43 HIDP_REPORT_TYPE report_type, 44 USHORT button_caps_length, 45 HidCollectionInfo* collection_info); 46 static void CollectInfoFromValueCaps(PHIDP_PREPARSED_DATA preparsed_data, 47 HIDP_REPORT_TYPE report_type, 48 USHORT value_caps_length, 49 HidCollectionInfo* collection_info); 50 void PlatformAddDevice(const std::string& device_path); 51 void PlatformRemoveDevice(const std::string& device_path); 52 53 DISALLOW_COPY_AND_ASSIGN(HidServiceWin); 54}; 55 56} // namespace device 57 58#endif // DEVICE_HID_HID_SERVICE_WIN_H_ 59