blob: e4cb7c43225f4e61e3333fb090e61b10eb519240 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEVICE_GAMEPAD_UDEV_GAMEPAD_
#define DEVICE_GAMEPAD_UDEV_GAMEPAD_
#include <memory>
#include <string>
extern "C" {
struct udev_device;
}
namespace device {
class UdevGamepadLinux {
public:
enum class Type {
JOYDEV,
EVDEV,
HIDRAW,
};
static const char kInputSubsystem[];
static const char kHidrawSubsystem[];
~UdevGamepadLinux() = default;
// Factory method for creating UdevGamepadLinux instances. Extracts info
// about the device and returns a UdevGamepadLinux describing it, or nullptr
// if the device cannot be a gamepad.
static std::unique_ptr<UdevGamepadLinux> Create(udev_device* dev);
const Type type;
const int index;
const std::string path;
const std::string syspath_prefix;
private:
UdevGamepadLinux(Type type,
int index,
const std::string& path,
const std::string& syspath_prefix);
};
} // namespace device
#endif // DEVICE_GAMEPAD_UDEV_GAMEPAD_