From d49954f9c14d63f60929fb8633fca59ee4be8091 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sun, 7 Oct 2018 14:22:05 -0400 Subject: [PATCH] better state validation --- firmware/controllers/algo/advance_map.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/firmware/controllers/algo/advance_map.cpp b/firmware/controllers/algo/advance_map.cpp index 54e863ea90..ed9727b9b6 100644 --- a/firmware/controllers/algo/advance_map.cpp +++ b/firmware/controllers/algo/advance_map.cpp @@ -153,8 +153,12 @@ angle_t getAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_SUFFIX) { angle = getCrankingAdvance(rpm, engineLoad PASS_ENGINE_PARAMETER_SUFFIX); assertAngleRange(angle, "crAngle", CUSTOM_ERR_6680); efiAssert(CUSTOM_ERR_ASSERT, !cisnan(angle), "cr_AngleN", 0); - if (CONFIG(useAdvanceCorrectionsForCranking)) - angle += getAdvanceCorrections(rpm PASS_ENGINE_PARAMETER_SUFFIX); + if (CONFIG(useAdvanceCorrectionsForCranking)) { + angle_t correction = getAdvanceCorrections(rpm PASS_ENGINE_PARAMETER_SUFFIX); + if (!cisnan(correction)) { // correction could be NaN during settings update + angle += correction; + } + } efiAssert(CUSTOM_ERR_ASSERT, !cisnan(angle), "cr_AngleN2", 0); } else { angle = getRunningAdvance(rpm, engineLoad PASS_ENGINE_PARAMETER_SUFFIX); @@ -162,7 +166,10 @@ angle_t getAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_SUFFIX) { warning(CUSTOM_ERR_6610, "NaN angle from table"); return 0; } - angle += getAdvanceCorrections(rpm PASS_ENGINE_PARAMETER_SUFFIX); + angle_t correction = getAdvanceCorrections(rpm PASS_ENGINE_PARAMETER_SUFFIX); + if (!cisnan(correction)) { // correction could be NaN during settings update + angle += correction; + } efiAssert(CUSTOM_ERR_ASSERT, !cisnan(angle), "AngleN3", 0); } efiAssert(CUSTOM_ERR_ASSERT, !cisnan(angle), "_AngleN4", 0);