diff --git a/firmware/controllers/algo/engine2.cpp b/firmware/controllers/algo/engine2.cpp index 6bef5029eb..786f83f27a 100644 --- a/firmware/controllers/algo/engine2.cpp +++ b/firmware/controllers/algo/engine2.cpp @@ -144,7 +144,7 @@ void EngineState::periodicFastCallback() { } engine->fuelComputer.running.postCrankingFuelCorrection = m_postCrankingFactor; - engine->ignitionState.cltTimingCorrection = getCltTimingCorrection(); + engine->ignitionState.updateAdvanceCorrections(); baroCorrection = getBaroCorrection(); diff --git a/firmware/controllers/algo/fuel_math.cpp b/firmware/controllers/algo/fuel_math.cpp index b3c194ac65..ea422730f4 100644 --- a/firmware/controllers/algo/fuel_math.cpp +++ b/firmware/controllers/algo/fuel_math.cpp @@ -366,15 +366,6 @@ float getCltFuelCorrection() { return interpolate2d(clt.Value, config->cltFuelCorrBins, config->cltFuelCorr); } -angle_t getCltTimingCorrection() { - const auto clt = Sensor::get(SensorType::Clt); - - if (!clt) - return 0; // this error should be already reported somewhere else, let's just handle it - - return interpolate2d(clt.Value, config->cltTimingBins, config->cltTimingExtra); -} - float getIatFuelCorrection() { const auto iat = Sensor::get(SensorType::Iat); diff --git a/firmware/controllers/algo/ignition/ignition_state.cpp b/firmware/controllers/algo/ignition/ignition_state.cpp index 2bb98d832e..fcdb8672bc 100644 --- a/firmware/controllers/algo/ignition/ignition_state.cpp +++ b/firmware/controllers/algo/ignition/ignition_state.cpp @@ -130,6 +130,19 @@ angle_t getRunningAdvance(float rpm, float engineLoad) { return advanceAngle; } +angle_t getCltTimingCorrection() { + const auto clt = Sensor::get(SensorType::Clt); + + if (!clt) + return 0; // this error should be already reported somewhere else, let's just handle it + + return interpolate2d(clt.Value, config->cltTimingBins, config->cltTimingExtra); +} + +void IgnitionState::updateAdvanceCorrections() { + cltTimingCorrection = getCltTimingCorrection(); +} + angle_t getAdvanceCorrections(float engineLoad) { auto iat = Sensor::get(SensorType::Iat); diff --git a/firmware/controllers/algo/ignition/ignition_state.h b/firmware/controllers/algo/ignition/ignition_state.h index 6b0c65f3e6..cf7c170f92 100644 --- a/firmware/controllers/algo/ignition/ignition_state.h +++ b/firmware/controllers/algo/ignition/ignition_state.h @@ -5,6 +5,8 @@ class IgnitionState : public ignition_state_s { public: void updateDwell(float rpm, bool isCranking); + void updateAdvanceCorrections(); + floatms_t getDwell() const; angle_t getWrappedAdvance(const float rpm, const float engineLoad); private: