core/hid: Add output devices

This commit is contained in:
german77 2021-10-11 00:43:11 -05:00 committed by Narr the Reg
parent e14ae06391
commit 06a5ef5874
20 changed files with 313 additions and 145 deletions

View file

@ -38,6 +38,27 @@ enum class BatteryLevel {
Charging,
};
enum class PollingMode {
Active,
Pasive,
Camera,
NCF,
IR,
};
enum class VibrationError {
None,
NotSupported,
Disabled,
Unknown,
};
enum class PollingError {
None,
NotSupported,
Unknown,
};
struct AnalogProperties {
float deadzone{};
float range{1.0f};
@ -149,6 +170,24 @@ private:
InputCallback callback;
};
/// An abstract class template for an output device (rumble, LED pattern, polling mode).
class OutputDevice {
public:
virtual ~OutputDevice() = default;
virtual void SetLED([[maybe_unused]] LedStatus led_status) {
return;
}
virtual VibrationError SetVibration([[maybe_unused]] VibrationStatus vibration_status) {
return VibrationError::NotSupported;
}
virtual PollingError SetPollingMode([[maybe_unused]] PollingMode polling_mode) {
return PollingError::NotSupported;
}
};
/// An abstract class template for a factory that can create input devices.
template <typename InputDeviceType>
class Factory {