From 9f4f85a0978e8961cc6c8b06b032da0c5f1bb9dd Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 31 Aug 2022 23:59:23 -0400 Subject: [PATCH] let spark deal with spark limpManager --- .../controllers/engine_cycle/main_trigger_callback.cpp | 6 +----- firmware/controllers/engine_cycle/spark_logic.cpp | 8 +++++--- firmware/controllers/engine_cycle/spark_logic.h | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/firmware/controllers/engine_cycle/main_trigger_callback.cpp b/firmware/controllers/engine_cycle/main_trigger_callback.cpp index 9838c9e128..04f7c70146 100644 --- a/firmware/controllers/engine_cycle/main_trigger_callback.cpp +++ b/firmware/controllers/engine_cycle/main_trigger_callback.cpp @@ -397,10 +397,6 @@ void mainTriggerCallback(uint32_t trgEventIndex, efitick_t edgeTimestamp, angle_ return; } - LimpState limitedSparkState = engine->limpManager.allowIgnition(); - engine->outputChannels.sparkCutReason = (int8_t)limitedSparkState.reason; - bool limitedSpark = !limitedSparkState.value; - LimpState limitedFuelState = engine->limpManager.allowInjection(); engine->outputChannels.fuelCutReason = (int8_t)limitedFuelState.reason; bool limitedFuel = !limitedFuelState.value; @@ -433,7 +429,7 @@ void mainTriggerCallback(uint32_t trgEventIndex, efitick_t edgeTimestamp, angle_ /** * For spark we schedule both start of coil charge and actual spark based on trigger angle */ - onTriggerEventSparkLogic(limitedSpark, trgEventIndex, rpm, edgeTimestamp); + onTriggerEventSparkLogic(trgEventIndex, rpm, edgeTimestamp); } // Check if the engine is not stopped or cylinder cleanup is activated diff --git a/firmware/controllers/engine_cycle/spark_logic.cpp b/firmware/controllers/engine_cycle/spark_logic.cpp index da4169b0cd..e1536eca6a 100644 --- a/firmware/controllers/engine_cycle/spark_logic.cpp +++ b/firmware/controllers/engine_cycle/spark_logic.cpp @@ -423,9 +423,7 @@ static void prepareIgnitionSchedule() { initializeIgnitionActions(); } -void onTriggerEventSparkLogic(bool limitedSpark, uint32_t trgEventIndex, int rpm, efitick_t edgeTimestamp - ) { - +void onTriggerEventSparkLogic(uint32_t trgEventIndex, int rpm, efitick_t edgeTimestamp) { ScopePerf perf(PE::OnTriggerEventSparkLogic); if (!isValidRpm(rpm) || !engineConfiguration->isIgnitionEnabled) { @@ -433,6 +431,10 @@ void onTriggerEventSparkLogic(bool limitedSpark, uint32_t trgEventIndex, int rpm return; } + LimpState limitedSparkState = engine->limpManager.allowIgnition(); + engine->outputChannels.sparkCutReason = (int8_t)limitedSparkState.reason; + bool limitedSpark = !limitedSparkState.value; + if (!engine->ignitionEvents.isReady) { prepareIgnitionSchedule(); } diff --git a/firmware/controllers/engine_cycle/spark_logic.h b/firmware/controllers/engine_cycle/spark_logic.h index 25417dde7d..582bc8bcf8 100644 --- a/firmware/controllers/engine_cycle/spark_logic.h +++ b/firmware/controllers/engine_cycle/spark_logic.h @@ -7,7 +7,7 @@ #pragma once -void onTriggerEventSparkLogic(bool limitedSpark, uint32_t trgEventIndex, int rpm, efitick_t edgeTimestamp); +void onTriggerEventSparkLogic(uint32_t trgEventIndex, int rpm, efitick_t edgeTimestamp); void turnSparkPinHigh(IgnitionEvent *event); void fireSparkAndPrepareNextSchedule(IgnitionEvent *event); int getNumberOfSparks(ignition_mode_e mode);