forked from rusefi/wideband
/
wideband_dual.ini
424 lines (351 loc) · 22.8 KB
/
wideband_dual.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
; This is a TunerStudio project for the rusEFI.com engine management system
; this should stop TS from looking for the CAN ID in the 2nd byte location and allow the page reads to work correctly.
enable2ndByteCanID = false
[SettingGroups]
; the referenceName will over-ride previous, so if you are creating a
; settingGroup with a reference name of lambdaSensor, it will replace the
; setting group defined in the settingGroups.xml of the TunerStudio config
; folder. If is is an undefined referenceName, it will be added.
; keyword = referenceName, DisplayName
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2024.02.11.wideband_dual"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmware version for title bar.
signature = "rusEFI 2024.02.11.wideband_dual" ; signature is expected to be 7 or more characters.
; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C
useLegacyFTempUnits = false
ignoreMissingBitOptions = true
defaultRuntimeRecordPerSec = 50;
[Constants]
; new packet serial format with CRC
messageEnvelopeFormat = msEnvelope_1.0
endianness = little
nPages = 2
pageSize = 256, 64
pageIdentifier = "\x00\x00", "\x00\x01"
pageReadCommand = "R%2i%2o%2c", "R%2i%2o%2c"
burnCommand = "B%2i"
pageChunkWrite = "C%2i%2o%2c%v", "C%2i%2o%2c%v"
crc32CheckCommand = "k%2i%2o%2c", "k%2i%2o%2c"
retrieveConfigError = "e"
; communication settings
pageActivationDelay = 500 ; Milliseconds delay after burn command. See https://sourceforge.net/p/rusefi/tickets/77/
; e.g. put writeblocks off and add an interwrite delay
writeBlocks = on
interWriteDelay = 10
blockReadTimeout = 3000; Milliseconds general timeout
; delayAfterPortOpen = 500
blockingFactor = 256 ; max chunk size
; end communication settings
; name = bits, type, offset, bits
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
; CONFIG_DEFINITION_START
page = 1
; name = class, type, offset, [shape], units, scale, translate, min, max, digits
; First four bytes are used for internal tag. Should not be accessable from TS
CanIndexOffset = scalar, U08, 4, "", 1, 0, 0, 255, 0
Aux0OutBins = array, F32, 5, [8], "", 1, 0, 0, 1500, 2
Aux1OutBins = array, F32, 37, [8], "", 1, 0, 0, 1500, 2
Aux0Out = array, F32, 69, [8], "V", 1, 0, 0, 5.0, 2
Aux1Out = array, F32, 101, [8], "V", 1, 0, 0, 5.0, 2
Aux0InputSel = bits, U08, 133, [0:3], "AFR 0", "AFR 1", "Lambda 0", "Lambda 1", "EGT 0", "EGT 1"
Aux1InputSel = bits, U08, 134, [0:3], "AFR 0", "AFR 1", "Lambda 0", "Lambda 1", "EGT 0", "EGT 1"
LsuSensorType = bits, U08, 135, [0:2], "LSU 4.9", "LSU 4.2", "LSU ADV", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
RusEfiTx0 = bits, U08, 136, [0:0], "Disable", "Enable"
RusEfiTxDiag0 = bits, U08, 136, [1:1], "Disable", "Enable"
AemNetTx0 = bits, U08, 136, [2:2], "Disable", "Enable"
RusEfiIdOffset0= scalar, U08, 137, "", 1, 0, 0, 255, 0
AemNetIdOffset0= scalar, U08, 138, "", 1, 0, 0, 255, 0
RusEfiTx1 = bits, U08, 144, [0:0], "Disable", "Enable"
RusEfiTxDiag1 = bits, U08, 144, [1:1], "Disable", "Enable"
AemNetTx1 = bits, U08, 144, [2:2], "Disable", "Enable"
RusEfiIdOffset1= scalar, U08, 145, "", 1, 0, 0, 255, 0
AemNetIdOffset1= scalar, U08, 146, "", 1, 0, 0, 255, 0
AemNetEgtTx0 = bits, U08, 152, [2:2], "Disable", "Enable"
AemNetIdEgOff0 = scalar, U08, 154, "", 1, 0, 0, 255, 0
AemNetEgtTx1 = bits, U08, 160, [2:2], "Disable", "Enable"
AemNetIdEgOff1 = scalar, U08, 162, "", 1, 0, 0, 255, 0
page = 2 ; this is a RAM only page with no burnable flash
; name = class, type, offset, [shape], units, scale, translate, min, max, digits
highSpeedOffsets = array, U16, 0, [32], "", 1, 0, 0, 65535, 0, noMsqSave
[SettingContextHelp]
RusEfiIdOffset0 = "Defines CAN ID offset for RusEFI AFR format packet channel 0 (left). Data packet ID = (0x190 + this offset), Diagnostic packed ID = (0x190 + 1 + this offset)."
RusEfiIdOffset1 = "Defines CAN ID offset for RusEFI AFR format packet channel 1 (right). Data packet ID = (0x190 + this offset), Diagnostic packed ID = (0x190 + 1 + this offset)."
AemNetIdOffset0 = "Defines CAN ID offset for AemNET USEGO format packet channel 0 (left). Packet ID = (0x180 + this offset)."
AemNetIdOffset1 = "Defines CAN ID offset for AemNET USEGO format packet channel 1 (right). Packet ID = (0x180 + this offset)."
AemNetIdEgOff0 = "Defines CAN ID offset for AemNET EGT format packet channel 0 (left). Packed ID = (0xA0305 + this offset)."
AemNetIdEgOff1 = "Defines CAN ID offset for AemNET EGT format packet channel 1 (right). Packed ID = (0xA0305 + this offset)."
[Tuning]
[LoggerDefinition]
[OutputChannels]
; two zero bytes added after cmd byte to align with page read/write format
ochGetCommand = "O\x00\x00%2o%2c"
; see TS_OUTPUT_SIZE in console source code
ochBlockSize = 256
; 11.2.3 Full Optimized – High Speed
scatteredOchGetCommand = "9"
scatteredOffsetArray = highSpeedOffsets
scatteredGetEnabled = { 1 }
; Common
VBatt = scalar, F32, 0, "V", 1, 0
; AFR0
AFR0_lambda = scalar, F32, 32, "", 1, 0
AFR0_afr = scalar, F32, 32, "", 14.7, 0
AFR0_temp = scalar, U16, 36, "C", 0.1, 0
AFR0_HeaterSupply = scalar, U16, 38, "V", 0.01, 0
AFR0_NernstDc = scalar, U16, 40, "V", 0.001, 0
AFR0_NernstAc = scalar, U16, 42, "V", 0.001, 0
AFR0_PumpITarget = scalar, F32, 44, "mA", 1, 0
AFR0_PumpIMeasure = scalar, F32, 48, "mA", 1, 0
AFR0_HeaterDuty = scalar, U16, 52, "%", 0.1, 0
AFR0_HeaterEffV = scalar, U16, 54, "V", 0.01, 0
AFR0_esr = scalar, U16, 56, "ohms", 1, 0
AFR0_Nernst = scalar, S16, 58, "V", 0.001, 0
AFR0_fault = scalar, U08, 60, "", 1, 0
AFR0_heater = scalar, U08, 61, "", 1, 0
; AFR1
AFR1_lambda = scalar, F32, 64, "", 1, 0
AFR1_afr = scalar, F32, 64, "", 14.7, 0
AFR1_temp = scalar, U16, 68, "C", 0.1, 0
AFR1_HeaterSupply = scalar, U16, 70, "V", 0.01, 0
AFR1_NernstDc = scalar, U16, 72, "V", 0.001, 0
AFR1_NernstAc = scalar, U16, 74, "V", 0.001, 0
AFR1_PumpITarget = scalar, F32, 76, "mA", 1, 0
AFR1_PumpIMeasure = scalar, F32, 80, "mA", 1, 0
AFR1_HeaterDuty = scalar, U16, 84, "%", 0.1, 0
AFR1_HeaterEffV = scalar, U16, 86, "V", 0.01, 0
AFR1_esr = scalar, U16, 88, "ohms", 1, 0
AFR1_Nernst = scalar, S16, 90, "V", 0.001, 0
AFR1_fault = scalar, U08, 92, "", 1, 0
AFR1_heater = scalar, U08, 93, "", 1, 0
; EGT0
EGT0_temp = scalar, F32, 96, "C", 1, 0
EGT0_coldJunction = scalar, F32, 100, "C", 1, 0
EGT0_state = scalar, U08, 104, "", 1, 0
EGT0_commErrors = scalar, U32, 108, "n", 1, 0
; EGT1
EGT1_temp = scalar, F32, 112, "C", 1, 0
EGT1_coldJunction = scalar, F32, 116, "C", 1, 0
EGT1_state = scalar, U08, 120, "", 1, 0
EGT1_commErrors = scalar, U32, 124, "n", 1, 0
; TODO: something is wrong with these
Aux0InputSig = { (Aux0InputSel == 0) ? AFR0_lambda : ((Aux0InputSel == 1) ? AFR1_lambda : ((Aux0InputSel == 2) ? EGT0_temp : EGT1_temp)) }
Aux1InputSig = { (Aux1InputSel == 0) ? AFR0_lambda : ((Aux1InputSel == 1) ? AFR1_lambda : ((Aux1InputSel == 2) ? EGT0_temp : EGT1_temp)) }
;Aux0InputSigMax = { (Aux0InputSel == 0) ? 25 : ((Aux0InputSel == 1) ? 25 : 1500 }
;Aux1InputSigMax = { (Aux1InputSel == 0) ? 25 : ((Aux1InputSel == 1) ? 25 : 1500 }
[PcVariables]
; Keep in sync with Max31855State enum from max31855.h
EgtStatesList = bits, U08, [0:7], "Ok", "Open Circuit", "Short to GND", "Short to VCC", "No reply"
; Keep in sync with WBO::Fault from ../for_rusefi/wideband_can.h
AfrFaultList = bits, U08, [0:7], "Ok", "Unk", "Unk", "Failed to heat", "Overheat", "Underheat", "No supply"
; Keep in sync with HeaterState from heater_control.h
HeaterStatesList = bits, U08, [0:7], "Preheat", "Warmup", "Close loop", "Stopped", "No supply"
[CurveEditor]
curve = auxOut0Curve, "AUX output 0 voltage"
columnLabel = "Input", "Output"
xAxis = { (Aux0InputSel < 2) ? 7 : 300 }, { (Aux0InputSel < 2) ? 25 : 1500 }, 13
yAxis = 0, 5, 6
xBins = Aux0OutBins, Aux0InputSig
yBins = Aux0Out
showTextValues = true
curve = auxOut1Curve, "AUX output 1 voltage"
columnLabel = "Input", "Output"
xAxis = { (Aux1InputSel < 2) ? 7 : 300 }, { (Aux1InputSel < 2) ? 19 : 1500 }, 13
yAxis = 0, 5, 6
xBins = Aux1OutBins, Aux1InputSig
yBins = Aux1Out
showTextValues = true
[TableEditor]
[GaugeConfigurations]
gaugeCategory = Common
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
VBattGauge = VBatt, "Battery", "V", 3.0, 24.0, 9.0, 11.0, 15.0, 16.0, 1, 1
; AFR0
gaugeCategory = AFR channel 0
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
AFR0_LambdaGauge = AFR0_lambda, "0: lambda", "", 0.5, 1.3, 0.5, 0.6, 1.05, 1.2, 3, 3
AFR0_AfrGauge = AFR0_afr, "0: AFR", "", 6.5, 20.0, 9.0, 10.0, 16.0, 17.0, 2, 2
AFR0_TempGauge = AFR0_temp, "0: AFR t", "C", 500, 1050, 500, 650, 800, 950, 0, 0
AFR0_HeaterSupply = AFR0_HeaterSupply,"0: Heater Supply", "V", 3.0, 24.0, 9.0, 11.0, 15.0, 16.0, 1, 1
AFR0_NernstGauge = AFR0_Nernst, "0: nernst V", "V", -0.2, 1.8, -0.1, 0.0, 0.9, 0.95, 3, 3
AFR0_NernstDcGauge = AFR0_NernstDc, "0: nernst DC", "V", 0.0, 1.0, 0.0, 0.0, 0.9, 0.95, 3, 3
AFR0_NernstAcGauge = AFR0_NernstAc, "0: nernst AC", "V", 0.0, 1.0, 0.0, 0.0, 0.9, 0.95, 3, 3
AFR0_HeaterDutyGauge = AFR0_HeaterDuty, "0: Heater Duty", "%", 0.0, 100.0, 1.0, 3.0, 90, 95, 1, 1
AFR0_HeaterEffVGauge = AFR0_HeaterEffV, "0: Heater Voltage", "V", 0.0, 18.0, 1.5, 6.0, 9, 16, 1, 1
AFR0_PumpITargetGauge = AFR0_PumpITarget, "0: Ipump Target", "mA", -5.0, 5.0, -4.0, -3.0, 3.0, 4.0, 2, 2
AFR0_PumpIMeasureGauge = AFR0_PumpIMeasure, "0: Ipump Actual", "mA", -5.0, 5.0, -4.0, -3.0, 3.0, 4.0, 2, 2
AFR0_EsrGauge = AFR0_esr, "0: ESR", "ohms", 0, 600, 200, 200, 350, 400, 0, 0
; AFR1
gaugeCategory = AFR channel 1
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
AFR1_LambdaGauge = AFR1_lambda, "1: lambda", "", 0.5, 1.3, 0.5, 0.6, 1.05, 1.2, 3, 3
AFR1_AfrGauge = AFR1_afr, "1: AFR", "", 6.5, 20.0, 9.0, 10.0, 16.0, 17.0, 2, 2
AFR1_TempGauge = AFR1_temp, "1: AFR t", "C", 500, 1050, 500, 650, 800, 950, 0, 0
AFR1_HeaterSupply = AFR1_HeaterSupply,"1: Heater Supply", "V", 3.0, 24.0, 9.0, 11.0, 15.0, 16.0, 1, 1
AFR1_NernstGauge = AFR1_Nernst, "1: nernst V", "V", -0.2, 1.8, -0.1, 0.0, 0.9, 0.95, 3, 3
AFR1_NernstDcGauge = AFR1_NernstDc, "1: nernst DC", "V", 0.0, 1.0, 0.0, 0.0, 0.9, 0.95, 3, 3
AFR1_NernstAcGauge = AFR1_NernstAc, "1: nernst AC", "V", 0.0, 1.0, 0.0, 0.0, 0.9, 0.95, 3, 3
AFR1_HeaterDutyGauge = AFR1_HeaterDuty, "1: Heater Duty", "%", 0.0, 100.0, 1.0, 3.0, 90, 95, 1, 1
AFR1_HeaterEffVGauge = AFR1_HeaterEffV, "1: Heater Voltage", "V", 0.0, 18.0, 1.5, 6.0, 9, 16, 1, 1
AFR1_PumpITargetGauge = AFR1_PumpITarget, "1: Ipump Target", "mA", -5.0, 5.0, -4.0, -3.0, 3.0, 4.0, 2, 2
AFR1_PumpIMeasureGauge = AFR1_PumpIMeasure, "1: Ipump Actual", "mA", -5.0, 5.0, -4.0, -3.0, 3.0, 4.0, 2, 2
AFR1_EsrGauge = AFR1_esr, "1: ESR", "ohms", 0, 600, 200, 200, 350, 400, 0, 0
; EGT0
gaugeCategory = EGT channel 0
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
EGT0_Gauge = EGT0_temp, "0: EGT", "C", 0.0, 1600.0, 100.0, 250.0, 900.0, 1000.0, 0, 0
EGT0_ColdJunctionGauge = EGT0_coldJunction, "0: EGT CJ", "C", 0.0, 130.0, -55.0, -20.0, 95.0, 105.0, 1, 1
EGT0_StateGauge = EGT0_state, "0: EGT state", "", 0.0, 5.0, 0.0, 0.0, 0.5, 0.5, 0, 0
EGT0_CommErrorsGauge = EGT0_commErrors,"0: EGT comm errors", "", 0.0, 10, 0.0, 0.0, 1, 1, 0, 0
; EGT1
gaugeCategory = EGT channel 1
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
EGT1_Gauge = EGT1_temp, "1: EGT", "C", 0.0, 1600.0, 100.0, 250.0, 900.0, 1000.0, 0, 0
EGT1_ColdJunctionGauge = EGT1_coldJunction, "1: EGT CJ", "C", 0.0, 130.0, -55.0, -20.0, 95.0, 105.0, 1, 1
EGT1_StateGauge = EGT1_state, "1: EGT state", "", 0.0, 5.0, 0.0, 0.0, 0.5, 0.5, 0, 0
EGT1_CommErrorsGauge = EGT1_commErrors,"1: EGT comm errors", "", 0.0, 10, 0.0, 0.0, 1, 1, 0, 0
; AUX outputs
Aux0InputGauge = { (Aux0InputSel == 0) ? AFR0_AfrGauge : ((Aux0InputSel == 1) ? AFR1_AfrGauge : ((Aux0InputSel == 2) ? EGT0_Gauge : EGT1_Gauge)) }
Aux1InputGauge = { (Aux1InputSel == 0) ? AFR0_AfrGauge : ((Aux1InputSel == 1) ? AFR1_AfrGauge : ((Aux1InputSel == 2) ? EGT0_Gauge : EGT1_Gauge)) }
[FrontPage]
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
gauge1 = AFR0_TempGauge
gauge2 = AFR0_AfrGauge
gauge3 = AFR1_AfrGauge
gauge4 = AFR1_TempGauge
gauge5 = EGT0_Gauge
gauge6 = AFR0_HeaterSupply
gauge7 = AFR1_HeaterSupply
gauge8 = EGT1_Gauge
indicator = { EGT0_state }, "EGT0 ok", { EGT0: bitStringValue(EgtStatesList, EGT0_state)}, green, black, red, black
indicator = { AFR0_fault }, "AFR0 ok", { AFR0: bitStringValue(AfrFaultList, AFR0_fault)}, green, black, red, black
indicator = { (AFR0_heater != 2) }, "AFR0 Heater CL", { AFR0 heater: bitStringValue(HeaterStatesList, AFR0_heater)}, green, black, red, black
indicator = { (AFR1_heater != 2) }, "AFR1 Heater CL", { AFR1 heater: bitStringValue(HeaterStatesList, AFR1_heater)}, green, black, red, black
indicator = { AFR1_fault }, "AFR1 ok", { AFR1: bitStringValue(AfrFaultList, AFR1_fault)}, green, black, red, black
indicator = { EGT1_state }, "EGT1 ok", { EGT1: bitStringValue(EgtStatesList, EGT1_state)}, green, black, red, black
[KeyActions]
[Datalog]
; Channel Label Type Format
entry = time, "Time", float, "%.3f"
entry = VBatt, "Battery", float, "%.2f"
; AFR0
entry = AFR0_lambda, "0: Lambda", float, "%.3f"
entry = AFR0_afr, "0: AFR", float, "%.2f"
entry = AFR0_temp, "0: Temp C", int, "%d"
entry = AFR0_HeaterSupply, "0: Heater Supply", float, "%.2f"
entry = AFR0_Nernst, "0: Nernst V", float, "%.3f"
entry = AFR0_NernstDc, "0: Nernst DC", float, "%.3f"
entry = AFR0_NernstAc, "0: Nernst AC", float, "%.3f"
entry = AFR0_PumpITarget, "0: Ipump target", float, "%.2f"
entry = AFR0_PumpIMeasure, "0: Ipump actual", float, "%.2f"
entry = AFR0_HeaterDuty, "0: Heater duty", float, "%.1f"
entry = AFR0_HeaterEffV, "0: Heater voltage", float, "%.1f"
entry = AFR0_fault, "0: Fault code", int, "%d"
entry = AFR0_heater, "0: Heater status code", int, "%d"
entry = AFR0_esr, "0: ESR", float, "%.1f"
; AFR1
entry = AFR1_lambda, "1: Lambda", float, "%.3f"
entry = AFR1_afr, "1: AFR", float, "%.2f"
entry = AFR1_temp, "1: Temp C", int, "%d"
entry = AFR1_HeaterSupply, "1: Heater Supply", float, "%.2f"
entry = AFR1_Nernst, "1: Nernst V", float, "%.3f"
entry = AFR1_NernstDc, "1: Nernst DC", float, "%.3f"
entry = AFR1_NernstAc, "1: Nernst AC", float, "%.3f"
entry = AFR1_PumpITarget, "1: Ipump target", float, "%.2f"
entry = AFR1_PumpIMeasure, "1: Ipump actual", float, "%.2f"
entry = AFR1_HeaterDuty, "1: Heater duty", float, "%.1f"
entry = AFR1_HeaterEffV, "1: Heater voltage", float, "%.1f"
entry = AFR1_fault, "1: Fault code", int, "%d"
entry = AFR1_heater, "1: Heater status code", int, "%d"
entry = AFR1_esr, "1: ESR", float, "%.1f"
; EGT0
entry = EGT0_temp, "EGT 0: EGT", int, "%d"
entry = EGT0_coldJunction, "EGT 0: CJ", int, "%d"
entry = EGT0_state, "EGT 0: State", int, "%d"
entry = EGT0_commErrors, "EGT 0: comm errors", int, "%d"
; EGT1
entry = EGT1_temp, "EGT 1: EGT", int, "%d"
entry = EGT1_coldJunction, "EGT 1: CJ", int, "%d"
entry = EGT1_state, "EGT 1: State", int, "%d"
entry = EGT1_commErrors, "EGT 1: comm errors", int, "%d"
[Menu]
menuDialog = main
menu = "&Settings"
subMenu = sensor_settings, "Sensor settings"
subMenu = can_settings, "CAN AFR settings"
subMenu = can_egt_settings, "CAN EGT settings"
menu = "Outputs"
subMenu = auxOut0, "AUX analog output 0"
subMenu = auxOut1, "AUX analog output 1"
menu = "&Controller"
subMenu = ecuTools, "ECU tools"
[ControllerCommands]
; commandName = command1, command2, commandn...
; command in standard ini format, a command name can be assigned to 1 to n commands that will be executed in order.
; This does not include any resultant protocol envelope data, only the response data itself.
; WARNING!! These commands bypass TunerStudio's normal memory synchronization. If these commands
; alter mapped settings (Constant) memory in the controller, TunerStudio will have an out of sync condition
; and may create error messages.
; It is expected that these commands would not typically alter any ram mapped to a Constant.
; reboot ECU
cmd_reset_controller = "Z\x00\xbb\x00\x00"
; jump to DFU mode
cmd_dfu = "Z\x00\xba\x00\x00"
; restart to OpenBlt
cmd_openblt = "Z\x00\xbc\x00\x00"
[UserDefined]
dialog = sensor_settings, "Sensor Settings"
field = "Sensor Type", LsuSensorType
dialog = afr0_can_settings, "AFR 0 (left) channel CAN Settings"
field = "RusEFI protocol:"
field = "Output AFR", RusEfiTx0
field = "Output AFR diagnostic", RusEfiTxDiag0
field = "CAN ID offset (base ID is 0x190)", RusEfiIdOffset0, { (RusEfiTx0 == 1) || (RusEfiTxDiag0 == 1)}, { 1 }, displayInHex
field = "AemNet protocol:"
field = "Output AFR", AemNetTx0
field = "CAN ID offset (base ID is 0x180)", AemNetIdOffset0, { (AemNetTx0 == 1) }, { 1 }, displayInHex
dialog = afr1_can_settings, "AFR 1 (right) channel CAN Settings"
field = "RusEFI protocol:"
field = "Output AFR", RusEfiTx1
field = "Output AFR diagnostic", RusEfiTxDiag1
field = "CAN ID offset (base ID is 0x190)", RusEfiIdOffset1, { (RusEfiTx1 == 1) || (RusEfiTxDiag1 == 1)}, { 1 }, displayInHex
field = "AemNet protocol:"
field = "Output AFR", AemNetTx1
field = "CAN ID offset (base ID is 0x180)", AemNetIdOffset1, { (AemNetTx1 == 1) }, { 1 }, displayInHex
dialog = egt0_can_settings, "EGT 0 (left) channel CAN Settings"
field = "RusEFI protocol:"
field = "not implemented yet"
field = "AemNet protocol:"
field = "Output EGT", AemNetEgtTx0
field = "CAN ID offset (base ID is 0xA0305)", AemNetIdEgOff0, { (AemNetEgtTx0 == 1) }, { 1 }, displayInHex
dialog = egt1_can_settings, "EGT 1 (right) channel CAN Settings"
field = "RusEFI protocol:"
field = "not implemented yet"
field = "AemNet protocol:"
field = "Output EGT", AemNetEgtTx1
field = "CAN ID offset (base ID is 0xA0305)", AemNetIdEgOff1, { (AemNetEgtTx1 == 1) }, { 1 }, displayInHex
dialog = can_settings, "CAN AFR Settings", border
panel = afr0_can_settings, West
panel = afr1_can_settings, East
dialog = can_egt_settings, "CAN AFR Settings", border
panel = egt0_can_settings, West
panel = egt1_can_settings, East
dialog = auxOut0, "AUX analog out 0 Settings"
field = "Signal", Aux0InputSel
panel = auxOut0Curve
dialog = auxOut1, "AUX analog out 1 Settings"
field = "Signal", Aux1InputSel
panel = auxOut1Curve
dialog = ecuReset, "Reset"
commandButton = "Reset ECU", cmd_reset_controller
commandButton = "Reset to DFU", cmd_dfu
commandButton = "Reset to OpenBLT", cmd_openblt
dialog = ecuTools, "ECU tools and Commands", xAxis
panel = ecuReset
[Tools]