|
@@ -745,16 +745,25 @@ static void HIDAPI_DriverPS5_CheckPendingLEDReset(SDL_HIDAPI_Device *device)
|
|
|
|
|
|
static void HIDAPI_DriverPS5_TickleBluetooth(SDL_HIDAPI_Device *device)
|
|
|
{
|
|
|
- /* This is just a dummy packet that should have no effect, since we don't set the CRC */
|
|
|
- Uint8 data[78];
|
|
|
+ SDL_DriverPS5_Context *ctx = (SDL_DriverPS5_Context *)device->context;
|
|
|
|
|
|
- SDL_zeroa(data);
|
|
|
+ if (ctx->enhanced_mode) {
|
|
|
+ /* This is just a dummy packet that should have no effect, since we don't set the CRC */
|
|
|
+ Uint8 data[78];
|
|
|
+
|
|
|
+ SDL_zeroa(data);
|
|
|
|
|
|
- data[0] = k_EPS5ReportIdBluetoothEffects;
|
|
|
- data[1] = 0x02; /* Magic value */
|
|
|
+ data[0] = k_EPS5ReportIdBluetoothEffects;
|
|
|
+ data[1] = 0x02; /* Magic value */
|
|
|
|
|
|
- if (SDL_HIDAPI_LockRumble() == 0) {
|
|
|
- SDL_HIDAPI_SendRumbleAndUnlock(device, data, sizeof(data));
|
|
|
+ if (SDL_HIDAPI_LockRumble() == 0) {
|
|
|
+ SDL_HIDAPI_SendRumbleAndUnlock(device, data, sizeof(data));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ /* We can't even send an invalid effects packet, or it will put the controller in enhanced mode */
|
|
|
+ if (device->num_joysticks > 0) {
|
|
|
+ HIDAPI_JoystickDisconnected(device, device->joysticks[0]);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|