| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | /* | |||
| 2 | * @file test_real_cranking_nissan_vq40.cpp | |||
| 3 | * | |||
| 4 | * @date Jul 21, 2021 | |||
| 5 | * @author Andrey Belomutskiy, (c) 2012-2021 | |||
| 6 | */ | |||
| 7 | ||||
| 8 | #include "pch.h" | |||
| 9 | #include "logicdata_csv_reader.h" | |||
| 10 | ||||
| 11 | 2 | static void test(int engineSyncCam, float camOffsetAdd) { | ||
| 12 |
1/1✓ Branch 2 taken 2 times.
|
2 | CsvReader reader(1, /* vvtCount */ 2); | |
| 13 | ||||
| 14 |
1/1✓ Branch 1 taken 2 times.
|
2 | reader.open("tests/trigger/resources/nissan_vq40_cranking-1.csv"); | |
| 15 |
1/1✓ Branch 2 taken 2 times.
|
2 | EngineTestHelper eth (engine_type_e::HELLEN_121_NISSAN_6_CYL); | |
| 16 | 2 | setTable(config->ignitionIatCorrTable, 0); | ||
| 17 | 2 | engineConfiguration->isFasterEngineSpinUpEnabled = false; | ||
| 18 | 2 | engineConfiguration->alwaysInstantRpm = true; | ||
| 19 | ||||
| 20 | // Different sync cam may result in different TDC point, so we might need different cam offsets. | |||
| 21 | 2 | engineConfiguration->vvtOffsets[0] += camOffsetAdd; | ||
| 22 | 2 | engineConfiguration->vvtOffsets[2] += camOffsetAdd; | ||
| 23 | 2 | engineConfiguration->engineSyncCam = engineSyncCam; | ||
| 24 | ||||
| 25 | 2 | bool hasSeenFirstVvt = false; | ||
| 26 | ||||
| 27 |
3/3✓ Branch 1 taken 1626 times.
✓ Branch 3 taken 1624 times.
✓ Branch 4 taken 2 times.
|
0/1? Decision couldn't be analyzed.
|
1626 | while (reader.haveMore()) { |
| 28 |
1/1✓ Branch 1 taken 1624 times.
|
1624 | reader.processLine(ð); | |
| 29 |
1/1✓ Branch 1 taken 1624 times.
|
1624 | float vvt1 = engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/0); | |
| 30 |
1/1✓ Branch 1 taken 1624 times.
|
1624 | float vvt2 = engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/0); | |
| 31 | ||||
| 32 |
2/2✓ Branch 0 taken 1298 times.
✓ Branch 1 taken 326 times.
|
2/2✓ Decision 'true' taken 1298 times.
✓ Decision 'false' taken 326 times.
|
1624 | if (vvt1 != 0) { |
| 33 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1296 times.
|
2/2✓ Decision 'true' taken 2 times.
✓ Decision 'false' taken 1296 times.
|
1298 | if (!hasSeenFirstVvt) { |
| 34 |
2/6✓ Branch 2 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
|
2 | EXPECT_NEAR(vvt1, 1.4, /*precision*/1); | |
| 35 | 2 | hasSeenFirstVvt = true; | ||
| 36 | } | |||
| 37 | ||||
| 38 | // cam position should never be reported outside of correct range | |||
| 39 |
3/10✓ Branch 2 taken 1298 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1298 times.
✗ Branch 5 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 1298 times.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
|
1298 | EXPECT_TRUE(vvt1 > -3 && vvt1 < 3); | |
| 40 | } | |||
| 41 | ||||
| 42 |
2/2✓ Branch 0 taken 1298 times.
✓ Branch 1 taken 326 times.
|
2/2✓ Decision 'true' taken 1298 times.
✓ Decision 'false' taken 326 times.
|
1624 | if (vvt2 != 0) { |
| 43 | // cam position should never be reported outside of correct range | |||
| 44 |
3/10✓ Branch 2 taken 1298 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1298 times.
✗ Branch 5 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 1298 times.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
|
1298 | EXPECT_TRUE(vvt2 > -3 && vvt2 < 3); | |
| 45 | } | |||
| 46 | } | |||
| 47 | ||||
| 48 |
3/7✓ Branch 2 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
2 | EXPECT_NEAR(engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/0), 1.351, 1e-2); | |
| 49 |
3/7✓ Branch 2 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
2 | EXPECT_NEAR(engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/0), 1.548, 1e-2); | |
| 50 |
4/10✓ Branch 3 taken 2 times.
✓ Branch 7 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
|
2 | ASSERT_EQ(102, round(Sensor::getOrZero(SensorType::Rpm)))<< reader.lineIndex(); | |
| 51 | ||||
| 52 | // TODO: why warnings? | |||
| 53 |
4/9✓ Branch 3 taken 2 times.
✓ Branch 8 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
|
2 | ASSERT_EQ(2u, eth.recentWarnings()->getCount()); | |
| 54 | // this is from a coil being protected by overdwell protection | |||
| 55 |
5/12✓ Branch 3 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 26 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
|
2 | ASSERT_TRUE((ObdCode::CUSTOM_Ignition_Coil_Overcharge_1 <= eth.recentWarnings()->get(0).Code) && | |
| 56 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | (eth.recentWarnings()->get(0).Code <= ObdCode::CUSTOM_Ignition_Coil_Overcharge_12)); | |
| 57 |
4/9✓ Branch 2 taken 2 times.
✓ Branch 7 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
|
2 | ASSERT_EQ(ObdCode::CUSTOM_PRIMARY_TOO_MANY_TEETH, eth.recentWarnings()->get(1).Code); | |
| 58 | 2 | } | ||
| 59 | ||||
| 60 | // On Nissan VQ, all cams have the same pattern, so all should be equally good for engine sync. Check them all! | |||
| 61 | ||||
| 62 | 4 | TEST(realCrankingVQ40, normalCrankingSyncCam1) { | ||
| 63 | 1 | test(0, 0); | ||
| 64 | 1 | } | ||
| 65 | ||||
| 66 | 4 | TEST(realCrankingVQ40, normalCrankingSyncCam2) { | ||
| 67 | 1 | test(2, -360); | ||
| 68 | 1 | } | ||
| 69 |