rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Variables
log_fields_generated.h File Reference

Variables

static LOG_FIELD_CONSTNESS_SPECIFIER_STORAGE MLG::Entries::Field fields []
 

Variable Documentation

◆ fields

LOG_FIELD_CONSTNESS_SPECIFIER_STORAGE MLG::Entries::Field fields[]
static

Definition at line 7 of file log_fields_generated.h.

7 {
8 {packedTime, GAUGE_NAME_TIME, "sec", 0},
9 {engine->outputChannels, 0, 0, "SD: Present", ""},
10 {engine->outputChannels, 0, 1, "SD: Logging", ""},
11 {engine->outputChannels, 0, 2, "triggerScopeReady", ""},
12 {engine->outputChannels, 0, 3, "antilagTriggered", ""},
13 {engine->outputChannels, 0, 4, "isO2HeaterOn", ""},
14 {engine->outputChannels, 0, 5, "checkEngine", ""},
15 {engine->outputChannels, 0, 6, "needBurn", ""},
16 {engine->outputChannels, 0, 7, "SD: MSD", ""},
17 {engine->outputChannels, 0, 8, "Tooth Logger Ready", ""},
18 {engine->outputChannels, 0, 9, "Error: TPS", ""},
19 {engine->outputChannels, 0, 10, "Error: CLT", ""},
20 {engine->outputChannels, 0, 11, "Error: MAP", ""},
21 {engine->outputChannels, 0, 12, "Error: IAT", ""},
22 {engine->outputChannels, 0, 13, "Error: Trigger", ""},
23 {engine->outputChannels, 0, 14, "Error: Active", ""},
24 {engine->outputChannels, 0, 15, "Warning: Active", ""},
25 {engine->outputChannels, 0, 16, "Error: Pedal", ""},
26 {engine->outputChannels, 0, 17, "Launch Control Triggered", ""},
27 {engine->outputChannels, 0, 18, "Error: TPS2", ""},
28 {engine->outputChannels, 0, 19, "Injector Fault", ""},
29 {engine->outputChannels, 0, 20, "Ignition Fault", ""},
30 {engine->outputChannels, 0, 21, "isUsbConnected", ""},
31 {engine->outputChannels, 0, 22, "dfcoActive", ""},
32 {engine->outputChannels, 0, 23, "SD card writing", ""},
33 {engine->outputChannels, 0, 24, "SD card reading", ""},
34 {engine->outputChannels, 0, 25, "MAP from sensor seems valid", ""},
35 {engine->outputChannels, 0, 26, "triggerPageRefreshFlag", ""},
36 {engine->outputChannels, 0, 27, "hasFaultReportFile", ""},
37 {engine->outputChannels, 0, 28, "Analog sensors supply failure", ""},
38 {engine->outputChannels, 0, 29, "isTuningNow", ""},
39 {engine->outputChannels, 0, 30, "SD: formating is in progress", ""},
40 {engine->outputChannels, 0, 31, "isMapAveraging", ""},
41 {engine->outputChannels.RPMValue, "RPM", "RPM", 0},
42 {engine->outputChannels.rpmAcceleration, "dRPM", "RPM acceleration/Rate of Change/ROC", 2},
43 {engine->outputChannels.speedToRpmRatio, "Gearbox Ratio", "value", 2},
44 {engine->outputChannels.internalMcuTemperature, "ECU: CPU Temperature", "deg C", 0},
45 {engine->outputChannels.internalVref, "internalVref", "V", 3},
46 {engine->outputChannels.coolant, "CLT", "deg C", 1},
47 {engine->outputChannels.intake, "IAT", "deg C", 1},
48 {engine->outputChannels.auxTemp1, "auxTemp1", "deg C", 1},
49 {engine->outputChannels.auxTemp2, "auxTemp2", "deg C", 1},
50 {engine->outputChannels.TPSValue, "TPS", "%", 2},
51 {engine->outputChannels.throttlePedalPosition, "Throttle pedal position", "%", 2},
52 {engine->outputChannels.tpsADC, "tpsADC", "ADC", 0},
53 {engine->outputChannels.rawMaf, "rawMaf", "V", 3},
54 {engine->outputChannels.mafMeasured, "MAF", "kg/h", 1},
55 {engine->outputChannels.MAPValue, "MAP", "kPa", 1},
56 {engine->outputChannels.baroPressure, "baroPressure", "kPa", 1},
57 {engine->outputChannels.lambdaValue, "Lambda", "", 3},
58 {engine->outputChannels.VBatt, "VBatt", "V", 2},
59 {engine->outputChannels.oilPressure, "Oil Pressure", "kPa", 0},
60 {engine->outputChannels.vvtPositionB1I, "VVT: bank 1 intake", "deg", 1},
61 {engine->outputChannels.actualLastInjection, "Fuel: Last inj pulse width", "ms", 3},
62 {engine->outputChannels.actualLastInjectionRatio, "Fuel: Last inj pulse growth", "", 3},
63 {engine->outputChannels.stopEngineCode, "stopEngineCode", "", 0},
64 {engine->outputChannels.injectorDutyCycle, "Fuel: injector duty cycle", "%", 0},
65 {engine->outputChannels.tempLogging1, "tempLogging1", "", 0},
66 {engine->outputChannels.injectionOffset, "Fuel: Injection timing SOI", "deg", 0},
67 {engine->outputChannels.engineMakeCodeNameCrc16, "Engine CRC16", "crc16", 0},
68 {engine->outputChannels.wallFuelAmount, "Fuel: wall amount", "mg", 3},
69 {engine->outputChannels.wallFuelCorrectionValue, "Fuel: wall correction", "mg", 3},
70 {engine->outputChannels.revolutionCounterSinceStart, "revolutionCounterSinceStart", "", 0},
71 {engine->outputChannels.canReadCounter, "CAN: Rx", "", 0},
72 {engine->outputChannels.tpsAccelFuel, "Fuel: TPS acceleration add fuel ms", "ms", 3},
73 {engine->outputChannels.currentIgnitionMode, "Ignition: Mode", "", 0},
74 {engine->outputChannels.currentInjectionMode, "Fuel: Injection mode", "", 0},
75 {engine->outputChannels.coilDutyCycle, "Ignition: coil duty cycle", "%", 0},
76 {engine->outputChannels.etb1DutyCycle, "ETB: Duty", "%", 1},
77 {engine->outputChannels.fuelTankLevel, "Fuel level", "%", 0},
78 {engine->outputChannels.totalFuelConsumption, "Fuel: Total consumed", "grams", 1},
79 {engine->outputChannels.fuelFlowRate, "Fuel: Flow rate", "gram/s", 3},
80 {engine->outputChannels.TPS2Value, "TPS2", "%", 2},
81 {engine->outputChannels.tuneCrc16, "Tune CRC16", "crc16", 0},
82 {engine->outputChannels.veValue, "Fuel: VE", "ratio", 1},
83 {engine->outputChannels.seconds, "Uptime", "sec", 0},
84 {engine->outputChannels.engineMode, "Engine Mode", "em", 0},
85 {engine->outputChannels.firmwareVersion, "firmware", "version_f", 0},
86 {engine->outputChannels.rawIdlePositionSensor, "rawIdlePositionSensor", "V", 3},
87 {engine->outputChannels.rawWastegatePosition, "rawWastegatePosition", "V", 3},
88 {engine->outputChannels.accelerationLat, "Accel: Lateral", "G", 0},
89 {engine->outputChannels.accelerationLon, "Accel: Longitudinal", "G", 0},
90 {engine->outputChannels.detectedGear, "Detected Gear", "", 0},
91 {engine->outputChannels.maxTriggerReentrant, "maxTriggerReentrant", "", 0},
92 {engine->outputChannels.rawLowFuelPressure, "rawLowFuelPressure", "V", 3},
93 {engine->outputChannels.rawHighFuelPressure, "rawHighFuelPressure", "V", 3},
94 {engine->outputChannels.lowFuelPressure, "Fuel pressure (low)", "kpa", 0},
95 {engine->outputChannels.tcuDesiredGear, "TCU: Desired Gear", "gear", 0},
96 {engine->outputChannels.flexPercent, "Flex Ethanol %", "%", 1},
97 {engine->outputChannels.wastegatePositionSensor, "Wastegate position sensor", "%", 2},
98 {engine->outputChannels.highFuelPressure, "Fuel pressure (high)", "bar", 0},
99 {engine->outputChannels.tempLogging3, "tempLogging3", "", 0},
100 {engine->outputChannels.tempLogging4, "tempLogging4", "", 0},
101 {engine->outputChannels.calibrationValue, "calibrationValue", "", 0},
102 {engine->outputChannels.calibrationMode, "calibrationMode", "", 0},
103 {engine->outputChannels.idleStepperTargetPosition, "Idle: Stepper target position", "", 0},
104 {engine->outputChannels.totalTriggerErrorCounter, "Trigger Error Counter", "counter", 0},
105 {engine->outputChannels.orderingErrorCounter, "orderingErrorCounter", "", 0},
106 {engine->outputChannels.warningCounter, "Warning: counter", "count", 0},
107 {engine->outputChannels.lastErrorCode, "Warning: last", "error", 0},
108 {engine->outputChannels.recentErrorCode[0], "Warning code 1", "error", 0},
109 {engine->outputChannels.recentErrorCode[1], "Warning code 2", "error", 0},
110 {engine->outputChannels.recentErrorCode[2], "Warning code 3", "error", 0},
111 {engine->outputChannels.recentErrorCode[3], "Warning code 4", "error", 0},
112 {engine->outputChannels.recentErrorCode[4], "Warning code 5", "error", 0},
113 {engine->outputChannels.recentErrorCode[5], "Warning code 6", "error", 0},
114 {engine->outputChannels.recentErrorCode[6], "Warning code 7", "error", 0},
115 {engine->outputChannels.recentErrorCode[7], "Warning code 8", "error", 0},
116 {engine->outputChannels.debugFloatField1, "debugFloatField1", "val", 3},
117 {engine->outputChannels.debugFloatField2, "debugFloatField2", "val", 3},
118 {engine->outputChannels.debugFloatField3, "debugFloatField3", "val", 3},
119 {engine->outputChannels.debugFloatField4, "debugFloatField4", "val", 3},
120 {engine->outputChannels.debugFloatField5, "debugFloatField5", "val", 3},
121 {engine->outputChannels.debugFloatField6, "debugFloatField6", "val", 3},
122 {engine->outputChannels.debugFloatField7, "debugFloatField7", "val", 3},
123 {engine->outputChannels.debugIntField1, "debugIntField1", "val", 0},
124 {engine->outputChannels.debugIntField2, "debugIntField2", "val", 0},
125 {engine->outputChannels.debugIntField3, "debugIntField3", "val", 0},
126 {engine->outputChannels.debugIntField4, "debugIntField4", "val", 0},
127 {engine->outputChannels.debugIntField5, "debugIntField5", "val", 0},
128 {engine->outputChannels.egt[0], "EGT 1", "deg C", 2},
129 {engine->outputChannels.egt[1], "EGT 2", "deg C", 2},
130 {engine->outputChannels.egt[2], "EGT 3", "deg C", 2},
131 {engine->outputChannels.egt[3], "EGT 4", "deg C", 2},
132 {engine->outputChannels.egt[4], "EGT 5", "deg C", 2},
133 {engine->outputChannels.egt[5], "EGT 6", "deg C", 2},
134 {engine->outputChannels.egt[6], "EGT 7", "deg C", 2},
135 {engine->outputChannels.egt[7], "EGT 8", "deg C", 2},
136 {engine->outputChannels.rawTps1Primary, "rawTps1Primary", "V", 3},
137 {engine->outputChannels.rawClt, "rawClt", "V", 3},
138 {engine->outputChannels.rawIat, "rawIat", "V", 3},
139 {engine->outputChannels.rawOilPressure, "rawOilPressure", "V", 3},
140 {engine->outputChannels.rawAcPressure, "rawAcPressure", "V", 3},
141 {engine->outputChannels.rawFuelLevel, "rawFuelLevel", "V", 3},
142 {engine->outputChannels.rawPpsPrimary, "rawPpsPrimary", "V", 3},
143 {engine->outputChannels.rawPpsSecondary, "rawPpsSecondary", "V", 3},
144 {engine->outputChannels.rawRawPpsPrimary, "rawRawPpsPrimary", "V", 3},
145 {engine->outputChannels.rawRawPpsSecondary, "rawRawPpsSecondary", "V", 3},
146 {engine->outputChannels.idlePositionSensor, "Idle: Position sensor", "%", 2},
147 {engine->outputChannels.AFRValue, "Air/Fuel Ratio", "AFR", 2},
148 {engine->outputChannels.AFRValue2, "Air/Fuel Ratio 2", "AFR", 2},
149 {engine->outputChannels.SmoothedAFRValue, "Smoothed Air/Fuel Ratio", "AFR", 2},
150 {engine->outputChannels.SmoothedAFRValue2, "Smoothed Air/Fuel Ratio 2", "AFR", 2},
151 {engine->outputChannels.VssAcceleration, "Vss Accel", "m/s2", 2},
152 {engine->outputChannels.lambdaValue2, "Lambda 2", "", 3},
153 {engine->outputChannels.vvtPositionB1E, "VVT: bank 1 exhaust", "deg", 1},
154 {engine->outputChannels.vvtPositionB2I, "VVT: bank 2 intake", "deg", 1},
155 {engine->outputChannels.vvtPositionB2E, "VVT: bank 2 exhaust", "deg", 1},
156 {engine->outputChannels.rawTps1Secondary, "rawTps1Secondary", "V", 3},
157 {engine->outputChannels.rawTps2Primary, "rawTps2Primary", "V", 3},
158 {engine->outputChannels.rawTps2Secondary, "rawTps2Secondary", "V", 3},
159 {engine->outputChannels.accelerationVert, "Accel: Vertical", "G", 0},
160 {engine->outputChannels.gyroYaw, "Gyro: Yaw rate", "deg/sec", 0},
161 {engine->outputChannels.vvtTargets[0], "vvtTargets 1", "deg", 0},
162 {engine->outputChannels.vvtTargets[1], "vvtTargets 2", "deg", 0},
163 {engine->outputChannels.vvtTargets[2], "vvtTargets 3", "deg", 0},
164 {engine->outputChannels.vvtTargets[3], "vvtTargets 4", "deg", 0},
165 {engine->outputChannels.turboSpeed, "Turbocharger Speed", "hz", 0},
166 {engine->outputChannels.ignitionAdvanceCyl[0], "Ign: Timing Cyl 1", "deg", 1},
167 {engine->outputChannels.ignitionAdvanceCyl[1], "Ign: Timing Cyl 2", "deg", 1},
168 {engine->outputChannels.ignitionAdvanceCyl[2], "Ign: Timing Cyl 3", "deg", 1},
169 {engine->outputChannels.ignitionAdvanceCyl[3], "Ign: Timing Cyl 4", "deg", 1},
170 {engine->outputChannels.ignitionAdvanceCyl[4], "Ign: Timing Cyl 5", "deg", 1},
171 {engine->outputChannels.ignitionAdvanceCyl[5], "Ign: Timing Cyl 6", "deg", 1},
172 {engine->outputChannels.ignitionAdvanceCyl[6], "Ign: Timing Cyl 7", "deg", 1},
173 {engine->outputChannels.ignitionAdvanceCyl[7], "Ign: Timing Cyl 8", "deg", 1},
174 {engine->outputChannels.ignitionAdvanceCyl[8], "Ign: Timing Cyl 9", "deg", 1},
175 {engine->outputChannels.ignitionAdvanceCyl[9], "Ign: Timing Cyl 10", "deg", 1},
176 {engine->outputChannels.ignitionAdvanceCyl[10], "Ign: Timing Cyl 11", "deg", 1},
177 {engine->outputChannels.ignitionAdvanceCyl[11], "Ign: Timing Cyl 12", "deg", 1},
178 {engine->outputChannels.tps1Split, "tps1Split", "%", 2},
179 {engine->outputChannels.tps2Split, "tps2Split", "%", 2},
180 {engine->outputChannels.tps12Split, "tps12Split", "%", 2},
181 {engine->outputChannels.accPedalSplit, "accPedalSplit", "%", 2},
182 {engine->outputChannels.accPedalUnfiltered, "accPedalUnfiltered", "%", 2},
183 {engine->outputChannels.sparkCutReason, "Ign: Cut Code", "code", 0},
184 {engine->outputChannels.fuelCutReason, "Fuel: Cut Code", "code", 0},
185 {engine->outputChannels.mafEstimate, "Air: Flow estimate", "kg/h", 0},
186 {engine->outputChannels.instantRpm, "sync: instant RPM", "rpm", 0},
187 {engine->outputChannels.rawMap, "rawMap", "V", 3},
188 {engine->outputChannels.rawMapFast, "rawMapFast", "V", 3},
189 {engine->outputChannels.rawAfr, "rawAfr", "V", 3},
190 {engine->outputChannels.calibrationValue2, "calibrationValue2", "", 0},
191 {engine->outputChannels.luaInvocationCounter, "Lua: Tick counter", "count", 0},
192 {engine->outputChannels.luaLastCycleDuration, "Lua: Last tick duration", "nt", 0},
193 {engine->outputChannels.vssEdgeCounter, "vssEdgeCounter", "", 0},
194 {engine->outputChannels.issEdgeCounter, "issEdgeCounter", "", 0},
195 {engine->outputChannels.auxLinear1, "Aux linear #1", "", 2},
196 {engine->outputChannels.auxLinear2, "Aux linear #2", "", 2},
197 {engine->outputChannels.auxLinear3, "Aux linear #3", "", 2},
198 {engine->outputChannels.auxLinear4, "Aux linear #4", "", 2},
199 {engine->outputChannels.fallbackMap, "fallbackMap", "kPa", 1},
200 {engine->outputChannels.effectiveMap, "Effective MAP", "kPa", 1},
201 {engine->outputChannels.instantMAPValue, "Instant MAP", "kPa", 2},
202 {engine->outputChannels.maxLockedDuration, "maxLockedDuration", "us", 0},
203 {engine->outputChannels.canWriteOk, "CAN: Tx OK", "", 0},
204 {engine->outputChannels.canWriteNotOk, "CAN: Tx err", "", 0},
205 {engine->outputChannels.triggerPrimaryFall, "triggerPrimaryFall", "", 3},
206 {engine->outputChannels.triggerPrimaryRise, "triggerPrimaryRise", "", 3},
207 {engine->outputChannels.triggerSecondaryFall, "triggerSecondaryFall", "", 3},
208 {engine->outputChannels.triggerSecondaryRise, "triggerSecondaryRise", "", 3},
209 {engine->outputChannels.starterState, "starterState", "", 3},
210 {engine->outputChannels.starterRelayDisable, "starterRelayDisable", "", 3},
211 {engine->outputChannels.multiSparkCounter, "Ign: Multispark count", "", 3},
212 {engine->outputChannels.extiOverflowCount, "extiOverflowCount", "", 0},
213 {engine->outputChannels.alternatorStatus.pTerm, "alternatorStatus.pTerm", "", 2},
214 {engine->outputChannels.alternatorStatus.iTerm, "alternatorStatus.iTerm", "", 2},
215 {engine->outputChannels.alternatorStatus.dTerm, "alternatorStatus.dTerm", "", 2},
216 {engine->outputChannels.alternatorStatus.output, "alternatorStatus.output", "", 2},
217 {engine->outputChannels.alternatorStatus.error, "alternatorStatus.error", "", 2},
218 {engine->outputChannels.alternatorStatus.resetCounter, "alternatorStatus.resetCounter", "", 0},
219 {engine->outputChannels.idleStatus.pTerm, "idleStatus.pTerm", "", 2},
220 {engine->outputChannels.idleStatus.iTerm, "idleStatus.iTerm", "", 2},
221 {engine->outputChannels.idleStatus.dTerm, "idleStatus.dTerm", "", 2},
222 {engine->outputChannels.idleStatus.output, "idleStatus.output", "", 2},
223 {engine->outputChannels.idleStatus.error, "idleStatus.error", "", 2},
224 {engine->outputChannels.idleStatus.resetCounter, "idleStatus.resetCounter", "", 0},
225 {engine->outputChannels.etbStatus.pTerm, "etbStatus.pTerm", "", 2},
226 {engine->outputChannels.etbStatus.iTerm, "etbStatus.iTerm", "", 2},
227 {engine->outputChannels.etbStatus.dTerm, "etbStatus.dTerm", "", 2},
228 {engine->outputChannels.etbStatus.output, "etbStatus.output", "", 2},
229 {engine->outputChannels.etbStatus.error, "etbStatus.error", "", 2},
230 {engine->outputChannels.etbStatus.resetCounter, "etbStatus.resetCounter", "", 0},
231 {engine->outputChannels.boostStatus.pTerm, "boostStatus.pTerm", "", 2},
232 {engine->outputChannels.boostStatus.iTerm, "boostStatus.iTerm", "", 2},
233 {engine->outputChannels.boostStatus.dTerm, "boostStatus.dTerm", "", 2},
234 {engine->outputChannels.boostStatus.output, "boostStatus.output", "", 2},
235 {engine->outputChannels.boostStatus.error, "boostStatus.error", "", 2},
236 {engine->outputChannels.boostStatus.resetCounter, "boostStatus.resetCounter", "", 0},
237 {engine->outputChannels.wastegateDcStatus.pTerm, "wastegateDcStatus.pTerm", "", 2},
238 {engine->outputChannels.wastegateDcStatus.iTerm, "wastegateDcStatus.iTerm", "", 2},
239 {engine->outputChannels.wastegateDcStatus.dTerm, "wastegateDcStatus.dTerm", "", 2},
240 {engine->outputChannels.wastegateDcStatus.output, "wastegateDcStatus.output", "", 2},
241 {engine->outputChannels.wastegateDcStatus.error, "wastegateDcStatus.error", "", 2},
242 {engine->outputChannels.wastegateDcStatus.resetCounter, "wastegateDcStatus.resetCounter", "", 0},
243 {engine->outputChannels.auxSpeed1, "Aux speed 1", "s", 0},
244 {engine->outputChannels.auxSpeed2, "Aux speed 2", "s", 0},
245 {engine->outputChannels.ISSValue, "TCU: Input Shaft Speed", "RPM", 0},
246 {engine->outputChannels.rawAnalogInput[0], "rawAnalogInput 1", "V", 3},
247 {engine->outputChannels.rawAnalogInput[1], "rawAnalogInput 2", "V", 3},
248 {engine->outputChannels.rawAnalogInput[2], "rawAnalogInput 3", "V", 3},
249 {engine->outputChannels.rawAnalogInput[3], "rawAnalogInput 4", "V", 3},
250 {engine->outputChannels.rawAnalogInput[4], "rawAnalogInput 5", "V", 3},
251 {engine->outputChannels.rawAnalogInput[5], "rawAnalogInput 6", "V", 3},
252 {engine->outputChannels.rawAnalogInput[6], "rawAnalogInput 7", "V", 3},
253 {engine->outputChannels.rawAnalogInput[7], "rawAnalogInput 8", "V", 3},
254 {engine->outputChannels.gppwmOutput[0], "GPPWM Output 1", "%", 2},
255 {engine->outputChannels.gppwmOutput[1], "GPPWM Output 2", "%", 2},
256 {engine->outputChannels.gppwmOutput[2], "GPPWM Output 3", "%", 2},
257 {engine->outputChannels.gppwmOutput[3], "GPPWM Output 4", "%", 2},
258 {engine->outputChannels.gppwmXAxis[0], "gppwmXAxis 1", "", 0},
259 {engine->outputChannels.gppwmXAxis[1], "gppwmXAxis 2", "", 0},
260 {engine->outputChannels.gppwmXAxis[2], "gppwmXAxis 3", "", 0},
261 {engine->outputChannels.gppwmXAxis[3], "gppwmXAxis 4", "", 0},
262 {engine->outputChannels.gppwmYAxis[0], "gppwmYAxis 1", "", 1},
263 {engine->outputChannels.gppwmYAxis[1], "gppwmYAxis 2", "", 1},
264 {engine->outputChannels.gppwmYAxis[2], "gppwmYAxis 3", "", 1},
265 {engine->outputChannels.gppwmYAxis[3], "gppwmYAxis 4", "", 1},
266 {engine->outputChannels.rawBattery, "rawBattery", "V", 3},
267 {engine->outputChannels.ignBlendParameter[0], "ignBlendParameter 1", "", 1},
268 {engine->outputChannels.ignBlendParameter[1], "ignBlendParameter 2", "", 1},
269 {engine->outputChannels.ignBlendParameter[2], "ignBlendParameter 3", "", 1},
270 {engine->outputChannels.ignBlendParameter[3], "ignBlendParameter 4", "", 1},
271 {engine->outputChannels.ignBlendBias[0], "ignBlendBias 1", "%", 1},
272 {engine->outputChannels.ignBlendBias[1], "ignBlendBias 2", "%", 1},
273 {engine->outputChannels.ignBlendBias[2], "ignBlendBias 3", "%", 1},
274 {engine->outputChannels.ignBlendBias[3], "ignBlendBias 4", "%", 1},
275 {engine->outputChannels.ignBlendOutput[0], "ignBlendOutput 1", "deg", 2},
276 {engine->outputChannels.ignBlendOutput[1], "ignBlendOutput 2", "deg", 2},
277 {engine->outputChannels.ignBlendOutput[2], "ignBlendOutput 3", "deg", 2},
278 {engine->outputChannels.ignBlendOutput[3], "ignBlendOutput 4", "deg", 2},
279 {engine->outputChannels.ignBlendYAxis[0], "ignBlendYAxis 1", "", 1},
280 {engine->outputChannels.ignBlendYAxis[1], "ignBlendYAxis 2", "", 1},
281 {engine->outputChannels.ignBlendYAxis[2], "ignBlendYAxis 3", "", 1},
282 {engine->outputChannels.ignBlendYAxis[3], "ignBlendYAxis 4", "", 1},
283 {engine->outputChannels.veBlendParameter[0], "veBlendParameter 1", "", 1},
284 {engine->outputChannels.veBlendParameter[1], "veBlendParameter 2", "", 1},
285 {engine->outputChannels.veBlendParameter[2], "veBlendParameter 3", "", 1},
286 {engine->outputChannels.veBlendParameter[3], "veBlendParameter 4", "", 1},
287 {engine->outputChannels.veBlendBias[0], "veBlendBias 1", "%", 1},
288 {engine->outputChannels.veBlendBias[1], "veBlendBias 2", "%", 1},
289 {engine->outputChannels.veBlendBias[2], "veBlendBias 3", "%", 1},
290 {engine->outputChannels.veBlendBias[3], "veBlendBias 4", "%", 1},
291 {engine->outputChannels.veBlendOutput[0], "veBlendOutput 1", "%", 2},
292 {engine->outputChannels.veBlendOutput[1], "veBlendOutput 2", "%", 2},
293 {engine->outputChannels.veBlendOutput[2], "veBlendOutput 3", "%", 2},
294 {engine->outputChannels.veBlendOutput[3], "veBlendOutput 4", "%", 2},
295 {engine->outputChannels.veBlendYAxis[0], "veBlendYAxis 1", "", 1},
296 {engine->outputChannels.veBlendYAxis[1], "veBlendYAxis 2", "", 1},
297 {engine->outputChannels.veBlendYAxis[2], "veBlendYAxis 3", "", 1},
298 {engine->outputChannels.veBlendYAxis[3], "veBlendYAxis 4", "", 1},
299 {engine->outputChannels.boostOpenLoopBlendParameter[0], "boostOpenLoopBlendParameter 1", "", 1},
300 {engine->outputChannels.boostOpenLoopBlendParameter[1], "boostOpenLoopBlendParameter 2", "", 1},
301 {engine->outputChannels.boostOpenLoopBlendBias[0], "boostOpenLoopBlendBias 1", "%", 1},
302 {engine->outputChannels.boostOpenLoopBlendBias[1], "boostOpenLoopBlendBias 2", "%", 1},
303 {engine->outputChannels.boostOpenLoopBlendOutput[0], "boostOpenLoopBlendOutput 1", "%", 0},
304 {engine->outputChannels.boostOpenLoopBlendOutput[1], "boostOpenLoopBlendOutput 2", "%", 0},
305 {engine->outputChannels.boostOpenLoopBlendYAxis[0], "boostOpenLoopBlendYAxis 1", "", 1},
306 {engine->outputChannels.boostOpenLoopBlendYAxis[1], "boostOpenLoopBlendYAxis 2", "", 1},
307 {engine->outputChannels.boostClosedLoopBlendParameter[0], "boostClosedLoopBlendParameter 1", "", 1},
308 {engine->outputChannels.boostClosedLoopBlendParameter[1], "boostClosedLoopBlendParameter 2", "", 1},
309 {engine->outputChannels.boostClosedLoopBlendBias[0], "boostClosedLoopBlendBias 1", "%", 1},
310 {engine->outputChannels.boostClosedLoopBlendBias[1], "boostClosedLoopBlendBias 2", "%", 1},
311 {engine->outputChannels.boostClosedLoopBlendOutput[0], "boostClosedLoopBlendOutput 1", "%", 1},
312 {engine->outputChannels.boostClosedLoopBlendOutput[1], "boostClosedLoopBlendOutput 2", "%", 1},
313 {engine->outputChannels.boostClosedLoopBlendYAxis[0], "boostClosedLoopBlendYAxis 1", "", 1},
314 {engine->outputChannels.boostClosedLoopBlendYAxis[1], "boostClosedLoopBlendYAxis 2", "", 1},
315 {engine->outputChannels.targetAfrBlendParameter[0], "targetAfrBlendParameter 1", "", 1},
316 {engine->outputChannels.targetAfrBlendParameter[1], "targetAfrBlendParameter 2", "", 1},
317 {engine->outputChannels.targetAfrBlendBias[0], "targetAfrBlendBias 1", "%", 1},
318 {engine->outputChannels.targetAfrBlendBias[1], "targetAfrBlendBias 2", "%", 1},
319 {engine->outputChannels.targetAfrBlendOutput[0], "targetAfrBlendOutput 1", "%", 1},
320 {engine->outputChannels.targetAfrBlendOutput[1], "targetAfrBlendOutput 2", "%", 1},
321 {engine->outputChannels.targetAfrBlendYAxis[0], "targetAfrBlendYAxis 1", "", 1},
322 {engine->outputChannels.targetAfrBlendYAxis[1], "targetAfrBlendYAxis 2", "", 1},
323 {engine->outputChannels, 688, 0, "coilState1", ""},
324 {engine->outputChannels, 688, 1, "coilState2", ""},
325 {engine->outputChannels, 688, 2, "coilState3", ""},
326 {engine->outputChannels, 688, 3, "coilState4", ""},
327 {engine->outputChannels, 688, 4, "coilState5", ""},
328 {engine->outputChannels, 688, 5, "coilState6", ""},
329 {engine->outputChannels, 688, 6, "coilState7", ""},
330 {engine->outputChannels, 688, 7, "coilState8", ""},
331 {engine->outputChannels, 688, 8, "coilState9", ""},
332 {engine->outputChannels, 688, 9, "coilState10", ""},
333 {engine->outputChannels, 688, 10, "coilState11", ""},
334 {engine->outputChannels, 688, 11, "coilState12", ""},
335 {engine->outputChannels, 688, 12, "injectorState1", ""},
336 {engine->outputChannels, 688, 13, "injectorState2", ""},
337 {engine->outputChannels, 688, 14, "injectorState3", ""},
338 {engine->outputChannels, 688, 15, "injectorState4", ""},
339 {engine->outputChannels, 688, 16, "injectorState5", ""},
340 {engine->outputChannels, 688, 17, "injectorState6", ""},
341 {engine->outputChannels, 688, 18, "injectorState7", ""},
342 {engine->outputChannels, 688, 19, "injectorState8", ""},
343 {engine->outputChannels, 688, 20, "injectorState9", ""},
344 {engine->outputChannels, 688, 21, "injectorState10", ""},
345 {engine->outputChannels, 688, 22, "injectorState11", ""},
346 {engine->outputChannels, 688, 23, "injectorState12", ""},
347 {engine->outputChannels, 688, 24, "triggerChannel1", ""},
348 {engine->outputChannels, 688, 25, "triggerChannel2", ""},
349 {engine->outputChannels, 688, 26, "bank 1 intake cam input", ""},
350 {engine->outputChannels, 688, 27, "bank 1 exhaust cam input", ""},
351 {engine->outputChannels, 688, 28, "bank 2 intake cam input", ""},
352 {engine->outputChannels, 688, 29, "bank 2 exhaust cam input", ""},
353 {engine->outputChannels, 688, 30, "AE: Map Prediction Active", ""},
354 {engine->outputChannels.outputRequestPeriod, "outputRequestPeriod", "", 0},
355 {engine->outputChannels.mapFast, "mapFast", "", 0},
356 {engine->outputChannels.luaGauges[0], "Lua: Gauge 1", "value", 3},
357 {engine->outputChannels.luaGauges[1], "Lua: Gauge 2", "value", 3},
358 {engine->outputChannels.luaGauges[2], "Lua: Gauge 3", "value", 3},
359 {engine->outputChannels.luaGauges[3], "Lua: Gauge 4", "value", 3},
360 {engine->outputChannels.luaGauges[4], "Lua: Gauge 5", "value", 3},
361 {engine->outputChannels.luaGauges[5], "Lua: Gauge 6", "value", 3},
362 {engine->outputChannels.luaGauges[6], "Lua: Gauge 7", "value", 3},
363 {engine->outputChannels.luaGauges[7], "Lua: Gauge 8", "value", 3},
364 {engine->outputChannels.rawMaf2, "rawMaf2", "V", 3},
365 {engine->outputChannels.mafMeasured2, "MAF #2", "kg/h", 1},
366 {engine->outputChannels.schedulingUsedCount, "schedulingUsedCount", "", 0},
367 {engine->outputChannels.vehicleSpeedKph, "Vehicle Speed", "kph", 2},
368 {engine->outputChannels.Gego, "Gego", "%", 2},
369 {engine->outputChannels.testBenchIter, "testBenchIter", "count", 0},
370 {engine->outputChannels.oilTemp, "oilTemp", "deg C", 1},
371 {engine->outputChannels.fuelTemp, "fuelTemp", "deg C", 1},
372 {engine->outputChannels.ambientTemp, "ambientTemp", "deg C", 1},
373 {engine->outputChannels.compressorDischargeTemp, "compressorDischargeTemp", "deg C", 1},
374 {engine->outputChannels.compressorDischargePressure, "compressorDischargePressure", "kPa", 1},
375 {engine->outputChannels.throttleInletPressure, "throttleInletPressure", "kPa", 1},
376 {engine->outputChannels.ignitionOnTime, "ignitionOnTime", "sec", 1},
377 {engine->outputChannels.engineRunTime, "engineRunTime", "sec", 1},
378 {engine->outputChannels.distanceTraveled, "distanceTraveled", "km", 1},
379 {engine->outputChannels.afrGasolineScale, "Air/Fuel Ratio (Gas Scale)", "AFR", 2},
380 {engine->outputChannels.afr2GasolineScale, "Air/Fuel Ratio 2 (Gas Scale)", "AFR", 2},
381 {engine->outputChannels.wheelSlipRatio, "wheelSlipRatio", "", 0},
382 {engine->outputChannels.ignitorDiagnostic[0], "ignitorDiagnostic 1", "", 0},
383 {engine->outputChannels.ignitorDiagnostic[1], "ignitorDiagnostic 2", "", 0},
384 {engine->outputChannels.ignitorDiagnostic[2], "ignitorDiagnostic 3", "", 0},
385 {engine->outputChannels.ignitorDiagnostic[3], "ignitorDiagnostic 4", "", 0},
386 {engine->outputChannels.ignitorDiagnostic[4], "ignitorDiagnostic 5", "", 0},
387 {engine->outputChannels.ignitorDiagnostic[5], "ignitorDiagnostic 6", "", 0},
388 {engine->outputChannels.ignitorDiagnostic[6], "ignitorDiagnostic 7", "", 0},
389 {engine->outputChannels.ignitorDiagnostic[7], "ignitorDiagnostic 8", "", 0},
390 {engine->outputChannels.ignitorDiagnostic[8], "ignitorDiagnostic 9", "", 0},
391 {engine->outputChannels.ignitorDiagnostic[9], "ignitorDiagnostic 10", "", 0},
392 {engine->outputChannels.ignitorDiagnostic[10], "ignitorDiagnostic 11", "", 0},
393 {engine->outputChannels.ignitorDiagnostic[11], "ignitorDiagnostic 12", "", 0},
394 {engine->outputChannels.injectorDiagnostic[0], "injectorDiagnostic 1", "", 0},
395 {engine->outputChannels.injectorDiagnostic[1], "injectorDiagnostic 2", "", 0},
396 {engine->outputChannels.injectorDiagnostic[2], "injectorDiagnostic 3", "", 0},
397 {engine->outputChannels.injectorDiagnostic[3], "injectorDiagnostic 4", "", 0},
398 {engine->outputChannels.injectorDiagnostic[4], "injectorDiagnostic 5", "", 0},
399 {engine->outputChannels.injectorDiagnostic[5], "injectorDiagnostic 6", "", 0},
400 {engine->outputChannels.injectorDiagnostic[6], "injectorDiagnostic 7", "", 0},
401 {engine->outputChannels.injectorDiagnostic[7], "injectorDiagnostic 8", "", 0},
402 {engine->outputChannels.injectorDiagnostic[8], "injectorDiagnostic 9", "", 0},
403 {engine->outputChannels.injectorDiagnostic[9], "injectorDiagnostic 10", "", 0},
404 {engine->outputChannels.injectorDiagnostic[10], "injectorDiagnostic 11", "", 0},
405 {engine->outputChannels.injectorDiagnostic[11], "injectorDiagnostic 12", "", 0},
406 {engine->outputChannels.actualLastInjectionStage2, "Fuel: Last inj pulse width stg 2", "ms", 3},
407 {engine->outputChannels.actualLastInjectionRatioStage2, "Fuel: Last inj pulse growth stg 2", "", 3},
408 {engine->outputChannels.injectorDutyCycleStage2, "Fuel: injector duty cycle stage 2", "%", 0},
409 {engine->outputChannels.rawFlexFreq, "rawFlexFreq", "", 0},
410 {engine->outputChannels.canReWidebandCmdStatus, "canReWidebandCmdStatus", "", 0},
411 {engine->outputChannels.deviceUid, "deviceUid", "", 0},
412 {engine->outputChannels.mc33810spiErrorCounter, "mc33810spiErrorCounter", "", 0},
413 {engine->outputChannels.sadDwellRatioCounter, "sadDwellRatioCounter", "", 0},
414 {engine->outputChannels.injectionPrimingCounter, "injectionPrimingCounter", "", 0},
415 {engine->outputChannels.tempLogging2, "tempLogging2", "", 0},
416 {engine->outputChannels.acPressure, "A/C pressure", "kPa", 0},
417 {engine->outputChannels.rawAuxAnalog1, "rawAuxAnalog1", "V", 3},
418 {engine->outputChannels.rawAuxAnalog2, "rawAuxAnalog2", "V", 3},
419 {engine->outputChannels.rawAuxAnalog3, "rawAuxAnalog3", "V", 3},
420 {engine->outputChannels.rawAuxAnalog4, "rawAuxAnalog4", "V", 3},
421 {engine->outputChannels.fastAdcErrorCount, "ECU: Fast ADC errors", "", 0},
422 {engine->outputChannels.slowAdcErrorCount, "ECU: Slow ADC errors", "", 0},
423 {engine->outputChannels.rawAuxTemp1, "rawAuxTemp1", "V", 3},
424 {engine->outputChannels.rawAuxTemp2, "rawAuxTemp2", "V", 3},
425 {engine->outputChannels.rawAmbientTemp, "rawAmbientTemp", "V", 3},
426 {engine->outputChannels.rtcUnixEpochTime, "rtcUnixEpochTime", "", 0},
427 {engine->outputChannels.sparkCutReasonBlinker, "sparkCutReasonBlinker", "", 0},
428 {engine->outputChannels.fuelCutReasonBlinker, "fuelCutReasonBlinker", "", 0},
429 {engine->outputChannels.hp, "hp", "", 0},
430 {engine->outputChannels.torque, "torque", "", 0},
431 {engine->outputChannels.throttlePressureRatio, "throttlePressureRatio", "", 0},
432 {engine->outputChannels.throttleEffectiveAreaOpening, "throttleEffectiveAreaOpening", "", 0},
433 {engine->outputChannels.mcuSerial, "mcuSerial", "", 0},
434 {engine->outputChannels.sd_error, "sd_error", "", 0},
435 {engine->outputChannels.fastAdcOverrunCount, "ECU: Fast ADC overruns", "", 0},
436 {engine->outputChannels.slowAdcOverrunCount, "ECU: Slow ADC overruns", "", 0},
437 {engine->outputChannels.fastAdcLastError, "ECU: Fast ADC error type", "", 0},
438 {engine->outputChannels.fastAdcPeriod, "ECU: Fast ADC period", "ticks", 0},
439 {engine->outputChannels.fastAdcConversionCount, "ECU: Fast ADC conversions", "N", 0},
440 {engine->outputChannels.canReWidebandVersion, "canReWidebandVersion", "", 0},
441 {engine->outputChannels.canReWidebandFwDay, "canReWidebandFwDay", "", 0},
442 {engine->outputChannels.canReWidebandFwMon, "canReWidebandFwMon", "", 0},
443 {engine->outputChannels.canReWidebandFwYear, "canReWidebandFwYear", "", 0},
444 {engine->outputChannels.transitionEventCode, "transitionEventCode", "", 0},
445 {engine->outputChannels.transitionEventsCounter, "transitionEventsCounter", "", 0},
446 {engine->outputChannels.mapPerCylinder[0], "mapPerCylinder 1", "kPa", 0},
447 {engine->outputChannels.mapPerCylinder[1], "mapPerCylinder 2", "kPa", 0},
448 {engine->outputChannels.mapPerCylinder[2], "mapPerCylinder 3", "kPa", 0},
449 {engine->outputChannels.mapPerCylinder[3], "mapPerCylinder 4", "kPa", 0},
450 {engine->outputChannels.mapPerCylinder[4], "mapPerCylinder 5", "kPa", 0},
451 {engine->outputChannels.mapPerCylinder[5], "mapPerCylinder 6", "kPa", 0},
452 {engine->outputChannels.mapPerCylinder[6], "mapPerCylinder 7", "kPa", 0},
453 {engine->outputChannels.mapPerCylinder[7], "mapPerCylinder 8", "kPa", 0},
454 {engine->outputChannels.mapPerCylinder[8], "mapPerCylinder 9", "kPa", 0},
455 {engine->outputChannels.mapPerCylinder[9], "mapPerCylinder 10", "kPa", 0},
456 {engine->outputChannels.mapPerCylinder[10], "mapPerCylinder 11", "kPa", 0},
457 {engine->outputChannels.mapPerCylinder[11], "mapPerCylinder 12", "kPa", 0},
458 {engine->ignitionState.baseDwell, "Ignition: base dwell", "ms", 1, "Timing"},
459 {engine->ignitionState.sparkDwell, "Ignition: coil charge time", "ms", 1, "Timing"},
460 {engine->ignitionState.dwellDurationAngle, "Ignition: dwell duration", "deg", 1, "Timing"},
461 {engine->ignitionState.cltTimingCorrection, "Ign: CLT correction", "deg", 2, "Timing"},
462 {engine->ignitionState.timingIatCorrection, "Ign: IAT correction", "deg", 2, "Timing"},
463 {engine->ignitionState.timingPidCorrection, "Idle: Timing adjustment", "deg", 2, "Timing"},
464 {engine->ignitionState.dfcoTimingRetard, "DFCO: Timing retard", "deg", 2},
465 {engine->ignitionState.baseIgnitionAdvance, "Timing: base ignition", "deg", 1},
466 {engine->ignitionState.correctedIgnitionAdvance, "Timing: ignition", "deg", 1},
467 {engine->ignitionState.tractionAdvanceDrop, "Traction: timing correction", "deg", 1},
468 {engine->ignitionState.dwellVoltageCorrection, "Ign: Dwell voltage correction", "", 0},
469 {engine->ignitionState.luaTimingAdd, "Ign: Lua timing add", "deg", 2, "Timing"},
470 {engine->ignitionState.luaTimingMult, "Ign: Lua timing mult", "deg", 2, "Timing"},
471 {engine->ignitionState, 40, 0, "Ign: Lua Spark Skip", ""},
472 {engine->ignitionState.trailingSparkAngle, "Ign: Trailing spark deg", "deg", 2, "Timing"},
473 {engine->ignitionState.rpmForIgnitionTableDot, "rpmForIgnitionTableDot", "", 0},
474 {engine->ignitionState.rpmForIgnitionIdleTableDot, "rpmForIgnitionIdleTableDot", "", 0},
475 {engine->ignitionState.loadForIgnitionTableDot, "loadForIgnitionTableDot", "", 0},
476 {engine->module<KnockController>()->m_knockLevel, "Knock: Current level", "Volts", 2},
477 {engine->module<KnockController>()->m_knockCyl[0], "Knock: Cyl 1", "dBv", 0},
478 {engine->module<KnockController>()->m_knockCyl[1], "Knock: Cyl 2", "dBv", 0},
479 {engine->module<KnockController>()->m_knockCyl[2], "Knock: Cyl 3", "dBv", 0},
480 {engine->module<KnockController>()->m_knockCyl[3], "Knock: Cyl 4", "dBv", 0},
481 {engine->module<KnockController>()->m_knockCyl[4], "Knock: Cyl 5", "dBv", 0},
482 {engine->module<KnockController>()->m_knockCyl[5], "Knock: Cyl 6", "dBv", 0},
483 {engine->module<KnockController>()->m_knockCyl[6], "Knock: Cyl 7", "dBv", 0},
484 {engine->module<KnockController>()->m_knockCyl[7], "Knock: Cyl 8", "dBv", 0},
485 {engine->module<KnockController>()->m_knockCyl[8], "Knock: Cyl 9", "dBv", 0},
486 {engine->module<KnockController>()->m_knockCyl[9], "Knock: Cyl 10", "dBv", 0},
487 {engine->module<KnockController>()->m_knockCyl[10], "Knock: Cyl 11", "dBv", 0},
488 {engine->module<KnockController>()->m_knockCyl[11], "Knock: Cyl 12", "dBv", 0},
489 {engine->module<KnockController>()->m_knockRetard, "Knock: Retard", "deg", 1},
490 {engine->module<KnockController>()->m_knockThreshold, "Knock: Threshold", "", 0},
491 {engine->module<KnockController>()->m_knockCount, "Knock: Count", "", 0},
492 {engine->module<KnockController>()->m_maximumRetard, "Knock: Max retard", "", 0},
493 {engine->module<KnockController>()->m_knockSpectrum[0], "Knock: SpectrumData 1", "compressed data", 0},
494 {engine->module<KnockController>()->m_knockSpectrum[1], "Knock: SpectrumData 2", "compressed data", 0},
495 {engine->module<KnockController>()->m_knockSpectrum[2], "Knock: SpectrumData 3", "compressed data", 0},
496 {engine->module<KnockController>()->m_knockSpectrum[3], "Knock: SpectrumData 4", "compressed data", 0},
497 {engine->module<KnockController>()->m_knockSpectrum[4], "Knock: SpectrumData 5", "compressed data", 0},
498 {engine->module<KnockController>()->m_knockSpectrum[5], "Knock: SpectrumData 6", "compressed data", 0},
499 {engine->module<KnockController>()->m_knockSpectrum[6], "Knock: SpectrumData 7", "compressed data", 0},
500 {engine->module<KnockController>()->m_knockSpectrum[7], "Knock: SpectrumData 8", "compressed data", 0},
501 {engine->module<KnockController>()->m_knockSpectrum[8], "Knock: SpectrumData 9", "compressed data", 0},
502 {engine->module<KnockController>()->m_knockSpectrum[9], "Knock: SpectrumData 10", "compressed data", 0},
503 {engine->module<KnockController>()->m_knockSpectrum[10], "Knock: SpectrumData 11", "compressed data", 0},
504 {engine->module<KnockController>()->m_knockSpectrum[11], "Knock: SpectrumData 12", "compressed data", 0},
505 {engine->module<KnockController>()->m_knockSpectrum[12], "Knock: SpectrumData 13", "compressed data", 0},
506 {engine->module<KnockController>()->m_knockSpectrum[13], "Knock: SpectrumData 14", "compressed data", 0},
507 {engine->module<KnockController>()->m_knockSpectrum[14], "Knock: SpectrumData 15", "compressed data", 0},
508 {engine->module<KnockController>()->m_knockSpectrum[15], "Knock: SpectrumData 16", "compressed data", 0},
509 {engine->module<KnockController>()->m_knockSpectrumChannelCyl, "Knock: ChannelAndCylNumber", "compressed N + N", 0},
510 {engine->module<KnockController>()->m_knockFrequencyStart, "Knock: Start Freq", "Hz", 0},
511 {engine->module<KnockController>()->m_knockFrequencyStep, "Knock: Step Freq", "Hz", 0},
512 {engine->module<KnockController>()->m_knockFuelTrimMultiplier, "Knock: Fuel trim when knock", "multiplier", 0},
513 {*engine->module<PrimeController>(), 0, 0, "IsFuelPriming", ""},
514 {*engine->module<FanControl1>(), 0, 0, "fan1cranking", ""},
515 {*engine->module<FanControl1>(), 0, 1, "fan1notRunning", ""},
516 {*engine->module<FanControl1>(), 0, 2, "fan1Engine stopped", ""},
517 {*engine->module<FanControl1>(), 0, 3, "fan1Broken CLT", ""},
518 {*engine->module<FanControl1>(), 0, 4, "fan1Enable for AC", ""},
519 {*engine->module<FanControl1>(), 0, 5, "fan1Above hot threshold", ""},
520 {*engine->module<FanControl1>(), 0, 6, "fan1Below cold threshold", ""},
521 {*engine->module<FanControl1>(), 0, 7, "fan1disabledBySpeed", ""},
522 {*engine->module<FanControl1>(), 0, 8, "fan1On", ""},
523 {engine->module<FanControl1>()->radiatorFanStatus, "fan1radiatorFanStatus", "", 0},
524 {*engine->module<FanControl2>(), 0, 0, "fan2cranking", ""},
525 {*engine->module<FanControl2>(), 0, 1, "fan2notRunning", ""},
526 {*engine->module<FanControl2>(), 0, 2, "fan2Engine stopped", ""},
527 {*engine->module<FanControl2>(), 0, 3, "fan2Broken CLT", ""},
528 {*engine->module<FanControl2>(), 0, 4, "fan2Enable for AC", ""},
529 {*engine->module<FanControl2>(), 0, 5, "fan2Above hot threshold", ""},
530 {*engine->module<FanControl2>(), 0, 6, "fan2Below cold threshold", ""},
531 {*engine->module<FanControl2>(), 0, 7, "fan2disabledBySpeed", ""},
532 {*engine->module<FanControl2>(), 0, 8, "fan2On", ""},
533 {engine->module<FanControl2>()->radiatorFanStatus, "fan2radiatorFanStatus", "", 0},
534 {engine->engineState.injectionMass[0], "injectionMass 1", "", 0},
535 {engine->engineState.injectionMass[1], "injectionMass 2", "", 0},
536 {engine->engineState.injectionMass[2], "injectionMass 3", "", 0},
537 {engine->engineState.injectionMass[3], "injectionMass 4", "", 0},
538 {engine->engineState.injectionMass[4], "injectionMass 5", "", 0},
539 {engine->engineState.injectionMass[5], "injectionMass 6", "", 0},
540 {engine->engineState.injectionMass[6], "injectionMass 7", "", 0},
541 {engine->engineState.injectionMass[7], "injectionMass 8", "", 0},
542 {engine->engineState.injectionMass[8], "injectionMass 9", "", 0},
543 {engine->engineState.injectionMass[9], "injectionMass 10", "", 0},
544 {engine->engineState.injectionMass[10], "injectionMass 11", "", 0},
545 {engine->engineState.injectionMass[11], "injectionMass 12", "", 0},
546 {engine->engineState.lua.fuelAdd, "Lua: Fuel add", "g", 3},
547 {engine->engineState.lua.fuelMult, "Lua: Fuel mult", "", 0},
548 {engine->engineState, 56, 0, "lua.clutchUpState", ""},
549 {engine->engineState, 56, 1, "lua.brakePedalState", ""},
550 {engine->engineState, 56, 2, "lua.acRequestState", ""},
551 {engine->engineState, 56, 3, "lua.luaDisableEtb", ""},
552 {engine->engineState, 56, 4, "lua.luaIgnCut", ""},
553 {engine->engineState, 56, 5, "lua.luaFuelCut", ""},
554 {engine->engineState, 56, 6, "lua.clutchDownState", ""},
555 {engine->engineState, 56, 7, "lua.disableDecelerationFuelCutOff", ""},
556 {engine->engineState, 56, 8, "lua.torqueReductionState", ""},
557 {engine->engineState.sd.tCharge, "Air: Charge temperature estimate", "deg C", 1},
558 {engine->engineState.sd.tChargeK, "Air: Charge temperature estimate K", "", 0},
559 {engine->engineState.crankingFuel.coolantTemperatureCoefficient, "Fuel: cranking CLT mult", "", 0},
560 {engine->engineState.crankingFuel.tpsCoefficient, "Fuel: cranking TPS mult", "", 0},
561 {engine->engineState.crankingFuel.baseFuel, "Fuel: Cranking cycle base mass", "mg", 2},
562 {engine->engineState.crankingFuel.fuel, "Fuel: Cranking cycle mass", "mg", 2},
563 {engine->engineState.baroCorrection, "Fuel: Barometric pressure mult", "", 0},
564 {engine->engineState.hellenBoardId, "Detected Board ID", "id", 0},
565 {engine->engineState.clutchUpState, "Clutch: up", "", 0},
566 {engine->engineState.brakePedalState, "Brake switch", "", 0},
567 {engine->engineState.startStopState, "startStopState", "", 0},
568 {engine->engineState.smartChipState, "smartChipState", "", 0},
569 {engine->engineState.smartChipRestartCounter, "smartChipRestartCounter", "", 0},
570 {engine->engineState.smartChipAliveCounter, "smartChipAliveCounter", "", 0},
571 {engine->engineState, 92, 0, "startStopPhysicalState", ""},
572 {engine->engineState, 92, 1, "Harley ACR Active", ""},
573 {engine->engineState, 92, 2, "acrEngineMovedRecently", ""},
574 {engine->engineState, 92, 3, "heaterControlEnabled", ""},
575 {engine->engineState, 92, 4, "luaDigitalState0", ""},
576 {engine->engineState, 92, 5, "luaDigitalState1", ""},
577 {engine->engineState, 92, 6, "luaDigitalState2", ""},
578 {engine->engineState, 92, 7, "luaDigitalState3", ""},
579 {engine->engineState, 92, 8, "Clutch: down", ""},
580 {engine->engineState.startStopStateToggleCounter, "startStopStateToggleCounter", "", 0},
581 {engine->engineState.currentVe, "currentVe", "", 0},
582 {engine->engineState.luaSoftSparkSkip, "luaSoftSparkSkip", "", 0},
583 {engine->engineState.luaHardSparkSkip, "luaHardSparkSkip", "", 0},
584 {engine->engineState.tractionControlSparkSkip, "tractionControlSparkSkip", "", 0},
585 {engine->engineState.fuelInjectionCounter, "Fuel: Injection counter", "", 0},
586 {engine->engineState.globalSparkCounter, "Ign: Spark counter", "", 0},
587 {engine->engineState.fuelingLoad, "Fuel: Load", "", 0},
588 {engine->engineState.ignitionLoad, "Ignition: load", "", 0},
589 {engine->engineState.veTableYAxis, "veTableYAxis", "%", 0},
590 {engine->engineState.overDwellCounter, "overDwellCounter", "", 0},
591 {engine->engineState.overDwellNotScheduledCounter, "overDwellNotScheduledCounter", "", 0},
592 {engine->engineState.sparkOutOfOrderCounter, "sparkOutOfOrderCounter", "", 0},
593 {engine->engineState.stftCorrection[0], "STFT: Bank 1", "%", 1},
594 {engine->engineState.stftCorrection[1], "STFT: Bank 2", "%", 1},
595 {engine->dc_motors.dcOutput0, "DC: output0", "%", 2, "ETB more"},
596 {engine->dc_motors.isEnabled0_int, "DC: en0", "%", 2, "ETB more"},
597 {engine->dc_motors, 8, 0, "isEnabled0", ""},
598#if EFI_BOOST_CONTROL
599 {*engine->module<BoostController>(), 0, 0, "isTpsInvalid", ""},
600 {*engine->module<BoostController>(), 0, 1, "m_shouldResetPid", ""},
601 {*engine->module<BoostController>(), 0, 2, "isBelowClosedLoopThreshold", ""},
602 {*engine->module<BoostController>(), 0, 3, "isNotClosedLoop", ""},
603 {*engine->module<BoostController>(), 0, 4, "isZeroRpm", ""},
604 {*engine->module<BoostController>(), 0, 5, "hasInitBoost", ""},
605 {*engine->module<BoostController>(), 0, 6, "rpmTooLow", ""},
606 {*engine->module<BoostController>(), 0, 7, "tpsTooLow", ""},
607 {*engine->module<BoostController>(), 0, 8, "mapTooLow", ""},
608 {*engine->module<BoostController>(), 0, 9, "isPlantValid", ""},
609 {*engine->module<BoostController>(), 0, 10, "isBoostControlled", ""},
610 {engine->module<BoostController>()->luaTargetAdd, "Boost: Lua target add", "percent", 1, "Boost Control"},
611 {engine->module<BoostController>()->luaTargetMult, "Boost: Lua target mult", "", 1, "Boost Control"},
612 {engine->module<BoostController>()->boostControlTarget, "Boost: Target", "kPa", 1, "Boost Control"},
613 {engine->module<BoostController>()->openLoopPart, "Boost: Open loop", "percent", 1, "Boost Control"},
614 {engine->module<BoostController>()->luaOpenLoopAdd, "Boost: Lua open loop add", "percent", 1, "Boost Control"},
615 {engine->module<BoostController>()->boostControllerClosedLoopPart, "Boost: Closed loop", "%", 1, "Boost Control"},
616 {engine->module<BoostController>()->boostOutput, "Boost: Output", "percent", 2, "Boost Control"},
617#endif
618#if EFI_ENGINE_CONTROL
619 {engine->fuelComputer.totalFuelCorrection, "Fuel: Total correction", "mult", 2, "Fuel: math"},
620 {engine->fuelComputer.running.postCrankingFuelCorrection, "Fuel: Post cranking mult", "", 0},
621 {engine->fuelComputer.running.intakeTemperatureCoefficient, "Fuel: IAT correction", "", 0},
622 {engine->fuelComputer.running.coolantTemperatureCoefficient, "Fuel: CLT correction", "", 0},
623 {engine->fuelComputer.running.timeSinceCrankingInSecs, "running.timeSinceCrankingInSecs", "secs", 0, "Fuel: math"},
624 {engine->fuelComputer.running.baseFuel, "Fuel: base cycle mass", "mg", 3},
625 {engine->fuelComputer.running.fuel, "Fuel: running", "mg", 3},
626 {engine->fuelComputer.afrTableYAxis, "afrTableYAxis", "%", 0},
627 {engine->fuelComputer.targetLambda, "Fuel: target lambda", "", 2, "Fuel: math"},
628 {engine->fuelComputer.targetAFR, "Fuel: target AFR", "ratio", 2, "Fuel: math"},
629 {engine->fuelComputer.stoichiometricRatio, "Fuel: Stoich ratio", "ratio", 2},
630 {engine->fuelComputer.sdTcharge_coff, "sdTcharge_coff", "", 0},
631 {engine->fuelComputer.sdAirMassInOneCylinder, "Air: Cylinder airmass", "g", 3},
632 {engine->fuelComputer.normalizedCylinderFilling, "Air: Normalized cyl filling", "%", 1},
633 {engine->fuelComputer.brokenInjector, "brokenInjector", "", 0},
634 {engine->fuelComputer.idealEngineTorque, "idealEngineTorque", "", 0},
635 {engine->fuelComputer, 48, 0, "injectorHwIssue", ""},
636#endif
637#if EFI_LAUNCH_CONTROL
638 {engine->launchController.retardThresholdRpm, "Launch: Retard threshold RPM", "", 0},
639 {engine->launchController, 4, 0, "launchActivatePinState", ""},
640 {engine->launchController, 4, 1, "isPreLaunchCondition", ""},
641 {engine->launchController, 4, 2, "Launch: isLaunchCondition", ""},
642 {engine->launchController, 4, 3, "Launch: isSwitchActivated", ""},
643 {engine->launchController, 4, 4, "Launch: isClutchActivated", ""},
644 {engine->launchController, 4, 5, "isBrakePedalActivated", ""},
645 {engine->launchController, 4, 6, "Launch: isValidInputPin", ""},
646 {engine->launchController, 4, 7, "Launch: activateSwitchCondition", ""},
647 {engine->launchController, 4, 8, "rpmLaunchCondition", ""},
648 {engine->launchController, 4, 9, "rpmPreLaunchCondition", ""},
649 {engine->launchController, 4, 10, "Launch: speedCondition", ""},
650 {engine->launchController, 4, 11, "Launch: tpsCondition", ""},
651 {engine->launchController, 4, 12, "luaLaunchState", ""},
652 {engine->shiftTorqueReductionController, 0, 0, "isTorqueReductionTriggerPinValid", ""},
653 {engine->shiftTorqueReductionController, 0, 1, "torqueReductionTriggerPinState", ""},
654 {engine->shiftTorqueReductionController, 0, 2, "isTimeConditionSatisfied", ""},
655 {engine->shiftTorqueReductionController, 0, 3, "isRpmConditionSatisfied", ""},
656 {engine->shiftTorqueReductionController, 0, 4, "isAppConditionSatisfied", ""},
657 {engine->shiftTorqueReductionController, 0, 5, "isFlatShiftConditionSatisfied", ""},
658 {engine->shiftTorqueReductionController, 0, 6, "isBelowTemperatureThreshold", ""},
659#endif
660#if EFI_PROD_CODE && EFI_ELECTRONIC_THROTTLE_BODY && FULL_SD_LOGS
661 {getLiveDataConstexpr<electronic_throttle_s, 0>()->targetWithIdlePosition, "etb1ETB: target with idle", "%", 2, "ETB more"},
662 {getLiveDataConstexpr<electronic_throttle_s, 0>()->trim, "etb1ETB: trim", "", 0},
663 {getLiveDataConstexpr<electronic_throttle_s, 0>()->boardEtbAdjustment, "etb1boardEtbAdjustment", "", 0},
664 {getLiveDataConstexpr<electronic_throttle_s, 0>()->luaAdjustment, "etb1ETB: luaAdjustment", "%", 2, "ETB more"},
665 {getLiveDataConstexpr<electronic_throttle_s, 0>()->m_wastegatePosition, "etb1DC: wastegatePosition", "%", 2, "ETB more"},
666 {getLiveDataConstexpr<electronic_throttle_s, 0>()->m_lastPidDtMs, "etb1EBT: last PID dT", "mS", 3, "ETB more"},
667 {getLiveDataConstexpr<electronic_throttle_s, 0>()->etbFeedForward, "etb1etbFeedForward", "", 0},
668 {getLiveDataConstexpr<electronic_throttle_s, 0>()->integralError, "etb1Integral error", "", 3, "ETB more"},
669 {getLiveDataConstexpr<electronic_throttle_s, 0>()->etbCurrentTarget, "etb1ETB: target for current pedal", "%", 3},
670 {getLiveDataConstexpr<electronic_throttle_s, 0>()->m_adjustedTarget, "etb1Adjusted target", "%", 2},
671 {*getLiveDataConstexpr<electronic_throttle_s, 0>(), 40, 0, "etb1etbRevLimitActive", ""},
672 {*getLiveDataConstexpr<electronic_throttle_s, 0>(), 40, 1, "etb1jamDetected", ""},
673 {*getLiveDataConstexpr<electronic_throttle_s, 0>(), 40, 2, "etb1validPlantPosition", ""},
674 {getLiveDataConstexpr<electronic_throttle_s, 0>()->etbTpsErrorCounter, "etb1ETB TPS error counter", "count", 0, "ETB more"},
675 {getLiveDataConstexpr<electronic_throttle_s, 0>()->etbPpsErrorCounter, "etb1ETB pedal error counter", "count", 0, "ETB more"},
676 {getLiveDataConstexpr<electronic_throttle_s, 0>()->etbErrorCode, "etb1etbErrorCode", "", 0},
677 {getLiveDataConstexpr<electronic_throttle_s, 0>()->etbErrorCodeBlinker, "etb1etbErrorCodeBlinker", "", 0},
678 {getLiveDataConstexpr<electronic_throttle_s, 0>()->tcEtbDrop, "etb1ETB traction control", "%", 0},
679 {getLiveDataConstexpr<electronic_throttle_s, 0>()->jamTimer, "etb1ETB jam timer", "sec", 2},
680 {getLiveDataConstexpr<electronic_throttle_s, 0>()->adjustedEtbTarget, "etb1ETB with adjustments", "%", 0},
681 {getLiveDataConstexpr<electronic_throttle_s, 0>()->state, "etb1state", "", 0},
682 {getLiveDataConstexpr<electronic_throttle_s, 1>()->targetWithIdlePosition, "etb2ETB: target with idle", "%", 2, "ETB more"},
683 {getLiveDataConstexpr<electronic_throttle_s, 1>()->trim, "etb2ETB: trim", "", 0},
684 {getLiveDataConstexpr<electronic_throttle_s, 1>()->boardEtbAdjustment, "etb2boardEtbAdjustment", "", 0},
685 {getLiveDataConstexpr<electronic_throttle_s, 1>()->luaAdjustment, "etb2ETB: luaAdjustment", "%", 2, "ETB more"},
686 {getLiveDataConstexpr<electronic_throttle_s, 1>()->m_wastegatePosition, "etb2DC: wastegatePosition", "%", 2, "ETB more"},
687 {getLiveDataConstexpr<electronic_throttle_s, 1>()->m_lastPidDtMs, "etb2EBT: last PID dT", "mS", 3, "ETB more"},
688 {getLiveDataConstexpr<electronic_throttle_s, 1>()->etbFeedForward, "etb2etbFeedForward", "", 0},
689 {getLiveDataConstexpr<electronic_throttle_s, 1>()->integralError, "etb2Integral error", "", 3, "ETB more"},
690 {getLiveDataConstexpr<electronic_throttle_s, 1>()->etbCurrentTarget, "etb2ETB: target for current pedal", "%", 3},
691 {getLiveDataConstexpr<electronic_throttle_s, 1>()->m_adjustedTarget, "etb2Adjusted target", "%", 2},
692 {*getLiveDataConstexpr<electronic_throttle_s, 1>(), 40, 0, "etb2etbRevLimitActive", ""},
693 {*getLiveDataConstexpr<electronic_throttle_s, 1>(), 40, 1, "etb2jamDetected", ""},
694 {*getLiveDataConstexpr<electronic_throttle_s, 1>(), 40, 2, "etb2validPlantPosition", ""},
695 {getLiveDataConstexpr<electronic_throttle_s, 1>()->etbTpsErrorCounter, "etb2ETB TPS error counter", "count", 0, "ETB more"},
696 {getLiveDataConstexpr<electronic_throttle_s, 1>()->etbPpsErrorCounter, "etb2ETB pedal error counter", "count", 0, "ETB more"},
697 {getLiveDataConstexpr<electronic_throttle_s, 1>()->etbErrorCode, "etb2etbErrorCode", "", 0},
698 {getLiveDataConstexpr<electronic_throttle_s, 1>()->etbErrorCodeBlinker, "etb2etbErrorCodeBlinker", "", 0},
699 {getLiveDataConstexpr<electronic_throttle_s, 1>()->tcEtbDrop, "etb2ETB traction control", "%", 0},
700 {getLiveDataConstexpr<electronic_throttle_s, 1>()->jamTimer, "etb2ETB jam timer", "sec", 2},
701 {getLiveDataConstexpr<electronic_throttle_s, 1>()->adjustedEtbTarget, "etb2ETB with adjustments", "%", 0},
702 {getLiveDataConstexpr<electronic_throttle_s, 1>()->state, "etb2state", "", 0},
703#endif
704#if EFI_PROD_CODE && EFI_IDLE_CONTROL
705 {engine->module<InjectorModelPrimary>()->m_deadtime, "Fuel: injector lag", "ms", 3},
706 {engine->module<InjectorModelPrimary>()->pressureDelta, "Fuel: Injector pressure delta", "kPa", 1},
707 {engine->module<InjectorModelPrimary>()->pressureRatio, "Fuel: Injector pressure ratio", "", 3},
708 {engine->module<InjectorModelPrimary>()->pressureCorrectionReference, "Fuel: corr reference pressure", "kPa", 1},
709 {engine->module<IdleController>().unmock().baseIdlePosition, "idle: base value", "", 0},
710 {engine->module<IdleController>().unmock().iacByTpsTaper, "idle: iacByTpsTaper portion", "", 0},
711 {engine->module<IdleController>().unmock(), 12, 0, "idle: mightResetPid", ""},
712 {engine->module<IdleController>().unmock(), 12, 1, "Idle: shouldResetPid", ""},
713 {engine->module<IdleController>().unmock(), 12, 2, "Idle: wasResetPid", ""},
714 {engine->module<IdleController>().unmock(), 12, 3, "Idle: mustResetPid", ""},
715 {engine->module<IdleController>().unmock(), 12, 4, "Idle: cranking", ""},
716 {engine->module<IdleController>().unmock(), 12, 5, "isIacTableForCoasting", ""},
717 {engine->module<IdleController>().unmock(), 12, 6, "Idle: reset", ""},
718 {engine->module<IdleController>().unmock(), 12, 7, "Idle: dead zone", ""},
719 {engine->module<IdleController>().unmock(), 12, 8, "isBlipping", ""},
720 {engine->module<IdleController>().unmock(), 12, 9, "badTps", ""},
721 {engine->module<IdleController>().unmock(), 12, 10, "looksLikeRunning", ""},
722 {engine->module<IdleController>().unmock(), 12, 11, "looksLikeCoasting", ""},
723 {engine->module<IdleController>().unmock(), 12, 12, "looksLikeCrankToIdle", ""},
724 {engine->module<IdleController>().unmock(), 12, 13, "Idle: coasting", ""},
725 {engine->module<IdleController>().unmock(), 12, 14, "Idle: Closed loop active", ""},
726 {engine->module<IdleController>().unmock(), 12, 15, "Idle: idling", ""},
727 {engine->module<IdleController>().unmock().idleTarget, "Idle: Target RPM", "", 0},
728 {engine->module<IdleController>().unmock().idleEntryRpm, "Idle: Entry threshold", "", 0},
729 {engine->module<IdleController>().unmock().idleExitRpm, "Idle: Exit threshold", "", 0},
730 {engine->module<IdleController>().unmock().targetRpmByClt, "Idle: Target RPM base", "", 0},
731 {engine->module<IdleController>().unmock().targetRpmAc, "Idle: Target A/C RPM", "", 0},
732 {engine->module<IdleController>().unmock().iacByRpmTaper, "idle: iacByRpmTaper portion", "", 0},
733 {engine->module<IdleController>().unmock().luaAdd, "idle: Lua Adder", "", 0},
734 {engine->module<IdleController>().unmock().m_lastTargetRpm, "m_lastTargetRpm", "", 0},
735 {engine->module<IdleController>().unmock().idleClosedLoop, "Closed loop", "", 0},
736 {engine->module<IdleController>().unmock().currentIdlePosition, "Idle: Position", "%", 1},
737 {engine->module<IdleController>().unmock().idleTargetAirmass, "Target airmass", "mg", 0},
738 {engine->module<IdleController>().unmock().idleTargetFlow, "Target airflow", "kg/h", 2},
739#endif
740#if EFI_SHAFT_POSITION_INPUT
741 {engine->triggerCentral.hwEventCounters[0], "Hardware events since boot 1", "", 0},
742 {engine->triggerCentral.hwEventCounters[1], "Hardware events since boot 2", "", 0},
743 {engine->triggerCentral.hwEventCounters[2], "Hardware events since boot 3", "", 0},
744 {engine->triggerCentral.hwEventCounters[3], "Hardware events since boot 4", "", 0},
745 {engine->triggerCentral.vvtEventRiseCounter[0], "vvtEventRiseCounter 1", "", 0},
746 {engine->triggerCentral.vvtEventRiseCounter[1], "vvtEventRiseCounter 2", "", 0},
747 {engine->triggerCentral.vvtEventRiseCounter[2], "vvtEventRiseCounter 3", "", 0},
748 {engine->triggerCentral.vvtEventRiseCounter[3], "vvtEventRiseCounter 4", "", 0},
749 {engine->triggerCentral.vvtEventFallCounter[0], "vvtEventFallCounter 1", "", 0},
750 {engine->triggerCentral.vvtEventFallCounter[1], "vvtEventFallCounter 2", "", 0},
751 {engine->triggerCentral.vvtEventFallCounter[2], "vvtEventFallCounter 3", "", 0},
752 {engine->triggerCentral.vvtEventFallCounter[3], "vvtEventFallCounter 4", "", 0},
753 {engine->triggerCentral.vvtCamCounter, "Sync: total cams front counter", "", 0},
754 {engine->triggerCentral.mapVvt_MAP_AT_SPECIAL_POINT, "InstantMAP at readout angle", "kPa", 1},
755 {engine->triggerCentral.mapVvt_MAP_AT_DIFF, "InstantMAP delta @ readout angles", "kPa", 1},
756 {engine->triggerCentral.mapVvt_MAP_AT_CYCLE_COUNT, "mapVvt_MAP_AT_CYCLE_COUNT", "distance", 0},
757 {engine->triggerCentral.mapVvt_sync_counter, "Instant MAP sync counter", "counter", 0},
758 {engine->triggerCentral.mapVvt_min_point_counter, "mapVvt_min_point_counter", "", 0},
759 {engine->triggerCentral.temp_mapVvt_index, "temp_mapVvt_index", "", 0},
760 {engine->triggerCentral.mapVvt_CycleDelta, "mapVvt_CycleDelta", "", 0},
761 {engine->triggerCentral.currentEngineDecodedPhase, "Sync: Engine Phase", "deg", 0, "Sync"},
762 {engine->triggerCentral.triggerToothAngleError, "Sync: trigger angle error", "deg", 2},
763 {engine->triggerCentral.triggerIgnoredToothCount, "triggerIgnoredToothCount", "", 0},
764 {engine->triggerCentral.mapCamPrevToothAngle, "Sync: MAP: prev angle", "deg", 2},
765 {engine->triggerCentral, 64, 0, "isDecodingMapCam", ""},
766 {engine->triggerCentral.triggerElapsedUs, "triggerElapsedUs", "", 0},
767 {engine->lambdaMonitor, 0, 0, "lambdaCurrentlyGood", ""},
768 {engine->lambdaMonitor, 0, 1, "lambdaMonitorCut", ""},
769 {engine->lambdaMonitor.lambdaTimeSinceGood, "lambdaTimeSinceGood", "sec", 2},
770#endif
771#if EFI_SHAFT_POSITION_INPUT && FULL_SD_LOGS
772 {engine->triggerCentral.triggerState.synchronizationCounter, "trgsync: wheel sync counter", "", 0},
773 {engine->triggerCentral.triggerState.vvtToothDurations0, "trgvvtToothDurations0", "us", 3},
774 {engine->triggerCentral.triggerState.vvtCurrentPosition, "trgsync: Primary Position", "", 3},
775 {engine->triggerCentral.triggerState.vvtToothPosition[0], "trgsync: Cam Position 1", "", 3},
776 {engine->triggerCentral.triggerState.vvtToothPosition[1], "trgsync: Cam Position 2", "", 3},
777 {engine->triggerCentral.triggerState.vvtToothPosition[2], "trgsync: Cam Position 3", "", 3},
778 {engine->triggerCentral.triggerState.vvtToothPosition[3], "trgsync: Cam Position 4", "", 3},
779 {engine->triggerCentral.triggerState.triggerSyncGapRatio, "trgSync: Trigger Latest Ratio", "", 3},
780 {engine->triggerCentral.triggerState.triggerStateIndex, "trgtriggerStateIndex", "", 0},
781 {engine->triggerCentral.triggerState.triggerCountersError, "trgtriggerCountersError", "", 0},
782 {engine->triggerCentral.vvtState[0][0].synchronizationCounter, "vvt1isync: wheel sync counter", "", 0},
783 {engine->triggerCentral.vvtState[0][0].vvtToothDurations0, "vvt1ivvtToothDurations0", "us", 3},
784 {engine->triggerCentral.vvtState[0][0].vvtCurrentPosition, "vvt1isync: Primary Position", "", 3},
785 {engine->triggerCentral.vvtState[0][0].vvtToothPosition[0], "vvt1isync: Cam Position 1", "", 3},
786 {engine->triggerCentral.vvtState[0][0].vvtToothPosition[1], "vvt1isync: Cam Position 2", "", 3},
787 {engine->triggerCentral.vvtState[0][0].vvtToothPosition[2], "vvt1isync: Cam Position 3", "", 3},
788 {engine->triggerCentral.vvtState[0][0].vvtToothPosition[3], "vvt1isync: Cam Position 4", "", 3},
789 {engine->triggerCentral.vvtState[0][0].triggerSyncGapRatio, "vvt1iSync: Trigger Latest Ratio", "", 3},
790 {engine->triggerCentral.vvtState[0][0].triggerStateIndex, "vvt1itriggerStateIndex", "", 0},
791 {engine->triggerCentral.vvtState[0][0].triggerCountersError, "vvt1itriggerCountersError", "", 0},
792 {engine->triggerCentral.vvtState[0][1].synchronizationCounter, "vvt1esync: wheel sync counter", "", 0},
793 {engine->triggerCentral.vvtState[0][1].vvtToothDurations0, "vvt1evvtToothDurations0", "us", 3},
794 {engine->triggerCentral.vvtState[0][1].vvtCurrentPosition, "vvt1esync: Primary Position", "", 3},
795 {engine->triggerCentral.vvtState[0][1].vvtToothPosition[0], "vvt1esync: Cam Position 1", "", 3},
796 {engine->triggerCentral.vvtState[0][1].vvtToothPosition[1], "vvt1esync: Cam Position 2", "", 3},
797 {engine->triggerCentral.vvtState[0][1].vvtToothPosition[2], "vvt1esync: Cam Position 3", "", 3},
798 {engine->triggerCentral.vvtState[0][1].vvtToothPosition[3], "vvt1esync: Cam Position 4", "", 3},
799 {engine->triggerCentral.vvtState[0][1].triggerSyncGapRatio, "vvt1eSync: Trigger Latest Ratio", "", 3},
800 {engine->triggerCentral.vvtState[0][1].triggerStateIndex, "vvt1etriggerStateIndex", "", 0},
801 {engine->triggerCentral.vvtState[0][1].triggerCountersError, "vvt1etriggerCountersError", "", 0},
802 {engine->triggerCentral.vvtState[1][0].synchronizationCounter, "vvt2isync: wheel sync counter", "", 0},
803 {engine->triggerCentral.vvtState[1][0].vvtToothDurations0, "vvt2ivvtToothDurations0", "us", 3},
804 {engine->triggerCentral.vvtState[1][0].vvtCurrentPosition, "vvt2isync: Primary Position", "", 3},
805 {engine->triggerCentral.vvtState[1][0].vvtToothPosition[0], "vvt2isync: Cam Position 1", "", 3},
806 {engine->triggerCentral.vvtState[1][0].vvtToothPosition[1], "vvt2isync: Cam Position 2", "", 3},
807 {engine->triggerCentral.vvtState[1][0].vvtToothPosition[2], "vvt2isync: Cam Position 3", "", 3},
808 {engine->triggerCentral.vvtState[1][0].vvtToothPosition[3], "vvt2isync: Cam Position 4", "", 3},
809 {engine->triggerCentral.vvtState[1][0].triggerSyncGapRatio, "vvt2iSync: Trigger Latest Ratio", "", 3},
810 {engine->triggerCentral.vvtState[1][0].triggerStateIndex, "vvt2itriggerStateIndex", "", 0},
811 {engine->triggerCentral.vvtState[1][0].triggerCountersError, "vvt2itriggerCountersError", "", 0},
812 {engine->triggerCentral.vvtState[1][1].synchronizationCounter, "vvt2esync: wheel sync counter", "", 0},
813 {engine->triggerCentral.vvtState[1][1].vvtToothDurations0, "vvt2evvtToothDurations0", "us", 3},
814 {engine->triggerCentral.vvtState[1][1].vvtCurrentPosition, "vvt2esync: Primary Position", "", 3},
815 {engine->triggerCentral.vvtState[1][1].vvtToothPosition[0], "vvt2esync: Cam Position 1", "", 3},
816 {engine->triggerCentral.vvtState[1][1].vvtToothPosition[1], "vvt2esync: Cam Position 2", "", 3},
817 {engine->triggerCentral.vvtState[1][1].vvtToothPosition[2], "vvt2esync: Cam Position 3", "", 3},
818 {engine->triggerCentral.vvtState[1][1].vvtToothPosition[3], "vvt2esync: Cam Position 4", "", 3},
819 {engine->triggerCentral.vvtState[1][1].triggerSyncGapRatio, "vvt2eSync: Trigger Latest Ratio", "", 3},
820 {engine->triggerCentral.vvtState[1][1].triggerStateIndex, "vvt2etriggerStateIndex", "", 0},
821 {engine->triggerCentral.vvtState[1][1].triggerCountersError, "vvt2etriggerCountersError", "", 0},
822#endif
823#if EFI_VVT_PID
824 {engine->module<VvtController1>()->vvtTarget, "vvtTarget", "deg", 1},
825 {engine->module<VvtController1>()->vvtOutput, "vvtOutput", "%", 0},
826#endif
827};
static scaled_channel< uint32_t, TIME_PRECISION > packedTime
FuelComputer fuelComputer
Definition engine.h:139
TriggerCentral triggerCentral
Definition engine.h:318
dc_motors_s dc_motors
Definition engine.h:346
IgnitionState ignitionState
Definition engine.h:239
LaunchControlBase launchController
Definition engine.h:220
EngineState engineState
Definition engine.h:344
LambdaMonitor lambdaMonitor
Definition engine.h:236
TunerStudioOutputChannels outputChannels
Definition engine.h:109
constexpr auto & module()
Definition engine.h:200
ShiftTorqueReductionController shiftTorqueReductionController
Definition engine.h:221
VvtTriggerDecoder vvtState[BANKS_COUNT][CAMS_PER_BANK]
PrimaryTriggerDecoder triggerState
static EngineAccessor engine
Definition engine.h:413
m_knockLevel("Knock: Current level", SensorCategory.SENSOR_INPUTS, FieldType.INT, 996, 1.0, 0.0, 0.0, "Volts")
m_maximumRetard("Knock: Max retard", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1024, 1.0, -1.0, -1.0, "")
luaOpenLoopAdd("Boost: Lua open loop add", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1240, 1.0, -100.0, 100.0, "percent")
m_knockRetard("Knock: Retard", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1012, 1.0, 0.0, 0.0, "deg")
luaTargetAdd("Boost: Lua target add", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1224, 0.5, -100.0, 100.0, "percent")
vvtOutput("vvtOutput", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 1982, 0.5, 100.0, 1.0, "%")
vvtTarget("vvtTarget", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1980, 0.1, -90.0, 90.0, "deg")
boostOutput("Boost: Output", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1246, 0.01, -100.0, 100.0, "percent")
luaTargetMult("Boost: Lua target mult", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1228, 1.0, -100.0, 100.0, "")
m_knockCount("Knock: Count", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1020, 1.0, 0.0, 0.0, "")
boostControllerClosedLoopPart("Boost: Closed loop", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 1244, 0.5, -50.0, 50.0, "%")
m_knockThreshold("Knock: Threshold", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1016, 1.0, -1.0, -1.0, "")
openLoopPart("Boost: Open loop", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1236, 1.0, -100.0, 100.0, "percent")
m_knockFrequencyStep("Knock: Step Freq", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1096, 1.0, 0.0, 0.0, "Hz")
pressureCorrectionReference("Fuel: corr reference pressure", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1192, 1.0, 0.0, 1000.0, "kPa")
m_deadtime("Fuel: injector lag", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1180, 1.0, 0.0, 0.0, "ms")
pressureDelta("Fuel: Injector pressure delta", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1184, 1.0, -1000.0, 1000.0, "kPa")
radiatorFanStatus("radiatorFanStatus", SensorCategory.SENSOR_INPUTS, FieldType.INT8, 1264, 1.0, -1.0, -1.0, "")
m_knockFuelTrimMultiplier("Knock: Fuel trim when knock", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1100, 1.0, 0.0, 0.0, "multiplier")
m_knockFrequencyStart("Knock: Start Freq", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1094, 1.0, 0.0, 0.0, "Hz")
boostControlTarget("Boost: Target", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1232, 0.03333333333333333, 0.0, 300.0, "kPa")
m_knockSpectrumChannelCyl("Knock: ChannelAndCylNumber", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1092, 1.0, 0.0, 0.0, "compressed N + N")
pressureRatio("Fuel: Injector pressure ratio", SensorCategory.SENSOR_INPUTS, FieldType.INT, 1188, 1.0, 0.0, 100.0, "")
scaled_channel< uint16_t, 100, 1 > baseFuel
scaled_channel< uint16_t, 100, 1 > fuel
float stftCorrection[FT_BANK_COUNT]
float injectionMass[MAX_CYLINDER_COUNT]
cranking_fuel_s crankingFuel
scaled_channel< uint16_t, 100, 1 > veTableYAxis
scaled_channel< uint16_t, 1000, 1 > targetAFR
scaled_channel< uint16_t, 1000, 1 > stoichiometricRatio
scaled_channel< uint16_t, 10000, 1 > targetLambda
scaled_channel< uint16_t, 100, 1 > afrTableYAxis
percent_t currentIdlePosition
percent_t baseIdlePosition
scaled_channel< uint16_t, 100, 1 > idleTargetFlow
scaled_channel< int16_t, 100, 1 > trailingSparkAngle
scaled_channel< int16_t, 100, 1 > dfcoTimingRetard
scaled_channel< int16_t, 100, 1 > timingPidCorrection
scaled_channel< int16_t, 50, 1 > baseIgnitionAdvance
scaled_channel< int16_t, 100, 1 > cltTimingCorrection
scaled_channel< int16_t, 50, 1 > correctedIgnitionAdvance
scaled_channel< int16_t, 50, 1 > tractionAdvanceDrop
scaled_channel< int16_t, 100, 1 > timingIatCorrection
scaled_channel< uint16_t, 100, 1 > lambdaTimeSinceGood
scaled_channel< uint16_t, 1000, 1 > afrGasolineScale
scaled_channel< int16_t, 100, 1 > compressorDischargeTemp
scaled_channel< int16_t, 1000, 1 > rawBattery
scaled_channel< int16_t, 10, 1 > veBlendParameter[VE_BLEND_COUNT]
float luaGauges[LUA_GAUGE_COUNT]
scaled_channel< uint16_t, 30, 1 > throttleInletPressure
scaled_channel< int16_t, 100, 1 > auxTemp2
scaled_channel< int16_t, 50, 1 > ignitionAdvanceCyl[MAX_CYLINDER_COUNT]
scaled_channel< uint16_t, 100, 1 > speedToRpmRatio
scaled_channel< uint16_t, 100, 1 > coilDutyCycle
scaled_channel< int16_t, 1000, 1 > accelerationLat
scaled_channel< int16_t, 100, 1 > accPedalUnfiltered
scaled_channel< int16_t, 100, 1 > idlePositionSensor
scaled_channel< int16_t, 100, 1 > wastegatePositionSensor
scaled_channel< int16_t, 10, 1 > boostClosedLoopBlendYAxis[BOOST_BLEND_COUNT]
uint8_t ignitorDiagnostic[MAX_CYLINDER_COUNT]
scaled_channel< int16_t, 1000, 1 > accelerationVert
scaled_channel< int16_t, 10, 1 > boostClosedLoopBlendParameter[BOOST_BLEND_COUNT]
scaled_channel< int16_t, 100, 1 > ignBlendOutput[IGN_BLEND_COUNT]
scaled_channel< uint16_t, 100, 1 > vehicleSpeedKph
scaled_channel< int16_t, 1000, 1 > rawAuxAnalog4
scaled_channel< int16_t, 10, 1 > highFuelPressure
scaled_channel< uint16_t, 10, 1 > fallbackMap
scaled_channel< int16_t, 1000, 1 > rawTps2Secondary
scaled_channel< int16_t, 1000, 1 > rawTps1Secondary
scaled_channel< int16_t, 100, 1 > TPS2Value
scaled_channel< int16_t, 10, 1 > ignBlendParameter[IGN_BLEND_COUNT]
scaled_channel< uint16_t, 10, 1 > mafEstimate
scaled_channel< int16_t, 1000, 1 > rawAuxAnalog1
scaled_channel< uint8_t, 2, 1 > targetAfrBlendBias[TARGET_AFR_BLEND_COUNT]
scaled_channel< uint16_t, 10000, 1 > lambdaValue
scaled_channel< int16_t, 1000, 1 > rawHighFuelPressure
scaled_channel< uint16_t, 1000, 1 > rawMaf
scaled_channel< int16_t, 100, 1 > ambientTemp
scaled_channel< uint8_t, 2, 1 > boostClosedLoopBlendBias[BOOST_BLEND_COUNT]
scaled_channel< uint16_t, 30, 1 > oilPressure
scaled_channel< int16_t, 1000, 1 > rawTps1Primary
scaled_channel< int16_t, 1000, 1 > rawOilPressure
scaled_channel< uint8_t, 2, 1 > gppwmOutput[4]
scaled_channel< uint16_t, 30, 1 > baroPressure
scaled_channel< uint16_t, 1000, 1 > afr2GasolineScale
scaled_channel< int16_t, 10, 1 > boostOpenLoopBlendParameter[BOOST_BLEND_COUNT]
scaled_channel< uint8_t, 2, 1 > injectorDutyCycle
scaled_channel< uint8_t, 2, 1 > ignBlendBias[IGN_BLEND_COUNT]
scaled_channel< int16_t, 100, 1 > tps12Split
scaled_channel< uint8_t, 2, 1 > veBlendBias[VE_BLEND_COUNT]
scaled_channel< int16_t, 1000, 1 > rawWastegatePosition
scaled_channel< int16_t, 10, 1 > targetAfrBlendYAxis[TARGET_AFR_BLEND_COUNT]
scaled_channel< int16_t, 10, 1 > ignBlendYAxis[IGN_BLEND_COUNT]
scaled_channel< int16_t, 1000, 1 > rawAuxTemp1
scaled_channel< uint16_t, 10, 1 > veValue
scaled_channel< int16_t, 10, 1 > veBlendYAxis[VE_BLEND_COUNT]
scaled_channel< uint16_t, 1000, 1 > VBatt
scaled_channel< int16_t, 100, 1 > fuelTankLevel
scaled_channel< int16_t, 4, 1 > egt[EGT_CHANNEL_COUNT]
scaled_channel< int16_t, 50, 1 > vvtPositionB1E
scaled_channel< uint16_t, 300, 1 > VssAcceleration
scaled_channel< int16_t, 1000, 1 > accelerationLon
scaled_channel< int16_t, 1000, 1 > rawIat
scaled_channel< int16_t, 1000, 1 > internalVref
uint8_t mapPerCylinder[MAX_CYLINDER_COUNT]
scaled_channel< uint16_t, 1000, 1 > AFRValue2
scaled_channel< int16_t, 100, 1 > accPedalSplit
scaled_channel< int16_t, 100, 1 > fuelTemp
scaled_channel< int16_t, 100, 1 > wallFuelCorrectionValue
scaled_channel< uint16_t, 30, 1 > compressorDischargePressure
scaled_channel< int16_t, 1000, 1 > rawAuxTemp2
scaled_channel< int16_t, 1000, 1 > rawLowFuelPressure
scaled_channel< int16_t, 300, 1 > tpsAccelFuel
scaled_channel< uint16_t, 1000, 1 > rawMap
scaled_channel< uint16_t, 1000, 1 > AFRValue
scaled_channel< uint16_t, 100, 1 > Gego
scaled_channel< int16_t, 30, 1 > lowFuelPressure
scaled_channel< int16_t, 1000, 1 > rawClt
scaled_channel< int16_t, 100, 1 > etb1DutyCycle
scaled_channel< uint16_t, 30, 1 > MAPValue
scaled_channel< uint16_t, 1000, 1 > SmoothedAFRValue2
scaled_channel< int16_t, 100, 1 > intake
uint8_t injectorDiagnostic[MAX_CYLINDER_COUNT]
scaled_channel< int16_t, 100, 1 > veBlendOutput[VE_BLEND_COUNT]
scaled_channel< int16_t, 1000, 1 > gyroYaw
scaled_channel< int16_t, 10, 1 > boostClosedLoopBlendOutput[BOOST_BLEND_COUNT]
scaled_channel< int16_t, 1000, 1 > rawAuxAnalog3
scaled_channel< int16_t, 50, 1 > vvtPositionB2E
scaled_channel< int16_t, 1000, 1 > rawAmbientTemp
scaled_channel< uint8_t, 2, 1 > boostOpenLoopBlendBias[BOOST_BLEND_COUNT]
scaled_channel< uint16_t, 300, 1 > actualLastInjectionStage2
scaled_channel< uint16_t, 1000, 1 > SmoothedAFRValue
scaled_channel< int16_t, 100, 1 > tps1Split
scaled_channel< int16_t, 1, 1 > gppwmXAxis[4]
int8_t boostOpenLoopBlendOutput[BOOST_BLEND_COUNT]
scaled_channel< uint16_t, 1000, 1 > rawMapFast
scaled_channel< uint16_t, 100, 1 > wallFuelAmount
scaled_channel< int16_t, 1000, 1 > rawFuelLevel
scaled_channel< uint8_t, 2, 1 > flexPercent
scaled_channel< uint16_t, 1000, 1 > rawMaf2
scaled_channel< int16_t, 100, 1 > oilTemp
scaled_channel< uint16_t, 10, 1 > distanceTraveled
scaled_channel< int16_t, 100, 1 > throttlePedalPosition
scaled_channel< uint16_t, 10, 1 > mafMeasured2
scaled_channel< int16_t, 100, 1 > tps2Split
scaled_channel< int16_t, 10, 1 > targetAfrBlendParameter[TARGET_AFR_BLEND_COUNT]
scaled_channel< uint16_t, 10, 1 > mafMeasured
scaled_channel< uint16_t, 200, 1 > fuelFlowRate
scaled_channel< uint8_t, 2, 1 > injectorDutyCycleStage2
scaled_channel< uint16_t, 1000, 1 > rawAfr
scaled_channel< uint16_t, 10000, 1 > lambdaValue2
scaled_channel< uint16_t, 300, 1 > actualLastInjection
scaled_channel< uint16_t, 30, 1 > instantMAPValue
scaled_channel< int16_t, 1000, 1 > rawIdlePositionSensor
scaled_channel< int16_t, 10, 1 > targetAfrBlendOutput[TARGET_AFR_BLEND_COUNT]
scaled_channel< int16_t, 10, 1 > boostOpenLoopBlendYAxis[BOOST_BLEND_COUNT]
scaled_channel< int16_t, 100, 1 > coolant
scaled_channel< int16_t, 50, 1 > vvtPositionB2I
scaled_channel< int16_t, 50, 1 > vvtPositionB1I
scaled_channel< int16_t, 100, 1 > TPSValue
scaled_channel< int16_t, 10, 1 > gppwmYAxis[4]
scaled_channel< int16_t, 1000, 1 > rawTps2Primary
scaled_channel< int16_t, 1000, 1 > rawAcPressure
scaled_channel< uint16_t, 10, 1 > effectiveMap
scaled_channel< int16_t, 100, 1 > auxTemp1
scaled_channel< int16_t, 1000, 1 > rawAnalogInput[LUA_ANALOG_INPUT_COUNT]
scaled_channel< int16_t, 1000, 1 > rawAuxAnalog2
scaled_channel< int16_t, 100, 1 > dTerm
scaled_channel< int16_t, 100, 1 > error
scaled_channel< int16_t, 100, 1 > output
scaled_channel< int16_t, 100, 1 > iTerm
scaled_channel< uint16_t, 100, 1 > baseFuel
scaled_channel< uint16_t, 100, 1 > fuel
scaled_channel< int16_t, 100, 1 > tCharge
uint16_t vvtEventRiseCounter[CAM_INPUTS_COUNT]
uint16_t hwEventCounters[HW_EVENT_TYPES]
uint16_t vvtEventFallCounter[CAM_INPUTS_COUNT]

Referenced by MLG::computeFieldsRecordLength(), MLG::getSdCardFieldsCount(), MLG::writeFileHeader(), and MLG::writeSdBlock().

Go to the source code of this file.