diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index 8f255e4e2c..323811b47b 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -471,32 +471,6 @@ static percent_t automaticIdleController(float tpsPos, float rpm, int targetRpm wasResetPid = true; } - -#if EFI_GPIO_HARDWARE - // this value is not used yet - if (CONFIG(clutchDownPin) != GPIO_UNASSIGNED) { - engine->clutchDownState = efiReadPin(CONFIG(clutchDownPin)); - } - if (hasAcToggle(PASS_ENGINE_PARAMETER_SIGNATURE)) { - bool result = getAcToggle(PASS_ENGINE_PARAMETER_SIGNATURE); - if (engine->acSwitchState != result) { - engine->acSwitchState = result; - engine->acSwitchLastChangeTime = getTimeNowUs(); - } - engine->acSwitchState = result; - } - if (CONFIG(clutchUpPin) != GPIO_UNASSIGNED) { - engine->clutchUpState = efiReadPin(CONFIG(clutchUpPin)); - } - if (CONFIG(throttlePedalUpPin) != GPIO_UNASSIGNED) { - engine->engineState.idle.throttlePedalUpState = efiReadPin(CONFIG(throttlePedalUpPin)); - } - - if (engineConfiguration->brakePedalPin != GPIO_UNASSIGNED) { - engine->brakePedalState = efiReadPin(engineConfiguration->brakePedalPin); - } -#endif /* EFI_GPIO_HARDWARE */ - finishIdleTestIfNeeded(); undoIdleBlipIfNeeded(); diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index 6976036b3b..c3daf987b3 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -246,6 +246,8 @@ extern float vBattForTle8888; * See also periodicFastCallback */ void Engine::updateSlowSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE) { + updateSwitchInputs(PASS_ENGINE_PARAMETER_SIGNATURE); + #if EFI_ENGINE_CONTROL int rpm = GET_RPM(); isEngineChartEnabled = CONFIG(isEngineChartEnabled) && rpm < CONFIG(engineSnifferRpmThreshold); @@ -273,6 +275,33 @@ void Engine::updateSlowSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE) { #endif } +void Engine::updateSwitchInputs(DECLARE_ENGINE_PARAMETER_SIGNATURE) { +#if EFI_GPIO_HARDWARE + // this value is not used yet + if (CONFIG(clutchDownPin) != GPIO_UNASSIGNED) { + engine->clutchDownState = efiReadPin(CONFIG(clutchDownPin)); + } + if (hasAcToggle(PASS_ENGINE_PARAMETER_SIGNATURE)) { + bool result = getAcToggle(PASS_ENGINE_PARAMETER_SIGNATURE); + if (engine->acSwitchState != result) { + engine->acSwitchState = result; + engine->acSwitchLastChangeTime = getTimeNowUs(); + } + engine->acSwitchState = result; + } + if (CONFIG(clutchUpPin) != GPIO_UNASSIGNED) { + engine->clutchUpState = efiReadPin(CONFIG(clutchUpPin)); + } + if (CONFIG(throttlePedalUpPin) != GPIO_UNASSIGNED) { + engine->engineState.idle.throttlePedalUpState = efiReadPin(CONFIG(throttlePedalUpPin)); + } + + if (engineConfiguration->brakePedalPin != GPIO_UNASSIGNED) { + engine->brakePedalState = efiReadPin(engineConfiguration->brakePedalPin); + } +#endif // EFI_GPIO_HARDWARE +} + void Engine::onTriggerSignalEvent(efitick_t nowNt) { isSpinning = true; lastTriggerToothEventTimeNt = nowNt; diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index eac02b47da..443e260a09 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -252,6 +252,7 @@ public: void periodicFastCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE); void periodicSlowCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE); void updateSlowSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE); + void updateSwitchInputs(DECLARE_ENGINE_PARAMETER_SIGNATURE); void initializeTriggerWaveform(Logging *logger DECLARE_ENGINE_PARAMETER_SUFFIX); bool clutchUpState = false;