summaryrefslogtreecommitdiff
path: root/src/input_common/drivers/sdl_driver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/input_common/drivers/sdl_driver.cpp')
-rw-r--r--src/input_common/drivers/sdl_driver.cpp28
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 {
503Common::Input::VibrationError SDLDriver::SetRumble( 505Common::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,