GCC Code Coverage Report


Directory: ./
File: firmware/controllers/algo/engine_type_impl.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 36.0% 80 0 222
Functions: 50.0% 2 0 4
Branches: 34.7% 25 0 72
Decisions: 32.5% 25 - 77

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "bmw_m52.h"
4 #include "bmw_m73.h"
5
6 #include "canam.h"
7 #include "custom_engine.h"
8 #include "dodge_neon.h"
9 #include "dodge_ram.h"
10
11 #include "ford_aspire.h"
12 #include "ford_1995_inline_6.h"
13 #include "ford_ecoboost.h"
14
15 #include "honda_k_dbc.h"
16 #include "honda_600.h"
17 #include "honda.h"
18 #include "honda_obd1.h"
19 #include "hyundai.h"
20
21 #include "GY6_139QMB.h"
22
23 #include "nissan_vq.h"
24 #include "tc_4l6x.h"
25 #include "../board_id/qc_stim_meta.h"
26
27 #include "mazda_miata_1_6.h"
28 #include "mazda_miata_na8.h"
29 #include "mazda_miata_vvt.h"
30 #include "m111.h"
31 #include "mercedes.h"
32
33 #include "gm_ls_4.h"
34 #include "gm_sbc.h"
35 #include "subaru.h"
36 #include "slingshot.h"
37 #include "test_engine.h"
38 #include "sachs.h"
39 #include "harley.h"
40 #include "vw.h"
41 #include "vw_b6.h"
42 #include "toyota_jz.h"
43 #include "toyota_1NZ_FE.h"
44 #include "mitsubishi_3A92.h"
45 #include "ford_festiva.h"
46
47 static_assert(libPROTEUS_STIM_QC == (int)engine_type_e::PROTEUS_STIM_QC);
48 static_assert(libHELLEN_2CHAN_STIM_QC == (int)engine_type_e::HELLEN_2CHAN_STIM_QC);
49 static_assert(libHELLEN_4CHAN_STIM_QC == (int)engine_type_e::HELLEN_4CHAN_STIM_QC);
50
51 PUBLIC_API_WEAK_SOMETHING_WEIRD void applyUnknownEngineType(engine_type_e engineType) {
52 firmwareError(ObdCode::CUSTOM_UNEXPECTED_ENGINE_TYPE, "Unexpected engine type: %d", (int)engineType);
53 }
54
55 586 PUBLIC_API_WEAK void boardAfterTuneDefaults(engine_type_e engineType) { UNUSED(engineType); }
56
57 586 void applyEngineType(engine_type_e engineType) {
58 /**
59 * And override them with engine-specific defaults
60 */
61
25/72
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 time.
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 8 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✓ Branch 35 taken 1 time.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 3 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✓ Branch 44 taken 3 times.
✓ Branch 45 taken 1 time.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 1 time.
✗ Branch 49 not taken.
✓ Branch 50 taken 518 times.
✓ Branch 51 taken 10 times.
✓ Branch 52 taken 3 times.
✓ Branch 53 taken 2 times.
✓ Branch 54 taken 3 times.
✓ Branch 55 taken 7 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 1 time.
✓ Branch 60 taken 4 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 1 time.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✓ Branch 66 taken 2 times.
✓ Branch 67 taken 1 time.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
586 switch (engineType) {
62 case engine_type_e::FORD_COYOTE:
63 case engine_type_e::MAZDA_MIATA_NC:
64 case engine_type_e::DISCOVERY_PDM:
65 case engine_type_e::UNUSED94:
66 case engine_type_e::UNUSED_97:
67 case engine_type_e::TEST_100:
68 case engine_type_e::TEST_101:
69 case engine_type_e::UNUSED102:
70 case engine_type_e::UNUSED_105:
71 case engine_type_e::HELLEN_4CHAN_STIM_QC:
72 case engine_type_e::HELLEN_2CHAN_STIM_QC:
73 case engine_type_e::HELLEN_154_VAG:
74 case engine_type_e::HELLEN_121_NISSAN_8_CYL:
75 case engine_type_e::HELLEN_121_NISSAN_ALMERA_N16:
76 case engine_type_e::SIMULATOR_CONFIG:
77 case engine_type_e::HELLEN_121_VAG_4_CYL:
78 case engine_type_e::MINIMAL_PINS:
79 case engine_type_e::UNUSED_5:
80 case engine_type_e::UNUSED_16:
81 // all basic settings are already set in prepareVoidConfiguration(), no need to set anything here
82 // nothing to do - we do it all in setBoardDefaultConfiguration
83 break;
84 #if EFI_UNIT_TEST || EFI_SIMULATOR
85
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::TEST_ISSUE_366_BOTH:
86 #if EFI_UNIT_TEST
87 1 setTestEngineIssue366both();
88 #endif
89 1 break;
90
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::TEST_ISSUE_366_RISE:
91 #if EFI_UNIT_TEST
92 1 setTestEngineIssue366rise();
93 #endif
94 1 break;
95
1/1
✓ Decision 'true' taken 2 times.
2 case engine_type_e::ET_BOSCH_QUICK_START:
96 2 setTestEngineBoschQuickStart();
97 2 break;
98
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::ET_TEST_WITH_BOSCH_QUICK_START:
99 1 setTestEngineWithBoschQuickStartCam();
100 1 break;
101 #endif // EFI_UNIT_TEST
102
103 #if EFI_TCU || EFI_SIMULATOR
104 case engine_type_e::TCU_4R70W:
105 #if EFI_TCU
106 configureTcu4R70W();
107 #endif // EFI_TCU
108 break;
109 #endif //EFI_TCU
110
111 #if defined(HW_SUBARU_2011) || defined(HW_HELLEN_8CHAN) || HW_PROTEUS
112 case engine_type_e::SUBARU_2011:
113 setSubaru2011();
114 break;
115 #endif
116
117 #if HW_MICRO_RUSEFI || HW_PROTEUS
118 case engine_type_e::MERCEDES_M111:
119 setMercedesM111EngineConfiguration();
120 break;
121 #endif
122
123 #if HW_MICRO_RUSEFI
124 case engine_type_e::MRE_VW_B6:
125 setMreVwPassatB6();
126 break;
127 case engine_type_e::MRE_SECONDARY_CAN:
128 mreSecondaryCan();
129 break;
130 case engine_type_e::MRE_SUBARU_EJ18:
131 setSubaruEJ18_MRE();
132 break;
133 case engine_type_e::UNUSED31:
134 case engine_type_e::BMW_M73_MRE:
135 case engine_type_e::BMW_M73_MRE_SLAVE:
136 setEngineBMW_M73_microRusEfi();
137 break;
138 case engine_type_e::MRE_BODY_CONTROL:
139 mreBCM();
140 break;
141 #endif // HW_MICRO_RUSEFI
142 case engine_type_e::HONDA_OBD1:
143 setHondaObd1();
144 break;
145 case engine_type_e::FUEL_BENCH:
146 fuelBenchMode();
147 break;
148
149 #if HW_PROTEUS || HW_HELLEN_4CHAN || HW_HELLEN_8CHAN || HW_HELLEN_4K_GDI
150 case engine_type_e::FORD_ECOBOOST:
151 setFordEcoboost();
152 break;
153
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::HYUNDAI_PB:
154 1 setHyundaiPb();
155 1 break;
156 #endif
157
158 #if HW_PROTEUS || HW_HELLEN_HONDA
159
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::HONDA_K:
160 1 setHondaK();
161 1 break;
162 #endif
163
164 #if HW_HELLEN
165 case engine_type_e::MAZDA_MIATA_NA96:
166 setMazdaMiata96();
167 break;
168 case engine_type_e::MAZDA_MIATA_NA6:
169 setMazdaMiataNA6();
170 break;
171 case engine_type_e::MAZDA_MIATA_NA94:
172 setMazdaMiataNA94();
173 break;
174 case engine_type_e::MAZDA_MIATA_NB1:
175 setMazdaMiataNB1();
176 break;
177
1/1
✓ Decision 'true' taken 8 times.
8 case engine_type_e::MAZDA_MIATA_NB2:
178 8 setMazdaMiataNB2();
179 8 break;
180 case engine_type_e::MAZDA_MIATA_NB2_36:
181 setMazdaMiataNB2_36();
182 break;
183 #endif
184
185 #if HW_PROTEUS || HW_HELLEN
186
1/1
✓ Decision 'true' taken 8 times.
8 case engine_type_e::HARLEY:
187 8 setHarley();
188 8 break;
189 #endif
190
191 #if HW_PROTEUS || HW_HELLEN
192 case engine_type_e::POLARIS_RZR:
193 case engine_type_e::MAVERICK_X3:
194 setMaverickX3();
195 break;
196 case engine_type_e::ME17_9_MISC:
197 case engine_type_e::POLARIS:
198 setSlingshot();
199 break;
200 #endif
201
202 case engine_type_e::GM_LCV:
203 setGmLcv();
204 break;
205 case engine_type_e::GM_LNF:
206 setGmLnf();
207 break;
208 case engine_type_e::GM_LTG:
209 setGmLtg();
210 break;
211 case engine_type_e::GM_SBC_GEN5:
212 setGmSbcGen5();
213 break;
214
215 #if defined(HW_HELLEN_8CHAN) || HW_PROTEUS || EFI_SIMULATOR
216 case engine_type_e::GM_SBC_GEN4:
217 setGmLs4();
218 break;
219 #endif
220
221 #if HW_PROTEUS || EFI_SIMULATOR
222 case engine_type_e::WASTEGATE_PROTEUS_TEST:
223 proteusDcWastegateTest();
224 break;
225 case engine_type_e::PROTEUS_NISSAN_VQ35:
226 setProteusNissanVQ();
227 break;
228 case engine_type_e::PROTEUS_VW_B6:
229 setProteusVwPassatB6();
230 break;
231 case engine_type_e::UNUSED42:
232 case engine_type_e::PROTEUS_LUA_DEMO:
233 proteusLuaDemo();
234 break;
235
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::PROTEUS_BMW_M73:
236 1 setEngineBMW_M73_Proteus();
237 1 break;
238 case engine_type_e::MIATA_PROTEUS_TCU:
239 setMiataNB2_Proteus_TCU();
240 break;
241 case engine_type_e::HONDA_OBD2A:
242 setProteusHondaOBD2A();
243 break;
244 case engine_type_e::PROTEUS_STIM_QC:
245 proteusStimQc();
246 break;
247 case engine_type_e::GM_SBC:
248 setGmSbc();
249 break;
250 #if defined(HARDWARE_CI) || EFI_SIMULATOR
251 case engine_type_e::PROTEUS_ANALOG_PWM_TEST:
252 #if defined(HARDWARE_CI)
253 setProteusAnalogPwmTest();
254 #endif
255 break;
256 #endif // HARDWARE_CI
257 #endif // HW_PROTEUS
258
259 #if defined(HW_HELLEN_MERCEDES) || EFI_SIMULATOR
260 case engine_type_e::HELLEN_128_MERCEDES_4_CYL:
261 setHellenMercedes128_4_cyl();
262 break;
263 case engine_type_e::HELLEN_128_MERCEDES_6_CYL:
264 setHellenMercedes128_6_cyl();
265 break;
266 case engine_type_e::HELLEN_128_MERCEDES_8_CYL:
267 setHellenMercedes128_8_cyl();
268 break;
269 #endif
270
271 #ifdef HW_HELLEN_NISSAN
272 case engine_type_e::HELLEN_121_NISSAN_4_CYL:
273 setHellen121nissanQR();
274 break;
275
1/1
✓ Decision 'true' taken 3 times.
3 case engine_type_e::HELLEN_121_NISSAN_6_CYL:
276 3 setHellen121nissanVQ();
277 3 break;
278 #endif
279
280 #ifdef HW_HELLEN_HYUNDAI
281 case engine_type_e::HELLEN_154_HYUNDAI_COUPE_BK1:
282 setGenesisCoupeBK1();
283 break;
284 case engine_type_e::HELLEN_154_HYUNDAI_COUPE_BK2:
285 setGenesisCoupeBK2();
286 break;
287 #endif
288
289 #if defined(HW_HELLEN_8CHAN) || defined(HW_HELLEN_UAEFI121) || defined(HW_HELLEN_UAEFI)
290 case engine_type_e::GM_SBC:
291 setGmSbc();
292 break;
293 #endif
294
295 #if defined(HW_HELLEN_121_VAG) || defined(HW_HELLEN_UAEFI) || defined(HW_HELLEN_UAEFI121) || EFI_SIMULATOR
296 case engine_type_e::VAG_5_CYL:
297 setVag_5_cyl();
298 break;
299 #endif
300
301 #if defined(HW_HELLEN_121_VAG) || EFI_SIMULATOR
302 case engine_type_e::HELLEN_121_VAG_V6_CYL:
303 setHellen121Vag_v6_cyl();
304 break;
305 case engine_type_e::HELLEN_121_VAG_VR6_CYL:
306 setHellen121Vag_vr6_cyl();
307 break;
308 case engine_type_e::HELLEN_121_VAG_8_CYL:
309 setHellen121Vag_8_cyl();
310 break;
311 #endif
312
313 #ifdef HW_HELLEN
314 case engine_type_e::TOYOTA_1NZ_FE:
315 setToyota1NZFE();
316 break;
317 case engine_type_e::HELLEN_HONDA_BCM:
318 setHondaCivicBcm();
319 break;
320 #endif // HW_HELLEN
321 #if defined(HW_NUCLEO_F767) || defined(HW_NUCLEO_H743) || defined(HW_FRANKENSO) || HW_PROTEUS || EFI_SIMULATOR
322 // used in HW CI
323
1/1
✓ Decision 'true' taken 3 times.
3 case engine_type_e::VW_ABA:
324 3 setVwAba();
325 3 break;
326
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::FRANKENSO_BMW_M73_F:
327 1 setBMW_M73_TwoCoilUnitTest();
328 1 break;
329 #endif // HW_FRANKENSO || HW_PROTEUS
330
331 case engine_type_e::TEST_ISSUE_6451:
332 testEngine6451();
333 break;
334
335 #if defined(HW_FRANKENSO) || EFI_SIMULATOR || defined(HW_NUCLEO_F767) || defined(HW_NUCLEO_H743) || defined(SUPPORT_GY6)
336
1/1
✓ Decision 'true' taken 2 times.
2 case engine_type_e::GY6_139QMB:
337 2 setGy6139qmbDefaultEngineConfiguration();
338 2 break;
339 #endif
340
341 #if defined(HW_FRANKENSO) || EFI_SIMULATOR || defined(HW_NUCLEO_F767) || defined(HW_NUCLEO_H743)
342
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::DEFAULT_FRANKENSO:
343 1 setFrankensoConfiguration();
344 1 break;
345 case engine_type_e::FRANKENSO_TEST_33810:
346 #if EFI_PROD_CODE
347 setDiscovery33810Test();
348 #endif
349 break;
350
1/1
✓ Decision 'true' taken 518 times.
518 case engine_type_e::TEST_ENGINE:
351 518 setTestCamEngineConfiguration();
352 518 break;
353
1/1
✓ Decision 'true' taken 10 times.
10 case engine_type_e::TEST_CRANK_ENGINE:
354 10 setTestCrankEngineConfiguration();
355 10 break;
356
1/1
✓ Decision 'true' taken 3 times.
3 case engine_type_e::DODGE_NEON_1995:
357 3 setDodgeNeon1995EngineConfiguration();
358 3 break;
359
1/1
✓ Decision 'true' taken 2 times.
2 case engine_type_e::DODGE_NEON_2003_CRANK:
360 2 setDodgeNeonNGCEngineConfiguration();
361 2 break;
362
1/1
✓ Decision 'true' taken 3 times.
3 case engine_type_e::FORD_ASPIRE_1996:
363 3 setFordAspireEngineConfiguration();
364 3 break;
365
1/1
✓ Decision 'true' taken 7 times.
7 case engine_type_e::FRANKENSO_MIATA_NA6_MAP:
366 7 setMiataNA6_MAP_Frankenso();
367 7 break;
368 case engine_type_e::ETB_BENCH_ENGINE:
369 setEtbTestConfiguration();
370 break;
371 case engine_type_e::L9779_BENCH_ENGINE:
372 setL9779TestConfiguration();
373 break;
374 case engine_type_e::EEPROM_BENCH_ENGINE:
375 #if EFI_PROD_CODE && HAL_USE_EEPROM
376 setEepromTestConfiguration();
377 #endif
378 break;
379
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::MITSUBISHI_3A92:
380 1 setMitsubishi3A92();
381 1 break;
382
1/1
✓ Decision 'true' taken 4 times.
4 case engine_type_e::FORD_INLINE_6_1995:
383 4 setFordInline6();
384 4 break;
385 case engine_type_e::HONDA_600:
386 setHonda600();
387 break;
388 case engine_type_e::FORD_ESCORT_GT:
389 setFordEscortGt();
390 break;
391
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::DODGE_RAM:
392 1 setDodgeRam1996();
393 1 break;
394 case engine_type_e::TEST_ENGINE_VVT:
395 setTestVVTEngineConfiguration();
396 break;
397 case engine_type_e::TEST_DC_WASTEGATE_DISCOVERY:
398 setTestDcWastegateConfiguration();
399 break;
400
1/1
✓ Decision 'true' taken 2 times.
2 case engine_type_e::SACHS:
401 2 setSachs();
402 2 break;
403
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::TOYOTA_2JZ_GTE_VVTi:
404 1 setToyota_2jz_vics();
405 1 break;
406 case engine_type_e::TEST_33816:
407 setTest33816EngineConfiguration();
408 break;
409 case engine_type_e::TEST_ROTARY:
410 setRotary();
411 break;
412 #endif // HW_FRANKENSO
413 case engine_type_e::BMW_M52:
414 bmwM52();
415 break;
416 #if defined(HW_SUBARU_EG33) || EFI_SIMULATOR
417 case engine_type_e::SUBARU_EG33:
418 setSubaruEG33Defaults();
419 break;
420 #endif //HW_SUBARU_EG33
421 default:
422 applyUnknownEngineType(engineType);
423 }
424 586 boardAfterTuneDefaults(engineType);
425 586 }
426
427 PUBLIC_API_WEAK_SOMETHING_WEIRD engine_type_e getLastEngineType() {
428 return engine_type_e::UNUSED_105;
429 }
430