From 282cd8e1ac49bffc55dde4f09d0d9c88446ac68b Mon Sep 17 00:00:00 2001 From: rusefi Date: Sun, 26 Jan 2020 14:20:55 -0500 Subject: [PATCH] trigger refactoring --- firmware/controllers/trigger/trigger_decoder.cpp | 8 ++++---- firmware/controllers/trigger/trigger_decoder.h | 3 ++- firmware/controllers/trigger/trigger_simulator.cpp | 7 ++++--- firmware/controllers/trigger/trigger_simulator.h | 2 +- unit_tests/tests/test_trigger_decoder.cpp | 3 ++- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp index b5eba627fd..ba596662ba 100644 --- a/firmware/controllers/trigger/trigger_decoder.cpp +++ b/firmware/controllers/trigger/trigger_decoder.cpp @@ -127,7 +127,8 @@ void calculateTriggerSynchPoint(TriggerWaveform *shape, TriggerState *state DECL #endif trigger_config_s const*triggerConfig = &engineConfiguration->trigger; - shape->triggerShapeSynchPointIndex = state->findTriggerZeroEventIndex(shape, triggerConfig PASS_ENGINE_PARAMETER_SUFFIX); + engine->triggerErrorDetection.clear(); + shape->triggerShapeSynchPointIndex = state->findTriggerZeroEventIndex(shape, triggerConfig PASS_CONFIG_PARAMETER_SUFFIX); int length = shape->getLength(); engine->engineCycleEventCount = length; @@ -671,12 +672,11 @@ static void onFindIndexCallback(TriggerState *state) { * This function finds the index of synchronization event within TriggerWaveform */ uint32_t TriggerState::findTriggerZeroEventIndex(TriggerWaveform * shape, - trigger_config_s const*triggerConfig DECLARE_ENGINE_PARAMETER_SUFFIX) { + trigger_config_s const*triggerConfig DECLARE_CONFIG_PARAMETER_SUFFIX) { UNUSED(triggerConfig); #if EFI_PROD_CODE efiAssert(CUSTOM_ERR_ASSERT, getCurrentRemainingStack() > 128, "findPos", -1); #endif - engine->triggerErrorDetection.clear(); resetTriggerState(); @@ -689,7 +689,7 @@ uint32_t TriggerState::findTriggerZeroEventIndex(TriggerWaveform * shape, // todo: should this variable be declared 'static' to reduce stack usage? TriggerStimulatorHelper helper; - uint32_t syncIndex = helper.findTriggerSyncPoint(shape, this PASS_ENGINE_PARAMETER_SUFFIX); + uint32_t syncIndex = helper.findTriggerSyncPoint(shape, this PASS_CONFIG_PARAMETER_SUFFIX); if (syncIndex == EFI_ERROR_CODE) { return syncIndex; } diff --git a/firmware/controllers/trigger/trigger_decoder.h b/firmware/controllers/trigger/trigger_decoder.h index 36b39eadf6..69b8eaa77c 100644 --- a/firmware/controllers/trigger/trigger_decoder.h +++ b/firmware/controllers/trigger/trigger_decoder.h @@ -118,7 +118,8 @@ public: */ efitick_t startOfCycleNt; - uint32_t findTriggerZeroEventIndex(TriggerWaveform * shape, trigger_config_s const*triggerConfig DECLARE_ENGINE_PARAMETER_SUFFIX); + uint32_t findTriggerZeroEventIndex(TriggerWaveform * shape, trigger_config_s const*triggerConfig + DECLARE_CONFIG_PARAMETER_SUFFIX); private: void resetCurrentCycleState(); diff --git a/firmware/controllers/trigger/trigger_simulator.cpp b/firmware/controllers/trigger/trigger_simulator.cpp index 38f2c4db60..66d83cdeee 100644 --- a/firmware/controllers/trigger/trigger_simulator.cpp +++ b/firmware/controllers/trigger/trigger_simulator.cpp @@ -121,14 +121,15 @@ void TriggerStimulatorHelper::assertSyncPositionAndSetDutyCycle(const TriggerSta * @return trigger synchronization point index, or error code if not found */ uint32_t TriggerStimulatorHelper::findTriggerSyncPoint(TriggerWaveform * shape, - TriggerState *state DECLARE_ENGINE_PARAMETER_SUFFIX) { + TriggerState *state DECLARE_CONFIG_PARAMETER_SUFFIX) { for (int i = 0; i < 4 * PWM_PHASE_MAX_COUNT; i++) { feedSimulatedEvent(nullptr, state, shape, i PASS_CONFIG_PARAMETER_SUFFIX); - if (state->shaft_is_synchronized) + if (state->shaft_is_synchronized) { return i; + } } - engine->triggerCentral.triggerShape.setShapeDefinitionError(true); + shape->setShapeDefinitionError(true); warning(CUSTOM_ERR_TRIGGER_SYNC, "findTriggerZeroEventIndex() failed"); return EFI_ERROR_CODE; } diff --git a/firmware/controllers/trigger/trigger_simulator.h b/firmware/controllers/trigger/trigger_simulator.h index bd8c3362b3..9eb65acc68 100644 --- a/firmware/controllers/trigger/trigger_simulator.h +++ b/firmware/controllers/trigger/trigger_simulator.h @@ -14,7 +14,7 @@ class TriggerStimulatorHelper { public: uint32_t findTriggerSyncPoint(TriggerWaveform * shape, - TriggerState *state DECLARE_ENGINE_PARAMETER_SUFFIX); + TriggerState *state DECLARE_CONFIG_PARAMETER_SUFFIX); void assertSyncPositionAndSetDutyCycle(const TriggerStateCallback triggerCycleCallback, const uint32_t index, TriggerState *state, TriggerWaveform * shape diff --git a/unit_tests/tests/test_trigger_decoder.cpp b/unit_tests/tests/test_trigger_decoder.cpp index cdc99e16c2..cb0b4cf2f8 100644 --- a/unit_tests/tests/test_trigger_decoder.cpp +++ b/unit_tests/tests/test_trigger_decoder.cpp @@ -41,7 +41,8 @@ static int getTriggerZeroEventIndex(engine_type_e engineType) { initDataStructures(PASS_ENGINE_PARAMETER_SIGNATURE); TriggerWaveform * shape = ð.engine.triggerCentral.triggerShape; - return eth.engine.triggerCentral.triggerState.findTriggerZeroEventIndex(shape, &engineConfiguration->trigger PASS_ENGINE_PARAMETER_SUFFIX); + return eth.engine.triggerCentral.triggerState.findTriggerZeroEventIndex(shape, &engineConfiguration->trigger + PASS_CONFIG_PARAMETER_SUFFIX); } static void testDodgeNeonDecoder(void) {