GCC Code Coverage Report


Directory: ./
File: firmware/config/engines/honda_k_dbc.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 94.6% 35 0 37
Functions: 50.0% 1 0 2
Branches: -% 0 0 0
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 /*
2 * honda_k_dbc.cpp
3 *
4 * @date Oct 2, 2021
5 * @author Andrey Belomutskiy, (c) 2012-2021
6 */
7
8 #include "honda_k_dbc.h"
9 #include "table_helper.h"
10
11 #if HW_PROTEUS & EFI_PROD_CODE
12 #include "proteus_meta.h"
13 #endif // HW_PROTEUS
14
15 1 void setHondaK() {
16 1 engineConfiguration->cylindersCount = 4;
17 1 engineConfiguration->displacement = 2.4;
18 1 engineConfiguration->firingOrder = FO_1_3_4_2;
19 1 engineConfiguration->engineSyncCam = SC_Exhaust_First;
20 1 engineConfiguration->trigger.type = trigger_type_e::TT_HONDA_K_CRANK_12_1;
21 1 engineConfiguration->camSyncOnSecondCrankRevolution = true;
22 1 int magic = 0; // note that offset and VVT are related
23 1 engineConfiguration->globalTriggerAngleOffset = 303 - magic;
24
25 // VVT is here just single tooth? and we do not even use it!?
26 1 engineConfiguration->vvtMode[0] = VVT_HONDA_K_INTAKE;
27 // also known as 'CAM sync'? i am pretty confused at this point
28 1 engineConfiguration->vvtMode[1] = VVT_HONDA_K_EXHAUST;
29 1 engineConfiguration->vvtOffsets[0] = -21;
30 1 engineConfiguration->vvtOffsets[1] = 183 + magic;
31
32 // set cranking_fuel 15
33 1 setTable(config->crankingCycleBaseFuel, 75);
34
35 1 engineConfiguration->map.sensor.type = MT_DENSO183;
36 // todo: quote some source?
37 1 engineConfiguration->injector.flow = 270;
38 1 engineConfiguration->injector.flow = 310;
39 1 engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure;
40 1 engineConfiguration->fuelReferencePressure = 350; // TODO: what is real value?!
41
42 1 engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS;
43 1 engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
44 1 engineConfiguration->injectionMode = IM_SEQUENTIAL;
45
46 1 setArrayValues(config->cltCrankingCorr, 70);
47 static const uint16_t defaultPostCrankinDurationBins[] = {
48 0, 65, 100, 125, 150, 250
49 };
50 1 copyArray(config->postCrankingDurationBins, defaultPostCrankinDurationBins);
51 1 setTable(config->postCrankingFactor, 1.25f);
52 1 engineConfiguration->useRunningMathForCranking = true;
53
54 1 strcpy(engineConfiguration->engineMake, ENGINE_MAKE_HONDA);
55 1 strcpy(engineConfiguration->engineCode, "K24");
56
57 1 engineConfiguration->tpsMin = 100;
58 1 engineConfiguration->tpsMax = 830;
59
60 1 engineConfiguration->displayLogicLevelsInEngineSniffer = true;
61
62 1 gppwm_channel *vtsControl = &engineConfiguration->gppwm[0];
63 1 vtsControl->pwmFrequency = 0;
64 #if EFI_SIMULATOR
65 // simulator canned config XML toolset cares to see perfect empty memory region
66 memset(engineConfiguration->gpPwmNote[0], 0, sizeof(gppwm_note_t));
67 #endif
68 1 strcpy(engineConfiguration->gpPwmNote[0], "VTS");
69
70 /**
71 * K24A4 engine
72 * HONDA_K
73 */
74
75 #if HW_PROTEUS & EFI_PROD_CODE
76 strcpy(engineConfiguration->vehicleName, "test");
77 // engineConfiguration->triggerInputPins[0] = PROTEUS_DIGITAL_2; // crank
78 // engineConfiguration->camInputs[0] = PROTEUS_DIGITAL_4; // intake
79 // engineConfiguration->camInputs[1 * CAMS_PER_BANK] = PROTEUS_DIGITAL_1; // exhaust
80
81 engineConfiguration->triggerInputPins[0] = PROTEUS_DIGITAL_1; // exhaust
82 engineConfiguration->camInputs[0] = PROTEUS_DIGITAL_4; // intake
83 // inverted
84 // offset -41
85
86
87 engineConfiguration->injectionPins[0] = Gpio::PROTEUS_LS_8;
88 engineConfiguration->injectionPins[1] = Gpio::PROTEUS_LS_7;
89 engineConfiguration->injectionPins[2] = Gpio::PROTEUS_LS_6;
90 engineConfiguration->injectionPins[3] = Gpio::PROTEUS_LS_5;
91
92 vtsControl->pin = Gpio::PROTEUS_HS_1;
93 engineConfiguration->vvtPins[0] = Gpio::PROTEUS_HS_2;
94
95 engineConfiguration->malfunctionIndicatorPin = Gpio::PROTEUS_LS_10;
96 engineConfiguration->idle.solenoidPin = Gpio::PROTEUS_LS_15;
97 engineConfiguration->fanPin = Gpio::PROTEUS_LS_1;
98
99 engineConfiguration->iat.adcChannel = PROTEUS_IN_ANALOG_TEMP_1;
100 engineConfiguration->clt.adcChannel = PROTEUS_IN_ANALOG_TEMP_2;
101 engineConfiguration->tps1_1AdcChannel = PROTEUS_IN_ANALOG_VOLT_3;
102 engineConfiguration->map.sensor.hwChannel = PROTEUS_IN_ANALOG_VOLT_6;
103 engineConfiguration->fanPin = Gpio::Unassigned;
104
105 engineConfiguration->mainRelayPin = Gpio::PROTEUS_LS_9;
106 engineConfiguration->fuelPumpPin = Gpio::PROTEUS_LS_11;
107
108 #endif // HW_PROTEUS
109 1 }
110
111 void setProteusHondaOBD2A() {
112
113 }
114