diff --git a/src/main/flight/interpolated_setpoint.c b/src/main/flight/interpolated_setpoint.c index 497f872aab..050161bf31 100644 --- a/src/main/flight/interpolated_setpoint.c +++ b/src/main/flight/interpolated_setpoint.c @@ -98,31 +98,32 @@ FAST_CODE_NOINLINE float interpolatedSpApply(int axis, bool newRcFrame, ffInterp } FAST_CODE_NOINLINE float applyFfLimit(int axis, float value, float Kp, float currentPidSetpoint) { - if (axis == FD_ROLL) { + switch (axis) { + case FD_ROLL: DEBUG_SET(DEBUG_FF_LIMIT, 0, value); - } - if (axis == FD_ROLL) { + break; + case FD_PITCH: DEBUG_SET(DEBUG_FF_LIMIT, 1, value); + + break; } - if (ffMaxRateLimit[axis]) { - if (fabsf(currentPidSetpoint) <= ffMaxRateLimit[axis]) { - value = constrainf(value, (-ffMaxRateLimit[axis] - currentPidSetpoint) * Kp, (ffMaxRateLimit[axis] - currentPidSetpoint) * Kp); - } else { - value = 0; - } + if (fabsf(currentPidSetpoint) <= ffMaxRateLimit[axis]) { + value = constrainf(value, (-ffMaxRateLimit[axis] - currentPidSetpoint) * Kp, (ffMaxRateLimit[axis] - currentPidSetpoint) * Kp); + } else { + value = 0; } + if (axis == FD_ROLL) { DEBUG_SET(DEBUG_FF_LIMIT, 2, value); } + return value; } bool shouldApplyFfLimits(int axis) { - return ffMaxRateLimit[axis] != 0.0f; + return ffMaxRateLimit[axis] != 0.0f && axis < FD_YAW; } - - #endif