From 3f45fd63c59189e8e54bee3156e3d8d9f5821e7e Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 27 Apr 2024 10:46:22 -0400 Subject: [PATCH] only: setTimeNowUs(): replace global fiddling with a function call --- firmware/controllers/lua/lua_hooks.cpp | 3 +-- unit_tests/test-framework/engine_test_helper.cpp | 14 ++++++-------- unit_tests/tests/actuators/test_etb_integrated.cpp | 5 ++--- unit_tests/tests/test_idle_controller.cpp | 10 ++++------ 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/firmware/controllers/lua/lua_hooks.cpp b/firmware/controllers/lua/lua_hooks.cpp index b68355dee7..9a9be91241 100644 --- a/firmware/controllers/lua/lua_hooks.cpp +++ b/firmware/controllers/lua/lua_hooks.cpp @@ -586,9 +586,8 @@ struct LuaIndustrialPid final { float get(float target, float input) { #if EFI_UNIT_TEST - extern int timeNowUs; // this is how we avoid zero dt - timeNowUs += 1000; + advanceTimeUs(1000); #endif float dt = m_lastUpdate.getElapsedSecondsAndReset(getTimeNowNt()); diff --git a/unit_tests/test-framework/engine_test_helper.cpp b/unit_tests/test-framework/engine_test_helper.cpp index b23103c162..9cbbd7b1c9 100644 --- a/unit_tests/test-framework/engine_test_helper.cpp +++ b/unit_tests/test-framework/engine_test_helper.cpp @@ -21,8 +21,6 @@ extern WaveChart waveChart; #endif /* EFI_ENGINE_SNIFFER */ - -extern int timeNowUs; extern WarningCodeState unitTestWarningCodeState; extern engine_configuration_s & activeConfiguration; extern bool printTriggerDebug; @@ -256,10 +254,10 @@ void EngineTestHelper::moveTimeForwardAndInvokeEventsUs(int deltaTimeUs) { if (printTriggerDebug || printFuelDebug) { printf("moveTimeForwardAndInvokeEventsUs %.1fms\r\n", deltaTimeUs / 1000.0); } - setTimeAndInvokeEventsUs(timeNowUs + deltaTimeUs); + setTimeAndInvokeEventsUs(getTimeNowUs() + deltaTimeUs); } -void EngineTestHelper::setTimeAndInvokeEventsUs(int targetTime) { +void EngineTestHelper::setTimeAndInvokeEventsUs(int targetTimeUs) { while (true) { scheduling_s* nextScheduledEvent = engine.executor.getHead(); if (nextScheduledEvent == nullptr) { @@ -267,15 +265,15 @@ void EngineTestHelper::setTimeAndInvokeEventsUs(int targetTime) { break; } int nextEventTime = nextScheduledEvent->momentX; - if (nextEventTime > targetTime) { + if (nextEventTime > targetTimeUs) { // next event is too far in the future break; } - timeNowUs = nextEventTime; - engine.executor.executeAll(timeNowUs); + setTimeNowUs(nextEventTime); + engine.executor.executeAll(getTimeNowUs()); } - timeNowUs = targetTime; + setTimeNowUs(targetTimeUs); } void EngineTestHelper::fireTriggerEvents(int count) { diff --git a/unit_tests/tests/actuators/test_etb_integrated.cpp b/unit_tests/tests/actuators/test_etb_integrated.cpp index aecc3b7290..1d1465a623 100644 --- a/unit_tests/tests/actuators/test_etb_integrated.cpp +++ b/unit_tests/tests/actuators/test_etb_integrated.cpp @@ -48,7 +48,6 @@ TEST(etb, integrated) { ASSERT_NEAR(destination, 130.2554, EPS3D); } -extern int timeNowUs; extern WarningCodeState unitTestWarningCodeState; TEST(etb, intermittentTps) { @@ -60,7 +59,7 @@ TEST(etb, intermittentTps) { // Tell the sensor checker that the ignition is on engine->module()->onIgnitionStateChanged(true); engine->module()->onSlowCallback(); - timeNowUs += MS2US(1000); + advanceTimeUs(MS2US(1000)); engine->module()->onSlowCallback(); // todo: fix me https://github.com/rusefi/rusefi/issues/5233 // EXPECT_EQ( 3, recentWarnings.getCount()) << "intermittentTps"; @@ -117,7 +116,7 @@ TEST(etb, intermittentPps) { // Tell the sensor checker that the ignition is on engine->module()->onIgnitionStateChanged(true); engine->module()->onSlowCallback(); - timeNowUs += 10e6; + advanceTimeUs(10e6); engine->module()->onSlowCallback(); ASSERT_TRUE(engine->module()->analogSensorsShouldWork()); diff --git a/unit_tests/tests/test_idle_controller.cpp b/unit_tests/tests/test_idle_controller.cpp index cb76bdfc11..7d2763fc21 100644 --- a/unit_tests/tests/test_idle_controller.cpp +++ b/unit_tests/tests/test_idle_controller.cpp @@ -208,8 +208,6 @@ TEST(idle_v2, runningOpenLoopTpsTaper) { EXPECT_FLOAT_EQ(50, dut.getRunningOpenLoop(IIdleController::Phase::Cranking, 0, 0, 20)); } -extern int timeNowUs; - TEST(idle_v2, runningOpenLoopTpsTaperWithDashpot) { EngineTestHelper eth(engine_type_e::TEST_ENGINE); IdleController dut; @@ -227,21 +225,21 @@ TEST(idle_v2, runningOpenLoopTpsTaperWithDashpot) { engineConfiguration->iacByTpsDecayTime = 10; // 10 secs // save the lastTimeRunningUs time - let it be the start of the hold phase - timeNowUs += 5'000'000; + advanceTimeUs(5'000'000); // full throttle = max.iac EXPECT_FLOAT_EQ(50, dut.getRunningOpenLoop(ICP::Running, 0, 0, 100)); // jump to the end of the 'hold' phase of dashpot - timeNowUs += 10'000'000; + advanceTimeUs(10'000'000); // change the state to idle (release the pedal) - but still 100% max.iac! EXPECT_FLOAT_EQ(50, dut.getRunningOpenLoop(ICP::Idling, 0, 0, 0)); // now we're in the middle of decay - timeNowUs += 5'000'000; + advanceTimeUs(5'000'000); // 50% decay (50% of 50 is 25) EXPECT_FLOAT_EQ(25, dut.getRunningOpenLoop(ICP::Idling, 0, 0, 0)); // now the decay is finished - timeNowUs += 5'000'000; + advanceTimeUs(5'000'000); // no correction EXPECT_FLOAT_EQ(0, dut.getRunningOpenLoop(ICP::Idling, 0, 0, 0)); // still react to the pedal