GCC Code Coverage Report


Directory: ./
File: firmware/controllers/actuators/gppwm_channel_reader.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 80.0% 60 0 75
Functions: 100.0% 1 0 1
Branches: 77.8% 35 0 45
Decisions: 80.6% 29 - 36

Line Branch Decision Exec Source
1 //
2 // Created by kifir on 5/15/24.
3 //
4
5 #include "pch.h"
6 #include "throttle_model.h"
7 #include "gppwm_channel_reader.h"
8
9 1741 expected<float> readGppwmChannel(gppwm_channel_e channel) {
10
29/37
✓ Branch 0 taken 1674 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 38 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 5 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 8 taken 1 time.
✓ Branch 9 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 11 taken 1 time.
✓ Branch 12 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 15 taken 1 time.
✓ Branch 16 taken 1 time.
✓ Branch 17 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 19 taken 1 time.
✓ Branch 20 taken 1 time.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 time.
✓ Branch 24 taken 1 time.
✓ Branch 25 taken 1 time.
✓ Branch 26 taken 1 time.
✓ Branch 27 taken 1 time.
✓ Branch 28 taken 1 time.
✓ Branch 29 taken 1 time.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
1741 switch (channel) {
11
1/1
✓ Decision 'true' taken 1674 times.
1674 case GPPWM_Zero:
12 1674 return 0;
13
1/1
✓ Decision 'true' taken 3 times.
3 case GPPWM_Rpm:
14 3 return Sensor::get(SensorType::Rpm);
15
1/1
✓ Decision 'true' taken 38 times.
38 case GPPWM_Tps:
16 38 return Sensor::get(SensorType::Tps1);
17
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_Map:
18 1 return Sensor::get(SensorType::Map);
19
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_Clt:
20 1 return Sensor::get(SensorType::Clt);
21
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_Iat:
22 1 return Sensor::get(SensorType::Iat);
23
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_LuaGauge1:
24 1 return Sensor::get(SensorType::LuaGauge1);
25
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_LuaGauge2:
26 1 return Sensor::get(SensorType::LuaGauge2);
27
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_FuelLoad:
28
1/1
✓ Branch 2 taken 1 time.
1 return getFuelingLoad();
29
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_IgnLoad:
30
1/1
✓ Branch 2 taken 1 time.
1 return getIgnitionLoad();
31
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_AuxTemp1:
32 1 return Sensor::get(SensorType::AuxTemp1);
33
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_AuxTemp2:
34 1 return Sensor::get(SensorType::AuxTemp2);
35
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_AccelPedal:
36 1 return Sensor::get(SensorType::AcceleratorPedal);
37
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_Vbatt:
38 1 return Sensor::get(SensorType::BatteryVoltage);
39 #if EFI_SHAFT_POSITION_INPUT
40
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_VVT_1I:
41
1/1
✓ Branch 2 taken 1 time.
1 return engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/0);
42
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_VVT_1E:
43
1/1
✓ Branch 2 taken 1 time.
1 return engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/1);
44
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_VVT_2I:
45
1/1
✓ Branch 2 taken 1 time.
1 return engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/0);
46
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_VVT_2E:
47
1/1
✓ Branch 2 taken 1 time.
1 return engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/1);
48 #else
49 case GPPWM_VVT_1I:
50 case GPPWM_VVT_1E:
51 case GPPWM_VVT_2I:
52 case GPPWM_VVT_2E:
53 return 0;
54 #endif // EFI_SHAFT_POSITION_INPUT
55
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_EthanolPercent:
56 1 return Sensor::get(SensorType::FuelEthanolPercent);
57
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_AuxLinear1:
58 1 return Sensor::get(SensorType::AuxLinear1);
59
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_AuxLinear2:
60 1 return Sensor::get(SensorType::AuxLinear2);
61 case GPPWM_AuxLinear3:
62 return Sensor::get(SensorType::AuxLinear3);
63 case GPPWM_AuxLinear4:
64 return Sensor::get(SensorType::AuxLinear4);
65
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_GppwmOutput1:
66 1 return (float)engine->outputChannels.gppwmOutput[0];
67
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_GppwmOutput2:
68 1 return (float)engine->outputChannels.gppwmOutput[1];
69
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_GppwmOutput3:
70 1 return (float)engine->outputChannels.gppwmOutput[2];
71
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_GppwmOutput4:
72 1 return (float)engine->outputChannels.gppwmOutput[3];
73
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_DetectedGear:
74 #if EFI_VEHICLE_SPEED
75 1 return Sensor::get(SensorType::DetectedGear);
76 #else
77 return 0;
78 #endif // EFI_VEHICLE_SPEED
79
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_BaroPressure:
80 1 return Sensor::get(SensorType::BarometricPressure);
81
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_Egt1:
82 1 return Sensor::get(SensorType::EGT1);
83
1/1
✓ Decision 'true' taken 1 time.
1 case GPPWM_Egt2:
84 1 return Sensor::get(SensorType::EGT2);
85 case GPPWM_VehicleSpeed:
86 return Sensor::get(SensorType::VehicleSpeed);
87 case GPPWM_OilPressure:
88 return Sensor::get(SensorType::OilPressure);
89 case GPPWM_OilTemp:
90 return Sensor::get(SensorType::OilTemperature);
91 case GPPWM_FuelPressure:
92 return Sensor::get(SensorType::FuelPressureInjector);
93 case GPPWM_ThrottleRatio:
94 return getThrottlePressureRatio(Sensor::getOrZero(SensorType::Map));
95 }
96 return unexpected;
97 }
98