diff --git a/firmware/controllers/trigger/decoders/trigger_structure.h b/firmware/controllers/trigger/decoders/trigger_structure.h index 38c996b09e..527f8bcdc0 100644 --- a/firmware/controllers/trigger/decoders/trigger_structure.h +++ b/firmware/controllers/trigger/decoders/trigger_structure.h @@ -66,6 +66,7 @@ private: class Engine; class TriggerState; class TriggerFormDetails; +class TriggerConfiguration; #define GAP_TRACKING_LENGTH 4 @@ -250,6 +251,11 @@ public: * See findTriggerZeroEventIndex() */ int triggerShapeSynchPointIndex; + + void initializeSyncPoint(TriggerState *state, + const TriggerConfiguration * triggerConfiguration, + trigger_config_s const*triggerConfig); + private: trigger_shape_helper h; diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp index f546f69693..871ee7336d 100644 --- a/firmware/controllers/trigger/trigger_decoder.cpp +++ b/firmware/controllers/trigger/trigger_decoder.cpp @@ -114,6 +114,16 @@ float actualSynchGap; static Logging * logger = nullptr; +void TriggerWaveform::initializeSyncPoint(TriggerState *state, + const TriggerConfiguration * triggerConfiguration, + trigger_config_s const*triggerConfig) { + triggerShapeSynchPointIndex = state->findTriggerZeroEventIndex(this, + triggerConfiguration, triggerConfig); +} + +/** + * Calculate 'shape.triggerShapeSynchPointIndex' value using 'TriggerState *state' + */ void calculateTriggerSynchPoint(TriggerWaveform *shape, TriggerState *state DECLARE_ENGINE_PARAMETER_SUFFIX) { #if EFI_PROD_CODE @@ -122,7 +132,7 @@ void calculateTriggerSynchPoint(TriggerWaveform *shape, trigger_config_s const*triggerConfig = &engineConfiguration->trigger; engine->triggerErrorDetection.clear(); - shape->triggerShapeSynchPointIndex = state->findTriggerZeroEventIndex(shape, + shape->initializeSyncPoint(state, &engine->primaryTriggerConfiguration, triggerConfig);