diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index d7f75c4501..c745096a17 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -43,6 +43,12 @@ LoggingWithStorage engineLogger("engine"); EXTERN_ENGINE ; +#if EFI_ENGINE_SNIFFER +#include "engine_sniffer.h" +extern int waveChartUsedSize; +extern WaveChart waveChart; +#endif /* EFI_ENGINE_SNIFFER */ + FsioState::FsioState() { #if EFI_ENABLE_ENGINE_WARNING isEngineWarning = FALSE; @@ -52,6 +58,14 @@ FsioState::FsioState() { #endif } +void Engine::resetEngineSnifferIfInTestMode() { +#if EFI_ENGINE_SNIFFER + if (isTestMode) { + waveChart.reset(); + } +#endif /* EFI_ENGINE_SNIFFER */ +} + void Engine::initializeTriggerWaveform(Logging *logger DECLARE_ENGINE_PARAMETER_SUFFIX) { #if EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT // we have a confusing threading model so some synchronization would not hurt diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 6458535a37..dea2551c28 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -242,7 +242,7 @@ public: * some areas */ bool isTestMode = false; - + void resetEngineSnifferIfInTestMode(); /** * pre-calculated offset for given sequence index within engine cycle diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp index c4e2629e33..685c3863bc 100644 --- a/firmware/controllers/settings.cpp +++ b/firmware/controllers/settings.cpp @@ -318,10 +318,7 @@ 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); -#if EFI_ENGINE_SNIFFER - if (engine->isTestMode) - waveChart.reset(); -#endif + engine->resetEngineSnifferIfInTestMode(); #if EFI_INTERNAL_FLASH writeToFlashNow(); diff --git a/firmware/controllers/trigger/trigger_emulator_algo.cpp b/firmware/controllers/trigger/trigger_emulator_algo.cpp index 683496d113..ab2d8e0e4f 100644 --- a/firmware/controllers/trigger/trigger_emulator_algo.cpp +++ b/firmware/controllers/trigger/trigger_emulator_algo.cpp @@ -107,10 +107,7 @@ void setTriggerEmulatorRPM(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) { float rPerSecond = rpm * rpmM / 60.0; // per minute converted to per second triggerSignal.setFrequency(rPerSecond); } -#if EFI_ENGINE_SNIFFER - if (engine->isTestMode) - waveChart.reset(); -#endif /* EFI_ENGINE_SNIFFER */ + engine->resetEngineSnifferIfInTestMode(); scheduleMsg(logger, "Emulating position sensor(s). RPM=%d", rpm); } diff --git a/java_console/autotest/src/com/rusefi/TestingUtils.java b/java_console/autotest/src/com/rusefi/TestingUtils.java index afc17449ce..d2de494dbe 100644 --- a/java_console/autotest/src/com/rusefi/TestingUtils.java +++ b/java_console/autotest/src/com/rusefi/TestingUtils.java @@ -114,6 +114,8 @@ public class TestingUtils { * also open question why do we skip TWO full charts. maybe we account for fast or slow callback period? * * WOW, actually we DO have CMD_RESET_ENGINE_SNIFFER already and yet things are STILL pretty slow and unreliable?! + * @see Fields#CMD_FUNCTIONAL_TEST_MODE + * @see Fields#CMD_RESET_ENGINE_SNIFFER */ getNextWaveChart(); getNextWaveChart(); diff --git a/java_console/ui/src/com/rusefi/ui/RecentCommands.java b/java_console/ui/src/com/rusefi/ui/RecentCommands.java index 19f2dcf928..f3079c5801 100644 --- a/java_console/ui/src/com/rusefi/ui/RecentCommands.java +++ b/java_console/ui/src/com/rusefi/ui/RecentCommands.java @@ -136,7 +136,7 @@ public class RecentCommands { add(getDisableCommand("ignition")); add(getEnableCommand("self_stimulation")); - add(getDisableCommand("self_stimulation"); + add(getDisableCommand("self_stimulation")); add("blipidle 80 2000"); add("set_idle_position 50");