diff --git a/src/main/fc/rc_adjustments.c b/src/main/fc/rc_adjustments.c index 5cc2cc471..a3065d8f5 100644 --- a/src/main/fc/rc_adjustments.c +++ b/src/main/fc/rc_adjustments.c @@ -203,11 +203,11 @@ static const adjustmentConfig_t defaultAdjustmentConfigs[ADJUSTMENT_FUNCTION_COU .mode = ADJUSTMENT_MODE_STEP, .data = { .step = 1 } }, { - .adjustmentFunction = ADJUSTMENT_D_SETPOINT, + .adjustmentFunction = ADJUSTMENT_PITCH_ROLL_F, .mode = ADJUSTMENT_MODE_STEP, .data = { .step = 1 } }, { - .adjustmentFunction = ADJUSTMENT_D_SETPOINT_TRANSITION, + .adjustmentFunction = ADJUSTMENT_FEEDFORWARD_TRANSITION, .mode = ADJUSTMENT_MODE_STEP, .data = { .step = 1 } }, { @@ -218,6 +218,18 @@ static const adjustmentConfig_t defaultAdjustmentConfigs[ADJUSTMENT_FUNCTION_COU .adjustmentFunction = ADJUSTMENT_PID_AUDIO, .mode = ADJUSTMENT_MODE_SELECT, .data = { .switchPositions = ARRAYLEN(pidAudioPositionToModeMap) } + }, { + .adjustmentFunction = ADJUSTMENT_PITCH_F, + .mode = ADJUSTMENT_MODE_STEP, + .data = { .step = 1 } + }, { + .adjustmentFunction = ADJUSTMENT_ROLL_F, + .mode = ADJUSTMENT_MODE_STEP, + .data = { .step = 1 } + }, { + .adjustmentFunction = ADJUSTMENT_YAW_F, + .mode = ADJUSTMENT_MODE_STEP, + .data = { .step = 1 } } }; @@ -244,14 +256,17 @@ static const char * const adjustmentLabels[] = { "ROLL I", "ROLL D", "RC RATE YAW", - "D SETPOINT", - "D SETPOINT TRANSITION", + "PITCH/ROLL F", + "FF TRANSITION", "HORIZON STRENGTH", "ROLL RC RATE", "PITCH RC RATE", "ROLL RC EXPO", "PITCH RC EXPO", "PID AUDIO", + "PITCH F", + "ROLL F", + "YAW F" }; static int adjustmentRangeNameIndex = 0; @@ -405,15 +420,31 @@ static int applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t a controlRateConfig->rcRates[FD_YAW] = newValue; blackboxLogInflightAdjustmentEvent(ADJUSTMENT_RC_RATE_YAW, newValue); break; - case ADJUSTMENT_D_SETPOINT: - newValue = constrain((int)pidProfile->pid[PID_ROLL].F + delta, 0, 2000); // FIXME magic numbers repeated in cli.c + case ADJUSTMENT_PITCH_ROLL_F: + case ADJUSTMENT_PITCH_F: + newValue = constrain(pidProfile->pid[PID_PITCH].F + delta, 0, 2000); + pidProfile->pid[PID_PITCH].F = newValue; + blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_F, newValue); + + if (adjustmentFunction == ADJUSTMENT_PITCH_F) { + break; + } + // fall through for combined ADJUSTMENT_PITCH_ROLL_F + FALLTHROUGH; + case ADJUSTMENT_ROLL_F: + newValue = constrain(pidProfile->pid[PID_ROLL].F + delta, 0, 2000); pidProfile->pid[PID_ROLL].F = newValue; - blackboxLogInflightAdjustmentEvent(ADJUSTMENT_D_SETPOINT, newValue); + blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_F, newValue); break; - case ADJUSTMENT_D_SETPOINT_TRANSITION: - newValue = constrain((int)pidProfile->feedForwardTransition + delta, 1, 100); // FIXME magic numbers repeated in cli.c + case ADJUSTMENT_YAW_F: + newValue = constrain(pidProfile->pid[PID_YAW].F + delta, 0, 2000); + pidProfile->pid[PID_YAW].F = newValue; + blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_F, newValue); + break; + case ADJUSTMENT_FEEDFORWARD_TRANSITION: + newValue = constrain(pidProfile->feedForwardTransition + delta, 1, 100); // FIXME magic numbers repeated in cli.c pidProfile->feedForwardTransition = newValue; - blackboxLogInflightAdjustmentEvent(ADJUSTMENT_D_SETPOINT_TRANSITION, newValue); + blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FEEDFORWARD_TRANSITION, newValue); break; default: newValue = -1; @@ -554,15 +585,31 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus controlRateConfig->rcRates[FD_YAW] = newValue; blackboxLogInflightAdjustmentEvent(ADJUSTMENT_RC_RATE_YAW, newValue); break; - case ADJUSTMENT_D_SETPOINT: - newValue = constrain(value, 0, 2000); // FIXME magic numbers repeated in cli.c + case ADJUSTMENT_PITCH_ROLL_F: + case ADJUSTMENT_PITCH_F: + newValue = constrain(value, 0, 2000); + pidProfile->pid[PID_PITCH].F = newValue; + blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_F, newValue); + + if (adjustmentFunction == ADJUSTMENT_PITCH_F) { + break; + } + // fall through for combined ADJUSTMENT_PITCH_ROLL_F + FALLTHROUGH; + case ADJUSTMENT_ROLL_F: + newValue = constrain(value, 0, 2000); pidProfile->pid[PID_ROLL].F = newValue; - blackboxLogInflightAdjustmentEvent(ADJUSTMENT_D_SETPOINT, newValue); + blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_F, newValue); break; - case ADJUSTMENT_D_SETPOINT_TRANSITION: + case ADJUSTMENT_YAW_F: + newValue = constrain(value, 0, 2000); + pidProfile->pid[PID_YAW].F = newValue; + blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_F, newValue); + break; + case ADJUSTMENT_FEEDFORWARD_TRANSITION: newValue = constrain(value, 1, 100); // FIXME magic numbers repeated in cli.c pidProfile->feedForwardTransition = newValue; - blackboxLogInflightAdjustmentEvent(ADJUSTMENT_D_SETPOINT_TRANSITION, newValue); + blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FEEDFORWARD_TRANSITION, newValue); break; default: newValue = -1; diff --git a/src/main/fc/rc_adjustments.h b/src/main/fc/rc_adjustments.h index 5cb2abe96..e5db10d2c 100644 --- a/src/main/fc/rc_adjustments.h +++ b/src/main/fc/rc_adjustments.h @@ -47,14 +47,17 @@ typedef enum { ADJUSTMENT_ROLL_I, ADJUSTMENT_ROLL_D, ADJUSTMENT_RC_RATE_YAW, - ADJUSTMENT_D_SETPOINT, - ADJUSTMENT_D_SETPOINT_TRANSITION, + ADJUSTMENT_PITCH_ROLL_F, + ADJUSTMENT_FEEDFORWARD_TRANSITION, ADJUSTMENT_HORIZON_STRENGTH, ADJUSTMENT_ROLL_RC_RATE, ADJUSTMENT_PITCH_RC_RATE, ADJUSTMENT_ROLL_RC_EXPO, ADJUSTMENT_PITCH_RC_EXPO, ADJUSTMENT_PID_AUDIO, + ADJUSTMENT_PITCH_F, + ADJUSTMENT_ROLL_F, + ADJUSTMENT_YAW_F, ADJUSTMENT_FUNCTION_COUNT } adjustmentFunction_e;