diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index deaef1b8a4..03a405bc4d 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -375,6 +375,7 @@ public: bool isAlternatorControlEnabled; bool isCltBroken; + bool slowCallBackWasInvoked = false; // floatms_t callToPitEndTime; diff --git a/firmware/controllers/algo/engine2.cpp b/firmware/controllers/algo/engine2.cpp index d21dda9d0a..d01182afc0 100644 --- a/firmware/controllers/algo/engine2.cpp +++ b/firmware/controllers/algo/engine2.cpp @@ -120,6 +120,9 @@ void EngineState::updateSlowSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE) { } void EngineState::periodicFastCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE) { + if (!engine->slowCallBackWasInvoked) { + warning(CUSTOM_ERR_6696, "Slow not invoked yet"); + } efitick_t nowNt = getTimeNowNt(); if (ENGINE(rpmCalculator).isCranking(PASS_ENGINE_PARAMETER_SIGNATURE)) { crankingTime = nowNt; diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 1395898f0c..bff707cd71 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -291,7 +291,6 @@ static void invokePerSecond(void) { } - static void periodicSlowCallback(Engine *engine) { efiAssertVoid(CUSTOM_ERR_6661, getRemainingStack(chThdGetSelfX()) > 64, "lowStckOnEv"); #if EFI_PROD_CODE @@ -339,11 +338,12 @@ static void periodicSlowCallback(Engine *engine) { cylinderCleanupControl(engine); + engine->slowCallBackWasInvoked = TRUE; scheduleNextSlowInvocation(); } void initPeriodicEvents(DECLARE_ENGINE_PARAMETER_SIGNATURE) { - scheduleNextSlowInvocation(); + periodicSlowCallback(engine); periodicFastCallback(PASS_ENGINE_PARAMETER_SIGNATURE); } diff --git a/unit_tests/main.cpp b/unit_tests/main.cpp index df35beed5c..2c84353c3f 100644 --- a/unit_tests/main.cpp +++ b/unit_tests/main.cpp @@ -109,7 +109,7 @@ GTEST_API_ int main(int argc, char **argv) { // printConvertedTable(); testing::InitGoogleTest(&argc, argv); // uncomment if you only want to run selected tests - //::testing::GTEST_FLAG(filter) = "hip*"; + //::testing::GTEST_FLAG(filter) = "*testFasterEngineSpinningUp*"; return RUN_ALL_TESTS(); } diff --git a/unit_tests/tests/test_fasterEngineSpinningUp.cpp b/unit_tests/tests/test_fasterEngineSpinningUp.cpp index 1731724cbf..9214c36a91 100644 --- a/unit_tests/tests/test_fasterEngineSpinningUp.cpp +++ b/unit_tests/tests/test_fasterEngineSpinningUp.cpp @@ -12,6 +12,8 @@ extern int timeNowUs; TEST(sensors, testFasterEngineSpinningUp) { printf("*************************************************** testFasterEngineSpinningUp\r\n"); + timeNowUs = 0; + EngineTestHelper eth(TEST_ENGINE); EXPAND_EngineTestHelper