1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-19 06:15:16 +03:00

Fixed PID profile switching.

This commit is contained in:
mikeller 2018-12-15 22:50:24 +13:00
parent 497ede203f
commit 53278c08f8
7 changed files with 53 additions and 66 deletions

View file

@ -128,8 +128,8 @@ static void activateConfig(void)
resetAdjustmentStates(); resetAdjustmentStates();
pidInit(currentPidProfile); pidInit(currentPidProfile);
useRcControlsConfig(currentPidProfile);
useAdjustmentConfig(currentPidProfile); rcControlsInit();
failsafeReset(); failsafeReset();
setAccelerationTrims(&accelerometerConfigMutable()->accZero); setAccelerationTrims(&accelerometerConfigMutable()->accZero);
@ -575,6 +575,8 @@ void changePidProfile(uint8_t pidProfileIndex)
if (pidProfileIndex < MAX_PROFILE_COUNT) { if (pidProfileIndex < MAX_PROFILE_COUNT) {
systemConfigMutable()->pidProfileIndex = pidProfileIndex; systemConfigMutable()->pidProfileIndex = pidProfileIndex;
loadPidProfile(); loadPidProfile();
pidInit(currentPidProfile);
} }
beeperConfirmationBeeps(pidProfileIndex + 1); beeperConfirmationBeeps(pidProfileIndex + 1);

View file

@ -76,8 +76,6 @@ uint8_t pidAudioPositionToModeMap[7] = {
// Note: Last 3 positions are currently pending implementations and use PID_AUDIO_OFF for now. // Note: Last 3 positions are currently pending implementations and use PID_AUDIO_OFF for now.
}; };
static pidProfile_t *pidProfile;
static int activeAdjustmentCount = ADJUSTMENT_RANGE_COUNT_INVALID; static int activeAdjustmentCount = ADJUSTMENT_RANGE_COUNT_INVALID;
static uint8_t activeAdjustmentArray[MAX_ADJUSTMENT_RANGE_COUNT]; static uint8_t activeAdjustmentArray[MAX_ADJUSTMENT_RANGE_COUNT];
static int activeAbsoluteAdjustmentCount; static int activeAbsoluteAdjustmentCount;
@ -369,8 +367,8 @@ static int applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t a
break; break;
case ADJUSTMENT_PITCH_ROLL_P: case ADJUSTMENT_PITCH_ROLL_P:
case ADJUSTMENT_PITCH_P: case ADJUSTMENT_PITCH_P:
newValue = constrain((int)pidProfile->pid[PID_PITCH].P + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_PITCH].P + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_PITCH].P = newValue; currentPidProfile->pid[PID_PITCH].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_P, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_P, newValue);
if (adjustmentFunction == ADJUSTMENT_PITCH_P) { if (adjustmentFunction == ADJUSTMENT_PITCH_P) {
@ -379,14 +377,14 @@ static int applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t a
// fall through for combined ADJUSTMENT_PITCH_ROLL_P // fall through for combined ADJUSTMENT_PITCH_ROLL_P
FALLTHROUGH; FALLTHROUGH;
case ADJUSTMENT_ROLL_P: case ADJUSTMENT_ROLL_P:
newValue = constrain((int)pidProfile->pid[PID_ROLL].P + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_ROLL].P + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_ROLL].P = newValue; currentPidProfile->pid[PID_ROLL].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_P, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_P, newValue);
break; break;
case ADJUSTMENT_PITCH_ROLL_I: case ADJUSTMENT_PITCH_ROLL_I:
case ADJUSTMENT_PITCH_I: case ADJUSTMENT_PITCH_I:
newValue = constrain((int)pidProfile->pid[PID_PITCH].I + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_PITCH].I + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_PITCH].I = newValue; currentPidProfile->pid[PID_PITCH].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_I, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_I, newValue);
if (adjustmentFunction == ADJUSTMENT_PITCH_I) { if (adjustmentFunction == ADJUSTMENT_PITCH_I) {
break; break;
@ -394,14 +392,14 @@ static int applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t a
// fall through for combined ADJUSTMENT_PITCH_ROLL_I // fall through for combined ADJUSTMENT_PITCH_ROLL_I
FALLTHROUGH; FALLTHROUGH;
case ADJUSTMENT_ROLL_I: case ADJUSTMENT_ROLL_I:
newValue = constrain((int)pidProfile->pid[PID_ROLL].I + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_ROLL].I + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_ROLL].I = newValue; currentPidProfile->pid[PID_ROLL].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_I, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_I, newValue);
break; break;
case ADJUSTMENT_PITCH_ROLL_D: case ADJUSTMENT_PITCH_ROLL_D:
case ADJUSTMENT_PITCH_D: case ADJUSTMENT_PITCH_D:
newValue = constrain((int)pidProfile->pid[PID_PITCH].D + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_PITCH].D + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_PITCH].D = newValue; currentPidProfile->pid[PID_PITCH].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_D, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_D, newValue);
if (adjustmentFunction == ADJUSTMENT_PITCH_D) { if (adjustmentFunction == ADJUSTMENT_PITCH_D) {
break; break;
@ -409,23 +407,23 @@ static int applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t a
// fall through for combined ADJUSTMENT_PITCH_ROLL_D // fall through for combined ADJUSTMENT_PITCH_ROLL_D
FALLTHROUGH; FALLTHROUGH;
case ADJUSTMENT_ROLL_D: case ADJUSTMENT_ROLL_D:
newValue = constrain((int)pidProfile->pid[PID_ROLL].D + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_ROLL].D + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_ROLL].D = newValue; currentPidProfile->pid[PID_ROLL].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_D, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_D, newValue);
break; break;
case ADJUSTMENT_YAW_P: case ADJUSTMENT_YAW_P:
newValue = constrain((int)pidProfile->pid[PID_YAW].P + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_YAW].P + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_YAW].P = newValue; currentPidProfile->pid[PID_YAW].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_P, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_P, newValue);
break; break;
case ADJUSTMENT_YAW_I: case ADJUSTMENT_YAW_I:
newValue = constrain((int)pidProfile->pid[PID_YAW].I + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_YAW].I + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_YAW].I = newValue; currentPidProfile->pid[PID_YAW].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_I, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_I, newValue);
break; break;
case ADJUSTMENT_YAW_D: case ADJUSTMENT_YAW_D:
newValue = constrain((int)pidProfile->pid[PID_YAW].D + delta, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain((int)currentPidProfile->pid[PID_YAW].D + delta, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_YAW].D = newValue; currentPidProfile->pid[PID_YAW].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_D, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_D, newValue);
break; break;
case ADJUSTMENT_RC_RATE_YAW: case ADJUSTMENT_RC_RATE_YAW:
@ -435,8 +433,8 @@ static int applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t a
break; break;
case ADJUSTMENT_PITCH_ROLL_F: case ADJUSTMENT_PITCH_ROLL_F:
case ADJUSTMENT_PITCH_F: case ADJUSTMENT_PITCH_F:
newValue = constrain(pidProfile->pid[PID_PITCH].F + delta, 0, 2000); newValue = constrain(currentPidProfile->pid[PID_PITCH].F + delta, 0, 2000);
pidProfile->pid[PID_PITCH].F = newValue; currentPidProfile->pid[PID_PITCH].F = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_F, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_F, newValue);
if (adjustmentFunction == ADJUSTMENT_PITCH_F) { if (adjustmentFunction == ADJUSTMENT_PITCH_F) {
@ -445,18 +443,18 @@ static int applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t a
// fall through for combined ADJUSTMENT_PITCH_ROLL_F // fall through for combined ADJUSTMENT_PITCH_ROLL_F
FALLTHROUGH; FALLTHROUGH;
case ADJUSTMENT_ROLL_F: case ADJUSTMENT_ROLL_F:
newValue = constrain(pidProfile->pid[PID_ROLL].F + delta, 0, 2000); newValue = constrain(currentPidProfile->pid[PID_ROLL].F + delta, 0, 2000);
pidProfile->pid[PID_ROLL].F = newValue; currentPidProfile->pid[PID_ROLL].F = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_F, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_F, newValue);
break; break;
case ADJUSTMENT_YAW_F: case ADJUSTMENT_YAW_F:
newValue = constrain(pidProfile->pid[PID_YAW].F + delta, 0, 2000); newValue = constrain(currentPidProfile->pid[PID_YAW].F + delta, 0, 2000);
pidProfile->pid[PID_YAW].F = newValue; currentPidProfile->pid[PID_YAW].F = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_F, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_F, newValue);
break; break;
case ADJUSTMENT_FEEDFORWARD_TRANSITION: case ADJUSTMENT_FEEDFORWARD_TRANSITION:
newValue = constrain(pidProfile->feedForwardTransition + delta, 1, 100); // FIXME magic numbers repeated in cli.c newValue = constrain(currentPidProfile->feedForwardTransition + delta, 1, 100); // FIXME magic numbers repeated in cli.c
pidProfile->feedForwardTransition = newValue; currentPidProfile->feedForwardTransition = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FEEDFORWARD_TRANSITION, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FEEDFORWARD_TRANSITION, newValue);
break; break;
default: default:
@ -471,7 +469,7 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus
{ {
int newValue; int newValue;
if ( !controlRateConfig || !pidProfile) { if ( !controlRateConfig || !currentPidProfile) {
return 0; return 0;
} }
@ -535,7 +533,7 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus
case ADJUSTMENT_PITCH_ROLL_P: case ADJUSTMENT_PITCH_ROLL_P:
case ADJUSTMENT_PITCH_P: case ADJUSTMENT_PITCH_P:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_PITCH].P = newValue; currentPidProfile->pid[PID_PITCH].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_P, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_P, newValue);
if (adjustmentFunction == ADJUSTMENT_PITCH_P) { if (adjustmentFunction == ADJUSTMENT_PITCH_P) {
@ -545,13 +543,13 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus
FALLTHROUGH; FALLTHROUGH;
case ADJUSTMENT_ROLL_P: case ADJUSTMENT_ROLL_P:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_ROLL].P = newValue; currentPidProfile->pid[PID_ROLL].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_P, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_P, newValue);
break; break;
case ADJUSTMENT_PITCH_ROLL_I: case ADJUSTMENT_PITCH_ROLL_I:
case ADJUSTMENT_PITCH_I: case ADJUSTMENT_PITCH_I:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_PITCH].I = newValue; currentPidProfile->pid[PID_PITCH].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_I, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_I, newValue);
if (adjustmentFunction == ADJUSTMENT_PITCH_I) { if (adjustmentFunction == ADJUSTMENT_PITCH_I) {
break; break;
@ -560,13 +558,13 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus
FALLTHROUGH; FALLTHROUGH;
case ADJUSTMENT_ROLL_I: case ADJUSTMENT_ROLL_I:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_ROLL].I = newValue; currentPidProfile->pid[PID_ROLL].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_I, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_I, newValue);
break; break;
case ADJUSTMENT_PITCH_ROLL_D: case ADJUSTMENT_PITCH_ROLL_D:
case ADJUSTMENT_PITCH_D: case ADJUSTMENT_PITCH_D:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_PITCH].D = newValue; currentPidProfile->pid[PID_PITCH].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_D, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_D, newValue);
if (adjustmentFunction == ADJUSTMENT_PITCH_D) { if (adjustmentFunction == ADJUSTMENT_PITCH_D) {
break; break;
@ -575,22 +573,22 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus
FALLTHROUGH; FALLTHROUGH;
case ADJUSTMENT_ROLL_D: case ADJUSTMENT_ROLL_D:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_ROLL].D = newValue; currentPidProfile->pid[PID_ROLL].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_D, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_D, newValue);
break; break;
case ADJUSTMENT_YAW_P: case ADJUSTMENT_YAW_P:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_YAW].P = newValue; currentPidProfile->pid[PID_YAW].P = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_P, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_P, newValue);
break; break;
case ADJUSTMENT_YAW_I: case ADJUSTMENT_YAW_I:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_YAW].I = newValue; currentPidProfile->pid[PID_YAW].I = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_I, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_I, newValue);
break; break;
case ADJUSTMENT_YAW_D: case ADJUSTMENT_YAW_D:
newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 0, 200); // FIXME magic numbers repeated in cli.c
pidProfile->pid[PID_YAW].D = newValue; currentPidProfile->pid[PID_YAW].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_D, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_D, newValue);
break; break;
case ADJUSTMENT_RC_RATE_YAW: case ADJUSTMENT_RC_RATE_YAW:
@ -601,7 +599,7 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus
case ADJUSTMENT_PITCH_ROLL_F: case ADJUSTMENT_PITCH_ROLL_F:
case ADJUSTMENT_PITCH_F: case ADJUSTMENT_PITCH_F:
newValue = constrain(value, 0, 2000); newValue = constrain(value, 0, 2000);
pidProfile->pid[PID_PITCH].F = newValue; currentPidProfile->pid[PID_PITCH].F = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_F, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_F, newValue);
if (adjustmentFunction == ADJUSTMENT_PITCH_F) { if (adjustmentFunction == ADJUSTMENT_PITCH_F) {
@ -611,17 +609,17 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus
FALLTHROUGH; FALLTHROUGH;
case ADJUSTMENT_ROLL_F: case ADJUSTMENT_ROLL_F:
newValue = constrain(value, 0, 2000); newValue = constrain(value, 0, 2000);
pidProfile->pid[PID_ROLL].F = newValue; currentPidProfile->pid[PID_ROLL].F = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_F, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_F, newValue);
break; break;
case ADJUSTMENT_YAW_F: case ADJUSTMENT_YAW_F:
newValue = constrain(value, 0, 2000); newValue = constrain(value, 0, 2000);
pidProfile->pid[PID_YAW].F = newValue; currentPidProfile->pid[PID_YAW].F = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_F, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_F, newValue);
break; break;
case ADJUSTMENT_FEEDFORWARD_TRANSITION: case ADJUSTMENT_FEEDFORWARD_TRANSITION:
newValue = constrain(value, 1, 100); // FIXME magic numbers repeated in cli.c newValue = constrain(value, 1, 100); // FIXME magic numbers repeated in cli.c
pidProfile->feedForwardTransition = newValue; currentPidProfile->feedForwardTransition = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FEEDFORWARD_TRANSITION, newValue); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FEEDFORWARD_TRANSITION, newValue);
break; break;
default: default:
@ -648,9 +646,9 @@ static uint8_t applySelectAdjustment(adjustmentFunction_e adjustmentFunction, ui
case ADJUSTMENT_HORIZON_STRENGTH: case ADJUSTMENT_HORIZON_STRENGTH:
{ {
uint8_t newValue = constrain(position, 0, 200); // FIXME magic numbers repeated in serial_cli.c uint8_t newValue = constrain(position, 0, 200); // FIXME magic numbers repeated in serial_cli.c
if (pidProfile->pid[PID_LEVEL].D != newValue) { if (currentPidProfile->pid[PID_LEVEL].D != newValue) {
beeps = ((newValue - pidProfile->pid[PID_LEVEL].D) / 8) + 1; beeps = ((newValue - currentPidProfile->pid[PID_LEVEL].D) / 8) + 1;
pidProfile->pid[PID_LEVEL].D = newValue; currentPidProfile->pid[PID_LEVEL].D = newValue;
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_HORIZON_STRENGTH, position); blackboxLogInflightAdjustmentEvent(ADJUSTMENT_HORIZON_STRENGTH, position);
} }
} }
@ -777,7 +775,7 @@ void processRcAdjustments(controlRateConfig_t *controlRateConfig)
} }
newValue = applyStepAdjustment(controlRateConfig, adjustmentFunction, delta); newValue = applyStepAdjustment(controlRateConfig, adjustmentFunction, delta);
pidInitConfig(pidProfile); pidInitConfig(currentPidProfile);
} else if (adjustmentState->config->mode == ADJUSTMENT_MODE_SELECT) { } else if (adjustmentState->config->mode == ADJUSTMENT_MODE_SELECT) {
int switchPositions = adjustmentState->config->data.switchPositions; int switchPositions = adjustmentState->config->data.switchPositions;
if (adjustmentFunction == ADJUSTMENT_RATE_PROFILE && systemConfig()->rateProfile6PosSwitch) { if (adjustmentFunction == ADJUSTMENT_RATE_PROFILE && systemConfig()->rateProfile6PosSwitch) {
@ -821,7 +819,7 @@ void processRcAdjustments(controlRateConfig_t *controlRateConfig)
lastRcData[index] = rcData[channelIndex]; lastRcData[index] = rcData[channelIndex];
applyAbsoluteAdjustment(controlRateConfig, adjustmentConfig->adjustmentFunction, value); applyAbsoluteAdjustment(controlRateConfig, adjustmentConfig->adjustmentFunction, value);
pidInitConfig(pidProfile); pidInitConfig(currentPidProfile);
} }
} }
} }
@ -831,11 +829,6 @@ void resetAdjustmentStates(void)
memset(adjustmentStates, 0, sizeof(adjustmentStates)); memset(adjustmentStates, 0, sizeof(adjustmentStates));
} }
void useAdjustmentConfig(pidProfile_t *pidProfileToUse)
{
pidProfile = pidProfileToUse;
}
#if defined(USE_OSD) && defined(USE_OSD_ADJUSTMENTS) #if defined(USE_OSD) && defined(USE_OSD_ADJUSTMENTS)
const char *getAdjustmentsRangeName(void) const char *getAdjustmentsRangeName(void)
{ {

View file

@ -112,8 +112,6 @@ typedef struct adjustmentState_s {
void resetAdjustmentStates(void); void resetAdjustmentStates(void);
struct controlRateConfig_s; struct controlRateConfig_s;
void processRcAdjustments(struct controlRateConfig_s *controlRateConfig); void processRcAdjustments(struct controlRateConfig_s *controlRateConfig);
struct pidProfile_s;
void useAdjustmentConfig(struct pidProfile_s *pidProfileToUse);
const char *getAdjustmentsRangeName(void); const char *getAdjustmentsRangeName(void);
int getAdjustmentsRangeValue(void); int getAdjustmentsRangeValue(void);
void activeAdjustmentRangeReset(void); void activeAdjustmentRangeReset(void);

View file

@ -66,8 +66,6 @@
#include "flight/pid.h" #include "flight/pid.h"
#include "flight/failsafe.h" #include "flight/failsafe.h"
static pidProfile_t *pidProfile;
// true if arming is done via the sticks (as opposed to a switch) // true if arming is done via the sticks (as opposed to a switch)
static bool isUsingSticksToArm = true; static bool isUsingSticksToArm = true;
@ -392,9 +390,7 @@ int32_t getRcStickDeflection(int32_t axis, uint16_t midrc) {
return MIN(ABS(rcData[axis] - midrc), 500); return MIN(ABS(rcData[axis] - midrc), 500);
} }
void useRcControlsConfig(pidProfile_t *pidProfileToUse) void rcControlsInit(void)
{ {
pidProfile = pidProfileToUse;
isUsingSticksToArm = !isModeActivationConditionPresent(BOXARM); isUsingSticksToArm = !isModeActivationConditionPresent(BOXARM);
} }

View file

@ -169,6 +169,4 @@ void processRcStickPositions();
bool isUsingSticksForArming(void); bool isUsingSticksForArming(void);
int32_t getRcStickDeflection(int32_t axis, uint16_t midrc); int32_t getRcStickDeflection(int32_t axis, uint16_t midrc);
struct pidProfile_s; void rcControlsInit(void);
struct modeActivationCondition_s;
void useRcControlsConfig(struct pidProfile_s *pidProfileToUse);

View file

@ -1608,7 +1608,7 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
mac->range.startStep = sbufReadU8(src); mac->range.startStep = sbufReadU8(src);
mac->range.endStep = sbufReadU8(src); mac->range.endStep = sbufReadU8(src);
useRcControlsConfig(currentPidProfile); rcControlsInit();
} else { } else {
return MSP_RESULT_ERROR; return MSP_RESULT_ERROR;
} }

View file

@ -494,7 +494,7 @@ static bool bstSlaveProcessWriteCommand(uint8_t bstWriteCommand)
mac->range.startStep = bstRead8(); mac->range.startStep = bstRead8();
mac->range.endStep = bstRead8(); mac->range.endStep = bstRead8();
useRcControlsConfig(currentPidProfile); rcControlsInit();
} else { } else {
ret = BST_FAILED; ret = BST_FAILED;
} }