From 8f14c44097bde5835c8eb28302213bf3ae20e8b4 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 7 Sep 2022 16:25:50 -0400 Subject: [PATCH] extracting prime_injection --- firmware/controllers/algo/engine.h | 29 +------------- firmware/controllers/controllers.mk | 1 + firmware/controllers/core/engine_module.h | 2 + .../engine_cycle/main_trigger_callback.cpp | 2 +- .../engine_cycle/main_trigger_callback.h | 1 - .../engine_cycle/prime_injection.cpp | 7 ++++ .../engine_cycle/prime_injection.h | 38 +++++++++++++++++++ firmware/controllers/system/efi_gpio.h | 3 ++ 8 files changed, 53 insertions(+), 30 deletions(-) create mode 100644 firmware/controllers/engine_cycle/prime_injection.cpp create mode 100644 firmware/controllers/engine_cycle/prime_injection.h diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 0e8ed2dcda..158efcfe43 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -43,6 +43,7 @@ #include "fan_control.h" #include "sensor_checker.h" #include "fuel_schedule.h" +#include "prime_injection.h" #ifndef EFI_UNIT_TEST #error EFI_UNIT_TEST must be defined! @@ -113,34 +114,6 @@ protected: trigger_config_s getType() const override; }; -class PrimeController : public EngineModule { -public: - void onIgnitionStateChanged(bool ignitionOn) override; - - floatms_t getPrimeDuration() const; - - void onPrimeStart(); - void onPrimeEnd(); - - bool isPriming() const { - return m_isPriming; - } - -private: - scheduling_s m_start; - scheduling_s m_end; - - bool m_isPriming = false; - - static void onPrimeStartAdapter(PrimeController* instance) { - instance->onPrimeStart(); - } - - static void onPrimeEndAdapter(PrimeController* instance) { - instance->onPrimeEnd(); - } -}; - class Engine final : public TriggerStateListener { public: Engine(); diff --git a/firmware/controllers/controllers.mk b/firmware/controllers/controllers.mk index 42902f9f79..ec84005b39 100644 --- a/firmware/controllers/controllers.mk +++ b/firmware/controllers/controllers.mk @@ -42,6 +42,7 @@ CONTROLLERS_SRC_CPP = \ $(CONTROLLERS_DIR)/engine_cycle/spark_logic.cpp \ $(CONTROLLERS_DIR)/engine_cycle/knock_controller.cpp \ $(CONTROLLERS_DIR)/engine_cycle/main_trigger_callback.cpp \ + $(CONTROLLERS_DIR)/engine_cycle/prime_injection.cpp \ $(CONTROLLERS_DIR)/engine_cycle/aux_valves.cpp \ $(CONTROLLERS_DIR)/engine_cycle/fuel_schedule.cpp \ $(CONTROLLERS_DIR)/flash_main.cpp \ diff --git a/firmware/controllers/core/engine_module.h b/firmware/controllers/core/engine_module.h index e0a1dfec87..7cf11e4b40 100644 --- a/firmware/controllers/core/engine_module.h +++ b/firmware/controllers/core/engine_module.h @@ -4,6 +4,8 @@ #pragma once +#include "engine_configuration.h" + class EngineModule { public: // Called when 'Burn' is invoked diff --git a/firmware/controllers/engine_cycle/main_trigger_callback.cpp b/firmware/controllers/engine_cycle/main_trigger_callback.cpp index 993716344c..7dfb7b8c92 100644 --- a/firmware/controllers/engine_cycle/main_trigger_callback.cpp +++ b/firmware/controllers/engine_cycle/main_trigger_callback.cpp @@ -59,7 +59,7 @@ void startSimultaneousInjection(void*) { } } -static void endSimultaneousInjectionOnlyTogglePins() { +void endSimultaneousInjectionOnlyTogglePins() { efitick_t nowNt = getTimeNowNt(); for (size_t i = 0; i < engineConfiguration->specs.cylindersCount; i++) { enginePins.injectors[i].close(nowNt); diff --git a/firmware/controllers/engine_cycle/main_trigger_callback.h b/firmware/controllers/engine_cycle/main_trigger_callback.h index df66cadbd7..08350db9e7 100644 --- a/firmware/controllers/engine_cycle/main_trigger_callback.h +++ b/firmware/controllers/engine_cycle/main_trigger_callback.h @@ -13,7 +13,6 @@ void mainTriggerCallback(uint32_t trgEventIndex, efitick_t edgeTimestamp, angle_t currentPhase, angle_t nextPhase); -void startSimultaneousInjection(void* = nullptr); void endSimultaneousInjection(InjectionEvent *event); void turnInjectionPinHigh(InjectionEvent *event); void turnInjectionPinLow(InjectionEvent *event); diff --git a/firmware/controllers/engine_cycle/prime_injection.cpp b/firmware/controllers/engine_cycle/prime_injection.cpp new file mode 100644 index 0000000000..298af42975 --- /dev/null +++ b/firmware/controllers/engine_cycle/prime_injection.cpp @@ -0,0 +1,7 @@ +/* + * @file prime_injection.cpp + */ + +#include "prime_injection.h" + + diff --git a/firmware/controllers/engine_cycle/prime_injection.h b/firmware/controllers/engine_cycle/prime_injection.h new file mode 100644 index 0000000000..ace1ecee49 --- /dev/null +++ b/firmware/controllers/engine_cycle/prime_injection.h @@ -0,0 +1,38 @@ +/* + * @file prime_injection.h + + */ + +#pragma once + +#include "engine_module.h" +#include "rusefi_types.h" +#include "scheduler.h" + +class PrimeController : public EngineModule { +public: + void onIgnitionStateChanged(bool ignitionOn) override; + + floatms_t getPrimeDuration() const; + + void onPrimeStart(); + void onPrimeEnd(); + + bool isPriming() const { + return m_isPriming; + } + +private: + scheduling_s m_start; + scheduling_s m_end; + + bool m_isPriming = false; + + static void onPrimeStartAdapter(PrimeController* instance) { + instance->onPrimeStart(); + } + + static void onPrimeEndAdapter(PrimeController* instance) { + instance->onPrimeEnd(); + } +}; diff --git a/firmware/controllers/system/efi_gpio.h b/firmware/controllers/system/efi_gpio.h index 499e96c07e..7fc5953fc5 100644 --- a/firmware/controllers/system/efi_gpio.h +++ b/firmware/controllers/system/efi_gpio.h @@ -115,6 +115,9 @@ public: const char *shortName = nullptr; }; +void startSimultaneousInjection(void* = nullptr); +void endSimultaneousInjectionOnlyTogglePins(); + class InjectorOutputPin final : public NamedOutputPin { public: InjectorOutputPin();