From ea386e6da2f15e1a7839901fa51add710c39c10d Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Fri, 30 Jan 2015 21:27:09 +0100 Subject: [PATCH] Remove magic number usage. Fix limits for FP based pid controller PID adjustments to match those in serial_cli.c. --- src/main/flight/autotune.c | 4 ++-- src/main/io/rc_controls.c | 18 +++++++++--------- src/main/io/serial_msp.c | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/flight/autotune.c b/src/main/flight/autotune.c index 4926848d8..33974931b 100644 --- a/src/main/flight/autotune.c +++ b/src/main/flight/autotune.c @@ -226,8 +226,8 @@ float autotune(angle_index_t angleIndex, const rollAndPitchInclination_t *inclin return errorAngle; } - if (pidController == 2) { - // TODO support new baseflight pid controller + if (IS_PID_CONTROLLER_FP_BASED(pidController) { + // TODO support floating point based pid controllers return errorAngle; } diff --git a/src/main/io/rc_controls.c b/src/main/io/rc_controls.c index 5a821a5cd..203ed2b92 100644 --- a/src/main/io/rc_controls.c +++ b/src/main/io/rc_controls.c @@ -396,9 +396,9 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm case ADJUSTMENT_PITCH_ROLL_P: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { newFloatValue = (int)pidProfile->P_f[PIDPITCH] + delta; - pidProfile->P_f[PIDPITCH] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->P_f[PIDPITCH] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c newFloatValue = (int)pidProfile->P_f[PIDROLL] + delta; - pidProfile->P_f[PIDROLL] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->P_f[PIDROLL] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->P8[PIDPITCH] + delta; pidProfile->P8[PIDPITCH] = constrain(newValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c @@ -409,9 +409,9 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm case ADJUSTMENT_PITCH_ROLL_I: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { newFloatValue = (int)pidProfile->I_f[PIDPITCH] + delta; - pidProfile->I_f[PIDPITCH] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->I_f[PIDPITCH] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c newFloatValue = (int)pidProfile->I_f[PIDROLL] + delta; - pidProfile->I_f[PIDROLL] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->I_f[PIDROLL] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->I8[PIDPITCH] + delta; pidProfile->I8[PIDPITCH] = constrain(newValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c @@ -422,9 +422,9 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm case ADJUSTMENT_PITCH_ROLL_D: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { newFloatValue = (int)pidProfile->D_f[PIDPITCH] + delta; - pidProfile->D_f[PIDPITCH] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->D_f[PIDPITCH] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c newFloatValue = (int)pidProfile->D_f[PIDROLL] + delta; - pidProfile->D_f[PIDROLL] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->D_f[PIDROLL] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->D8[PIDPITCH] + delta; pidProfile->D8[PIDPITCH] = constrain(newValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c @@ -435,7 +435,7 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm case ADJUSTMENT_YAW_P: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { newFloatValue = (int)pidProfile->P_f[PIDYAW] + delta; - pidProfile->P_f[PIDYAW] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->P_f[PIDYAW] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->P8[PIDYAW] + delta; pidProfile->P8[PIDYAW] = constrain(newValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c @@ -444,7 +444,7 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm case ADJUSTMENT_YAW_I: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { newFloatValue = (int)pidProfile->I_f[PIDYAW] + delta; - pidProfile->I_f[PIDYAW] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->I_f[PIDYAW] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->I8[PIDYAW] + delta; pidProfile->I8[PIDYAW] = constrain(newValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c @@ -453,7 +453,7 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm case ADJUSTMENT_YAW_D: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { newFloatValue = (int)pidProfile->D_f[PIDYAW] + delta; - pidProfile->D_f[PIDYAW] = constrain(newFloatValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c + pidProfile->D_f[PIDYAW] = constrain(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->D8[PIDYAW] + delta; pidProfile->D8[PIDYAW] = constrain(newValue, 0, 200); // FIXME magic numbers repeated in serial_cli.c diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index 97822698a..d0677566c 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -865,7 +865,7 @@ static bool processOutCommand(uint8_t cmdMSP) break; case MSP_PID: headSerialReply(3 * PID_ITEM_COUNT); - if (currentProfile->pidProfile.pidController == 2) { // convert float stuff into uint8_t to keep backwards compatability with all 8-bit shit with new pid + if (IS_PID_CONTROLLER_FP_BASED(currentProfile->pidProfile.pidController)) { // convert float stuff into uint8_t to keep backwards compatability with all 8-bit shit with new pid for (i = 0; i < 3; i++) { serialize8(constrain(lrintf(currentProfile->pidProfile.P_f[i] * 10.0f), 0, 250)); serialize8(constrain(lrintf(currentProfile->pidProfile.I_f[i] * 100.0f), 0, 250)); @@ -1209,7 +1209,7 @@ static bool processInCommand(void) setPIDController(currentProfile->pidProfile.pidController); break; case MSP_SET_PID: - if (currentProfile->pidProfile.pidController == 2) { + if (IS_PID_CONTROLLER_FP_BASED(currentProfile->pidProfile.pidController)) { for (i = 0; i < 3; i++) { currentProfile->pidProfile.P_f[i] = (float)read8() / 10.0f; currentProfile->pidProfile.I_f[i] = (float)read8() / 100.0f; -- 2.11.4.GIT