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 |