From f29ca22b99880a4fd4a8858f963ab849963b6643 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 20 Dec 2020 16:31:14 -0800 Subject: [PATCH] fix (#2109) --- firmware/controllers/algo/engine.h | 3 --- firmware/controllers/math/engine_math.cpp | 9 +++------ firmware/controllers/settings.cpp | 20 +++++++++++++------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 33f87ebabe..af52a52c9c 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -313,9 +313,6 @@ public: */ int ignitionPin[IGNITION_PIN_COUNT]; - // Store current ignition mode for prepareIgnitionPinIndices() - ignition_mode_e ignitionModeForPinIndices = Force_4_bytes_size_ignition_mode; - /** * this is invoked each time we register a trigger tooth signal */ diff --git a/firmware/controllers/math/engine_math.cpp b/firmware/controllers/math/engine_math.cpp index f1aef66ec2..2b81df57a5 100644 --- a/firmware/controllers/math/engine_math.cpp +++ b/firmware/controllers/math/engine_math.cpp @@ -360,14 +360,11 @@ static int getIgnitionPinForIndex(int cylinderIndex DECLARE_ENGINE_PARAMETER_SUF } void prepareIgnitionPinIndices(ignition_mode_e ignitionMode DECLARE_ENGINE_PARAMETER_SUFFIX) { - if (ignitionMode != engine->ignitionModeForPinIndices) { #if EFI_ENGINE_CONTROL - for (int cylinderIndex = 0; cylinderIndex < CONFIG(specs.cylindersCount); cylinderIndex++) { - ENGINE(ignitionPin[cylinderIndex]) = getIgnitionPinForIndex(cylinderIndex PASS_ENGINE_PARAMETER_SUFFIX); - } -#endif /* EFI_ENGINE_CONTROL */ - engine->ignitionModeForPinIndices = ignitionMode; + for (int cylinderIndex = 0; cylinderIndex < CONFIG(specs.cylindersCount); cylinderIndex++) { + ENGINE(ignitionPin[cylinderIndex]) = getIgnitionPinForIndex(cylinderIndex PASS_ENGINE_PARAMETER_SUFFIX); } +#endif /* EFI_ENGINE_CONTROL */ } /** diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp index 42f823af42..9498e7cb24 100644 --- a/firmware/controllers/settings.cpp +++ b/firmware/controllers/settings.cpp @@ -8,6 +8,7 @@ #include "global.h" #if !EFI_UNIT_TEST +#include "os_access.h" #include "settings.h" #include "eficonsole.h" #include "engine_configuration.h" @@ -241,14 +242,18 @@ static void setTimingMode(int value) { } void setEngineType(int value) { - engineConfiguration->engineType = (engine_type_e) value; - resetConfigurationExt(&logger, (engine_type_e) value PASS_ENGINE_PARAMETER_SUFFIX); - engine->resetEngineSnifferIfInTestMode(); + { + chibios_rt::CriticalSectionLocker csl; -#if EFI_INTERNAL_FLASH - writeToFlashNow(); -// scheduleReset(); -#endif /* EFI_PROD_CODE */ + engineConfiguration->engineType = (engine_type_e) value; + resetConfigurationExt(&logger, (engine_type_e) value PASS_ENGINE_PARAMETER_SUFFIX); + engine->resetEngineSnifferIfInTestMode(); + + #if EFI_INTERNAL_FLASH + writeToFlashNow(); + // scheduleReset(); + #endif /* EFI_PROD_CODE */ + } incrementGlobalConfigurationVersion(PASS_ENGINE_PARAMETER_SIGNATURE); doPrintConfiguration(); } @@ -426,6 +431,7 @@ static void setInjectionMode(int value) { static void setIgnitionMode(int value) { engineConfiguration->ignitionMode = (ignition_mode_e) value; incrementGlobalConfigurationVersion(PASS_ENGINE_PARAMETER_SIGNATURE); + prepareOutputSignals(PASS_ENGINE_PARAMETER_SIGNATURE); doPrintConfiguration(); }