From 154092bbf56714a07c2b273040a33f28a4b3a2db Mon Sep 17 00:00:00 2001 From: rusefi Date: Thu, 19 Sep 2019 22:56:54 -0400 Subject: [PATCH] unit tests progress --- firmware/controllers/actuators/idle_thread.cpp | 15 ++++----------- firmware/controllers/actuators/idle_thread.h | 12 ++++++++++++ firmware/controllers/algo/engine2.cpp | 4 ++++ firmware/controllers/algo/engine_state.h | 10 ++++++++++ unit_tests/tests/test_idle_controller.cpp | 3 +++ 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index 28b8574c29..1a8fe4d866 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -306,18 +306,11 @@ static percent_t automaticIdleController(DECLARE_ENGINE_PARAMETER_SIGNATURE) { return newValue; } -class IdleController : public PeriodicTimerController { -public: - Engine *engine = NULL; - engine_configuration_s *engineConfiguration = NULL; - persistent_config_s *config = NULL; - board_configuration_s *boardConfiguration = NULL; - - int getPeriodMs() override { + int IdleController::getPeriodMs() { return GET_PERIOD_LIMITED(&engineConfiguration->idleRpmPid); } - void PeriodicTask() override { + void IdleController::PeriodicTask() { /* * Here we have idle logic thread - actual stepper movement is implemented in a separate * working thread, @@ -452,9 +445,9 @@ public: applyIACposition(engine->engineState.idle.currentIdlePosition); #endif /* EFI_UNIT_TEST */ } -}; -static IdleController idleControllerInstance; + +IdleController idleControllerInstance; static void applyPidSettings(DECLARE_ENGINE_PARAMETER_SIGNATURE) { idlePid.updateFactors(engineConfiguration->idleRpmPid.pFactor, engineConfiguration->idleRpmPid.iFactor, engineConfiguration->idleRpmPid.dFactor); diff --git a/firmware/controllers/actuators/idle_thread.h b/firmware/controllers/actuators/idle_thread.h index cdca561f23..684f8f3ecc 100644 --- a/firmware/controllers/actuators/idle_thread.h +++ b/firmware/controllers/actuators/idle_thread.h @@ -10,6 +10,18 @@ #define IDLE_THREAD_H_ #include "engine.h" +#include "periodic_task.h" + +class IdleController : public PeriodicTimerController { +public: + Engine *engine = NULL; + engine_configuration_s *engineConfiguration = NULL; + persistent_config_s *config = NULL; + board_configuration_s *boardConfiguration = NULL; + + int getPeriodMs() override; + void PeriodicTask() override; +}; percent_t getIdlePosition(void); void setIdleValvePosition(int positionPercent); diff --git a/firmware/controllers/algo/engine2.cpp b/firmware/controllers/algo/engine2.cpp index ab482db341..09cedd1b59 100644 --- a/firmware/controllers/algo/engine2.cpp +++ b/firmware/controllers/algo/engine2.cpp @@ -108,6 +108,10 @@ TransmissionState::TransmissionState() { EngineState::EngineState() { timeSinceLastTChargeK = getTimeNowNt(); + +#if ! EFI_PROD_CODE + memset(mockPinStates, 0, sizeof(mockPinStates)); +#endif /* EFI_PROD_CODE */ } void EngineState::updateSlowSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE) { diff --git a/firmware/controllers/algo/engine_state.h b/firmware/controllers/algo/engine_state.h index 6e804abecd..833d8228c2 100644 --- a/firmware/controllers/algo/engine_state.h +++ b/firmware/controllers/algo/engine_state.h @@ -14,6 +14,9 @@ #include "pid.h" #include "engine_state_generated.h" +#define BRAIN_PIN_COUNT (1 << sizeof(brain_pin_e)) + + class EngineState : public engine_state2_s { public: EngineState(); @@ -21,6 +24,10 @@ public: void updateSlowSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE); void updateTChargeK(int rpm, float tps DECLARE_ENGINE_PARAMETER_SUFFIX); +#if ! EFI_PROD_CODE + bool mockPinStates[BRAIN_PIN_COUNT]; +#endif + FuelConsumptionState fuelConsumption; /** @@ -102,6 +109,9 @@ public: #if EFI_ENABLE_MOCK_ADC MockAdcState mockAdcState; #endif /* EFI_ENABLE_MOCK_ADC */ + + + }; diff --git a/unit_tests/tests/test_idle_controller.cpp b/unit_tests/tests/test_idle_controller.cpp index 08476169a5..01d7496b01 100644 --- a/unit_tests/tests/test_idle_controller.cpp +++ b/unit_tests/tests/test_idle_controller.cpp @@ -10,6 +10,9 @@ #include "tps.h" #include "pid.h" #include "fsio_impl.h" +#include "idle_thread.h" + +extern IdleController idleControllerInstance; #define Q(x) #x #define QUOTE(x) Q(x)