only: setTimeNowUs(): replace global fiddling with a function call

This commit is contained in:
rusefi 2024-04-27 10:46:22 -04:00
parent a42092826a
commit 3f45fd63c5
4 changed files with 13 additions and 19 deletions

View File

@ -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());

View File

@ -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) {

View File

@ -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<SensorChecker>()->onIgnitionStateChanged(true);
engine->module<SensorChecker>()->onSlowCallback();
timeNowUs += MS2US(1000);
advanceTimeUs(MS2US(1000));
engine->module<SensorChecker>()->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<SensorChecker>()->onIgnitionStateChanged(true);
engine->module<SensorChecker>()->onSlowCallback();
timeNowUs += 10e6;
advanceTimeUs(10e6);
engine->module<SensorChecker>()->onSlowCallback();
ASSERT_TRUE(engine->module<SensorChecker>()->analogSensorsShouldWork());

View File

@ -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