GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 36.1% 82 / 0 / 227
Functions: 25.0% 1 / 0 / 4
Branches: 34.7% 26 / 0 / 75
Decisions: 32.5% 26 / - / 80

firmware/controllers/algo/engine_type_impl.cpp
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_4.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 601 void applyEngineType(engine_type_e engineType) {
62 /**
63 * And override them with engine-specific defaults
64 */
65
26/73
✗ 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 taken 2 times.
✗ 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 not taken.
✓ Branch 16 taken 1 time.
✓ Branch 17 taken 1 time.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 8 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 8 times.
✗ 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 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✓ Branch 42 taken 3 times.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 3 times.
✓ Branch 46 taken 1 time.
✗ Branch 47 not taken.
✓ Branch 48 taken 2 times.
✓ Branch 49 taken 1 time.
✗ Branch 50 not taken.
✓ Branch 51 taken 531 times.
✓ Branch 52 taken 10 times.
✓ Branch 53 taken 3 times.
✓ Branch 54 taken 2 times.
✓ Branch 55 taken 3 times.
✓ Branch 56 taken 7 times.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 1 time.
✓ Branch 61 taken 4 times.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 1 time.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✓ Branch 68 taken 1 time.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
601 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
1/1
✓ Decision 'true' taken 2 times.
2 case engine_type_e::TCU_4R70W:
109 #if EFI_TCU
110 2 configureTcu4R70W();
111 #endif // EFI_TCU
112 2 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 case engine_type_e::GM_SBC:
224 setGmSbc();
225 break;
226 #endif
227
228 #if HW_PROTEUS || EFI_SIMULATOR
229 case engine_type_e::WASTEGATE_PROTEUS_TEST:
230 proteusDcWastegateTest();
231 break;
232 case engine_type_e::PROTEUS_NISSAN_VQ35:
233 setProteusNissanVQ();
234 break;
235 case engine_type_e::PROTEUS_VW_B6:
236 setProteusVwPassatB6();
237 break;
238 case engine_type_e::UNUSED42:
239 case engine_type_e::PROTEUS_LUA_DEMO:
240 proteusLuaDemo();
241 break;
242
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::PROTEUS_BMW_M73:
243 1 setEngineBMW_M73_Proteus();
244 1 break;
245 case engine_type_e::MIATA_PROTEUS_TCU:
246 setMiataNB2_Proteus_TCU();
247 break;
248 case engine_type_e::HONDA_OBD2A:
249 setProteusHondaOBD2A();
250 break;
251 case engine_type_e::PROTEUS_STIM_QC:
252 proteusStimQc();
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_121_VAG) || defined(HW_HELLEN_UAEFI) || defined(HW_HELLEN_UAEFI121) || EFI_SIMULATOR
294 case engine_type_e::VAG_5_CYL:
295 setVag_5_cyl();
296 break;
297 #endif
298
299 #if defined(HW_HELLEN_121_VAG) || EFI_SIMULATOR
300 case engine_type_e::HELLEN_121_VAG_V6_CYL:
301 setHellen121Vag_v6_cyl();
302 break;
303 case engine_type_e::HELLEN_121_VAG_VR6_CYL:
304 setHellen121Vag_vr6_cyl();
305 break;
306 case engine_type_e::HELLEN_121_VAG_8_CYL:
307 setHellen121Vag_8_cyl();
308 break;
309 #endif
310
311 #ifdef HW_HELLEN
312 case engine_type_e::TOYOTA_1NZ_FE:
313 setToyota1NZFE();
314 break;
315 case engine_type_e::HELLEN_HONDA_BCM:
316 setHondaCivicBcm();
317 break;
318 #endif // HW_HELLEN
319 #if defined(HW_NUCLEO_F767) || defined(HW_NUCLEO_H743) || defined(HW_FRANKENSO) || HW_PROTEUS || EFI_SIMULATOR
320 // used in HW CI
321
1/1
✓ Decision 'true' taken 3 times.
3 case engine_type_e::VW_ABA:
322 3 setVwAba();
323 3 break;
324
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::FRANKENSO_BMW_M73_F:
325 1 setBMW_M73_TwoCoilUnitTest();
326 1 break;
327 #endif // HW_FRANKENSO || HW_PROTEUS
328
329 case engine_type_e::TEST_ISSUE_6451:
330 testEngine6451();
331 break;
332
333 #if defined(HW_FRANKENSO) || EFI_SIMULATOR || defined(HW_NUCLEO_F767) || defined(HW_NUCLEO_H743) || defined(SUPPORT_GY6)
334
1/1
✓ Decision 'true' taken 2 times.
2 case engine_type_e::GY6_139QMB:
335 2 setGy6139qmbDefaultEngineConfiguration();
336 2 break;
337 #endif
338
339 #if defined(HW_FRANKENSO) || EFI_SIMULATOR || defined(HW_NUCLEO_F767) || defined(HW_NUCLEO_H743)
340
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::DEFAULT_FRANKENSO:
341 1 setFrankensoConfiguration();
342 1 break;
343 case engine_type_e::FRANKENSO_TEST_33810:
344 #if EFI_PROD_CODE
345 setDiscovery33810Test();
346 #endif
347 break;
348
1/1
✓ Decision 'true' taken 531 times.
531 case engine_type_e::TEST_ENGINE:
349 531 setTestCamEngineConfiguration();
350 531 break;
351
1/1
✓ Decision 'true' taken 10 times.
10 case engine_type_e::TEST_CRANK_ENGINE:
352 10 setTestCrankEngineConfiguration();
353 10 break;
354
1/1
✓ Decision 'true' taken 3 times.
3 case engine_type_e::DODGE_NEON_1995:
355 3 setDodgeNeon1995EngineConfiguration();
356 3 break;
357
1/1
✓ Decision 'true' taken 2 times.
2 case engine_type_e::DODGE_NEON_2003_CRANK:
358 2 setDodgeNeonNGCEngineConfiguration();
359 2 break;
360
1/1
✓ Decision 'true' taken 3 times.
3 case engine_type_e::FORD_ASPIRE_1996:
361 3 setFordAspireEngineConfiguration();
362 3 break;
363
1/1
✓ Decision 'true' taken 7 times.
7 case engine_type_e::FRANKENSO_MIATA_NA6_MAP:
364 7 setMiataNA6_MAP_Frankenso();
365 7 break;
366 case engine_type_e::ETB_BENCH_ENGINE:
367 setEtbTestConfiguration();
368 break;
369 case engine_type_e::L9779_BENCH_ENGINE:
370 setL9779TestConfiguration();
371 break;
372 case engine_type_e::EEPROM_BENCH_ENGINE:
373 #if EFI_PROD_CODE && HAL_USE_EEPROM
374 setEepromTestConfiguration();
375 #endif
376 break;
377
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::MITSUBISHI_3A92:
378 1 setMitsubishi3A92();
379 1 break;
380
1/1
✓ Decision 'true' taken 4 times.
4 case engine_type_e::FORD_INLINE_6_1995:
381 4 setFordInline6();
382 4 break;
383 case engine_type_e::HONDA_600:
384 setHonda600();
385 break;
386 case engine_type_e::FORD_ESCORT_GT:
387 setFordEscortGt();
388 break;
389
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::DODGE_RAM:
390 1 setDodgeRam1996();
391 1 break;
392 case engine_type_e::TEST_ENGINE_VVT:
393 setTestVVTEngineConfiguration();
394 break;
395 case engine_type_e::TEST_DC_WASTEGATE_DISCOVERY:
396 setTestDcWastegateConfiguration();
397 break;
398
1/1
✓ Decision 'true' taken 2 times.
2 case engine_type_e::SACHS:
399 2 setSachs();
400 2 break;
401
1/1
✓ Decision 'true' taken 1 time.
1 case engine_type_e::TOYOTA_2JZ_GTE_VVTi:
402 1 setToyota_2jz_vics();
403 1 break;
404 case engine_type_e::TEST_33816:
405 setTest33816EngineConfiguration();
406 break;
407 case engine_type_e::TEST_ROTARY:
408 setRotary();
409 break;
410 #endif // HW_FRANKENSO
411 case engine_type_e::BMW_M52:
412 bmwM52();
413 break;
414 #if defined(HW_SUBARU_EG33) || EFI_SIMULATOR
415 case engine_type_e::SUBARU_EG33:
416 setSubaruEG33Defaults();
417 break;
418 #endif //HW_SUBARU_EG33
419 default:
420 if (custom_board_applyUnknownType.has_value()) {
421 call_board_override(custom_board_applyUnknownType, engineType);
422 } else {
423 firmwareError(ObdCode::CUSTOM_UNEXPECTED_ENGINE_TYPE, "Unexpected engine type: %d", (int)engineType);
424 }
425 }
426
427 601 call_board_override(custom_board_AfterTuneDefaults, engineType);
428 601 }
429
430 PUBLIC_API_WEAK_SOMETHING_WEIRD engine_type_e getLastEngineType() {
431 return engine_type_e::UNUSED_105;
432 }
433