validation for all rate profiles

This commit is contained in:
Nicola De Pasquale 2020-03-10 21:28:17 +01:00
parent 5adc8d5ce6
commit db3d71a267
1 changed files with 22 additions and 27 deletions

View File

@ -91,7 +91,6 @@ static bool configIsDirty; /* someone indicated that the config is modified and
static bool rebootRequired = false; // set if a config change requires a reboot to take effect static bool rebootRequired = false; // set if a config change requires a reboot to take effect
pidProfile_t *currentPidProfile; pidProfile_t *currentPidProfile;
controlRateConfig_t *currentRateProfile;
#ifndef RX_SPI_DEFAULT_PROTOCOL #ifndef RX_SPI_DEFAULT_PROTOCOL
#define RX_SPI_DEFAULT_PROTOCOL 0 #define RX_SPI_DEFAULT_PROTOCOL 0
@ -138,11 +137,6 @@ static void loadPidProfile(void)
currentPidProfile = pidProfilesMutable(systemConfig()->pidProfileIndex); currentPidProfile = pidProfilesMutable(systemConfig()->pidProfileIndex);
} }
static void loadCurrentControlRateProfile(void)
{
currentControlRateProfile = controlRateProfilesMutable(systemConfig()->activeRateProfile);
}
uint8_t getCurrentControlRateProfileIndex(void) uint8_t getCurrentControlRateProfileIndex(void)
{ {
return systemConfig()->activeRateProfile; return systemConfig()->activeRateProfile;
@ -167,7 +161,6 @@ static void activateConfig(void)
schedulerOptimizeRate(systemConfig()->schedulerOptimizeRate == SCHEDULER_OPTIMIZE_RATE_ON || (systemConfig()->schedulerOptimizeRate == SCHEDULER_OPTIMIZE_RATE_AUTO && motorConfig()->dev.useDshotTelemetry)); schedulerOptimizeRate(systemConfig()->schedulerOptimizeRate == SCHEDULER_OPTIMIZE_RATE_ON || (systemConfig()->schedulerOptimizeRate == SCHEDULER_OPTIMIZE_RATE_AUTO && motorConfig()->dev.useDshotTelemetry));
loadPidProfile(); loadPidProfile();
loadControlRateProfile(); loadControlRateProfile();
loadCurrentControlRateProfile();
initRcProcessing(); initRcProcessing();
@ -568,29 +561,31 @@ static void validateAndFixConfig(void)
targetValidateConfiguration(); targetValidateConfiguration();
#endif #endif
switch (currentControlRateProfile->rates_type) { for (unsigned i = 0; i < CONTROL_RATE_PROFILE_COUNT; i++) {
case RATES_TYPE_BETAFLIGHT: switch (controlRateProfilesMutable(i)->rates_type) {
default: case RATES_TYPE_BETAFLIGHT:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) { default:
currentControlRateProfile->rates[axis] = constrain(currentControlRateProfile->rates[axis], 0, BETAFLIGHT_MAX_SRATE); for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
} controlRateProfilesMutable(i)->rates[axis] = constrain(controlRateProfilesMutable(i)->rates[axis], 0, BETAFLIGHT_MAX_SRATE);
}
break; break;
case RATES_TYPE_KISS: case RATES_TYPE_KISS:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) { for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
currentControlRateProfile->rates[axis] = constrain(currentControlRateProfile->rates[axis], 0, KISS_MAX_SRATE); controlRateProfilesMutable(i)->rates[axis] = constrain(controlRateProfilesMutable(i)->rates[axis], 0, KISS_MAX_SRATE);
} }
break; break;
case RATES_TYPE_ACTUAL: case RATES_TYPE_ACTUAL:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) { for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
currentControlRateProfile->rates[axis] = constrain(currentControlRateProfile->rates[axis], 0, ACTUAL_MAX_RATE); controlRateProfilesMutable(i)->rates[axis] = constrain(controlRateProfilesMutable(i)->rates[axis], 0, ACTUAL_MAX_RATE);
} }
break; break;
case RATES_TYPE_QUICK: case RATES_TYPE_QUICK:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) { for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
currentControlRateProfile->rates[axis] = constrain(currentControlRateProfile->rates[axis], 0, QUICK_MAX_RATE); controlRateProfilesMutable(i)->rates[axis] = constrain(controlRateProfilesMutable(i)->rates[axis], 0, QUICK_MAX_RATE);
}
} }
} }
} }