From e44bf8a080cfec1c2385ac8f408e863fb1b48483 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Nov 2020 21:18:37 -0800 Subject: [PATCH] Fixed bug 5359 - Incorrect sensor data from DualShock4 multiply gyro values by sensitivity When the hardware calibration fails, values read from sensors need to be multiplied by default sensitivity (16 for gyro, 1 for accelerometer). --- src/joystick/hidapi/SDL_hidapi_ps4.c | 2 ++ src/joystick/hidapi/SDL_hidapi_ps5.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/joystick/hidapi/SDL_hidapi_ps4.c b/src/joystick/hidapi/SDL_hidapi_ps4.c index f3d351f97..d2cff01ac 100644 --- a/src/joystick/hidapi/SDL_hidapi_ps4.c +++ b/src/joystick/hidapi/SDL_hidapi_ps4.c @@ -360,6 +360,8 @@ HIDAPI_DriverPS4_ApplyCalibrationData(SDL_DriverPS4_Context *ctx, int index, Sin IMUCalibrationData *calibration = &ctx->calibration[index]; result = (value - calibration->bias) * calibration->sensitivity; + } else if (index < 3) { + result = value * 64.f; } else { result = value; } diff --git a/src/joystick/hidapi/SDL_hidapi_ps5.c b/src/joystick/hidapi/SDL_hidapi_ps5.c index f312c4edf..a6825eb8b 100644 --- a/src/joystick/hidapi/SDL_hidapi_ps5.c +++ b/src/joystick/hidapi/SDL_hidapi_ps5.c @@ -331,6 +331,8 @@ HIDAPI_DriverPS5_ApplyCalibrationData(SDL_DriverPS5_Context *ctx, int index, Sin IMUCalibrationData *calibration = &ctx->calibration[index]; result = (value - calibration->bias) * calibration->sensitivity; + } else if (index < 3) { + result = value * 64.f; } else { result = value; }