From b04b6a925160296f8db73802b38ce28832138394 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 28 Feb 2024 22:53:44 -0500 Subject: [PATCH] only: NICE! these values actually mean something! --- .../controllers/algo/defaults/default_cranking.cpp | 2 +- firmware/controllers/algo/defaults/defaults.h | 1 + unit_tests/test-framework/engine_test_helper.cpp | 2 +- unit_tests/test-framework/engine_test_helper.h | 7 +++++++ .../ignition_injection/test_one_cylinder_logic.cpp | 10 ++++++++-- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/firmware/controllers/algo/defaults/default_cranking.cpp b/firmware/controllers/algo/defaults/default_cranking.cpp index bc1695957a..acb9bb5961 100644 --- a/firmware/controllers/algo/defaults/default_cranking.cpp +++ b/firmware/controllers/algo/defaults/default_cranking.cpp @@ -12,7 +12,7 @@ void setDefaultCranking() { // Ignition engineConfiguration->ignitionDwellForCrankingMs = DEFAULT_CRANKING_DWELL_MS; - engineConfiguration->crankingTimingAngle = 6; + engineConfiguration->crankingTimingAngle = DEFAULT_CRANKING_ANGLE; // IAC engineConfiguration->crankingIACposition = 50; diff --git a/firmware/controllers/algo/defaults/defaults.h b/firmware/controllers/algo/defaults/defaults.h index 264660ff4e..d55214c688 100644 --- a/firmware/controllers/algo/defaults/defaults.h +++ b/firmware/controllers/algo/defaults/defaults.h @@ -12,6 +12,7 @@ void setGdiWallWetting(); void setInline4(); #define DEFAULT_CRANKING_DWELL_MS 6 +#define DEFAULT_CRANKING_ANGLE 6 void setPPSInputs(adc_channel_e pps1, adc_channel_e pps2); void setPPSCalibration(float primaryUp, float primaryDown, float secondaryUp, float secondaryDown); diff --git a/unit_tests/test-framework/engine_test_helper.cpp b/unit_tests/test-framework/engine_test_helper.cpp index f5f40bded4..64f03aedf2 100644 --- a/unit_tests/test-framework/engine_test_helper.cpp +++ b/unit_tests/test-framework/engine_test_helper.cpp @@ -302,7 +302,7 @@ scheduling_s * EngineTestHelper::assertEvent5(const char *msg, int index, void * scheduling_s *event = executor->getForUnitTest(index); assertEqualsM4(msg, " callback up/down", (void*)event->action.getCallback() == (void*) callback, 1); efitimeus_t start = getTimeNowUs(); - assertEqualsM4(msg, " timestamp", expectedTimestamp, event->momentX - start); + assertEqualsM2(msg, expectedTimestamp, event->momentX - start, /*1us precision to address rounding etc*/1); return event; } diff --git a/unit_tests/test-framework/engine_test_helper.h b/unit_tests/test-framework/engine_test_helper.h index 7785cf1dfd..a195161fd1 100644 --- a/unit_tests/test-framework/engine_test_helper.h +++ b/unit_tests/test-framework/engine_test_helper.h @@ -38,6 +38,13 @@ public: // convert ms time to angle at current RPM angle_t timeToAngle(float timeMs); + float angleToTimeUs(angle_t angle) { + return angle * engine.rpmCalculator.oneDegreeUs; + } + + float angleToTimeMs(angle_t angle) { + return US2MS(angleToTimeUs(angle)); + } warningBuffer_t *recentWarnings(); int getWarningCounter(); diff --git a/unit_tests/tests/ignition_injection/test_one_cylinder_logic.cpp b/unit_tests/tests/ignition_injection/test_one_cylinder_logic.cpp index 5a05071c72..a908496c49 100644 --- a/unit_tests/tests/ignition_injection/test_one_cylinder_logic.cpp +++ b/unit_tests/tests/ignition_injection/test_one_cylinder_logic.cpp @@ -10,6 +10,8 @@ TEST(issues, issueOneCylinderSpecialCase968) { EngineTestHelper eth(engine_type_e::GY6_139QMB); + angle_t timing = 4; + engineConfiguration->crankingTimingAngle = timing; setTable(config->injectionPhase, -180.0f); engineConfiguration->isFasterEngineSpinUpEnabled = false; engine->tdcMarkEnabled = false; @@ -29,10 +31,14 @@ TEST(issues, issueOneCylinderSpecialCase968) { eth.fireTriggerEvents2(/* count */ 1, 50 /* ms */); eth.assertRpm(600, "RPM"); ASSERT_EQ(engine->triggerCentral.currentEngineDecodedPhase, 90 + Gy6139_globalTriggerAngleOffset); + ASSERT_EQ(engine->engineState.timingAdvance[0], timing); + + angle_t expectedAngle = 180 - Gy6139_globalTriggerAngleOffset + timing; + int expectedDeltaTimeUs = eth.angleToTimeUs(expectedAngle); ASSERT_EQ( 2, engine->executor.size()) << "first revolution(s)"; - eth.assertEvent5("spark up#0", 0, (void*)turnSparkPinHigh, -45167); - eth.assertEvent5("spark down#0", 1, (void*)fireSparkAndPrepareNextSchedule, -45167 + 1000 * DEFAULT_CRANKING_DWELL_MS); + eth.assertEvent5("spark up#0", 0, (void*)turnSparkPinHigh, -expectedDeltaTimeUs - MS2US(DEFAULT_CRANKING_DWELL_MS)); + eth.assertEvent5("spark down#0", 1, (void*)fireSparkAndPrepareNextSchedule, -expectedDeltaTimeUs); eth.fireTriggerEvents2(/* count */ 1, 50 /* ms */);