diff --git a/firmware/controllers/actuators/ac_control.cpp b/firmware/controllers/actuators/ac_control.cpp index df13a23ed5..e0d148584f 100644 --- a/firmware/controllers/actuators/ac_control.cpp +++ b/firmware/controllers/actuators/ac_control.cpp @@ -49,7 +49,6 @@ bool AcController::getAcState() { return false; } - acButtonState = engine->acSwitchState; // All conditions allow AC, simply pass thru switch return acButtonState; } diff --git a/firmware/controllers/actuators/ac_control.txt b/firmware/controllers/actuators/ac_control.txt index d6e1a88bc1..1258b154a9 100644 --- a/firmware/controllers/actuators/ac_control.txt +++ b/firmware/controllers/actuators/ac_control.txt @@ -11,6 +11,7 @@ bit acButtonState;@@INDICATOR_NAME_AC_SWITCH@@ bit isDisabledByLua;For setAcDisabled Lua method int latest_usage_ac_control; +! todo: extract some helper which would contain boolean state and most recent toggle time? int acSwitchLastChangeTimeMs; end_struct diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index dfbea03b33..cf0ae572fb 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -27,7 +27,7 @@ int IdleController::getTargetRpm(float clt) { targetRpmByClt = interpolate2d(clt, config->cltIdleRpmBins, config->cltIdleRpm); // Bump for AC - targetRpmAcBump = engine->acSwitchState ? engineConfiguration->acIdleRpmBump : 0; + targetRpmAcBump = engine->module().unmock().acButtonState ? engineConfiguration->acIdleRpmBump : 0; return targetRpmByClt + targetRpmAcBump; } @@ -95,7 +95,7 @@ percent_t IdleController::getRunningOpenLoop(float clt, SensorResult tps) { * interpolate2d(clt, config->cltIdleCorrBins, config->cltIdleCorr); // Now we bump it by the AC/fan amount if necessary - running += engine->acSwitchState ? engineConfiguration->acIdleExtraOffset : 0; + running += engine->module().unmock().acButtonState ? engineConfiguration->acIdleExtraOffset : 0; running += enginePins.fanRelay.getLogicValue() ? engineConfiguration->fan1ExtraIdle : 0; running += enginePins.fanRelay2.getLogicValue() ? engineConfiguration->fan2ExtraIdle : 0; diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index 81267b7ac6..2481bb88ae 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -324,11 +324,11 @@ void Engine::updateSwitchInputs() { } if (hasAcToggle()) { bool result = getAcToggle(); - if (engine->acSwitchState != result) { - engine->acSwitchState = result; - engine->module().unmock().acSwitchLastChangeTimeMs = US2MS(getTimeNowUs()); + AcController & acController = engine->module().unmock(); + if (acController.acButtonState != result) { + acController.acButtonState = result; + acController.acSwitchLastChangeTimeMs = US2MS(getTimeNowUs()); } - engine->acSwitchState = result; } engine->clutchUpState = getClutchUpState(); diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 22e576d957..02cc2bd9db 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -365,9 +365,6 @@ public: bool clutchDownState = false; bool brakePedalState = false; - // todo: extract some helper which would contain boolean state and most recent toggle time? - bool acSwitchState = false; - bool isRunningPwmTest = false; /** diff --git a/firmware/controllers/lua/lua_hooks.cpp b/firmware/controllers/lua/lua_hooks.cpp index 411ea10b8f..158562e72a 100644 --- a/firmware/controllers/lua/lua_hooks.cpp +++ b/firmware/controllers/lua/lua_hooks.cpp @@ -305,7 +305,7 @@ static int lua_getDigital(lua_State* l) { case 0: state = engine->clutchDownState; break; case 1: state = engine->clutchUpState; break; case 2: state = engine->brakePedalState; break; - case 3: state = engine->acSwitchState; break; + case 3: state = engine->module().unmock().acButtonState; break; default: // Return nil to indicate invalid parameter lua_pushnil(l); diff --git a/unit_tests/tests/test_idle_controller.cpp b/unit_tests/tests/test_idle_controller.cpp index 225b94bde6..1dfaa3323a 100644 --- a/unit_tests/tests/test_idle_controller.cpp +++ b/unit_tests/tests/test_idle_controller.cpp @@ -167,9 +167,9 @@ TEST(idle_v2, runningFanAcBump) { EXPECT_FLOAT_EQ(50, dut.getRunningOpenLoop(10, 0)); // Turn on AC! - engine->acSwitchState = true; + engine->module()->acButtonState = true; EXPECT_FLOAT_EQ(50 + 9, dut.getRunningOpenLoop(10, 0)); - engine->acSwitchState = false; + engine->module()->acButtonState = false; // Turn the fan on! enginePins.fanRelay.setValue(1); @@ -181,7 +181,7 @@ TEST(idle_v2, runningFanAcBump) { EXPECT_FLOAT_EQ(50 + 3, dut.getRunningOpenLoop(10, 0)); // Turn on everything! - engine->acSwitchState = true; + engine->module()->acButtonState = true; enginePins.fanRelay.setValue(1); enginePins.fanRelay2.setValue(1); EXPECT_FLOAT_EQ(50 + 9 + 7 + 3, dut.getRunningOpenLoop(10, 0));