diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index 0ccde37c9d..c3eeda8b85 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -119,6 +119,7 @@ void Engine::reset() { isRunningPwmTest = false; isTestMode = false; isSpinning = false; + isCltBroken = false; adcToVoltageInputDividerCoefficient = NAN; sensors.reset(); memset(&ignitionPin, 0, sizeof(ignitionPin)); diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 654596f378..b161a4bbc5 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -274,6 +274,8 @@ public: */ bool isAlternatorControlEnabled; + bool isCltBroken; + // floatms_t callToPitEndTime; diff --git a/firmware/controllers/sensors/thermistors.cpp b/firmware/controllers/sensors/thermistors.cpp index e6dd610e48..880136e30e 100644 --- a/firmware/controllers/sensors/thermistors.cpp +++ b/firmware/controllers/sensors/thermistors.cpp @@ -106,14 +106,17 @@ bool hasCltSensor(DECLARE_ENGINE_PARAMETER_F) { */ float getCoolantTemperature(DECLARE_ENGINE_PARAMETER_F) { if (!hasCltSensor(PASS_ENGINE_PARAMETER_F)) { + engine->isCltBroken = false; return NO_CLT_SENSOR_TEMPERATURE; } float temperature = getTemperatureC(&engineConfiguration->clt, &engine->engineState.cltCurve); if (!isValidCoolantTemperature(temperature)) { efiAssert(engineConfiguration!=NULL, "NULL engineConfiguration", NAN); warning(OBD_Engine_Coolant_Temperature_Circuit_Malfunction, "unrealistic CLT %f", temperature); + engine->isCltBroken = true; return LIMPING_MODE_CLT_TEMPERATURE; } + engine->isCltBroken = false; return temperature; }