From 8863e5ee677bc7a74655c181f1d26e5e5d5165a6 Mon Sep 17 00:00:00 2001 From: Aubrey Hesselgren Date: Tue, 22 Jul 2025 10:39:25 -0700 Subject: [PATCH] Made the maximum noise during accelerometer noise profiling a define, in terms of "G" Also removed a // comment which was causing the build to error. --- test/gamepadutils.c | 11 ++++------- test/gamepadutils.h | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/test/gamepadutils.c b/test/gamepadutils.c index c27df6d790..de2a6fffc9 100644 --- a/test/gamepadutils.c +++ b/test/gamepadutils.c @@ -1786,8 +1786,7 @@ void RenderGyroDriftCalibrationButton(GyroDisplay *ctx, GamepadDisplay *gamepad_ SetGamepadButtonArea(start_calibration_button, &recalibrate_button_area); RenderGamepadButton(start_calibration_button); - const float flAbsoluteMaxAccelerationG = 0.125f; - bool bExtremeNoise = ctx->accelerometer_noise_sq > (flAbsoluteMaxAccelerationG * flAbsoluteMaxAccelerationG); + bool bExtremeNoise = ctx->accelerometer_noise_sq > ACCELEROMETER_MAX_NOISE_G_SQ; /* Explicit warning message if we detect too much movement */ if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_OFF) { @@ -1803,10 +1802,9 @@ void RenderGyroDriftCalibrationButton(GyroDisplay *ctx, GamepadDisplay *gamepad_ if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_NOISE_PROFILING || ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_DRIFT_PROFILING) { - float flAbsoluteNoiseFraction = SDL_clamp(ctx->accelerometer_noise_sq / (flAbsoluteMaxAccelerationG * flAbsoluteMaxAccelerationG), 0.0f, 1.0f); - float flAbsoluteToleranceFraction = SDL_clamp(ctx->accelerometer_noise_tolerance_sq / (flAbsoluteMaxAccelerationG * flAbsoluteMaxAccelerationG), 0.0f, 1.0f); + float flAbsoluteNoiseFraction = SDL_clamp(ctx->accelerometer_noise_sq / ACCELEROMETER_MAX_NOISE_G_SQ, 0.0f, 1.0f); + float flAbsoluteToleranceFraction = SDL_clamp(ctx->accelerometer_noise_tolerance_sq / ACCELEROMETER_MAX_NOISE_G_SQ, 0.0f, 1.0f); float flRelativeNoiseFraction = SDL_clamp(ctx->accelerometer_noise_sq / ctx->accelerometer_noise_tolerance_sq, 0.0f, 1.0f); - bool bTooMuchNoise = (flAbsoluteNoiseFraction == 1.0f); float noise_bar_height = gamepad_display->button_height; SDL_FRect noise_bar_rect; @@ -1815,12 +1813,10 @@ void RenderGyroDriftCalibrationButton(GyroDisplay *ctx, GamepadDisplay *gamepad_ noise_bar_rect.w = recalibrate_button_area.w; noise_bar_rect.h = noise_bar_height; - //SDL_strlcpy(label_text, "Place GamePad On Table", sizeof(label_text)); SDL_snprintf(label_text, sizeof(label_text), "Noise Tolerance: %3.3fG ", SDL_sqrtf(ctx->accelerometer_noise_tolerance_sq) ); SDLTest_DrawString(ctx->renderer, recalibrate_button_area.x, recalibrate_button_area.y + recalibrate_button_area.h + new_line_height * 2, label_text); /* Adjust the noise bar rectangle based on the accelerometer noise value */ - float noise_bar_fill_width = flAbsoluteNoiseFraction * noise_bar_rect.w; /* Scale the width based on the noise value */ SDL_FRect noise_bar_fill_rect; noise_bar_fill_rect.x = noise_bar_rect.x + (noise_bar_rect.w - noise_bar_fill_width) * 0.5f; @@ -1848,6 +1844,7 @@ void RenderGyroDriftCalibrationButton(GyroDisplay *ctx, GamepadDisplay *gamepad_ SDL_RenderRect(ctx->renderer, &noise_bar_rect); /* draw the outline rectangle */ /* Explicit warning message if we detect too much movement */ + bool bTooMuchNoise = (flAbsoluteNoiseFraction == 1.0f); if (bTooMuchNoise) { SDL_strlcpy(label_text, "Place GamePad Down!", sizeof(label_text)); SDLTest_DrawString(ctx->renderer, recalibrate_button_area.x, noise_bar_rect.y + noise_bar_rect.h + new_line_height, label_text); diff --git a/test/gamepadutils.h b/test/gamepadutils.h index 743d4c39ff..c829c376e1 100644 --- a/test/gamepadutils.h +++ b/test/gamepadutils.h @@ -145,7 +145,7 @@ extern void DestroyGamepadButton(GamepadButton *ctx); /* This is used as the initial noise tolernace threshold. It's set very close to zero to avoid divide by zero while we're evaluating the noise profile. Each controller may have a very different noise profile.*/ #define ACCELEROMETER_NOISE_THRESHOLD 1e-6f - +#define ACCELEROMETER_MAX_NOISE_G_SQ ( 0.125f * 0.125f ) /* Gyro Calibration Phases */ typedef enum {