GCC Code Coverage Report


Directory: ./
File: firmware/controllers/algo/engine_type_impl.cpp
Date: 2025-10-24 14:26:41
Coverage Exec Excl Total
Lines: 35.3% 79 0 224
Functions: 25.0% 1 0 4
Branches: 33.8% 25 0 74
Decisions: 31.6% 25 - 79

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