diff --git a/src/main/cli/settings.c b/src/main/cli/settings.c index 4806f66805..2494fdd970 100644 --- a/src/main/cli/settings.c +++ b/src/main/cli/settings.c @@ -469,7 +469,7 @@ static const char * const lookupTablePositionAltSource[] = { "DEFAULT", "BARO_ONLY", "GPS_ONLY" }; -static const char * const lookupTableDshotBitbang[] = { +static const char * const lookupTableOffOnAuto[] = { "OFF", "ON", "AUTO" }; @@ -592,7 +592,7 @@ const lookupTableEntry_t lookupTables[] = { LOOKUP_TABLE_ENTRY(lookupTableGyroFilterDebug), LOOKUP_TABLE_ENTRY(lookupTablePositionAltSource), - LOOKUP_TABLE_ENTRY(lookupTableDshotBitbang), + LOOKUP_TABLE_ENTRY(lookupTableOffOnAuto), LOOKUP_TABLE_ENTRY(lookupTableInterpolatedSetpoint), }; @@ -767,7 +767,7 @@ const clivalue_t valueTable[] = { { "dshot_bidir", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_MOTOR_CONFIG, offsetof(motorConfig_t, dev.useDshotTelemetry) }, #endif #ifdef USE_DSHOT_BITBANG - { "dshot_bitbang", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_DSHOT_BITBANG }, PG_MOTOR_CONFIG, offsetof(motorConfig_t, dev.useDshotBitbang) }, + { "dshot_bitbang", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON_AUTO }, PG_MOTOR_CONFIG, offsetof(motorConfig_t, dev.useDshotBitbang) }, #endif #endif { "use_unsynced_pwm", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_MOTOR_CONFIG, offsetof(motorConfig_t, dev.useUnsyncedPwm) }, @@ -1362,7 +1362,7 @@ const clivalue_t valueTable[] = { { "cpu_overclock", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OVERCLOCK }, PG_SYSTEM_CONFIG, offsetof(systemConfig_t, cpu_overclock) }, #endif { "pwr_on_arm_grace", VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, 30 }, PG_SYSTEM_CONFIG, offsetof(systemConfig_t, powerOnArmingGraceTime) }, - { "scheduler_optimize_rate", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_SYSTEM_CONFIG, offsetof(systemConfig_t, schedulerOptimizeRate) }, + { "scheduler_optimize_rate", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON_AUTO }, PG_SYSTEM_CONFIG, offsetof(systemConfig_t, schedulerOptimizeRate) }, // PG_VTX_CONFIG #ifdef USE_VTX_COMMON diff --git a/src/main/cli/settings.h b/src/main/cli/settings.h index ae91340b37..cbb32d48c1 100644 --- a/src/main/cli/settings.h +++ b/src/main/cli/settings.h @@ -135,7 +135,7 @@ typedef enum { #endif TABLE_GYRO_FILTER_DEBUG, TABLE_POSITION_ALT_SOURCE, - TABLE_DSHOT_BITBANG, + TABLE_OFF_ON_AUTO, TABLE_INTERPOLATED_SP, LOOKUP_TABLE_COUNT diff --git a/src/main/fc/config.c b/src/main/fc/config.c index c96ceea3e9..25baec8ab6 100644 --- a/src/main/fc/config.c +++ b/src/main/fc/config.c @@ -113,7 +113,7 @@ PG_RESET_TEMPLATE(systemConfig_t, systemConfig, .boardIdentifier = TARGET_BOARD_IDENTIFIER, .hseMhz = SYSTEM_HSE_VALUE, // Not used for non-F4 targets .configurationState = CONFIGURATION_STATE_DEFAULTS_BARE, - .schedulerOptimizeRate = true, + .schedulerOptimizeRate = SCHEDULER_OPTIMIZE_RATE_AUTO, ); uint8_t getCurrentPidProfileIndex(void) @@ -147,7 +147,7 @@ void resetConfig(void) static void activateConfig(void) { - schedulerOptimizeRate(systemConfig()->schedulerOptimizeRate); + schedulerOptimizeRate(systemConfig()->schedulerOptimizeRate == SCHEDULER_OPTIMIZE_RATE_ON || (systemConfig()->schedulerOptimizeRate == SCHEDULER_OPTIMIZE_RATE_AUTO && motorConfig()->dev.useDshotTelemetry)); loadPidProfile(); loadControlRateProfile(); @@ -510,7 +510,7 @@ static void validateAndFixConfig(void) } #if defined(USE_DSHOT_TELEMETRY) - if ((!usingDshotProtocol || (motorConfig()->dev.useDshotBitbang == DSHOT_BITBANG_OFF && motorConfig()->dev.useBurstDshot) || !systemConfig()->schedulerOptimizeRate) + if ((!usingDshotProtocol || (motorConfig()->dev.useDshotBitbang == DSHOT_BITBANG_OFF && motorConfig()->dev.useBurstDshot) || systemConfig()->schedulerOptimizeRate == SCHEDULER_OPTIMIZE_RATE_OFF) && motorConfig()->dev.useDshotTelemetry) { motorConfigMutable()->dev.useDshotTelemetry = false; } diff --git a/src/main/fc/config.h b/src/main/fc/config.h index 590633f215..9e18317f52 100644 --- a/src/main/fc/config.h +++ b/src/main/fc/config.h @@ -35,6 +35,12 @@ typedef enum { CONFIGURATION_STATE_CONFIGURED, } configurationState_e; +typedef enum { + SCHEDULER_OPTIMIZE_RATE_OFF = 0, + SCHEDULER_OPTIMIZE_RATE_ON, + SCHEDULER_OPTIMIZE_RATE_AUTO, +} schedulerOptimizeRate_e; + typedef struct pilotConfig_s { char name[MAX_NAME_LENGTH + 1]; char displayName[MAX_NAME_LENGTH + 1];