diff --git a/firmware/controllers/algo/event_registry.h b/firmware/controllers/algo/event_registry.h index f86f584491..6e3ddb3fff 100644 --- a/firmware/controllers/algo/event_registry.h +++ b/firmware/controllers/algo/event_registry.h @@ -76,7 +76,7 @@ public: * [0, cylindersCount) */ int cylinderIndex = 0; - int8_t cylinderNumber = 0; + int8_t coilIndex = 0; char *name = nullptr; IgnitionOutputPin *getOutputForLoggins(); }; diff --git a/firmware/controllers/engine_cycle/spark_logic.cpp b/firmware/controllers/engine_cycle/spark_logic.cpp index 441d1e76c6..c3e7f90a97 100644 --- a/firmware/controllers/engine_cycle/spark_logic.cpp +++ b/firmware/controllers/engine_cycle/spark_logic.cpp @@ -85,7 +85,7 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_ // let's save planned duration so that we can later compare it with reality event->sparkDwell = sparkDwell; - angle_t finalIgnitionTiming = getEngineState()->timingAdvance[event->cylinderNumber]; + angle_t finalIgnitionTiming = getEngineState()->timingAdvance[event->coilIndex]; // 10 ATDC ends up as 710, convert it to -10 so we can log and clamp correctly if (finalIgnitionTiming > 360) { @@ -107,7 +107,7 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_ // Negate because timing *before* TDC, and we schedule *after* TDC - finalIgnitionTiming // Offset by this cylinder's position in the cycle - + getPerCylinderFiringOrderOffset(event->cylinderIndex, event->cylinderNumber); + + getPerCylinderFiringOrderOffset(event->cylinderIndex, event->coilIndex); efiAssertVoid(ObdCode::CUSTOM_SPARK_ANGLE_1, !cisnan(sparkAngle), "sparkAngle#1"); wrapAngle(sparkAngle, "findAngle#2", ObdCode::CUSTOM_ERR_6550); @@ -141,7 +141,7 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_ // Stash which cylinder we're scheduling so that knock sensing knows which // cylinder just fired - event->cylinderNumber = coilIndex; + event->coilIndex = coilIndex; angle_t dwellStartAngle = sparkAngle - dwellAngleDuration; efiAssertVoid(ObdCode::CUSTOM_ERR_6590, !cisnan(dwellStartAngle), "findAngle#5"); @@ -253,7 +253,7 @@ if (engineConfiguration->debugMode == DBG_DWELL_METRIC) { // Trailing sparks are enabled - schedule an event for the corresponding trailing coil scheduleByAngle( &event->trailingSparkFire, nowNt, engine->engineState.trailingSparkAngle, - { &fireTrailingSpark, &enginePins.trailingCoils[event->cylinderNumber] } + { &fireTrailingSpark, &enginePins.trailingCoils[event->coilIndex] } ); } @@ -261,7 +261,7 @@ if (engineConfiguration->debugMode == DBG_DWELL_METRIC) { prepareCylinderIgnitionSchedule(dwellAngleDuration, sparkDwell, event); } - engine->onSparkFireKnockSense(event->cylinderNumber, nowNt); + engine->onSparkFireKnockSense(event->coilIndex, nowNt); } static void startDwellByTurningSparkPinHigh(IgnitionEvent *event, IgnitionOutputPin *output) { @@ -311,7 +311,7 @@ void turnSparkPinHigh(IgnitionEvent *event) { } if (engineConfiguration->enableTrailingSparks) { - IgnitionOutputPin *output = &enginePins.trailingCoils[event->cylinderNumber]; + IgnitionOutputPin *output = &enginePins.trailingCoils[event->coilIndex]; // Trailing sparks are enabled - schedule an event for the corresponding trailing coil scheduleByAngle( &event->trailingSparkCharge, nowNt, engine->engineState.trailingSparkAngle, diff --git a/unit_tests/tests/ignition_injection/test_ignition_scheduling.cpp b/unit_tests/tests/ignition_injection/test_ignition_scheduling.cpp index d1cb38929b..8d6168d85a 100644 --- a/unit_tests/tests/ignition_injection/test_ignition_scheduling.cpp +++ b/unit_tests/tests/ignition_injection/test_ignition_scheduling.cpp @@ -18,18 +18,18 @@ TEST(ignition, twoCoils) { initializeIgnitionActions(); // first one to fire uses first coil - EXPECT_EQ(engine->ignitionEvents.elements[0].cylinderNumber, 0); - EXPECT_EQ(engine->ignitionEvents.elements[1].cylinderNumber, 6); - EXPECT_EQ(engine->ignitionEvents.elements[2].cylinderNumber, 0); - EXPECT_EQ(engine->ignitionEvents.elements[3].cylinderNumber, 6); - EXPECT_EQ(engine->ignitionEvents.elements[4].cylinderNumber, 0); - EXPECT_EQ(engine->ignitionEvents.elements[5].cylinderNumber, 6); - EXPECT_EQ(engine->ignitionEvents.elements[6].cylinderNumber, 0); - EXPECT_EQ(engine->ignitionEvents.elements[7].cylinderNumber, 6); - EXPECT_EQ(engine->ignitionEvents.elements[8].cylinderNumber, 0); - EXPECT_EQ(engine->ignitionEvents.elements[9].cylinderNumber, 6); - EXPECT_EQ(engine->ignitionEvents.elements[10].cylinderNumber, 0); - EXPECT_EQ(engine->ignitionEvents.elements[11].cylinderNumber, 6); + EXPECT_EQ(engine->ignitionEvents.elements[0].coilIndex, 0); + EXPECT_EQ(engine->ignitionEvents.elements[1].coilIndex, 6); + EXPECT_EQ(engine->ignitionEvents.elements[2].coilIndex, 0); + EXPECT_EQ(engine->ignitionEvents.elements[3].coilIndex, 6); + EXPECT_EQ(engine->ignitionEvents.elements[4].coilIndex, 0); + EXPECT_EQ(engine->ignitionEvents.elements[5].coilIndex, 6); + EXPECT_EQ(engine->ignitionEvents.elements[6].coilIndex, 0); + EXPECT_EQ(engine->ignitionEvents.elements[7].coilIndex, 6); + EXPECT_EQ(engine->ignitionEvents.elements[8].coilIndex, 0); + EXPECT_EQ(engine->ignitionEvents.elements[9].coilIndex, 6); + EXPECT_EQ(engine->ignitionEvents.elements[10].coilIndex, 0); + EXPECT_EQ(engine->ignitionEvents.elements[11].coilIndex, 6); ASSERT_EQ(engine->ignitionEvents.elements[0].sparkAngle, 0); ASSERT_EQ((void*)engine->ignitionEvents.elements[0].outputs[0], (void*)&enginePins.coils[0]);