Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | /** | |||
2 | * @file test_quad_cam.cpp | |||
3 | * | |||
4 | */ | |||
5 | ||||
6 | #include "pch.h" | |||
7 | ||||
8 | 4 | TEST(trigger, testQuadCamInput) { | ||
9 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
10 | 1 | engineConfiguration->globalTriggerAngleOffset = -37; | ||
11 | 1 | engineConfiguration->crankingTimingAngle = 3; | ||
12 | 1 | engineConfiguration->triggerInputPins[1] = Gpio::Unassigned; | ||
13 | 1 | engineConfiguration->isFasterEngineSpinUpEnabled = false; | ||
14 | 1 | engineConfiguration->alwaysInstantRpm = true; | ||
15 | ||||
16 |
1/1✓ Branch 1 taken 1 time.
|
1 | setCrankOperationMode(); | |
17 | ||||
18 | // changing to 'ONE TOOTH' trigger on CRANK with CAM/VVT | |||
19 | 1 | engineConfiguration->vvtMode[0] = VVT_SINGLE_TOOTH; | ||
20 | 1 | engineConfiguration->vvtMode[1] = VVT_SINGLE_TOOTH; | ||
21 | ||||
22 | 1 | engineConfiguration->camInputs[0] = Gpio::A10; // we just need to indicate that we have CAM | ||
23 | ||||
24 | // this crank trigger would be easier to test, crank shape is less important for this test | |||
25 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.setTriggerType(trigger_type_e::TT_HALF_MOON); | |
26 | ||||
27 |
4/9✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_EQ(0, Sensor::getOrZero(SensorType::Rpm)); | |
28 | ||||
29 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(12.5); | |
30 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(12.5); | |
31 |
4/9✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_EQ( 0, Sensor::getOrZero(SensorType::Rpm)); | |
32 | ||||
33 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(12.5); | |
34 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(12.5); | |
35 | // first time we have RPM | |||
36 |
4/9✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_EQ(2400, Sensor::getOrZero(SensorType::Rpm)); | |
37 | ||||
38 | // need to be out of VVT sync to see VVT sync in action | |||
39 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(12.5); | |
40 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(12.5); | |
41 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(12.5); | |
42 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(12.5); | |
43 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireFall(12.5); | |
44 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireRise(12.5); | |
45 | ||||
46 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardUs(MS2US(3)); // shifting VVT phase a few angles | |
47 | ||||
48 | 1 | float d = 4; | ||
49 | ||||
50 | 1 | int firstCam = 0; | ||
51 | 1 | int secondCam = 1; | ||
52 | ||||
53 | 1 | int firstBank = 0; | ||
54 | 1 | int secondBank = 1; | ||
55 | ||||
56 | 1 | int firstCamSecondBank = secondBank * CAMS_PER_BANK + firstCam; | ||
57 | 1 | int secondCamSecondBank = secondBank * CAMS_PER_BANK + secondCam; | ||
58 | ||||
59 | // Cams should have no position yet | |||
60 |
4/9✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_EQ(0, engine->triggerCentral.getVVTPosition(firstBank, firstCam)); | |
61 |
4/9✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_EQ(0, engine->triggerCentral.getVVTPosition(firstBank, secondCam)); | |
62 |
4/9✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_EQ(0, engine->triggerCentral.getVVTPosition(secondBank, firstCam)); | |
63 |
4/9✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
|
1 | ASSERT_EQ(0, engine->triggerCentral.getVVTPosition(secondBank, secondCam)); | |
64 | ||||
65 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), firstCam); | |
66 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), secondCam); | |
67 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), firstCamSecondBank); | |
68 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), secondCamSecondBank); | |
69 | ||||
70 | 1 | float basePos = -80.2f; | ||
71 | ||||
72 | // All four cams should now have the same position | |||
73 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR_M3(basePos, engine->triggerCentral.getVVTPosition(firstBank, firstCam)); | |
74 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR_M3(basePos, engine->triggerCentral.getVVTPosition(firstBank, secondCam)); | |
75 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR_M3(basePos, engine->triggerCentral.getVVTPosition(secondBank, firstCam)); | |
76 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR_M3(basePos, engine->triggerCentral.getVVTPosition(secondBank, secondCam)); | |
77 | ||||
78 | // Now fire cam events again, but with time gaps between each | |||
79 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardMs(1); | |
80 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), firstCam); | |
81 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardMs(1); | |
82 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), secondCam); | |
83 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardMs(1); | |
84 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), firstCamSecondBank); | |
85 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.moveTimeForwardMs(1); | |
86 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | hwHandleVvtCamSignal(TriggerValue::RISE, getTimeNowNt(), secondCamSecondBank); | |
87 | ||||
88 | // All four cams should have different positions, each retarded by 1ms from the last | |||
89 | 1 | float oneMsDegrees = 1000 / engine->rpmCalculator.oneDegreeUs; | ||
90 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(basePos - oneMsDegrees * 1, engine->triggerCentral.getVVTPosition(firstBank, firstCam), EPS3D); | |
91 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(basePos - oneMsDegrees * 2, engine->triggerCentral.getVVTPosition(firstBank, secondCam), EPS3D); | |
92 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(basePos - oneMsDegrees * 3, engine->triggerCentral.getVVTPosition(secondBank, firstCam), EPS3D); | |
93 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR(basePos - oneMsDegrees * 4, engine->triggerCentral.getVVTPosition(secondBank, secondCam), EPS3D); | |
94 | 1 | } | ||
95 |