| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | #include "pch.h" | |||
| 2 | ||||
| 3 | extern float getTachFreq(void); | |||
| 4 | extern float getTachDuty(void); | |||
| 5 | ||||
| 6 | 4 | TEST(Actuators, Tachometer) { | ||
| 7 | // This engine has a tach pin set - we need that | |||
| 8 | 2 | EngineTestHelper eth(engine_type_e::MAZDA_MIATA_NB2, [](engine_configuration_s* engineConfiguration) { | ||
| 9 | engineConfiguration->tachOutputPin = Gpio::E8; // arbitrary tachometer | |||
| 10 |
1/1✓ Branch 3 taken 1 time.
|
1 | }); | |
| 11 | ||||
| 12 | // We don't actually care about ign/inj at all, just tach | |||
| 13 | 1 | engineConfiguration->isInjectionEnabled = false; | ||
| 14 | 1 | engineConfiguration->isIgnitionEnabled = false; | ||
| 15 | ||||
| 16 | // Configure tach pulse count | |||
| 17 | // 5 PPR, 25% duty | |||
| 18 | 1 | engineConfiguration->tachPulsePerRev = 4; | ||
| 19 | 1 | engineConfiguration->tachPulseDuractionMs = 0.5f; | ||
| 20 | 1 | engineConfiguration->tachPulseDurationAsDutyCycle = true; | ||
| 21 | ||||
| 22 | // Set predictable trigger settings | |||
| 23 | 1 | engineConfiguration->trigger.type = trigger_type_e::TT_TOOTHED_WHEEL; | ||
| 24 | 1 | engineConfiguration->trigger.customTotalToothCount = 8; | ||
| 25 | 1 | engineConfiguration->trigger.customSkippedToothCount = 0; | ||
| 26 |
1/1✓ Branch 1 taken 1 time.
|
1 | setCamOperationMode(); | |
| 27 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.applyTriggerWaveform(); | |
| 28 | ||||
| 29 | // get the engine running - 6 revolutions | |||
| 30 |
1/1✓ Branch 1 taken 1 time.
|
1 | eth.fireTriggerEvents(48); | |
| 31 | ||||
| 32 | // ensure engine speed | |||
| 33 |
4/10✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
|
1 | ASSERT_EQ(1500, Sensor::getOrZero(SensorType::Rpm)) << "RPM"; | |
| 34 |
4/9✓ Branch 4 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(engine->triggerCentral.triggerState.getShaftSynchronized(), true); | |
| 35 | ||||
| 36 | // Poke the fast callback to update the tach | |||
| 37 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->periodicFastCallback(); | |
| 38 | ||||
| 39 |
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(100, getTachFreq()); | |
| 40 |
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.5, getTachDuty()); | |
| 41 | 1 | } | ||
| 42 |