diff options
Diffstat (limited to 'src/input_common/drivers/sdl_driver.cpp')
| -rw-r--r-- | src/input_common/drivers/sdl_driver.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp index 577bf5c31..c17ea305e 100644 --- a/src/input_common/drivers/sdl_driver.cpp +++ b/src/input_common/drivers/sdl_driver.cpp | |||
| @@ -175,23 +175,23 @@ public: | |||
| 175 | return false; | 175 | return false; |
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | BatteryLevel GetBatteryLevel() { | 178 | Common::Input::BatteryLevel GetBatteryLevel() { |
| 179 | const auto level = SDL_JoystickCurrentPowerLevel(sdl_joystick.get()); | 179 | const auto level = SDL_JoystickCurrentPowerLevel(sdl_joystick.get()); |
| 180 | switch (level) { | 180 | switch (level) { |
| 181 | case SDL_JOYSTICK_POWER_EMPTY: | 181 | case SDL_JOYSTICK_POWER_EMPTY: |
| 182 | return BatteryLevel::Empty; | 182 | return Common::Input::BatteryLevel::Empty; |
| 183 | case SDL_JOYSTICK_POWER_LOW: | 183 | case SDL_JOYSTICK_POWER_LOW: |
| 184 | return BatteryLevel::Critical; | 184 | return Common::Input::BatteryLevel::Low; |
| 185 | case SDL_JOYSTICK_POWER_MEDIUM: | 185 | case SDL_JOYSTICK_POWER_MEDIUM: |
| 186 | return BatteryLevel::Low; | 186 | return Common::Input::BatteryLevel::Medium; |
| 187 | case SDL_JOYSTICK_POWER_FULL: | 187 | case SDL_JOYSTICK_POWER_FULL: |
| 188 | return BatteryLevel::Medium; | ||
| 189 | case SDL_JOYSTICK_POWER_MAX: | 188 | case SDL_JOYSTICK_POWER_MAX: |
| 190 | return BatteryLevel::Full; | 189 | return Common::Input::BatteryLevel::Full; |
| 191 | case SDL_JOYSTICK_POWER_UNKNOWN: | ||
| 192 | case SDL_JOYSTICK_POWER_WIRED: | 190 | case SDL_JOYSTICK_POWER_WIRED: |
| 191 | return Common::Input::BatteryLevel::Charging; | ||
| 192 | case SDL_JOYSTICK_POWER_UNKNOWN: | ||
| 193 | default: | 193 | default: |
| 194 | return BatteryLevel::Charging; | 194 | return Common::Input::BatteryLevel::None; |
| 195 | } | 195 | } |
| 196 | } | 196 | } |
| 197 | 197 | ||
| @@ -352,6 +352,8 @@ void SDLDriver::HandleGameControllerEvent(const SDL_Event& event) { | |||
| 352 | if (const auto joystick = GetSDLJoystickBySDLID(event.jbutton.which)) { | 352 | if (const auto joystick = GetSDLJoystickBySDLID(event.jbutton.which)) { |
| 353 | const PadIdentifier identifier = joystick->GetPadIdentifier(); | 353 | const PadIdentifier identifier = joystick->GetPadIdentifier(); |
| 354 | SetButton(identifier, event.jbutton.button, true); | 354 | SetButton(identifier, event.jbutton.button, true); |
| 355 | // Battery doesn't trigger an event so just update every button press | ||
| 356 | SetBattery(identifier, joystick->GetBatteryLevel()); | ||
| 355 | } | 357 | } |
| 356 | break; | 358 | break; |
| 357 | } | 359 | } |
| @@ -503,7 +505,7 @@ std::vector<Common::ParamPackage> SDLDriver::GetInputDevices() const { | |||
| 503 | Common::Input::VibrationError SDLDriver::SetRumble( | 505 | Common::Input::VibrationError SDLDriver::SetRumble( |
| 504 | const PadIdentifier& identifier, const Common::Input::VibrationStatus& vibration) { | 506 | const PadIdentifier& identifier, const Common::Input::VibrationStatus& vibration) { |
| 505 | const auto joystick = | 507 | const auto joystick = |
| 506 | GetSDLJoystickByGUID(identifier.guid.Format(), static_cast<int>(identifier.port)); | 508 | GetSDLJoystickByGUID(identifier.guid.RawString(), static_cast<int>(identifier.port)); |
| 507 | const auto process_amplitude_exp = [](f32 amplitude, f32 factor) { | 509 | const auto process_amplitude_exp = [](f32 amplitude, f32 factor) { |
| 508 | return (amplitude + std::pow(amplitude, factor)) * 0.5f * 0xFFFF; | 510 | return (amplitude + std::pow(amplitude, factor)) * 0.5f * 0xFFFF; |
| 509 | }; | 511 | }; |
| @@ -600,7 +602,7 @@ Common::ParamPackage SDLDriver::BuildParamPackageForAnalog(PadIdentifier identif | |||
| 600 | Common::ParamPackage params; | 602 | Common::ParamPackage params; |
| 601 | params.Set("engine", GetEngineName()); | 603 | params.Set("engine", GetEngineName()); |
| 602 | params.Set("port", static_cast<int>(identifier.port)); | 604 | params.Set("port", static_cast<int>(identifier.port)); |
| 603 | params.Set("guid", identifier.guid.Format()); | 605 | params.Set("guid", identifier.guid.RawString()); |
| 604 | params.Set("axis_x", axis_x); | 606 | params.Set("axis_x", axis_x); |
| 605 | params.Set("axis_y", axis_y); | 607 | params.Set("axis_y", axis_y); |
| 606 | params.Set("offset_x", offset_x); | 608 | params.Set("offset_x", offset_x); |
| @@ -812,7 +814,7 @@ AnalogMapping SDLDriver::GetAnalogMappingForDevice(const Common::ParamPackage& p | |||
| 812 | PreSetAxis(identifier, binding_left_x.value.axis); | 814 | PreSetAxis(identifier, binding_left_x.value.axis); |
| 813 | PreSetAxis(identifier, binding_left_y.value.axis); | 815 | PreSetAxis(identifier, binding_left_y.value.axis); |
| 814 | const auto left_offset_x = -GetAxis(identifier, binding_left_x.value.axis); | 816 | const auto left_offset_x = -GetAxis(identifier, binding_left_x.value.axis); |
| 815 | const auto left_offset_y = -GetAxis(identifier, binding_left_y.value.axis); | 817 | const auto left_offset_y = GetAxis(identifier, binding_left_y.value.axis); |
| 816 | mapping.insert_or_assign(Settings::NativeAnalog::LStick, | 818 | mapping.insert_or_assign(Settings::NativeAnalog::LStick, |
| 817 | BuildParamPackageForAnalog(identifier, binding_left_x.value.axis, | 819 | BuildParamPackageForAnalog(identifier, binding_left_x.value.axis, |
| 818 | binding_left_y.value.axis, | 820 | binding_left_y.value.axis, |
| @@ -823,7 +825,7 @@ AnalogMapping SDLDriver::GetAnalogMappingForDevice(const Common::ParamPackage& p | |||
| 823 | PreSetAxis(identifier, binding_left_x.value.axis); | 825 | PreSetAxis(identifier, binding_left_x.value.axis); |
| 824 | PreSetAxis(identifier, binding_left_y.value.axis); | 826 | PreSetAxis(identifier, binding_left_y.value.axis); |
| 825 | const auto left_offset_x = -GetAxis(identifier, binding_left_x.value.axis); | 827 | const auto left_offset_x = -GetAxis(identifier, binding_left_x.value.axis); |
| 826 | const auto left_offset_y = -GetAxis(identifier, binding_left_y.value.axis); | 828 | const auto left_offset_y = GetAxis(identifier, binding_left_y.value.axis); |
| 827 | mapping.insert_or_assign(Settings::NativeAnalog::LStick, | 829 | mapping.insert_or_assign(Settings::NativeAnalog::LStick, |
| 828 | BuildParamPackageForAnalog(identifier, binding_left_x.value.axis, | 830 | BuildParamPackageForAnalog(identifier, binding_left_x.value.axis, |
| 829 | binding_left_y.value.axis, | 831 | binding_left_y.value.axis, |
| @@ -838,7 +840,7 @@ AnalogMapping SDLDriver::GetAnalogMappingForDevice(const Common::ParamPackage& p | |||
| 838 | PreSetAxis(identifier, binding_right_x.value.axis); | 840 | PreSetAxis(identifier, binding_right_x.value.axis); |
| 839 | PreSetAxis(identifier, binding_right_y.value.axis); | 841 | PreSetAxis(identifier, binding_right_y.value.axis); |
| 840 | const auto right_offset_x = -GetAxis(identifier, binding_right_x.value.axis); | 842 | const auto right_offset_x = -GetAxis(identifier, binding_right_x.value.axis); |
| 841 | const auto right_offset_y = -GetAxis(identifier, binding_right_y.value.axis); | 843 | const auto right_offset_y = GetAxis(identifier, binding_right_y.value.axis); |
| 842 | mapping.insert_or_assign(Settings::NativeAnalog::RStick, | 844 | mapping.insert_or_assign(Settings::NativeAnalog::RStick, |
| 843 | BuildParamPackageForAnalog(identifier, binding_right_x.value.axis, | 845 | BuildParamPackageForAnalog(identifier, binding_right_x.value.axis, |
| 844 | binding_right_y.value.axis, right_offset_x, | 846 | binding_right_y.value.axis, right_offset_x, |