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
pidProfile_t *currentPidProfile;
controlRateConfig_t *currentRateProfile;
#ifndef RX_SPI_DEFAULT_PROTOCOL
#define RX_SPI_DEFAULT_PROTOCOL 0
@ -138,11 +137,6 @@ static void loadPidProfile(void)
currentPidProfile = pidProfilesMutable(systemConfig()->pidProfileIndex);
}
static void loadCurrentControlRateProfile(void)
{
currentControlRateProfile = controlRateProfilesMutable(systemConfig()->activeRateProfile);
}
uint8_t getCurrentControlRateProfileIndex(void)
{
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));
loadPidProfile();
loadControlRateProfile();
loadCurrentControlRateProfile();
initRcProcessing();
@ -568,29 +561,31 @@ static void validateAndFixConfig(void)
targetValidateConfiguration();
#endif
switch (currentControlRateProfile->rates_type) {
case RATES_TYPE_BETAFLIGHT:
default:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
currentControlRateProfile->rates[axis] = constrain(currentControlRateProfile->rates[axis], 0, BETAFLIGHT_MAX_SRATE);
}
for (unsigned i = 0; i < CONTROL_RATE_PROFILE_COUNT; i++) {
switch (controlRateProfilesMutable(i)->rates_type) {
case RATES_TYPE_BETAFLIGHT:
default:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
controlRateProfilesMutable(i)->rates[axis] = constrain(controlRateProfilesMutable(i)->rates[axis], 0, BETAFLIGHT_MAX_SRATE);
}
break;
case RATES_TYPE_KISS:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
currentControlRateProfile->rates[axis] = constrain(currentControlRateProfile->rates[axis], 0, KISS_MAX_SRATE);
}
break;
case RATES_TYPE_KISS:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
controlRateProfilesMutable(i)->rates[axis] = constrain(controlRateProfilesMutable(i)->rates[axis], 0, KISS_MAX_SRATE);
}
break;
case RATES_TYPE_ACTUAL:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
currentControlRateProfile->rates[axis] = constrain(currentControlRateProfile->rates[axis], 0, ACTUAL_MAX_RATE);
}
break;
case RATES_TYPE_ACTUAL:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
controlRateProfilesMutable(i)->rates[axis] = constrain(controlRateProfilesMutable(i)->rates[axis], 0, ACTUAL_MAX_RATE);
}
break;
case RATES_TYPE_QUICK:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
currentControlRateProfile->rates[axis] = constrain(currentControlRateProfile->rates[axis], 0, QUICK_MAX_RATE);
break;
case RATES_TYPE_QUICK:
for (int axis = FD_ROLL; axis <= FD_YAW; axis++) {
controlRateProfilesMutable(i)->rates[axis] = constrain(controlRateProfilesMutable(i)->rates[axis], 0, QUICK_MAX_RATE);
}
}
}
}