From 1b0c46aaa7ed2e03d6a5c646ddf6e7208c5f7361 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 19 Jan 2019 21:10:58 -0500 Subject: [PATCH] better fields location, better initialization logic --- firmware/controllers/algo/advance_map.cpp | 4 ++-- firmware/controllers/algo/engine.cpp | 4 ++-- firmware/controllers/algo/engine.h | 10 +++++----- firmware/controllers/core/fsio_impl.cpp | 11 ++++------- firmware/controllers/idle_thread.cpp | 2 +- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/firmware/controllers/algo/advance_map.cpp b/firmware/controllers/algo/advance_map.cpp index a8bfba0c89..caadcb2d40 100644 --- a/firmware/controllers/algo/advance_map.cpp +++ b/firmware/controllers/algo/advance_map.cpp @@ -115,12 +115,12 @@ static angle_t getAdvanceCorrections(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) { #if EFI_TUNER_STUDIO || defined(__DOXYGEN__) tsOutputChannels.debugFloatField1 = iatCorrection; tsOutputChannels.debugFloatField2 = engine->engineState.cltTimingCorrection; - tsOutputChannels.debugFloatField3 = engine->fsioTimingAdjustment; + tsOutputChannels.debugFloatField3 = engine->fsioState.fsioTimingAdjustment; #endif /* EFI_TUNER_STUDIO */ } return iatCorrection - + engine->fsioTimingAdjustment + + engine->fsioState.fsioTimingAdjustment + engine->engineState.cltTimingCorrection // todo: uncomment once we get useable knock - engine->knockCount ; diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index e0a639ae18..12bca03ce4 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -178,8 +178,8 @@ void Engine::reset() { etbAutoTune = false; sensorChartMode = SC_OFF; actualLastInjection = 0; - fsioTimingAdjustment = 0; - fsioIdleTargetRPMAdjustment = 0; + fsioState.fsioTimingAdjustment = 0; + fsioState.fsioIdleTargetRPMAdjustment = 0; isAlternatorControlEnabled = false; callFromPitStopEndTime = 0; rpmHardLimitTimestamp = 0; diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 284fa7e105..9631e9c749 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -307,6 +307,10 @@ typedef void (*configuration_callback_t)(Engine*); class FsioState { public: FsioState(); + float fsioTimingAdjustment; + float fsioIdleTargetRPMAdjustment; + float servoValues[SERVO_COUNT]; + #if EFI_ENABLE_ENGINE_WARNING /** * Shall we purposely miss on some cylinders in order to attract driver's attention to some problem @@ -337,7 +341,6 @@ public: Engine(persistent_config_s *config); Engine(); void setConfig(persistent_config_s *config); - void reset(); injection_mode_e getCurrentInjectionMode(DECLARE_ENGINE_PARAMETER_SIGNATURE); InjectionSignalPair fuelActuators[INJECTION_PIN_COUNT]; @@ -456,10 +459,6 @@ public: bool isRunningPwmTest; - // todo: move this into FsioState class - float fsioTimingAdjustment; - float fsioIdleTargetRPMAdjustment; - float servoValues[SERVO_COUNT]; FsioState fsioState; @@ -569,6 +568,7 @@ private: * 'spinning' means the engine is not stopped */ bool isSpinning; + void reset(); }; /** diff --git a/firmware/controllers/core/fsio_impl.cpp b/firmware/controllers/core/fsio_impl.cpp index 3b201223c0..863871f306 100644 --- a/firmware/controllers/core/fsio_impl.cpp +++ b/firmware/controllers/core/fsio_impl.cpp @@ -90,10 +90,7 @@ public: LEElement * fsioLogics[FSIO_COMMAND_COUNT]; }; -FsioPointers::FsioPointers() { - for (int i = 0; i < FSIO_COMMAND_COUNT; i++) { - fsioLogics[i] = NULL; - } +FsioPointers::FsioPointers() : fsioLogics() { } static FsioPointers state; @@ -441,7 +438,7 @@ static bool updateValueOrWarning(int fsioIndex, const char *msg, float *value DE } static void useFsioForServo(int servoIndex DECLARE_ENGINE_PARAMETER_SUFFIX) { - updateValueOrWarning(8 - 1 + servoIndex, "servo", &engine->servoValues[servoIndex] PASS_ENGINE_PARAMETER_SUFFIX); + updateValueOrWarning(8 - 1 + servoIndex, "servo", &engine->fsioState.servoValues[servoIndex] PASS_ENGINE_PARAMETER_SUFFIX); } /** @@ -506,11 +503,11 @@ void runFsio(DECLARE_ENGINE_PARAMETER_SIGNATURE) { #endif /* EFI_ENABLE_CRITICAL_ENGINE_STOP */ if (engineConfiguration->useFSIO15ForIdleRpmAdjustment) { - updateValueOrWarning(MAGIC_OFFSET_FOR_IDLE_TARGET_RPM, "RPM target", &ENGINE(fsioIdleTargetRPMAdjustment) PASS_ENGINE_PARAMETER_SUFFIX); + updateValueOrWarning(MAGIC_OFFSET_FOR_IDLE_TARGET_RPM, "RPM target", &ENGINE(fsioState.fsioIdleTargetRPMAdjustment) PASS_ENGINE_PARAMETER_SUFFIX); } if (engineConfiguration->useFSIO16ForTimingAdjustment) { - updateValueOrWarning(MAGIC_OFFSET_FOR_TIMING_FSIO, "timing", &ENGINE(fsioTimingAdjustment) PASS_ENGINE_PARAMETER_SUFFIX); + updateValueOrWarning(MAGIC_OFFSET_FOR_TIMING_FSIO, "timing", &ENGINE(fsioState.fsioTimingAdjustment) PASS_ENGINE_PARAMETER_SUFFIX); } if (engineConfiguration->useFSIO8ForServo1) { diff --git a/firmware/controllers/idle_thread.cpp b/firmware/controllers/idle_thread.cpp index c3e6bc4c34..fee0f89ac9 100644 --- a/firmware/controllers/idle_thread.cpp +++ b/firmware/controllers/idle_thread.cpp @@ -213,7 +213,7 @@ static percent_t automaticIdleController() { } else { targetRpm = interpolate2d("cltRpm", clt, CONFIG(cltIdleRpmBins), CONFIG(cltIdleRpm), CLT_CURVE_SIZE); } - targetRpm += engine->fsioIdleTargetRPMAdjustment; + targetRpm += engine->fsioState.fsioIdleTargetRPMAdjustment; // check if within the dead zone