Added support for controller battery status on iOS 14

This commit is contained in:
Sam Lantinga 2020-10-13 21:08:15 -07:00
parent 1b31e9f6dc
commit 6b62494ee4

View File

@ -768,6 +768,40 @@ IOS_MFIJoystickUpdate(SDL_Joystick * joystick)
} }
joystick->hwdata->num_pause_presses = 0; joystick->hwdata->num_pause_presses = 0;
} }
if (@available(iOS 14.0, tvOS 14.0, *)) {
GCDeviceBattery *battery = controller.battery;
if (battery) {
SDL_JoystickPowerLevel ePowerLevel = SDL_JOYSTICK_POWER_UNKNOWN;
switch (battery.batteryState) {
case GCDeviceBatteryStateDischarging:
{
float power_level = battery.batteryLevel;
if (power_level <= 0.05f) {
ePowerLevel = SDL_JOYSTICK_POWER_EMPTY;
} else if (power_level <= 0.20f) {
ePowerLevel = SDL_JOYSTICK_POWER_LOW;
} else if (power_level <= 0.70f) {
ePowerLevel = SDL_JOYSTICK_POWER_MEDIUM;
} else {
ePowerLevel = SDL_JOYSTICK_POWER_FULL;
}
}
break;
case GCDeviceBatteryStateCharging:
ePowerLevel = SDL_JOYSTICK_POWER_WIRED;
break;
case GCDeviceBatteryStateFull:
ePowerLevel = SDL_JOYSTICK_POWER_FULL;
break;
default:
break;
}
SDL_PrivateJoystickBatteryLevel(joystick, ePowerLevel);
}
}
} }
#endif /* SDL_JOYSTICK_MFI */ #endif /* SDL_JOYSTICK_MFI */
} }