maximumIgnitionTiming does not account timing_offset_cylinder #5894

only: TDD progress
This commit is contained in:
Andrey 2024-02-29 01:33:42 -05:00
parent 2f3788ef0f
commit 4347c5c82e
1 changed files with 19 additions and 8 deletions

View File

@ -5,6 +5,7 @@
TEST(OddFire, hd) {
EngineTestHelper eth(engine_type_e::HARLEY);
engineConfiguration->cranking.rpm = 100;
engineConfiguration->vvtMode[0] = VVT_SINGLE_TOOTH; // need to avoid engine phase sync requirement
float cylinderOne = 19;
float cylinderTwo = 13;
engineConfiguration->timing_offset_cylinder[0] = cylinderOne;
@ -18,21 +19,31 @@ TEST(OddFire, hd) {
eth.setTriggerType(trigger_type_e::TT_HALF_MOON);
eth.fireTriggerEvents2(2 /* count */ , 60 /* ms */);
LimpState limitedSparkState = getLimpManager()->allowIgnition();
ASSERT_TRUE(limitedSparkState.value);
ASSERT_EQ(limitedSparkState.reason, ClearReason::None);
float expectedAngle = 180 - cylinderOne - timing;
// ASSERT_NEAR(-220.0, eth.timeToAngle(-73.333333), EPS3D);
// ASSERT_NEAR(-200.0, eth.timeToAngle(-66.66666), EPS3D);
// ASSERT_NEAR(160.0, eth.timeToAngle(53.333333), EPS3D);
// ASSERT_NEAR(-168.0, eth.timeToAngle(-56.0), EPS3D);
float expectedAngle3 = -180 - cylinderOne - timing;
ASSERT_EQ( 8, engine->executor.size());
eth.assertEvent5("spark down#3", 3, (void*)fireSparkAndPrepareNextSchedule, eth.angleToTimeUs(expectedAngle3));
float expectedAngle7 = -180 - cylinderOne - timing;
eth.assertEvent5("spark down#7", 3, (void*)fireSparkAndPrepareNextSchedule, eth.angleToTimeUs(expectedAngle7));
ASSERT_EQ( 2, engine->executor.size());
eth.assertEvent5("spark down#0", 1, (void*)fireSparkAndPrepareNextSchedule, eth.angleToTimeUs(expectedAngle));
eth.assertRpm( 500, "spinning-RPM#1");
engine->executor.executeAll(eth.getTimeNowUs() + MS2US(1000000));
ASSERT_NEAR(-200.0, eth.timeToAngle(-66.66666), EPS3D);
ASSERT_NEAR(160.0, eth.timeToAngle(53.333333), EPS3D);
expectedAngle = 180 - cylinderOne - timing;
expectedAngle3 = 180 - cylinderOne - timing;
eth.fireTriggerEvents2(2 /* count */ , 60 /* ms */);
ASSERT_EQ( 2, engine->executor.size());
eth.assertEvent5("spark down#0", 1, (void*)fireSparkAndPrepareNextSchedule, eth.angleToTimeUs(expectedAngle));
ASSERT_EQ( 4, engine->executor.size());
eth.assertEvent5("spark down2#3", 3, (void*)fireSparkAndPrepareNextSchedule, eth.angleToTimeUs(expectedAngle3));
}