GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 0.0% 0 / 0 / 53
Functions: 0.0% 0 / 0 / 3
Branches: -% 0 / 0 / 0
Decisions: -% 0 / - / 0

firmware/config/engines/subaru.cpp
Line Branch Decision Exec Source
1 /**
2 * @file subaru.cpp
3 *
4 * SUBARU_2003_WRX
5 * set engine_type 22
6 *
7 * @date Sep 14, 2014
8 * @author Andrey Belomutskiy, (c) 2012-2020
9 */
10
11 #include "pch.h"
12
13 #include "subaru.h"
14 #include "custom_engine.h"
15 #include "proteus_meta.h"
16 #include "defaults.h"
17 #include "mre_meta.h"
18
19 /**
20 * MRE_SUBARU_EJ18
21 * set engine_type 37
22 */
23 void setSubaruEJ18_MRE() {
24 engineConfiguration->trigger.type = trigger_type_e::TT_VVT_SUBARU_7_WITHOUT_6;
25
26
27 // engineConfiguration->isDoubleSolenoidIdle = true;
28
29 engineConfiguration->displacement = 1.8;
30 strcpy(engineConfiguration->engineMake, ENGINE_MAKE_SUBARU);
31 strcpy(engineConfiguration->engineCode, "EJ18");
32
33 engineConfiguration->firingOrder = FO_1_3_2_4;
34 engineConfiguration->injectionMode = IM_SEQUENTIAL;
35 engineConfiguration->ignitionMode = IM_WASTED_SPARK;
36
37 #if (BOARD_TLE8888_COUNT > 0)
38 // Gpio::TLE8888_PIN_23: "33 - GP Out 3"
39 engineConfiguration->malfunctionIndicatorPin = MRE_GPOUT_3;
40 #endif /* BOARD_TLE8888_COUNT */
41
42 // this car has high-side main relay WOW so we have to hard wire it to ignition switch
43
44
45 }
46
47 /*
48 * Subaru SVX (Alcyone SVX)
49 */
50
51 void setSubaruEG33Defaults() {
52 setCamOperationMode();
53
54 engineConfiguration->trigger.type = trigger_type_e::TT_SUBARU_SVX;
55
56 engineConfiguration->cylindersCount = 6;
57 setLeftRightBanksNeedBetterName();
58 engineConfiguration->firingOrder = FO_1_6_3_2_5_4;
59
60 engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS;
61 engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
62 engineConfiguration->injectionMode = IM_SEQUENTIAL;
63
64 /* TODO: */
65 engineConfiguration->globalTriggerAngleOffset = 114; // the end of 19th tooth?
66
67 engineConfiguration->fuelAlgorithm = engine_load_mode_e::LM_REAL_MAF;
68
69 engineConfiguration->displacement = 3.30;
70 engineConfiguration->injector.flow = 250;
71
72 setTable(config->crankingCycleBaseFuel, 5); // ???
73 engineConfiguration->cranking.rpm = 400;
74
75 engineConfiguration->rpmHardLimit = 6500;
76
77 engineConfiguration->idleStepperReactionTime = 10;
78 engineConfiguration->stepperDirectionPinMode = OM_INVERTED;
79 engineConfiguration->useLinearCltSensor = true;
80
81 engineConfiguration->canWriteEnabled = false;
82
83 /* Fully closed - 0.9V, fully opened - 4.7 (?) */
84 engineConfiguration->tpsMin = convertVoltageTo10bitADC(0.9);
85 engineConfiguration->tpsMax = convertVoltageTo10bitADC(4.7);
86 engineConfiguration->tpsErrorDetectionTooLow = -10; // -10% open
87 engineConfiguration->tpsErrorDetectionTooHigh = 110; // 110% open
88
89 engineConfiguration->mapMinBufferLength = 4;
90
91 /* idle configuration */
92 setTable(config->cltIdleCorrTable, 30.0);
93
94 engineConfiguration->maxAcRpm = 3000;
95
96 /* Check this */
97 engineConfiguration->tachPulsePerRev = 2;
98 }
99
100 void setSubaru2011() {
101 engineConfiguration->allowIdenticalPps = true;
102 setPPSCalibration(0.69, 3.38, 0.69, 3.38);
103
104 engineConfiguration->displacement = 2.5;
105 strcpy(engineConfiguration->engineMake, ENGINE_MAKE_SUBARU);
106 engineConfiguration->trigger.type = trigger_type_e::TT_36_2_2_2;
107 engineConfiguration->vvtMode[0] = VVT_BOSCH_QUICK_START;
108 engineConfiguration->vvtMode[1] = VVT_BOSCH_QUICK_START;
109 engineConfiguration->firingOrder = FO_1_3_2_4;
110 engineConfiguration->injectionMode = IM_SEQUENTIAL;
111
112 #if HW_PROTEUS && EFI_PROD_CODE
113 setProteusEtbIO();
114 engineConfiguration->triggerInputPins[0] = PROTEUS_VR_1;
115 engineConfiguration->camInputs[0] = PROTEUS_DIGITAL_1;
116 engineConfiguration->camInputs[1] = PROTEUS_DIGITAL_2;
117 engineConfiguration->camInputs[2] = PROTEUS_DIGITAL_3;
118 engineConfiguration->camInputs[3] = PROTEUS_DIGITAL_4;
119
120
121 engineConfiguration->starterControlPin = Gpio::PROTEUS_LS_14;
122 engineConfiguration->startStopButtonPin = PROTEUS_IN_AV_6_DIGITAL;
123 #endif // HW_PROTEUS
124
125 engineConfiguration->tpsMin = convertVoltageTo10bitADC(0.68);
126 engineConfiguration->tpsMax = convertVoltageTo10bitADC(3.96);
127 engineConfiguration->tps1SecondaryMin = convertVoltageTo10bitADC(1.55);
128 engineConfiguration->tps1SecondaryMax = convertVoltageTo10bitADC(4.17);
129
130 }
131