rusefi-1/firmware/tunerstudio/rusefi.input

3810 lines
202 KiB
Plaintext

; This is a TunerStudio project for the RusEFI.com engine management system
;
; This file has been generated by invoking gen_config.bat.
; The input files are
; rusefi.input the common template
; rusefi_config.txt the project specific file
;
; In TunerStudio some fields have little question mark on the left of the name for additional field tips.
; Those tips are defined in ../integration/rusefi_config.txt
;
; For example
;
; float bias_resistor;+Pull-up resistor value on your board;"Ohm"
; here 'bias_resistor' is internal field name and the text between semicolons is what produces the tooltip
; Note that '+' sign is required after first semicolon for tooltop to appear in TunerStudio
;
;
; field = "# blue text"
; field = "! red text"
; field = "normal text"
;
; 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 = @@TS_SIGNATURE@@
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmwave version for title bar.
signature = @@TS_SIGNATURE@@ ; 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
; Optimize comms for fast rusefi ECUs
noCommReadDelay = true;
defaultRuntimeRecordPerSec = 100;
maxUnusedRuntimeRange = 1000;
; Set default IP/port to our IP/port
defaultIpAddress = 192.168.10.1;
defaultIpPort = 29000;
[Constants]
; new packet serial format with CRC
messageEnvelopeFormat = msEnvelope_1.0
endianness = little
nPages = 1
pageIdentifier = "\x00\x00"
pageReadCommand = "@@TS_READ_COMMAND_char@@%2o%2c"
burnCommand = "@@TS_BURN_COMMAND_char@@"
pageActivate = "@@TS_PAGE_COMMAND_char@@"
pageValueWrite = "@@TS_SINGLE_WRITE_COMMAND_char@@%2o%v"
pageChunkWrite = "@@TS_CHUNK_WRITE_COMMAND_char@@%2o%2c%v"
crc32CheckCommand = "@@TS_CRC_CHECK_COMMAND_char@@%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 = @@BLOCKING_FACTOR@@ ; 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
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section will be generated automatically by ConfigDefinition.jar based on rusefi_config.txt
; CONFIG_DEFINITION_END
idleRpmPid_offset = "Constant base value"
[Tuning]
spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators.
cursorDepth = 2 ; Same as spot depth.
gaugeColumns = 1 ; Only 1 or 2 are valid.
pageButtons = "&EGO"
gauge1 = RPMGauge
#if LAMBDA
gauge2 = lambda1Gauge
#else
gauge2 = afr1Gauge
#endif
gauge3 = MAPGauge
gauge4 = veValueGauge
[LoggerDefinition]
; valid logger types: composite, tooth, trigger, csv
; loggerDef = compositeLogger, "Primary Trigger Logger", tooth
loggerDef = compositeLogger, "Trigger Logger", composite
startCommand = "l\x01"
stopCommand = "l\x02"
dataReadCommand = "L"
dataReadTimeout = 10000 ; time in ms
dataReadyCondition = { toothLogReady }
continuousRead = true
; each packet is @@COMPOSITE_PACKET_SIZE@@ and we have @@COMPOSITE_PACKET_COUNT@@ of those
dataLength = @@COMPOSITE_DATA_LENGTH_HALF@@
;tooth
; recordDef = headerLen, footerLen, recordLen
; recordDef = 0, 0, @@COMPOSITE_PACKET_SIZE@@
; uint16 that stores 1/100 second
; recordField = toothTime, "tooth", 0, 16, 0.01, "ms"
; recordDef = headerLen, footerLen, recordLen
recordDef = 0, 0, @@COMPOSITE_PACKET_SIZE@@
; these names are hard-coded inside TS
recordField = priLevel, "PriLevel", 0, 1, 1.0, "Flag"
recordField = secLevel, "SecLevel", 1, 1, 1.0, "Flag"
recordField = trigger, "Trigger", 2, 1, 1.0, "Flag"
recordField = sync, "Sync", 3, 1, 1.0, "Flag"
recordField = coil, "Coil", 4, 1, 1.0, "Flag"
recordField = inj, "Injector", 5, 1, 1.0, "Flag"
recordField = time, "Time", 8, 32, 0.001, "ms"
; it seems that TS also needs to know the diff.size of a tooth
calcField = toothTime, "ToothTime", "ms", { time - pastValue(time, 1) }
[VeAnalyze]
; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition
#if LAMBDA
veAnalyzeMap = veTableTbl, lambdaTableTbl, lambdaValue, egoCorrectionForVeAnalyze, { 1 }
lambdaTargetTables = lambdaTableTbl, afrTSCustom
#else
veAnalyzeMap = veTableTbl, afrTableTbl, AFRValue, egoCorrectionForVeAnalyze, { 1 }
lambdaTargetTables = afrTableTbl, afrTSCustom
#endif
; filter = Name, "DisplayName", outputChannel, operator, defaultVal, userAdjustable
filter = minRPMFilter, "Minimum RPM", RPMValue, < , 500, , true
filter = minCltFilter, "Minimum CLT", coolant, < , 60, , true
filter = deltaTps, "dTPS", deltaTps > , 50, , true
filter = VBatt, "VBatt", VBatt < , 12, , true
filter = minTps, "Minimum TPS", TPSValue, < , 1, , true
;
; in order to add new TunerStudio gauge you need to chagne two places
; 1) add a line here in '[OutputChannels]'
; 2) in rusEFI firmware make a change to tunerstudio_outputs.h
;
[OutputChannels]
ochGetCommand = "O%2o%2c"
; see TS_OUTPUT_SIZE in console source code
ochBlockSize = @@TS_OUTPUT_SIZE@@
;
; see TunerStudioOutputChannels struct
;
; Bit flags
sd_present = bits, U32, 0, [0:0], "true", "false";
isIgnitionEnabledIndicator=bits,U32, 0, [1:1], "true", "false";
isInjectionEnabledIndicator=bits,U32,0, [2:2], "true", "false";
isCylinderCleanupActivated=bits,U32, 0, [4:4], "true", "false";
ind_fuel_pump = bits, U32, 0, [5:5], "true", "false";
ind_fan = bits, U32, 0, [6:6], "true", "false";
ind_o2_heater = bits, U32, 0, [7:7], "true", "false";
ind_check_engine= bits, U32, 0, [8:8], "true", "false";
needBurn = bits, U32, 0, [9:9], "true", "false";
clutchUpState =bits, U32, 0, [11:11], "true", "false";
clutchDownState =bits, U32, 0, [12:12], "true", "false";
brakePedalIndicator=bits, U32, 0, [15:15], "true", "false";
toothLogReady =bits, U32, 0, [16:16], "true", "false";
acSwitchState =bits, U32, 0, [17:17], "true", "false";
isTpsError = bits, U32, 0, [18:18], "true", "false";
ind_clt_error = bits, U32, 0, [19:19], "true", "false";
; not implemented
; ind_map_error = bits, U32, 0, [20:20], "true", "false";
ind_iat_error = bits, U32, 0, [21:21], "true", "false";
acState = bits, U32, 0, [22:22], "true", "false";
ind_isTriggerError = bits, U32, 0, [23:23], "true", "false";
ind_hasFatalError=bits, U32, 0, [24:24], "true", "false";
ind_isWarnNow =bits, U32, 0, [25:25], "true", "false";
ind_pedal_error =bits, U32, 0, [26:26], "true", "false";
isTps2Error = bits, U32, 0, [29:29], "true", "false";
isIdleClosedLoop= bits, U32, 0, [30:30], "true", "false";
isIdleCoasting = bits, U32, 0, [31:31], "true", "false";
; RPM, vss
RPMValue = scalar, U16, 4, "RPM", 1, 0.00000
rpmAcceleration = scalar, S16, 6, "RPM/s", 1, 0
speedToRpmRatio = scalar, S16, 8, "value",{1/@@PACK_MULT_PERCENT@@}, 0
vehicleSpeedKph = scalar, U08, 10, "kph", 1, 0.0
; temperatures
internalMcuTemperature = scalar,S08, 11, "deg C", 1, 0
coolant = scalar, S16, 12, "deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0.0
intake = scalar, S16, 14, "deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0.0
auxt1 = scalar, S16, 16, "deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0.0
auxt2 = scalar, S16, 18, "deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0.0
; throttle, pedal
TPSValue = scalar, S16, 20, "%",{1/@@PACK_MULT_PERCENT@@}, 0
throttlePedalPosition = scalar,S16, 22, "%",{1/@@PACK_MULT_PERCENT@@}, 0
tpsADC = scalar, U16, 24, "ADC", 1, 0.0;
; air flow/mass measurments
MAFValue = scalar, U16, 26, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0
massAirFlowValue= scalar, U16, 28, "Kg/h", {1/@@PACK_MULT_MASS_FLOW@@}, 0
MAPValue = scalar, U16, 30, "kPa",{1/@@PACK_MULT_PRESSURE@@}, 0.0
baroPressure = scalar, U16, 32, "kPa",{1/@@PACK_MULT_PRESSURE@@}, 0.0
lambdaValue = scalar, U16, 34, "",{1/@@PACK_MULT_LAMBDA@@}, 0.0
; misc sensors
VBatt = scalar, U16, 38, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
oilPressure = scalar, U16, 40, "kPa",{1/@@PACK_MULT_PRESSURE@@}, 0.0
vvtPositionB1I = scalar, S16, 42, "deg",{1/@@PACK_MULT_ANGLE@@}, 0
; 10 bit TPS ADC value (from 0 to 1023 in 5v scale)
;tpsADC2 = scalar, U16, 44, "ADC", 1, 0.0;
; fuel math
chargeAirMass = scalar, U16, 44, "g",0.001, 0
crankingFuelMs = scalar, U16, 46, "mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0.0
currentTargetAfr= scalar, U16, 48, "ratio",{1/@@PACK_MULT_AFR@@}, 0
baseFuel = scalar, U16, 50, "mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0
fuelRunning = scalar, U16, 52, "mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0
actualLastInjection=scalar,U16, 54, "ms",{1/@@PACK_MULT_MS@@}, 0.0
injectorDutyCycle=scalar, U08, 56, "%", 0.5, 0
veValue = scalar, U08, 57, "ratio", 0.5, 0
injectionOffset = scalar, S16, 58, "deg",{1/@@PACK_MULT_ANGLE@@}, 0
tCharge = scalar, U16, 60, "deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0.0
; Corrections
injectorLagMs = scalar, U16, 62, "ms",{1/@@PACK_MULT_MS@@}, 0.0
iatCorrection = scalar, S16, 64, "%",{1/@@PACK_MULT_PERCENT@@}, 0
cltCorrection = scalar, S16, 66, "%",{1/@@PACK_MULT_PERCENT@@}, 0
baroCorrection = scalar, S16, 68, "%",{1/@@PACK_MULT_PERCENT@@}, 0
fuelPidCorrection=scalar, S16, 296, "%",{1/@@PACK_MULT_PERCENT@@}, 0
fuelPidCorrection2=scalar, S16, 298, "%",{1/@@PACK_MULT_PERCENT@@}, 0
; Wall model AE
wallFuelAmount = scalar, U16, 72, "ms",{1/@@PACK_MULT_MS@@}, 0
wallFuelCorrection=scalar, S16, 74, "ms",0.001, 0
; TPS/load AE
unusedLoadDelta = scalar, S16, 76, "value",{1/@@PACK_MULT_PERCENT@@}, 0
deltaTps = scalar, S16, 78, "ratio",{1/@@PACK_MULT_PERCENT@@}, 0
unusedLoadAccelExtra=scalar,S16, 80, "value",{1/@@PACK_MULT_PERCENT@@}, 0
tpsAccelFuel = scalar, U16, 82, "ms",{1/@@PACK_MULT_MS@@}, 0
; Ignition
ignitionAdvance = scalar, S16, 84, "deg",{1/@@PACK_MULT_ANGLE@@}, 0.0
sparkDwellValue = scalar, U16, 86, "ms",{1/@@PACK_MULT_MS@@}, 0.0
coilDutyCycle = scalar, S16, 88, "%",{1/@@PACK_MULT_PERCENT@@}, 0
; Idle & ETB
idleAirValvePosition=scalar,S16, 90, "%",{1/@@PACK_MULT_PERCENT@@}, 0
etbTarget = scalar, S16, 92, "%",{1/@@PACK_MULT_PERCENT@@}, 0
etb1DutyCycle = scalar, S16, 94, "%",{1/@@PACK_MULT_PERCENT@@}, 0
etb1Error = scalar, S16, 96, "%",{1/@@PACK_MULT_PERCENT@@}, 0
; Fuel system
fuelTankLevel = scalar, U16, 98, "%",{1/@@PACK_MULT_PERCENT@@}, 0
totalFuelConsumption=scalar,U16, 100, "grams", 1, 0
fuelFlowRate = scalar, U16, 102, "gram/s",{1/@@PACK_MULT_FUEL_FLOW@@}, 0
; Y axis values for selectable tables
veTableYAxis = scalar, U16, 104, "%", 0.01, 0
afrTableYAxis = scalar, U16, 106, "%", 0.01, 0
; Knock
knockLevel = scalar, F32, 108, "Volts", 1, 0
knockCount = scalar, U16, 306, "count", 1, 0
; Mode, firmware, protocol, run time
; TS requires 'seconds' name since it has special internal meaning
seconds = scalar, U32, 112, "sec", 1, 0.0
engineMode = scalar, U32, 116, "em", 1, 0.0;
firmwareVersion = scalar, U32, 120,"version_f", 1, 0
; calibation helpers
calibrationValue = scalar, F32, 128, "", 1, 0
calibrationMode = scalar, U08, 132, "", 1, 0
; 1 bytes padding1
fuelingLoad = scalar, U16, 134, "%", 0.01, 0
ignitionLoad = scalar, U16, 136, "%", 0.01, 0
engineMakeCodeNameCrc16= scalar, U16, 138, "crc16", 1, 0
; Errors
totalTriggerErrorCounter=scalar,U32, 140,"counter", 1, 0
; orderingErrorCounter 144
warningCounter = scalar, U16, 148, "count", 1, 0
lastErrorCode = scalar, U16, 150, "error", 1, 0
recentErrorCode0= scalar, U16, 152, "error", 1, 0
recentErrorCode1= scalar, U16, 154, "error", 1, 0
recentErrorCode2= scalar, U16, 156, "error", 1, 0
recentErrorCode3= scalar, U16, 158, "error", 1, 0
recentErrorCode4= scalar, U16, 160, "error", 1, 0
recentErrorCode5= scalar, U16, 162, "error", 1, 0
recentErrorCode6= scalar, U16, 164, "error", 1, 0
recentErrorCode7= scalar, U16, 166, "error", 1, 0
; Debug
debugFloatField1= scalar, F32, 168, "val", 1, 0.0
debugFloatField2= scalar, F32, 172, "val", 1, 0.0
debugFloatField3= scalar, F32, 176, "val", 1, 0.0
debugFloatField4= scalar, F32, 180, "val", 1, 0.0
debugFloatField5= scalar, F32, 184, "val", 1, 0.0
debugFloatField6= scalar, F32, 188, "val", 1, 0.0
debugFloatField7= scalar, F32, 192, "val", 1, 0.0
debugIntField1 = scalar, S32, 196, "val", 1, 0.0
debugIntField2 = scalar, S32, 200, "val", 1, 0.0
debugIntField3 = scalar, S32, 204, "val", 1, 0.0
debugIntField4 = scalar, S16, 208, "val", 1, 0.0
debugIntField5 = scalar, S16, 210, "val", 1, 0.0
; Accel
accelerationX = scalar, S16, 212, "G", {1/@@PACK_MULT_PERCENT@@}, 0
accelerationY = scalar, S16, 214, "G", {1/@@PACK_MULT_PERCENT@@}, 0
accelerationZ = scalar, S16, 308, "G", {1/@@PACK_MULT_PERCENT@@}, 0
accelerationRoll= scalar, S16, 310, "G", {1/@@PACK_MULT_PERCENT@@}, 0
accelerationYaw = scalar, S16, 312, "G", {1/@@PACK_MULT_PERCENT@@}, 0
; egt
egt1 = scalar, S16, 216, "deg C", 1, 0
egt2 = scalar, S16, 218, "deg C", 1, 0
egt3 = scalar, S16, 220, "deg C", 1, 0
egt4 = scalar, S16, 222, "deg C", 1, 0
egt5 = scalar, S16, 224, "deg C", 1, 0
egt6 = scalar, S16, 226, "deg C", 1, 0
egt7 = scalar, S16, 228, "deg C", 1, 0
egt8 = scalar, S16, 230, "deg C", 1, 0
TPS2Value = scalar, S16, 232, "%",{1/@@PACK_MULT_PERCENT@@}, 0
rawTps1Primary = scalar, U16, 234, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawPpsPrimary = scalar, U16, 236, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawClt = scalar, U16, 238, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawIat = scalar, U16, 240, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawOilPressure = scalar, U16, 242, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawPpsSecondary = scalar, U16, 248, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
; we use this to match logs to tunes
tuneCrc16 = scalar, U16, 244, "crc16", 1, 0
sd_logging_internal = bits, U08, 246, [0:0], "true", "false"
sd_msd = bits, U08, 246, [1:1], "true", "false"
ind_fan_2 = bits, U08, 246, [2:2], "true", "false"
; Transmission
tcuCurrentGear = scalar, S08, 247, "gear", 1, 0
knock1 = scalar, S08, 250, "dbv", 1, 0
knock2 = scalar, S08, 251, "dbv", 1, 0
knock3 = scalar, S08, 252, "dbv", 1, 0
knock4 = scalar, S08, 253, "dbv", 1, 0
knock5 = scalar, S08, 254, "dbv", 1, 0
knock6 = scalar, S08, 255, "dbv", 1, 0
knock7 = scalar, S08, 256, "dbv", 1, 0
knock8 = scalar, S08, 257, "dbv", 1, 0
knock9 = scalar, S08, 258, "dbv", 1, 0
knock10 = scalar,S08, 259, "dbv", 1, 0
knock11 = scalar,S08, 260, "dbv", 1, 0
knock12 = scalar,S08, 261, "dbv", 1, 0
tcuDesiredGear = scalar, S08, 262, "gear", 1, 0
flexPercent = scalar, U08, 263, "%", 0.5, 0
rawIdlePositionSensor = scalar, U16, 264, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawWastegatePosition = scalar, U16, 266, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
wastegatePositionSensor = scalar, S16, 268, "%",{1/@@PACK_MULT_PERCENT@@}, 0
idlePositionSensor = scalar, S16, 270, "%",{1/@@PACK_MULT_PERCENT@@}, 0
rawLowFuelPressure = scalar, U16, 272, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0
rawHighFuelPressure = scalar, U16, 274, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0
lowFuelPressure = scalar, S16, 276, "kpa", {1/@@PACK_MULT_PRESSURE@@}, 0
highFuelPressure = scalar, S16, 278, "bar", {1/@@PACK_MULT_HIGH_PRESSURE@@}, 0
targetLambda = scalar, U16, 280, "",{1/@@PACK_MULT_LAMBDA@@}, 0.0
AFRValue = scalar, U16, 282, "AFR",{1/@@PACK_MULT_AFR@@}, 0.0
VssAcceleration = scalar, S16, 284, "m/s2", {1/@@PACK_MULT_MS@@}, 0.0
lambdaValue2 = scalar, U16, 286, "",{1/@@PACK_MULT_LAMBDA@@}, 0.0
AFRValue2 = scalar, U16, 288, "AFR",{1/@@PACK_MULT_AFR@@}, 0.0
vvtPositionB1E=scalar,S16, 290, "deg",{1/@@PACK_MULT_ANGLE@@}, 0
vvtPositionB2I=scalar,S16, 292, "deg",{1/@@PACK_MULT_ANGLE@@}, 0
vvtPositionB2E=scalar,S16, 294, "deg",{1/@@PACK_MULT_ANGLE@@}, 0
rawTps1Secondary = scalar, U16, 300, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawTps2Primary = scalar, U16, 302, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawTps2Secondary = scalar, U16, 304, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
;
; see TunerStudioOutputChannels struct
;
; todo: generate this section programmatically
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
time = { timeNow }
egoCorrectionForVeAnalyze = { 100 + fuelPidCorrection }
; These "synthetic" channels provide the Y-axis (load) value for gen purp PWM table's Y axes
gppwm1_load = {(gppwm1_loadAxis == 0) ? TPSValue : ((gppwm1_loadAxis == 1) ? MAPValue : ((gppwm1_loadAxis == 2) ? coolant : ((gppwm1_loadAxis == 3) ? intake : ((gppwm1_loadAxis == 4) ? fuelingLoad : ignitionLoad))))}
gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : ((gppwm2_loadAxis == 3) ? intake : ((gppwm2_loadAxis == 4) ? fuelingLoad : ignitionLoad))))}
gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : ((gppwm3_loadAxis == 3) ? intake : ((gppwm3_loadAxis == 4) ? fuelingLoad : ignitionLoad))))}
gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : ((gppwm4_loadAxis == 3) ? intake : ((gppwm4_loadAxis == 4) ? fuelingLoad : ignitionLoad))))}
[PcVariables]
tuneCrcPcVariable = continuousChannelValue, tuneCrc16
wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1;
wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0
gearCountArray = array, S08, [@@TCU_GEAR_COUNT@@], "Gear", 1, 0, -1, { @@TCU_GEAR_COUNT@@ - 2 }, 0, noMsqSave
solenoidCountArray = array, U08, [@@TCU_SOLENOID_COUNT@@], "Solenoid", 1, 0, 1, @@TCU_SOLENOID_COUNT@@, 0, noMsqSave
; These are inverted (false = "Yes") so that they default to enabled
enableLogDebugChannels = bits, U08, [0:0], "Yes", "No"
enableLogErrorList = bits, U08, [0:0], "Yes", "No"
; wall of debug mode :)
; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields
; Alternator TPS Acceleration GPPWM Idle Engine Load Acc Trigger Counters VVT1 PID VVT Sync Cranking Ignition Timing Fu Corr VSS SD Card Knock Wall Wetting ETB PID Executor InstantRpm FSIO_1_7 CJ125 CAN MAP TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL Injector flow compensation DYNO_VIEW LOGIC_ANALYZER Wideband TCU Lua VVT2 PID VVT3 PID VVT4 PID
; 0 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
; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_GPPWM DBG_IDLE_CONTROL
debugFieldF1List = bits, U08, [0:7], "Alt: Controller Output", "From TPS", "GPPWM 1", "Idle: Controller Output", "Idle output", "Channel 1 Rise Counter", "", "VVT1: Controller Output","VVT Event Position", "", "Ign IAT Corr", "", "", "Total SD", "last volts", "", "WW: Alpha", "ETB Controller Output", "", "", "df1", "df1", "InstantRpm", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset", "Pressure across injector(kpa)", "VSS", "", "WB: Pump DAC duty", "", "Lua Debug 1", "VVT2: Controller Output","VVT3: Controller Output","VVT4: Controller Output"
debugFieldF2List = bits, U08, [0:7], "Alt: I Term", "To TPS", "GPPWM 2", "Idle: I Term", "Idle df2", "Channel 2 Rise Counter", "", "VVT1: I Term", "VVT Ratio", "", "Ign CLT Corr", "", "", "Write Cnt","last filtered","", "WW: Beta", "ETB I Term", "", "", "df2", "df2", "InstantRPM Ratio","fsio 2", "24:df2", "CJ125: i term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "Pressure ratio vs. nominal", "Speed", "", "WB: ESR", "", "Lua Debug 2", "VVT2: I Term", "VVT3: I Term", "VVT4: I Term"
debugFieldF3List = bits, U08, [0:7], "Alt: Previous Error", "Current TPS<>TPS", "GPPWM 3", "Idle: prev error", "Idle df3", "ICU sum", "", "VVT1: prev error", "", "", "Ign FSIO Adj", "", "", "Sync Cnt", "", "", "WW: film mass", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "TPS1/2 Diff", "", "", "", "Boost Duty", "S unused" "", "Tu", "", "fsio 10", "", "Flow ratio vs. configured", "DeltaSpeed", "", "WB: Nernst Voltage", "", "Lua Debug 3", "VVT2: prev error", "VVT3: prev error", "VVT4: prev error"
debugFieldF4List = bits, U08, [0:7], "Alt: I Gain", "Extra Fuel", "GPPWM 4", "Idle: I Gain", "Idle df4", "VVT rise", "", "VVT1: I Gain", "", "", "Ign PID Adj", "", "", "File Cnt", "", "", "WW: m_cmd", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "MAP Estimate", "", "", "", "", "Acc Pedal Pri/Sec Diff","", "", "", "Boost Target", "S unused" "", "Ku", "", "fsio 11", "", "", "accel", "", "WB: Lambda", "", "Lua Debug 4", "VVT2: I Gain", "VVT3: I Gain", "VVT4: I Gain"
debugFieldF5List = bits, U08, [0:7], "Alt: D Gain", "df5", "df5", "Idle: D Gain", "Idle df5", "VVT fall", "df5", "VVT1: D Gain", "", "", "", "", "", "", "", "", "WW: film mass next","ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "TPS1 Pri/Sec Ratio", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "", "", "", "", "", "Lua Debug 5", "VVT2: D Gain", "VVT3: D Gain", "VVT4: D Gain"
debugFieldF6List = bits, U08, [0:7], "Alt: D Term", "", "", "Idle: D Term", "Idle df6", "Current Gap", "", "VVT1: D Term", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "", "", "", "", "", "Lua Debug 6", "VVT2: D Term", "VVT3: D Term", "VVT4: D Term"
debugFieldF7List = bits, U08, [0:7], "Alt: Max-Value", "", "", "Idle: Max-Value", "Idle df7", "", "", "VVT1: Max-Value", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "", "", "", "", "", "Lua Debug 7", "", "", ""
debugFieldI1List = bits, U08, [0:7], "Alt: P Gain", "", "", "Idle: P Gain", "Idle di1", "Channel 1 Fall Counter", "", "VVT1: P Gain", "VVT Sync Counter", "Cycle Counter", "Multispark Count", "", "", "", "hip corr", "", "", "ETB P-Gain", "t counter", "", "di1", "di1", "Spark Event Gap","", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count", "", "", "", "", "", "", "deltatime", "", "", "Solenoid 1 State", "Lua memory used","VVT2: P Gain", "VVT3: P Gain", "VVT4: P Gain"
debugFieldI2List = bits, U08, [0:7], "Alt: Offset", "", "", "Idle: Offset", "Idle di2", "Channel 2 Fall Counter", "", "VVT1: Offset", "", "", "", "", "", "", "hip incor", "", "", "ETB di2", "invocationcounter", "", "di2", "di2", "Inj Event Gap", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "Starter Enable", "", "", "", "", "", "", "", "", "", "Solenoid 2 State", "", "VVT2: Offset", "VVT3: Offset", "VVT4: Offset"
debugFieldI3List = bits, U08, [0:7], "Alt: Reset Cnt", "", "", "Idle: Reset Cnt", "Idle di3", "Cycle Index", "", "VVT1: 10xTarget", "", "", "", "", "", "", "", "", "", "ETB di3", "s counter", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "Starter Disable","", "", "", "", "", "", "", "", "", "Solenoid 3 State", "", "VVT2: 10xTarger", "VVT3: 10xTarger", "VVT4: 10xTarger"
debugFieldI4List = bits, U08, [0:7], "Alt: Period", "", "", "Idle: State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "executor", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "", "", "", "", "Solenoid 4 State", "", "", "", ""
debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "max executor", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "", "", "", "", "Solenoid 5 State", "", "", "", ""
[ConstantsExtensions]
; defaultValue is used to provide TunerStudio with a value to use in the case of
; the constant not yet being initialized. This is primarily important if the
; constant is used as a variable in the ini.
; defaultValue = constantName, value;
defaultValue = wueAfrTargetOffset, -1.5 -1.4 -1.15 -0.95 -0.775 -0.65 -0.5625 -0.5 -0.4375 -0.375 -0.3125 -0.25 -0.1875 -0.125 -0.0625 0
; TPS 1 Primary
maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
; TPS 1 Secondary
maintainConstantValue = tps1SecondaryMax, { (calibrationMode == 6 ) ? calibrationValue : tps1SecondaryMax }
maintainConstantValue = tps1SecondaryMin, { (calibrationMode == 7 ) ? calibrationValue : tps1SecondaryMin }
; TPS 2 Primary
maintainConstantValue = tps2Max, { (calibrationMode == 8 ) ? calibrationValue : tps2Max }
maintainConstantValue = tps2Min, { (calibrationMode == 9 ) ? calibrationValue : tps2Min }
; TPS 2 Secondary
maintainConstantValue = tps2SecondaryMax, { (calibrationMode == 10 ) ? calibrationValue : tps2SecondaryMax }
maintainConstantValue = tps2SecondaryMin, { (calibrationMode == 11 ) ? calibrationValue : tps2SecondaryMin }
; ETB Auto Gain Calibration
maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor }
maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor }
maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor }
requiresPowerCycle = useETBforIdleControl
requiresPowerCycle = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
requiresPowerCycle = binarySerialRxPin
requiresPowerCycle = etb_use_two_wires
requiresPowerCycle = etbFreq
requiresPowerCycle = etbFunctions1
requiresPowerCycle = etbFunctions2
requiresPowerCycle = idle_solenoidFrequency
requiresPowerCycle = boostPwmFrequency
requiresPowerCycle = alternatorPwmFrequency
requiresPowerCycle = auxPidFrequency1
requiresPowerCycle = auxPidFrequency2
requiresPowerCycle = auxPidPins1
requiresPowerCycle = auxPidPins2
requiresPowerCycle = auxPidPins3
requiresPowerCycle = auxPidPins4
requiresPowerCycle = fsioOutputPins1
requiresPowerCycle = fsioOutputPins2
requiresPowerCycle = fsioOutputPins3
requiresPowerCycle = fsioOutputPins4
requiresPowerCycle = fsioOutputPins5
requiresPowerCycle = fsioOutputPins6
requiresPowerCycle = fsioFrequency1
requiresPowerCycle = fsioFrequency2
requiresPowerCycle = fsioFrequency3
requiresPowerCycle = fsioFrequency4
requiresPowerCycle = fsioFrequency5
requiresPowerCycle = fsioFrequency6
requiresPowerCycle = auxAnalogInputs1
requiresPowerCycle = auxAnalogInputs2
requiresPowerCycle = auxAnalogInputs3
requiresPowerCycle = auxAnalogInputs4
requiresPowerCycle = auxAnalogInputs5
requiresPowerCycle = auxAnalogInputs6
requiresPowerCycle = auxAnalogInputs7
requiresPowerCycle = auxAnalogInputs8
readOnly = warning_message
defaultValue = gearCountArray, -1 0 1 2 3 4 5 6 7 8
readOnly = gearCountArray
defaultValue = solenoidCountArray, 1 2 3 4 5 6 7 8
readOnly = solenoidCountArray
[CurveEditor]
; xAxis = leftValue, rightValue, step
; yAxis = bottomValue, topValue, step
curve = knockThresholdCurve, "Engine knock threshold RPM based"
columnLabel = "RPM", "Threshold"
xAxis = 0, 8000, 9
yAxis = 0, 8, 10
xBins = knockNoiseRpmBins, RPMValue
yBins = knockNoise
gauge = RPMGauge
curve = swKnockThresholdCurve, "Engine knock threshold RPM based"
columnLabel = "RPM", "Threshold dB"
xAxis = 0, 8000, 9
yAxis = -30, 0, 10
xBins = ignitionRpmBins, RPMValue
yBins = knockBaseNoise
gauge = RPMGauge
curve = narrowToWideOxygenCurve, "Narrow to Wideband approximation"
columnLabel = "Voltage", "AFR"
xAxis = 0, 6, 10
yAxis = 0, 28, 10
xBins = narrowToWideOxygenBins
yBins = narrowToWideOxygen
#if LAMBDA
gauge = lambda1Gauge
#else
gauge = afr1Gauge
#endif
curve = fsioCurve1, "FSIO Curve #1"
columnLabel = "X", "Y"
xAxis = 0, 128, 10
yAxis = -155, 150, 10
xBins = fsioCurve1Bins
yBins = fsioCurve1
curve = fsioCurve2, "FSIO Curve #2"
columnLabel = "X", "Y"
xAxis = 0, 128, 10
yAxis = -150, 150, 10
xBins = fsioCurve2Bins
yBins = fsioCurve2
curve = fsioCurve3, "FSIO Curve #3"
columnLabel = "X", "Y"
xAxis = 0, 128, 10
yAxis = -5, 5, 10
xBins = fsioCurve3Bins
yBins = fsioCurve3
curve = fsioCurve4, "FSIO Curve #4"
columnLabel = "X", "Y"
xAxis = 0, 128, 10
yAxis = -5, 5, 10
xBins = fsioCurve4Bins
yBins = fsioCurve4
curve = mapAccelTaper, "Engine Load Acceleration Enrichment Taper"
columnLabel = "Distance", "Multiplier"
xAxis = 0, 128, 10
yAxis = -5, 5, 10
xBins = mapAccelTaperBins
yBins = mapAccelTaperMult
curve = dwellCorrection, "Dwell time base"
columnLabel = "RPM", "Dwell"
xAxis = 0, 8000, 9
yAxis = 0, 8, 9
xBins = sparkDwellRpmBins, RPMValue
yBins = sparkDwellValues
gauge = RPMGauge
curve = dwellVoltageCorrection, "Dwell voltage correction"
columnLabel = "Battery Volts", "Multiplier"
xAxis = 6, 16, 11
yAxis = 0, 3, 7
xBins = dwellVoltageCorrVoltBins, VBatt
yBins = dwellVoltageCorrValues
gauge = VBattGauge
curve = map_samplingAngleCurve, "MAP Sampling Start Angle"
columnLabel = "RPM", "Angle"
xAxis = 0, 8000, 9
yAxis = 0, 180, 10
xBins = map_samplingAngleBins, RPMValue
yBins = map_samplingAngle
gauge = MAPGauge
curve = map_samplingWindowCurve, "MAP Sampling Duration"
columnLabel = "RPM", "Window"
xAxis = 0, 8000, 9
yAxis = 0, 180, 10
xBins = map_samplingWindowBins, RPMValue
yBins = map_samplingWindow
gauge = MAPGauge
curve = injectorsDeadTime, "Injector dead time"
columnLabel = "Battery", "Dead Time"
xAxis = 6, 16, 11
yAxis = 0, 8, 9
xBins = injector_battLagCorrBins, VBatt
yBins = injector_battLagCorr
gauge = VBattGauge
curve = vrThresholdCurve1, "VR 1 Threshold"
columnLabel = "RPM", "Voltage"
xAxis = 0, 8000, 9
yAxis = 0, 2.5, 6
xBins = vrThreshold1_rpmBins, RPMValue
yBins = vrThreshold1_values
curve = vrThresholdCurve2, "VR 2 Threshold"
columnLabel = "RPM", "Voltage"
xAxis = 0, 8000, 9
yAxis = 0, 2.5, 6
xBins = vrThreshold2_rpmBins, RPMValue
yBins = vrThreshold2_values
curve = mafDecodingCurve, "MAF sensor"
columnLabel = "Voltage", "kg/hour"
xAxis = -1, 6, 10
yAxis = -30, 1300, 10
xBins = mafDecodingBins, MAFValue
yBins = mafDecoding
gauge = MAFGauge
curve = iatFuelCorrCurve, "Intake air temperature fuel Multiplier"
columnLabel = "Air Temp", "Multiplier"
xAxis = -40, 120, 9
yAxis = 0, 2, 11
xBins = iatFuelCorrBins, intake
yBins = iatFuelCorr
gauge = IATGauge
curve = cltTimingCorrCurve, "Warmup timing correction"
columnLabel = "Coolant", "Extra"
xAxis = -40, 120, 9
yAxis = 0, 20, 9
xBins = cltTimingBins, coolant
yBins = cltTimingExtra
gauge = CLTGauge
curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier"
columnLabel = "Coolant", "Multiplier"
xAxis = -40, 120, 9
yAxis = 0, 3, 10
xBins = cltFuelCorrBins, coolant
yBins = cltFuelCorr
gauge = CLTGauge
curve = crankingCltCurve, "Cranking Coolant Temperature Multiplier"
columnLabel = "Coolant", "Multiplier"
xAxis = -40, 120, 9
yAxis = 0, 3, 10
xBins = crankingFuelBins, coolant
yBins = crankingFuelCoef
gauge = CLTGauge
curve = etbTpsBiasCurve, "Electronic TB Bias Curve"
columnLabel = "TPS", "duty bias"
xAxis = 0, 50, 11
yAxis = -40, 40, 9
xBins = etbBiasBins, TPSValue
yBins = etbBiasValues
gauge = TPSGauge
curve = crankingTpsCurve, "Cranking TPS Multiplier"
columnLabel = "TPS", "Multiplier"
xAxis = 0, 100, 11
yAxis = 0, 3, 10
xBins = crankingTpsBins, TPSValue
yBins = crankingTpsCoef
gauge = TPSGauge
curve = crankingDurationCurve, "Cranking Duration Multiplier"
columnLabel = "Engine Cycle", "Multiplier"
xAxis = 0, 50, 11
yAxis = 0, 5, 6
xBins = crankingCycleBins
yBins = crankingCycleCoef
curve = cltIdleCurve, "Warmup Idle multiplier"
columnLabel = "Coolant", "Multiplier"
xAxis = -40, 120, 10
yAxis = 0, 3, 10
xBins = cltIdleCorrBins, coolant
yBins = cltIdleCorr
gauge = CLTGauge
curve = iacCoastingCurve, "Coasting IAC Position for Auto-Idle"
columnLabel = "Coolant", "Multiplier"
xAxis = -40, 120, 9
yAxis = 0, 100, 10
xBins = iacCoastingBins, coolant
yBins = iacCoasting
gauge = idleAirValvePositionGauge
curve = cltCrankingCurve, "Cranking Idle Air multiplier"
columnLabel = "Coolant", "Multiplier"
xAxis = -40, 120, 9
yAxis = 0, 3, 10
xBins = cltCrankingCorrBins, coolant
yBins = cltCrankingCorr
gauge = CLTGauge
curve = cltIdleRPMCurve, "Idle Target RPM"
columnLabel = "Coolant", "RPM"
xAxis = -40, 120, 9
yAxis = 0, 2400, 13
xBins = cltIdleRpmBins, coolant
yBins = cltIdleRpm, RPMValue
gauge = CLTGauge
curve = idleAdvanceCurve, "Idle Advance Angle"
columnLabel = "RPM", "degrees"
xAxis = 0, 2400, 13
yAxis = -100, 100, 11
xBins = idleAdvanceBins, RPMValue
yBins = idleAdvance
gauge = RPMGauge
curve = idleVeCurve, "Idle VE"
columnLabel = "RPM", "%"
xAxis = 0, 2400, 13
yAxis = 0, 250, 11
xBins = idleVeBins, RPMValue
yBins = idleVe
#if LAMBDA
gauge = lambda1Gauge
#else
gauge = afr1Gauge
#endif
curve = crankingAdvanceCurve, "Cranking Advance Angle"
columnLabel = "RPM", "degrees"
xAxis = 0, 1200, 13
yAxis = -30, 30, 11
xBins = crankingAdvanceBins, RPMValue
yBins = crankingAdvance
gauge = RPMGauge
curve = fuelLevelCurve, "Fuel Level"
columnLabel = "Voltage", "%"
xAxis = 0, 5, 6
yAxis = 0, 100, 11
xBins = fuelLevelBins
yBins = fuelLevelValues
gauge = fuelTankLevelGauge
curve = wueAfrTargetOffsetCurve, "AFR Target Temperature Adjustment"
columnLabel = "Coolant", "AFR Offset"
xAxis = -40, 200, 9
yAxis = -3, 1, 5
xBins = cltFuelCorrBins, coolant
yBins = wueAfrTargetOffset
gauge = cltGauge
curve = wueAnalyzer_warmup_curve, "Warmup Enrichment"
columnLabel = "Coolant", "Current WUE", "Coolant", "Corrected"
xAxis = -40, 200, 9
yAxis = 90, 500, 6
xBins = cltFuelCorrBins, coolant
yBins = cltFuelCorr
yBins = wueAnalRecommend
;gauge = cltGauge
lineLabel = "Warmup Correction"
lineLabel = "Recommended WUE"
[TableEditor]
; table_id, map3d_id, "title", page
; move table into a panel? or find a way to add a link to https://rusefi.com//wiki/index.php?title=Manual:Software:TPSTPS
table = tpsTpsAccelTbl, tpsTpsAccelMap, "TPS/TPS Acceleration Extra Fuel(ms)", 1
topicHelp = "tpstpsHelp"
xBins = tpsTpsAccelFromRpmBins, TPSValue
yBins = tpsTpsAccelToRpmBins, TPSValue
zBins = tpsTpsAccelTable
table = boostTableTbl, boostMapOpen, "Boost control duty cycle (open loop)", 1
xBins = boostRpmBins, RPMValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "Boost control target", 1
xBins = boostRpmBins, RPMValue
yBins = boostTpsBins, TPSValue
zBins = boostTableClosedLoop
table = vvtTable1Tbl, vvtTable1Map, "vvt Table Intake", 1
xBins = vvtTable1RpmBins, RPMValue
yBins = vvtTable1LoadBins, fuelingLoad
zBins = vvtTable1
table = vvtTable2Tbl, vvtTable2Map, "vvt Table Exhaust", 1
xBins = vvtTable2RpmBins, RPMValue
yBins = vvtTable2LoadBins, fuelingLoad
zBins = vvtTable2
table = fsioTable1Tbl, fsioTable1Map, "FSIO Table #1", 1
xBins = fsioTable1RpmBins, RPMValue
yBins = fsioTable1LoadBins, fuelingLoad
zBins = fsioTable1
table = fsioTable2Tbl, fsioTable2Map, "FSIO Table #2", 1
xBins = fsioTable2RpmBins, RPMValue
yBins = fsioTable2LoadBins, fuelingLoad
zBins = fsioTable2
table = fsioTable3Tbl, fsioTable3Map, "FSIO Table #3", 1
xBins = fsioTable3RpmBins, RPMValue
yBins = fsioTable3LoadBins, fuelingLoad
zBins = fsioTable3
table = fsioTable4Tbl, fsioTable4Map, "FSIO Table #4", 1
xBins = fsioTable4RpmBins, RPMValue
yBins = fsioTable4LoadBins, fuelingLoad
zBins = fsioTable4
table = baroCorrTbl, baroCorrMap, "Baro Correction", 1
; constant, variable
xBins = baroCorrRpmBins, RPMValue
yBins = baroCorrPressureBins, baroPressure
zBins = baroCorrTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = ignitionTableTbl, ignitionTableMap, "Ignition Table", 1
; constant, variable
xBins = ignitionRpmBins, RPMValue
yBins = ignitionLoadBins, ignitionLoad
zBins = ignitionTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = ignitionIatCorrTableTbl, ignitionIatCorrTableMap, "Ignition Intake Air Temp correction", 1
; constant, variable
xBins = ignitionIatCorrRpmBins, RPMValue
yBins = ignitionIatCorrLoadBins, intake
zBins = ignitionIatCorrTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = veTableTbl, veTableMap, "VE Table", 1
; constant, variable
xBins = veRpmBins, RPMValue
yBins = veLoadBins, veTableYAxis
zBins = veTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = mapEstimateTableTbl, mapEstimateTableMap, "MAP Estimate", 1
xBins = mapEstimateRpmBins, RPMValue
yBins = mapEstimateTpsBins, TPSValue
zBins = mapEstimateTable
table = injPhaseTableTbl, injPhaseTableMap, "Injection Phase", 1
topicHelp = "fuelHelp"
; constant, variable
xBins = injPhaseRpmBins, RPMValue
yBins = injPhaseLoadBins, fuelingLoad
zBins = injectionPhase
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(Later)", "(Sooner)"
table = pedalToTpsTbl, pedalToTpsMap, "ETB Pedal to TPS", 1
; constant, variable
xBins = pedalToTpsRpmBins, RPMValue
yBins = pedalToTpsPedalBins, throttlePedalPosition
zBins = pedalToTpsTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(Later)", "(Sooner)"
#if LAMBDA
table = lambdaTableTbl, lambdaTableMap, "Target Lambda Table", 1
#else
table = afrTableTbl, afrTableMap, "Target AFR Table", 1
#endif
; constant, variable
xBins = lambdaRpmBins, RPMValue
yBins = lambdaLoadBins, afrTableYAxis
zBins = lambdaTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1
; constant, variable
xBins = iacPidMultRpmBins, RPMValue
yBins = iacPidMultLoadBins, fuelingLoad
zBins = iacPidMultTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(Later)", "(Sooner)"
table = gppwm1Tbl, gppwm1Map, "GP#1", 1
xyLabels = "RPM", ""
xBins = gppwm1_rpmBins, RPMValue
yBins = gppwm1_loadBins, gppwm1_load
zBins = gppwm1_table
table = gppwm2Tbl, gppwm2Map, "GP#2", 1
xyLabels = "RPM", ""
xBins = gppwm2_rpmBins, RPMValue
yBins = gppwm2_loadBins, gppwm2_load
zBins = gppwm2_table
table = gppwm3Tbl, gppwm3Map, "GP#3", 1
xyLabels = "RPM", ""
xBins = gppwm3_rpmBins, RPMValue
yBins = gppwm3_loadBins, gppwm3_load
zBins = gppwm3_table
table = gppwm4Tbl, gppwm4Map, "GP#4", 1
xyLabels = "RPM", ""
xBins = gppwm4_rpmBins, RPMValue
yBins = gppwm4_loadBins, gppwm4_load
zBins = gppwm4_table
table = tcuSolenoidTableTbl, tcuSolenoidTableMap, "Solenoids Active By Gear", 1
xBins = solenoidCountArray, tcuCurrentGear
yBins = gearCountArray, tcuCurrentGear
zBins = tcuSolenoidTable
xyLabels = "Solenoid", "Gear"
[GaugeConfigurations]
gaugeCategory = Sensors - Extra 2
egt1Gauge = egt1, "EGT#1", "C", 0, 2000
egt2Gauge = egt2, "EGT#2", "C", 0, 2000
egt3Gauge = egt3, "EGT#3", "C", 0, 2000
egt4Gauge = egt4, "EGT#4", "C", 0, 2000
egt5Gauge = egt5, "EGT#5", "C", 0, 2000
egt6Gauge = egt6, "EGT#6", "C", 0, 2000
egt7Gauge = egt7, "EGT#7", "C", 0, 2000
egt8Gauge = egt8, "EGT#8", "C", 0, 2000
rpmAccelerationGa = rpmAcceleration, "rpm delta", "RPM/s", -2000, 2000, -2000, 2000, -2000, 2000, 0, 0
knockLevelGauge = knockLevel,"Knock level", "V", 0, 7, 10, 10, 100, 100, 1, 2
knockCountGauge = knockCount, "Knock count", "count", 0, 10000, 0, 0, 10000, 10000, 0, 0
fuelTankLevelGauge = fuelTankLevel,"Fuel level", "%", 0, 100, 10, 20, 100, 100, 1, 1
speedToRpmRatioGauge = speedToRpmRatio, "speed2rpm", "", 0, 100, 0, 0, 100, 100, 4, 4
wastegatePosGauge = wastegatePositionSensor, @@GAUGE_NAME_WG_POSITION@@, "%", 0, 100, 0, 0, 100, 100, 1, 1
idlePosSensGauge = idlePositionSensor, @@GAUGE_NAME_IDLE_POSITION@@, "%", 0, 100, 0, 0, 100, 100, 1, 1
gaugeCategory = ECU Status
warningCounterGauge = warningCounter, @@GAUGE_NAME_WARNING_COUNT@@, "", 0, 100, 0, 0, 100, 100, 0, 0
lastErrorCodeGauge = lastErrorCode, @@GAUGE_NAME_LAST_ERROR@@, "", 0, 18000, 0, 0, 18000, 18000, 0, 0
triggerErrorsCounterGauge = totalTriggerErrorCounter, "Trigger error count", "count", 0, 15000, 0, 0, 6000, 6000, 0, 0
recentErrorCode0Gauge = recentErrorCode0, "Error#1", "", 0, 18000, 0, 0, 18000, 18000, 0, 0
recentErrorCode1Gauge = recentErrorCode1, "Error#2", "", 0, 18000, 0, 0, 18000, 18000, 0, 0
recentErrorCode2Gauge = recentErrorCode2, "Error#3", "", 0, 18000, 0, 0, 18000, 18000, 0, 0
recentErrorCode3Gauge = recentErrorCode3, "Error#4", "", 0, 18000, 0, 0, 18000, 18000, 0, 0
recentErrorCode4Gauge = recentErrorCode4, "Error#5", "", 0, 18000, 0, 0, 18000, 18000, 0, 0
recentErrorCode5Gauge = recentErrorCode5, "Error#6", "", 0, 18000, 0, 0, 18000, 18000, 0, 0
recentErrorCode6Gauge = recentErrorCode6, "Error#7", "", 0, 18000, 0, 0, 18000, 18000, 0, 0
recentErrorCode7Gauge = recentErrorCode7, "Error#8", "", 0, 18000, 0, 0, 18000, 18000, 0, 0
firmwareVersionGauge = firmwareVersion , @@GAUGE_NAME_FW_VERSION@@, "%", 0, 100, 0, 0, 100, 100, 0, 0
timeSecondsGauge = seconds, @@GAUGE_NAME_UPTIME@@, "sec", 0, 100, 0, 0, 100, 100, 0, 0
tuneCrc16Gauge = tuneCrc16, @@GAUGE_NAME_TUNE_CRC16@@, "", 0, 64000, 0, 0, 64000, 64000, 0, 0
gaugeCategory = Debug
debugF1Gauge = debugFloatField1, {bitStringValue( debugFieldF1List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 4, 4
debugF2Gauge = debugFloatField2, {bitStringValue( debugFieldF2List, debugMode )}, "", -100, 100, 0, 0, 100, 100, 4, 4
debugF3Gauge = debugFloatField3, {bitStringValue( debugFieldF3List, debugMode )}, "", -100, 100, 0, 0, 100, 100, 4, 4
debugF4Gauge = debugFloatField4, {bitStringValue( debugFieldF4List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 4, 4
debugF5Gauge = debugFloatField5, {bitStringValue( debugFieldF5List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 4, 4
debugF6Gauge = debugFloatField6, {bitStringValue( debugFieldF6List, debugMode )}, "", -100, 100, 0, 0, 100, 100, 4, 4
debugF7Gauge = debugFloatField7, {bitStringValue( debugFieldF7List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 4, 4
debugI1Gauge = debugIntField1, {bitStringValue( debugFieldI1List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0
debugI2Gauge = debugIntField2, {bitStringValue( debugFieldI2List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0
debugI3Gauge = debugIntField3, {bitStringValue( debugFieldI3List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0
debugI4Gauge = debugIntField4, {bitStringValue( debugFieldI4List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0
debugI5Gauge = debugIntField5, {bitStringValue( debugFieldI5List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0
gaugeCategory = Sensors - Basic
RPMGauge = RPMValue, "RPM - engine speed", "RPM", 0, {rpmHardLimit + 2000}, 200, {cranking_rpm}, {rpmHardLimit - 500}, {rpmHardLimit}, 0, 0
CLTGauge = coolant, "Coolant temp", "C", -40, 140, -15, 1, 95, 110, 1, 1
IATGauge = intake, "Intake air temp", "C", -40, 140, -15, 1, 95, 110, 1, 1
afr1Gauge = AFRValue, @@GAUGE_NAME_AFR@@, "", 10, 19.4, 12, 13, 15, 16, 2, 2
afr2Gauge = AFRValue2, @@GAUGE_NAME_AFR2@@, "", 10, 19.4, 12, 13, 15, 16, 2, 2
lambda1Gauge = lambdaValue, @@GAUGE_NAME_LAMBDA@@, "", 0.65, 1.2, 0.7, 0.75, 1.1, 1.15, 3, 2
lambda2Gauge = lambdaValue2, @@GAUGE_NAME_LAMBDA2@@, "", 0.65, 1.2, 0.7, 0.75, 1.1, 1.15, 3, 2
MAFGauge = MAFValue, "Mass air flow", "V", 0, 5, 0, 1, 3, 4, 1, 1
VBattGauge = VBatt, "Battery", "V", 8, 21, 9, 10, 17, 19, 1, 1
MAPGauge = MAPValue, "MAP", "kPa", 0, 300, 10, 10, 200, 200, 0, 0
massAirFlowValueGa = massAirFlowValue,"Mass air flow", "kg/hr", 0, 50, -999, -999, 999, 999, 1, 1
gaugeCategory = Sensors - Extra 1
VSSGauge = vehicleSpeedKph, "Vehicle speed", "kmh", 0, 200, 0, 1, 3, 4, 1, 1
accelerationXGauge = accelerationX, @@GAUGE_NAME_ACCEL_X@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1
accelerationYGauge = accelerationY, @@GAUGE_NAME_ACCEL_Y@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1
accelerationZGauge = accelerationZ, @@GAUGE_NAME_ACCEL_Z@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1
accelerationRollGauge=accelerationRoll, @@GAUGE_NAME_ACCEL_ROLL@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1
accelerationYawGauge=accelerationYaw, @@GAUGE_NAME_ACCEL_YAW@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1
atmPresCGauge = baroPressure, @@GAUGE_NAME_BARO_PRESSURE@@, "kPa", 0, 1024, 0, 0, 0, 0, 0, 0
vvtPositionB1IGauge = vvtPositionB1I, @@GAUGE_NAME_VVT_B1I@@, "deg", -60, 60, -60, -60, 60, 60, 1, 1
vvtPositionB1EGauge = vvtPositionB1E, @@GAUGE_NAME_VVT_B1E@@, "deg", -60, 60, -60, -60, 60, 60, 1, 1
vvtPositionB2IGauge = vvtPositionB2I, @@GAUGE_NAME_VVT_B2I@@, "deg", -60, 60, -60, -60, 60, 60, 1, 1
vvtPositionB2EGauge = vvtPositionB2E, @@GAUGE_NAME_VVT_B2E@@, "deg", -60, 60, -60, -60, 60, 60, 1, 1
internalMcuTemperatureGauge = internalMcuTemperature, @@GAUGE_NAME_ECU_TEMPERATURE@@, "C", 0, 100, 0, 0, 75, 100, 0, 0
OilPressGauge = oilPressure, @@GAUGE_NAME_OIL_PRESSURE@@, @@GAUGE_NAME_OIL_PRESSURE_UNITS@@, 0, 750, 35, 75, 550, 700, 0, 0
idleAirValvePositionGauge = idleAirValvePosition, "Idle position", "%", 0, 100, 0, 0, 100, 100, 1, 1
AuxT1Gauge = auxt1, @@GAUGE_NAME_AUX_TEMP1@@, "C", -40, 140, -15, 1, 95, 110, 1, 1
AuxT2Gauge = auxt2, @@GAUGE_NAME_AUX_TEMP2@@, "C", -40, 140, -15, 1, 95, 110, 1, 1
lowFuelPressureGauge = lowFuelPressure, @@GAUGE_NAME_FUEL_PRESSURE_LOW@@, @@GAUGE_NAME_FUEL_PRESSURE_LOW_UNITS@@, 0, 700, 0, 0, 700, 700, 1, 0
highFuelPressureGauge = highFuelPressure, @@GAUGE_NAME_FUEL_PRESSURE_HIGH@@, @@GAUGE_NAME_FUEL_PRESSURE_HIGH_UNITS@@, 0, 200, 0, 0, 200, 200, 1, 0
flexPercentGauge = flexPercent, @@GAUGE_NAME_FLEX@@, "%", 0, 100, 0, 0, 100, 100, 0, 0
gaugeCategory = Ignition
ignadvGauge = ignitionAdvance, "Ignition timing", "degrees", -100, 100, -999, -999, 999, 999, 1, 1
dwellGauge = sparkDwellValue, "Dwell", "mSec", 0, 10, 0.5, 1.0, 6.0, 8.0, 1, 1
coilDutyCycleGauge = coilDutyCycle, @@GAUGE_NAME_DWELL_DUTY@@, "%", 0, 110, 0, 0, 90, 100, 1, 1
ignitionLoadGauge = ignitionLoad, @@GAUGE_NAME_IGNITION_LOAD@@, "%", 0, 300, 0, 0, 300, 300, 1, 1
gaugeCategory = Acceleration Enrichment
deltaTpsGauge = deltaTps, "AE: TPS change", "", 0, 120, 10, 10, 100, 100, 1, 1
tpsAccelFuelGauge = tpsAccelFuel,"AE: TPS enrich", "ms", 0, 120, 10, 10, 100, 100, 1, 1
wallFuelAmountGauge = wallFuelAmount, "AE: wall amount", "ms", 0, 100, 0, 0, 100, 100, 0, 0
wallFuelCorrectionGauge = wallFuelCorrection, "AE: wall correction extra", "ms", 0, 100, 0, 0, 100, 100, 0, 0
gaugeCategory = Fueling
;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld
tChargeGauge = tCharge, @@GAUGE_NAME_FUEL_CHARGE_TEMP@@, "C", -40, 140, -15, 1, 95, 110, 1, 1
baroCorrectionGauge = baroCorrection,@@GAUGE_NAME_FUEL_BARO_CORR@@, "ratio", 0.5, 1.5, 0.6, 0.7, 1.3, 1.4, 1, 1
crankingFuelGauge = crankingFuelMs, @@GAUGE_NAME_FUEL_CRANKING@@, "mg", 0, 100, 0, 0, 100, 100, 3, 1
iatCorrectionGauge = iatCorrection, @@GAUGE_NAME_FUEL_IAT_CORR@@, "mult", 0, 3, 0, 0, 3, 3, 2, 2
cltCorrectionGauge = cltCorrection, @@GAUGE_NAME_FUEL_CLT_CORR@@, "mult", 0, 3, 0, 0, 3, 3, 2, 2
injectorDutyCycleGauge=injectorDutyCycle, @@GAUGE_NAME_FUEL_INJ_DUTY@@,"%", 0, 120, 10, 10, 100, 100, 1, 1
actualLastInjectionGauge = actualLastInjection, @@GAUGE_NAME_FUEL_LAST_INJECTION@@, "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
veValueGauge = veValue, "fuel: VE", "", 0, 120, 10, 10, 100, 100, 1, 1
injectorLagMsGauge = injectorLagMs, @@GAUGE_NAME_INJECTOR_LAG@@, "mSec", 0, 10, 0, 0, 10, 10, 3, 1
fuelRunningGauge = fuelRunning, @@GAUGE_NAME_FUEL_RUNNING@@, "mg", 0, 100, 0, 0, 100, 100, 3, 1
baseFuelGauge = baseFuel, @@GAUGE_NAME_FUEL_BASE@@, "mg", 0, 100, 0, 0, 100, 100, 2, 0
fuelPidCorrectionGauge = fuelPidCorrection, @@GAUGE_NAME_FUEL_TRIM@@, "%", -10, 10, -8, -5, 5, 8, 3, 1
fuelPidCorrectionGauge2= fuelPidCorrection2, @@GAUGE_NAME_FUEL_TRIM_2@@, "%", -10, 10, -8, -5, 5, 8, 3, 1
fuelingLoadGauge = fuelingLoad, @@GAUGE_NAME_FUEL_LOAD@@, "%", 0, 300, 0, 0, 300, 300, 1, 1
totalFuelConsumptionGauge = totalFuelConsumption, @@GAUGE_NAME_FUEL_CONSUMPTION@@, "g", 0, 10000, 0, 0, 10000, 10000, 0, 0
fuelFlowRateGauge = fuelFlowRate, @@GAUGE_NAME_FUEL_FLOW@@, "g/s", 0, 50, 0, 0, 50, 50, 2, 0
gaugeCategory = Throttle Body (incl. ETB)
pedalPositionGauge = throttlePedalPosition, @@GAUGE_NAME_THROTTLE_PEDAL@@, "%", 0, 120, 0, 0, 100, 100, 1, 1
tpsADCGauge = tpsADC, "tps1 ADC", "ADC", 0, 1024, 0, 0, 0, 0, 0, 0
TPSGauge = TPSValue, "Throttle position", "%", 0, 100, 0, 0, 100, 100, 1, 1
TPS2Gauge = TPS2Value, "Throttle position #2", "%", 0, 100, 0, 0, 100, 100, 1, 1
etbTargetGauge = etbTarget, @@GAUGE_NAME_ETB_TARGET@@, "%", 0, 100, 0, 0, 100, 100, 1, 1
etbErrorGauge = etb1Error, @@GAUGE_NAME_ETB_ERROR@@, "%", -20, 20, -10, -5, 5, 10, 2, 0
etbDutyCycleGauge = etb1DutyCycle, @@GAUGE_NAME_ETB_DUTY@@, "%", -100, 100, -75, -50, 50, 75, 0, 0
gaugeCategory = Sensors - Raw
rawTps1PrimaryGauge = rawTps1Primary, "Raw TPS 1 Primary", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawTps1SecondaryGauge = rawTps1Secondary, "Raw TPS 1 Secondary", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawTps2PrimaryGauge = rawTps2Primary, "Raw TPS 2 Primary", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawTps2SecondaryGauge = rawTps2Secondary, "Raw TPS 2 Secondary", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawPpsPrimaryGauge = rawPpsPrimary , "Raw Pedal Primary", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawPpsSecondaryGauge = rawPpsSecondary,"Raw Pedal Secondary","V",0, 5, 0, 0, 5, 5, 3, 0
rawCltGauge = rawClt , "Raw CLT", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawIatGauge = rawIat , "Raw IAT", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawOilPressureGauge = rawOilPressure, "Raw Oil Pressure", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawIdlePositionSensorGauge = rawIdlePositionSensor, "Raw Idle Position", "V", 0, 5, 0, 0, 5, 5, 3, 0
rawWastegatePositionGauge = rawWastegatePosition,"Raw Wastegate Position","V", 0, 5, 0, 0, 5, 5, 3, 0
rawLowFuelPressureGauge = rawLowFuelPressure,"Raw fuel pressure (low) voltage","V", 0, 5, 0, 0, 5, 5, 3, 0
rawHighFuelPressureGauge = rawHighFuelPressure,"Raw fuel pressure (high) voltage","V", 0, 5, 0, 0, 5, 5, 3, 0
gaugeCategory = Transmission
desiredGearGauge = tcuDesiredGear, @@GAUGE_NAME_DESIRED_GEAR@@, "gear", -1, 10, -1, -1, 10, 10, 0, 0
currentGearGauge = tcuCurrentGear, @@GAUGE_NAME_CURRENT_GEAR@@, "gear", -1, 10, -1, -1, 10, 10, 0, 0
gaugeCategory = Knock
knock1Gauge = knock1, "Knock Cyl 1", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock2Gauge = knock2, "Knock Cyl 2", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock3Gauge = knock3, "Knock Cyl 3", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock4Gauge = knock4, "Knock Cyl 4", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock5Gauge = knock5, "Knock Cyl 5", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock6Gauge = knock6, "Knock Cyl 6", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock7Gauge = knock7, "Knock Cyl 7", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock8Gauge = knock8, "Knock Cyl 8", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock9Gauge = knock9, "Knock Cyl 9", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock10Gauge = knock10, "Knock Cyl 10", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock11Gauge = knock11, "Knock Cyl 11", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
knock12Gauge = knock12, "Knock Cyl 12", "dBv", -60, 10, -60, -60, 10, 10, 0, 0
gaugeCategory = DynoView
accelGauge = VssAcceleration, "Vehicle acceleration", "m/s2", -10, 10, -6, -4, 4, 6, 2, 2
[WueAnalyze]
; wueCurveName, afrTempCompensationCurve, lambdaTargetTableName, lambdaChannel, coolantTempChannel, egoCorrectionChannel, wueChannel, activeCondition
#if LAMBDA
wueAnalyzeMap = wueAnalyzer_warmup_curve, wueAfrTargetOffsetCurve, lambdaTableTbl, lambdaValue, coolant, cltCorrection, egoCorrectionForVeAnalyze
lambdaTargetTables = lambdaTableTbl, afrTSCustom
#else
wueAnalyzeMap = wueAnalyzer_warmup_curve, wueAfrTargetOffsetCurve, afrTableTbl, AFRValue, coolant, cltCorrection, egoCorrectionForVeAnalyze
lambdaTargetTables = afrTableTbl, afrTSCustom
#endif
wuePercentOffset = 0 ; for working with 0 based enrichment set to 100
option = disableLiveUpdates
option = burnOnSend
; filter = std_DeadLambda ; Auto build
filter = decelFilterMap,"After Start Enrich", engine, & , 4 , , false
filter = accelFilterTp, "TP Accel Enrich" , engine, & , 16, , false
filter = decelFilterTp, "TP Decel Enrich" , engine, & , 32, , false
filter = accelFilterMap,"MAP Accel Enrich" , engine, & , 64, , false
filter = decelFilterMap,"MAP Decel Enrich" , engine, & , 128, , false
; this works, just another way to skin a cat
;filter = decelFilter, "Decel Flag" , tpsaccden, > , 0, , false
filter = overrunFilter, "Overrun" , pulseWidth1, = , 0, , false
filter = highThrottle, "High Throttle" , throttle, > , 15, , true
filter = lowRpm, "Low RPM" , rpm, < , 300, , false
filter = std_Custom ; Standard Custom Expression Filter.
[FrontPage]
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
gauge1 = RPMGauge
gauge2 = CLTGauge
gauge3 = TPSGauge
gauge4 = MAPGauge
#if LAMBDA
gauge5 = lambda1Gauge
#else
gauge5 = afr1Gauge
#endif
gauge6 = VBattGauge
gauge7 = dwellGauge
gauge8 = ignadvGauge
; = expression, off-label, on-label, off-bg, off-fg, on-bg, on-fg
; important status
; todo: do we want to drop this line since we have "config error" feature thing below?
indicator = { ind_hasFatalError }, "", "CRITICAL ERROR", white, black, red, black
indicator = { needBurn }, "", "unsaved changes", white, black, yellow, black
indicator = { ind_isWarnNow }, "", "WARNING", white, black, yellow, black
indicator = { ind_check_engine }, "", "Check Engine", white, black, red, black
indicator = { ind_isTriggerError}, "Trigger OK", "Trigger ERR", white, black, red, black
indicator = { isIgnitionEnabledIndicator}, "no ignition", "ignition", yellow, black, white, black
indicator = { isInjectionEnabledIndicator}, "no injection", "injection", yellow, black, white, black
; this is required so that the "config error" feature works in TS
; don't change this line - TS is looking for an indicator with particular text/styling
; you don't even have to show it by default
indicator = { ind_hasFatalError }, "Config Error", "Config Error", white, black, red, black
; minor info
indicator = { ind_fan }, "fan off", "fan on", white, black, green, black
indicator = { ind_fan_2 }, "fan 2 off", "fan 2 on", white, black, green, black
indicator = { isCylinderCleanupActivated}, "no cyl cleanup", "cyl cleanup", white, black, yellow, black
indicator = { ind_fuel_pump}, "pump off", "pump on", white, black, green, black
indicator = { clutchUpState }, "Clutch Up", "clutch Up", white, black, red, black
indicator = { clutchDownState }, "Clutch Down", "Clutch Down", white, black, yellow, black
indicator = { brakePedalIndicator }, "brake", "brake down", white, black, red, black
indicator = { acSwitchState }, "AC switch off", "AC switch on", white, black, blue, white
indicator = { acState }, "AC off", "AC on", white, black, blue, white
indicator = { isIdleClosedLoop }, "not idling", "idling", white, black, green, black
indicator = { isIdleCoasting }, "not coasting", "coasting", white, black, green, black
; error codes
indicator = { isTpsError}, "tps", "tps error", white, black, red, black
indicator = { isTps2Error}, "tps 2", "tps 2 error", white, black, red, black
indicator = { ind_pedal_error}, "pedal", "pedal error", white, black, red, black
indicator = { ind_clt_error}, "clt", "clt error", white, black, red, black
indicator = { ind_iat_error}, "iat", "iat error", white, black, red, black
; not implemented
; indicator = { ind_map_error}, "map", "map error", white, black, red, black
indicator = { sd_present }, "no SD card", "SD card OK", white, black, green, black
indicator = { sd_logging_internal }, "SD logging", "SD logging", white, black, green, black
indicator = { sd_msd }, "SD USB", "SD USB", white, black, green, black
; looks like TS would append four system indicators below: Data Logging, ???, Not Connected, Protocol Error
[KeyActions]
showPanel = spi, spiFunction
showPanel = con, connection
;
; this section defines how we log output channels
; see [OutputChannels]
;
[Datalog]
; Channel Label Type Format
entry = time, @@GAUGE_NAME_TIME@@, float, "%.3f"
entry = seconds, @@GAUGE_NAME_UPTIME@@, float, "%.3f"
entry = RPMValue, @@GAUGE_NAME_RPM@@, int, "%d"
entry = firmwareVersion, @@GAUGE_NAME_VERSION@@, int, "%d"
entry = coolant, @@GAUGE_NAME_CLT@@, float, "%.2f"
entry = intake, @@GAUGE_NAME_IAT@@, float, "%.2f"
entry = oilPressure, @@GAUGE_NAME_OIL_PRESSURE@@,float, "%.1f"
entry = TPSValue, @@GAUGE_NAME_TPS@@, float, "%.2f"
entry = TPS2Value, @@GAUGE_NAME_TPS2@@, float, "%.2f"
entry = MAFValue, @@GAUGE_NAME_MAF@@, float, "%.2f"
entry = MAPValue, @@GAUGE_NAME_MAP@@, float, "%.1f"
entry = AFRValue, @@GAUGE_NAME_AFR@@, float, "%.2f"
entry = AFRValue2, @@GAUGE_NAME_AFR2@@, float, "%.2f"
entry = lambdaValue, @@GAUGE_NAME_LAMBDA@@, float, "%.2f"
entry = lambdaValue2, @@GAUGE_NAME_LAMBDA2@@, float, "%.2f"
entry = VBatt, @@GAUGE_NAME_VBAT@@, float, "%.2f"
entry = fuelingLoad, @@GAUGE_NAME_FUEL_LOAD@@, float, "%.1f"
entry = ignitionLoad, @@GAUGE_NAME_IGNITION_LOAD@@, float, "%.1f"
entry = ignitionAdvance, @@GAUGE_NAME_TIMING_ADVANCE@@, float, "%.2f"
entry = knockLevel, @@GAUGE_NAME_KNOCK_LEVEL@@, float, "%.2f"
entry = vehicleSpeedKph, @@GAUGE_NAME_VVS@@, float, "%.2f"
entry = speedToRpmRatio, "s2rpm", float, "%.3f"
entry = rpmAcceleration, "dRPM", int, "%d"
entry = massAirFlowValue,@@GAUGE_NAME_AIR_FLOW@@, float, "%.3f"
entry = chargeAirMass, @@GAUGE_NAME_AIR_MASS@@, float, "%.3f"
entry = throttlePedalPosition, @@GAUGE_NAME_THROTTLE_PEDAL@@, float, "%.3f"
entry = wastegatePositionSensor, @@GAUGE_NAME_WG_POSITION@@, float, "%.3f"
entry = totalTriggerErrorCounter, @@GAUGE_NAME_TRG_ERR@@,int, "%d"
entry = idleAirValvePosition, @@GAUGE_NAME_IAC@@, float, "%.3f"
entry = lowFuelPressure, @@GAUGE_NAME_FUEL_PRESSURE_LOW@@, float, "%.3f"
; entry = rawLowFuelPressure, @@GAUGE_NAME_RAW_FUEL_PRESSURE_LOW@@, float, "%.3f"
entry = highFuelPressure, @@GAUGE_NAME_FUEL_PRESSURE_HIGH@@, float, "%.3f"
; entry = rawHighFuelPressure, @@GAUGE_NAME_RAW_FUEL_PRESSURE_HIGH@@, float, "%.3f"
entry = injectorLagMs, @@GAUGE_NAME_INJECTOR_LAG@@, float, "%.3f"
entry = fuelRunning, @@GAUGE_NAME_FUEL_RUNNING@@, float, "%.3f"
entry = actualLastInjection, @@GAUGE_NAME_FUEL_LAST_INJECTION@@, float, "%.3f"
entry = baseFuel, @@GAUGE_NAME_FUEL_BASE@@, float, "%.2f"
entry = fuelPidCorrection,@@GAUGE_NAME_FUEL_TRIM@@, float, "%.2f"
entry = fuelPidCorrection2,@@GAUGE_NAME_FUEL_TRIM_2@@, float, "%.2f"
entry = veValue, @@GAUGE_NAME_FUEL_VE@@, float, "%.3f"
entry = injectorDutyCycle,@@GAUGE_NAME_FUEL_INJ_DUTY@@,float,"%.3f"
entry = coilDutyCycle, @@GAUGE_NAME_DWELL_DUTY@@, float,"%.3f"
entry = currentTargetAfr,@@GAUGE_NAME_TARGET_AFR@@, float,"%.3f"
entry = targetLambda, @@GAUGE_NAME_TARGET_LAMBDA@@, float,"%.4f"
entry = totalFuelConsumption, @@GAUGE_NAME_FUEL_CONSUMPTION@@, int, "%d"
entry = fuelFlowRate, @@GAUGE_NAME_FUEL_FLOW@@, float, "%.2f"
entry = accelerationX, @@GAUGE_NAME_ACCEL_X@@, float,"%.2f", { LIS302DLCsPin != 0 || imuType != 0 }
entry = accelerationY, @@GAUGE_NAME_ACCEL_Y@@, float,"%.2f", { LIS302DLCsPin != 0 || imuType != 0 }
entry = accelerationZ, @@GAUGE_NAME_ACCEL_Z@@, float,"%.2f", { LIS302DLCsPin != 0 || imuType != 0 }
entry = accelerationRoll,@@GAUGE_NAME_ACCEL_ROLL@@,float,"%.2f", { LIS302DLCsPin != 0 || imuType != 0 }
entry = accelerationYaw, @@GAUGE_NAME_ACCEL_YAW@@, float,"%.2f", { LIS302DLCsPin != 0 || imuType != 0 }
entry = egt1, "EGT1", float,"%.1f", { max31855_cs1 != 0}
entry = egt2, "EGT2", float,"%.1f", { max31855_cs2 != 0}
entry = egt3, "EGT3", float,"%.1f", { max31855_cs3 != 0}
entry = egt4, "EGT4", float,"%.1f", { max31855_cs4 != 0}
entry = egt5, "EGT5", float,"%.1f", { max31855_cs5 != 0}
entry = egt6, "EGT6", float,"%.1f", { max31855_cs6 != 0}
entry = egt7, "EGT7", float,"%.1f", { max31855_cs7 != 0}
entry = egt8, "EGT8", float,"%.1f", { max31855_cs8 != 0}
entry = deltaTps, @@GAUGE_NAME_FUEL_TPS_ROC@@,float, "%.3f"
entry = tpsAccelFuel, @@GAUGE_NAME_FUEL_TPS_EXTRA@@, float, "%.3f"
entry = wallFuelCorrection,@@GAUGE_NAME_FUEL_WALL_CORRECTION@@, float, "%.3f"
entry = wallFuelAmount, @@GAUGE_NAME_FUEL_WALL_AMOUNT@@, float, "%.3f"
entry = baroCorrection, @@GAUGE_NAME_FUEL_BARO_CORR@@,float,"%.3f"
entry = iatCorrection, @@GAUGE_NAME_FUEL_IAT_CORR@@, float, "%.3f"
entry = cltCorrection, @@GAUGE_NAME_FUEL_CLT_CORR@@, float,"%.3f"
entry = sparkDwellValue, @@GAUGE_COIL_DWELL_TIME@@, float,"%.3f"
entry = vvtPositionB1I, @@GAUGE_NAME_VVT_B1I@@, float, "%.1f"
entry = vvtPositionB1E, @@GAUGE_NAME_VVT_B1E@@, float, "%.1f"
entry = vvtPositionB2I, @@GAUGE_NAME_VVT_B2I@@, float, "%.1f"
entry = vvtPositionB2E, @@GAUGE_NAME_VVT_B2E@@, float, "%.1f"
entry = injectionOffset, "injOffset" , float, "%.2F"
; is there a way to log parameter? entry = debugMode, "debugMode",int,"%d"
entry = debugFloatField1, {bitStringValue( debugFieldF1List, debugMode )},float,"%.4f", { !enableLogDebugChannels }
entry = debugFloatField2, {bitStringValue( debugFieldF2List, debugMode )},float,"%.4f", { !enableLogDebugChannels }
entry = debugFloatField3, {bitStringValue( debugFieldF3List, debugMode )},float,"%.4f", { !enableLogDebugChannels }
entry = debugFloatField4, {bitStringValue( debugFieldF4List, debugMode )},float,"%.4f", { !enableLogDebugChannels }
entry = debugFloatField5, {bitStringValue( debugFieldF5List, debugMode )},float,"%.4f", { !enableLogDebugChannels }
entry = debugFloatField6, {bitStringValue( debugFieldF6List, debugMode )},float,"%.4f", { !enableLogDebugChannels }
entry = debugFloatField7, {bitStringValue( debugFieldF7List, debugMode )},float,"%.4f", { !enableLogDebugChannels }
entry = debugIntField1, {bitStringValue( debugFieldI1List, debugMode )},int,"%d", { !enableLogDebugChannels }
entry = debugIntField2, {bitStringValue( debugFieldI2List, debugMode )},int,"%d", { !enableLogDebugChannels }
entry = debugIntField3, {bitStringValue( debugFieldI3List, debugMode )},int,"%d", { !enableLogDebugChannels }
entry = debugIntField4, {bitStringValue( debugFieldI4List, debugMode )},int,"%d", { !enableLogDebugChannels }
entry = debugIntField5, {bitStringValue( debugFieldI5List, debugMode )},int,"%d", { !enableLogDebugChannels }
entry = engineMakeCodeNameCrc16, @@GAUGE_NAME_ENGINE_CRC16@@,int,"%d"
entry = tuneCrc16, @@GAUGE_NAME_TUNE_CRC16@@,int,"%d"
entry = engineMode, "Engine Mode",int,"%d"
entry = warningCounter, @@GAUGE_NAME_WARNING_COUNTER@@,int,"%d"
entry = lastErrorCode, @@GAUGE_NAME_WARNING_LAST@@,int,"%d"
entry = recentErrorCode0, "error 0",int,"%d", { !enableLogErrorList }
entry = recentErrorCode1, "error 1",int,"%d", { !enableLogErrorList }
entry = recentErrorCode2, "error 2",int,"%d", { !enableLogErrorList }
entry = recentErrorCode3, "error 3",int,"%d", { !enableLogErrorList }
entry = recentErrorCode4, "error 4",int,"%d", { !enableLogErrorList }
entry = recentErrorCode5, "error 5",int,"%d", { !enableLogErrorList }
entry = recentErrorCode6, "error 6",int,"%d", { !enableLogErrorList }
entry = recentErrorCode7, "error 7",int,"%d", { !enableLogErrorList }
entry = internalMcuTemperature, @@GAUGE_NAME_CPU_TEMP@@,float,"%.2f"
entry = tCharge, "tCharge",float,"%.3f"
entry = clutchUpState, @@INDICATOR_NAME_CLUTCH_UP@@,int,"%d"
entry = clutchDownState, @@INDICATOR_NAME_CLUTCH_DOWN@@,int,"%d"
entry = brakePedalIndicator, @@INDICATOR_NAME_BRAKE_DOWN@@,int,"%d"
entry = acSwitchState, @@INDICATOR_NAME_AC_SWITCH@@,int,"%d"
entry = ind_fan, "radiator fan",int,"%d"
; Electronic throttle body
entry = etb1Error, "ETB Error", float, "%.3f"
entry = etb1DutyCycle, @@GAUGE_NAME_ETB_DUTY@@, float, "%.3f"
entry = etbTarget, "ETB Target", float, "%.3f"
; Transmission
entry = tcuDesiredGear, @@GAUGE_NAME_DESIRED_GEAR@@, int, "%d"
entry = tcuCurrentGear, @@GAUGE_NAME_CURRENT_GEAR@@, int, "%d"
entry = knock1, "Knock 1", int, "%d"
entry = knock2, "Knock 2", int, "%d"
entry = knock3, "Knock 3", int, "%d"
entry = knock4, "Knock 4", int, "%d"
entry = knock5, "Knock 5", int, "%d"
entry = knock6, "Knock 6", int, "%d"
entry = knock7, "Knock 7", int, "%d"
entry = knock8, "Knock 8", int, "%d"
entry = VssAcceleration, "Vss Accel", float, "%.3f"
entry = flexPercent, @@GAUGE_NAME_FLEX@@, int, "%d"
[Menu]
menuDialog = main
; see #1653
; menu = "Data Logging"
; subMenu = std_ms3SdConsole, "Browse / Import SD Card"
menu = "&Base &Engine"
subMenu = engineChars, "Base engine"
subMenu = limitsAndFallback, "Limits and fallbacks"
subMenu = triggerConfiguration, "Trigger"
subMenu = triggerConfiguration_IO, "Advanced Trigger"
subMenu = triggerConfiguration_gap, "Trigger Gap Override"
subMenu = std_separator
subMenu = energySystems, "Battery and alternator"
subMenu = std_separator
# Digital outputs
subMenu = mainRelayDialog, "Main relay"
subMenu = starterRelay, "Starter Disable relay"
subMenu = fuelPump, "Fuel pump"
subMenu = fanSetting, "Fan"
subMenu = acSettings, "Air Conditioning"
subMenu = tachSettings, "Tachometer"
subMenu = malfunction, "Check engine light"
subMenu = statusLeds, "Status LEDs"
menu = "Fuel"
# basic
subMenu = injectorConfig, "Injection configuration"
subMenu = injectionSettings, "Injection hardware", 0, {isInjectionEnabled == 1}
subMenu = cylinderBankSelect, "Cylinder bank selection", 0, {isInjectionEnabled == 1}
subMenu = injectorNonlinear, "Injector small-pulse correction", 0, {isInjectionEnabled == 1}
; subMenu = fuelTrimSettings, "Fuel Trim", 0, {isInjectionEnabled == 1}
subMenu = std_separator
# Air mass model
subMenu = veTableDialog, "VE", 0, {isInjectionEnabled == 1}
subMenu = tChargeSettings, "Charge temperature estimation", 0, {isInjectionEnabled == 1}
subMenu = baroCorrTbl, "Barometric pressure correction", 0, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY}
subMenu = mapEstimateTableTbl, "MAP estimate table", 0, { enableMapEstimationTableFallback }
subMenu = std_separator
# Fuel model
#if LAMBDA
subMenu = lambdaTableTbl, "Target lambda", 0, {isInjectionEnabled == 1}
#else
subMenu = afrTableTbl, "Target AFR", 0, {isInjectionEnabled == 1}
#endif
subMenu = cltFuelCorrCurve, "CLT multiplier", 0, {isInjectionEnabled == 1}
subMenu = iatFuelCorrCurve, "IAT multiplier", 0, {isInjectionEnabled == 1}
subMenu = fuelClosedLoopDialog, "Closed loop fuel correction", 0, {isInjectionEnabled == 1}
subMenu = coastingFuelCutControl, "Deceleration fuel cutoff (DFCO)", 0, {isInjectionEnabled == 1}
subMenu = std_separator
# Injector model
subMenu = injPhaseTableTbl, "Injection phase", 0, {isInjectionEnabled == 1}
subMenu = std_separator
# Accel enrichment
subMenu = AccelEnrich, "Acceleration enrichment", 0, {isInjectionEnabled == 1}
subMenu = tpsTpsAccelTbl, "TPS/TPS acceleration extra fuel", 0, {isInjectionEnabled == 1}
subMenu = mapAccelTaper, "Engine load AE taper", 0, {isInjectionEnabled == 1}
menu = "Ignition"
subMenu = ignitionSettings, "Ignition settings"
subMenu = std_separator
subMenu = dwellSettings, "Dwell", 0, {isIgnitionEnabled == 1}
subMenu = ignitionCylExtra, "Ignition cylinder trim", 0, {isIgnitionEnabled == 1}
subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1}
subMenu = std_separator
subMenu = ignitionTableTbl, "Ignition advance", 0, {isIgnitionEnabled}
subMenu = std_separator
# corrections
subMenu = cltTimingCorrCurve, "CLT correction", 0, {isIgnitionEnabled == 1}
subMenu = ignitionIatCorrTableTbl, "IAT correction", 0, {isIgnitionEnabled == 1}
menu = "&Cranking"
subMenu = crankingDialog, "Cranking settings"
subMenu = postCrankingEnrichment, "After-start enrichment"
subMenu = primingFuelPulsePanel, "Priming pulse"
subMenu = std_separator
subMenu = crankingCltCurve, "Fuel CLT multiplier"
subMenu = crankingDurationCurve, "Fuel duration multiplier"
subMenu = crankingTpsCurve, "Fuel TPS multiplier"
subMenu = std_separator
subMenu = crankingAdvanceCurve, "Cranking ignition advance", 0, {useSeparateAdvanceForCranking == 1}
subMenu = std_separator
subMenu = cltCrankingCurve, "Cranking IAC CLT multiplier", 0, {overrideCrankingIacSetting == 1}
menu = "&Idle"
subMenu = idleSettings, "Idle settings"
subMenu = idlehw, "Idle hardware"
subMenu = std_separator
subMenu = cltIdleRPMCurve, "Target RPM"
subMenu = cltIdleCurve, "CLT multiplier"
subMenu = std_separator
subMenu = idleTimingPidCorrDialog, "Closed-loop idle timing"
subMenu = iacPidMultTbl, "IAC PID Multiplier", 0, {idleMode == 0 && useIacPidMultTable == 1}
subMenu = iacCoastingCurve, "Coasting IAC Position for Auto-Idle", 0, {useIacTableForCoasting == 1}
subMenu = std_separator
subMenu = idleVeCurve, "VE", 0, {useSeparateVeForIdle == 1}
subMenu = idleAdvanceCurve, "Ignition advance", 0, {useSeparateAdvanceForIdle == 1}
menu = "&Advanced"
subMenu = boostDialog, "Boost Control"
subMenu = boostPidDialog, "Closed Loop Boost", { isBoostControlEnabled && boostType == 1 }
subMenu = boostEtbPid, "ETB-style Wastegate Actuator", { isBoostControlEnabled }
subMenu = std_separator
subMenu = gppwm1, "General Purpose PWM 1"
subMenu = gppwm2, "General Purpose PWM 2"
subMenu = gppwm3, "General Purpose PWM 3"
subMenu = gppwm4, "General Purpose PWM 4"
subMenu = std_separator @@if_ts_show_etb
subMenu = etbDialog, "Electronic throttle body" @@if_ts_show_etb
subMenu = etbTpsBiasCurve, "ETB bias curve (feed forward)" @@if_ts_show_etb
subMenu = pedalToTpsTbl, "ETB pedal target" @@if_ts_show_etb
subMenu = std_separator
subMenu = vvtPidDialog, "VVT outputs and PID"
subMenu = vvtTable1Tbl, "VVT intake target"
subMenu = vvtTable2Tbl, "VVT exhaust target"
subMenu = std_separator
subMenu = auxInputsDialog, "Aux inputs"
subMenu = fsioOutputsDialog, "FSIO outputs"
subMenu = fsioFormulas, "FSIO Formulas"
subMenu = std_separator
subMenu = fsioTable1Tbl, "FSIO Table #1"
subMenu = fsioTable2Tbl, "FSIO Table #2"
subMenu = fsioTable3Tbl, "FSIO Table #3"
subMenu = fsioTable4Tbl, "FSIO Table #4"
subMenu = fsioCurve1, "FSIO Curve #1"
subMenu = fsioCurve2, "FSIO Curve #2"
subMenu = fsioCurve3, "FSIO Curve #3"
subMenu = fsioCurve4, "FSIO Curve #4"
subMenu = std_separator
subMenu = luaOutputs, "Lua PWM Outputs"
subMenu = std_separator
subMenu = tcuControls, "Transmission Settings"
subMenu = tcuSolenoidTableTbl, "TCU Solenoids"
menu = "&Sensors"
# Base analog input settings
subMenu = otherSensorInputs, "Misc sensors"
subMenu = analogInputSettings, "Analog input settings"
subMenu = std_separator
# Thermistors
subMenu = cltSensor, "CLT sensor"
subMenu = iatSensor, "IAT sensor"
subMenu = auxTempSensor1Sensor, "AuxTemp1 sensor"
subMenu = auxTempSensor2Sensor, "AuxTemp2 sensor"
subMenu = std_separator
# TPS/pedal
subMenu = tpsSensor, "TPS"
subMenu = pedalSensor, "Accelerator pedal"
subMenu = std_separator
# MAP/Baro
subMenu = mapSettings, "MAP sensor"
subMenu = mapCurves, "MAP sampling"
subMenu = baroSettings, "Baro sensor"
subMenu = std_separator
# MAF
subMenu = mafSettings, "MAF sensor"
subMenu = mafDecodingCurve, "MAF transfer function", 0, {mafAdcChannel != @@ADC_CHANNEL_NONE@@ }
subMenu = std_separator
# O2 sensor(s)
subMenu = egoSettings, "EGO sensor"
subMenu = widebandConfig, "rusEFI Wideband Controller", 0, { canReadEnabled && canWriteEnabled }
subMenu = narrowToWideOxygenCurve, "Narrow to Wideband approximation"
subMenu = cj125Function, "CJ125 settings (wbo decoder)" @@if_ts_show_cj125
subMenu = std_separator
# Misc sensors
subMenu = speedSensor, "Vehicle speed sensor"
subMenu = oilPressureSensor, "Oil pressure"
subMenu = fuelPressureSensor, "Fuel pressure"
subMenu = fuelLevelDialog, "Fuel level sensor"
subMenu = egtInputs, "EGT" @@if_ts_show_egt
subMenu = wastegateIdlePos, "Wastegate and idle position sensors"
menu = "&Controller"
subMenu = ecuStimulator, "ECU stimulator"
subMenu = datalogSettings, "Datalogging"
subMenu = ioTest, "Bench test"
subMenu = engineTypeDialog, "Popular vehicles"
subMenu = std_separator
subMenu = lcdScreen, "LCD" @@if_ts_show_lcd
subMenu = joystickPanel, "Joystick" @@if_ts_show_joystick
subMenu = spiFunction, "SPI"@@if_ts_show_spi
subMenu = monitoringSettings, "rusEFI console"
subMenu = std_separator
subMenu = canBusMain, "CAN Bus Communication"
subMenu = sdCard, "SD Card Logger" @@if_ts_show_sd_card
subMenu = connection, "Connection"
subMenu = tle8888, "TLE8888"
subMenu = allPins1, "Full pinout 1/3" @@if_ts_show_full_pinout
subMenu = allPins2, "Full pinout 2/3" @@if_ts_show_full_pinout
subMenu = allPins3_1_and_2 "Full pinout 3/3" @@if_ts_show_full_pinout
subMenu = std_separator
# EXPERIMENTAL FEATURES
subMenu = parkingLot, "Experimental/Broken"
subMenu = rotaryDialog, "Rotary"
subMenu = mc33Dialog, "GDI Dreams"
subMenu = vrThreshold, "VR Sensor Threshold"
subMenu = std_separator
subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" @@if_ts_show_hip9011
subMenu = softwareKnock, "Software Knock" @@if_ts_show_software_knock
subMenu = std_separator
subMenu = smLaunchControl, "Launch Control"
subMenu = std_separator
# subMenu = smRollingLaunch, "Rolling Launch"
# subMenu = std_separator
# subMenu = antiLag, "Antilag Setup"
# subMenu = std_separator
menu = "Help"
subMenu = helpGeneral, "rusEFI Info"
[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.
;
; see TS_IO_TEST_COMMAND in firmware code
;
cmd_test_spk1 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x01"
cmd_test_spk2 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x02"
cmd_test_spk3 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x03"
cmd_test_spk4 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x04"
cmd_test_spk5 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x05"
cmd_test_spk6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x06"
cmd_test_spk7 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x07"
cmd_test_spk8 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x08"
cmd_test_spk9 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x09"
cmd_test_spk10 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0a"
cmd_test_spk11 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0b"
cmd_test_spk12 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0c"
cmd_test_fsio1 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x01"
cmd_test_fsio2 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x02"
cmd_test_fsio3 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x03"
cmd_test_fsio4 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x04"
cmd_test_fsio5 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x05"
cmd_test_fsio6 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x06"
cmd_test_fsio7 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x07"
cmd_test_fsio8 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x08"
cmd_test_fsio9 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x09"
cmd_test_fsio10 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x0a"
cmd_test_fsio11 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x0b"
cmd_test_fsio12 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x0c"
cmd_test_fsio13 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x0d"
cmd_test_fsio14 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x0e"
cmd_test_fsio15 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x0f"
cmd_test_fsio16 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x10"
cmd_test_inj1 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_INJECTOR_CATEGORY_16_hex@@\x00\x01"
cmd_test_inj2 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_INJECTOR_CATEGORY_16_hex@@\x00\x02"
cmd_test_inj3 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x03"
cmd_test_inj4 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x04"
cmd_test_inj5 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x05"
cmd_test_inj6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x06"
cmd_test_inj7 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x07"
cmd_test_inj8 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x08"
cmd_test_inj9 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x09"
cmd_test_inj10 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0a"
cmd_test_inj11 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0b"
cmd_test_inj12 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0c"
cmd_test_sol1 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_SOLENOID_CATEGORY_16_hex@@\x00\x01"
cmd_test_sol2 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_SOLENOID_CATEGORY_16_hex@@\x00\x02"
cmd_test_sol3 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_SOLENOID_CATEGORY_16_hex@@\x00\x03"
cmd_test_sol4 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_SOLENOID_CATEGORY_16_hex@@\x00\x04"
cmd_test_sol5 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_SOLENOID_CATEGORY_16_hex@@\x00\x05"
cmd_test_sol6 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_SOLENOID_CATEGORY_16_hex@@\x00\x06"
cmd_test_main_relay = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_MAIN_RELAY_16_hex@@"
cmd_test_fuel_pump = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_FUEL_PUMP_16_hex@@"
cmd_test_starter_relay = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_STARTER_ENABLE_RELAY_16_hex@@"
cmd_test_starter_disable_relay = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_STARTER_DISABLE_RELAY_16_hex@@"
cmd_test_ac_relay = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_AC_COMPRESSOR_RELAY_16_hex@@"
cmd_test_fan_1 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_FAN_RELAY_16_hex@@"
cmd_test_fan_2 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_FAN_RELAY_2_16_hex@@"
cmd_test_check_engine_light = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_CHECK_ENGINE_LIGHT_16_hex@@"
cmd_test_idle_valve = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_IDLE_VALVE_16_hex@@"
cmd_test_hpfp_valve = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_HPFP_VALVE_16_hex@@"
cmd_calibrate_tps_1_closed = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x02"
cmd_calibrate_tps_1_wot = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x03"
cmd_calibrate_tps_2_closed = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x04"
cmd_calibrate_tps_2_wot = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x05"
cmd_calibrate_pedal_up = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x06"
cmd_calibrate_pedal_down = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x07"
cmd_tle8888_init = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x08"
cmd_write_config = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x0A"
cmd_etb_autotune = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x0C"
cmd_enable_self_stim = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x0D"
cmb_etb_auto_calibrate = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x0E"
cmd_disable_self_stim = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x0F"
cmd_etb_autotune_stop = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x10"
cmb_etb_auto_calibrate_2 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x11"
cmd_wideband_firmare_update = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x12"
cmd_enable_ext_stim = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x13"
cmd_nDBANK = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x14"@@if_ts_show_f7_presets
cmd_burn_without_flash = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_X14_16_hex@@\x00\x15"
cmd_set_wideband_idx_0 = "@@TS_IO_TEST_COMMAND_char@@\x00\x15\x00\x00"
cmd_set_wideband_idx_1 = "@@TS_IO_TEST_COMMAND_char@@\x00\x15\x00\x01"
cmd_cj125_calibrate = "@@TS_IO_TEST_COMMAND_char@@\x00\x18\x00\x00"
cmd_call_from_pit = "@@TS_IO_TEST_COMMAND_char@@\x00\x20\x34\x56"
cmd_stop_engine = "@@TS_IO_TEST_COMMAND_char@@\x00\x79\x00\x00"
; reboot ECU
cmd_reset_controller = "@@TS_IO_TEST_COMMAND_char@@\x00\xbb\x00\x00"
; jump to DFU mode
cmd_dfu = "@@TS_IO_TEST_COMMAND_char@@\x00\xba\x00\x00"
; See 'executeTSCommand' in firmware source code
; MRE_MIATA_NB2_MAP = 11
cmd_set_engine_type_microRusEFI_Miata_NB2_MAP = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_NB2_MAP_16_hex@@"
cmd_set_engine_type_microRusEFI_VW_B6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_VW_B6_16_hex@@"
cmd_set_engine_type_microRusEFI_MRE_BODY_CONTROL = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_BODY_CONTROL_16_hex@@"
; MRE_MIATA_NA6 12
cmd_set_engine_type_microRusEFI_Miata_NA6_VAF = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_NA6_VAF_16_hex@@"
cmd_set_engine_type_microRusEFI_Miata_NA6_MAP = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_NA6_MAP_16_hex@@"
cmd_set_engine_type_microRusEFI_Miata_94_MAP = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_94_MAP_16_hex@@"
; MRE_MIATA_NB2_MAF = 15
cmd_set_engine_type_microRusEFI_Miata_NB2_MAF = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_NB2_MAF_16_hex@@"
cmd_set_engine_type_ET_MRE_SUBARU_EJ18 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_SUBARU_EJ18_16_hex@@"
cmd_set_engine_type_microRusEFI_Defaults = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_DEFAULTS_16_hex@@"
cmd_set_engine_type_ET_MRE_M111 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_M111_16_hex@@"
cmd_set_engine_type_hellen_NA6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_NA6_16_hex@@"
cmd_set_engine_type_hellen_NA94 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_NA94_16_hex@@"
cmd_set_engine_type_hellen_NB1_36 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_NB1_36_16_hex@@"
cmd_set_engine_type_hellen_NB2_36 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_NB2_36_16_hex@@"
cmd_set_engine_type_hellen_nissan_121_4 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_121_NISSAN_4_CYL_16_hex@@"
cmd_set_engine_type_hellen_nissan_121_6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_121_NISSAN_6_CYL_16_hex@@"
cmd_set_engine_type_hellen_nissan_121_8 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_121_NISSAN_8_CYL_16_hex@@"
cmd_set_engine_type_hellen_121_vag_4 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_121_VAG_16_hex@@"
cmd_set_engine_type_hellen_121_vag_5 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_121_VAG_5_CYL_16_hex@@"
cmd_set_engine_type_hellen_121_vag_v6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_121_VAG_V6_CYL_16_hex@@"
cmd_set_engine_type_hellen_121_vag_vr6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_121_VAG_VR6_CYL_16_hex@@"
cmd_set_engine_type_hellen_121_vag_8 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_121_VAG_8_CYL_16_hex@@"
cmd_set_engine_type_hellen_128_merc_4 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_128_MERCEDES_4_CYL_16_hex@@"
cmd_set_engine_type_hellen_128_merc_6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_128_MERCEDES_6_CYL_16_hex@@"
cmd_set_engine_type_hellen_128_merc_8 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_128_MERCEDES_8_CYL_16_hex@@"
cmd_set_engine_type_hellen_couple_bk1 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_154_HYUNDAI_COUPE_BK1_16_hex@@"
cmd_set_engine_type_hellen_couple_bk2 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_HELLEN_154_HYUNDAI_COUPE_BK2_16_hex@@"
; MIATA_NA6_MAP = 41
cmd_set_engine_type_Frankenso_Miata_NA6_MAP = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_FRANKENSO_MIATA_NA6_16_hex@@"
; MIATA_NA6_VAF = 57
cmd_set_engine_type_Frankenso_Miata_NA6_VAF = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_FRANKENSO_MIATA_NA6_VAF_16_hex@@"
; MAZDA_MIATA_2003 = 47
cmd_set_engine_type_Frankenso_Miata_NB2 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_FRANKENSO_MIATA_NB2_16_hex@@"
cmd_set_engine_type_Proteus_M73 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_PROTEUS_BMW_M73_16_hex@@"
cmd_set_engine_type_PROTEUS_HONDA_ELEMENT_2003 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_PROTEUS_HONDA_ELEMENT_2003_16_hex@@"
cmd_set_engine_type_PROTEUS_HONDA_OBD2A = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_PROTEUS_HONDA_OBD2A_16_hex@@"
cmd_set_engine_type_PROTEUS_MIATA_NB2 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_PROTEUS_MIATA_NB2_16_hex@@"
cmd_set_engine_type_Proteus_Miata_TCU = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MIATA_TCU_PROTEUS_16_hex@@"
; ETB_BENCH_ENGINE = 58
cmd_set_engine_type_etb_test = "@@TS_IO_TEST_COMMAND_char@@\x00\x30\x00\x3A"
; ETB_BENCH_ENGINE = 59
cmd_set_engine_type_8888_test = "@@TS_IO_TEST_COMMAND_char@@\x00\x30\x00\x3B"
cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
[UserDefined]
dialog = tChargeRpmTpsSettings, "RPM+TPS Mode Settings"
field = "We use these coefficients to approximate air/fuel charge temperate"
field = "based on CLT and IAT, depending on RPM and TPM"
field = "minRPM minTPS", tChargeMinRpmMinTps
field = "minRPM maxTPS", tChargeMinRpmMaxTps
field = "maxRPM minTPS", tChargeMaxRpmMinTps
field = "maxRPM maxTPS", tChargeMaxRpmMaxTps
dialog = tChargeGeneralSettings, ""
field = "tCharge Mode", tChargeMode
field = "tChange Increment Limit, deg/sec", tChargeAirIncrLimit
field = "tChange Decrement Limit, deg/sec", tChargeAirDecrLimit
field = ""
dialog = tChargeAirInterpSettings, "Air Interpolation Mode Settings"
field = "Min tCharge Coeff.", tChargeAirCoefMin
field = "Max tCharge Coeff.", tChargeAirCoefMax
field = "Max Air Flow, kg/h", tChargeAirFlowMax
dialog = tChargeSettings, "tCharge Settings"
panel = tChargeGeneralSettings
panel = tChargeRpmTpsSettings, { tChargeMode == 0}
panel = tChargeAirInterpSettings, { tChargeMode == 1}
dialog = baseInjection, "General"
field = "Enabled", isInjectionEnabled
field = "Mode", injectionMode, {isInjectionEnabled == 1}
field = "#Batch injection with individual wiring"
field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == @@IM_IM_BATCH@@ }
field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled }
field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled }
dialog = ignitionOutputs, "Ignition Outputs"
field = "Ignition Pin Mode", ignitionPinMode, {isIgnitionEnabled == 1}
field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1}
; see rusefi_config.txt comment next to 'ignitionPin2logic' which says
; this section is auto-generated by FiringOrderTSLogic.java
@@FIRINGORDER@@
dialog = ignitionBasic, ""
field = "Enabled", isIgnitionEnabled
field = "Mode", ignitionMode, {isIgnitionEnabled == 1}
field = "Individually wired Wasted Spark", twoWireBatchIgnition, {isIgnitionEnabled == 1 && ignitionMode == @@IM_IM_WASTED_SPARK@@ }
field = "Override ignition table load axis", ignOverrideMode, {isIgnitionEnabled}
field = "#Use fixed timing while validating with a timing gun"
field = "Timing Mode", timingMode, {isIgnitionEnabled == 1}
field = "Fixed Timing", fixedTiming, {isIgnitionEnabled == 1 && timingMode == 1}
dialog = ignitionSettings, "", xAxis
panel = ignitionBasic
panel = ignitionOutputs
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine preset", engineType
field = "Number of cylinders", cylindersCount
field = "Displacement", displacement
field = "Firing order", firingOrder
field = "Vehicle weight", vehicleWeight
dialog = engineMetadata, "Engine Metadata"
field = "#These metadata are used by rusEFI Online"
field = "Engine Make", engineMake
field = "Manufacturer Engine Code", engineCode
field = "Vehicle Name", vehicleName
field = "Compression Ratio", compressionRatio
field = "Forced Induction?", isForcedInduction
; Engine->Trigger configuration
dialog = triggerConfiguration_settings, "Trigger Pattern"
field = "!https://rusefi.com/s/trigger"
field = "Trigger type", trigger_type
field = "Total tooth count", trigger_customTotalToothCount, {trigger_type == @@TT_TT_TOOTHED_WHEEL@@}, {trigger_type == @@TT_TT_TOOTHED_WHEEL@@}
field = "Missing/skipped tooth count", trigger_customSkippedToothCount, {trigger_type == @@TT_TT_TOOTHED_WHEEL@@}, {trigger_type == @@TT_TT_TOOTHED_WHEEL@@}
; see also in firmware '[doesTriggerImplyOperationMode]' tag
field = "Operation mode / speed", ambiguousOperationMode
field = "#Please use '4 stroke with cam' only if primary trigger sensor is actually on cam"
field = "#Separate cam input not part of Trigger Pattern does not count here"
field = "With VR sensors only rising edge has reliable position"
field = "use only rising edge", useOnlyRisingEdgeForTrigger
field = "!Reminder that 4-stroke cycle is 720 degrees"
field = "!For well-known trigger types use '0' trigger angle offset"
field = "Trigger Angle Advance", globalTriggerAngleOffset
field = "Display logic signals", displayLogicLevelsInEngineSniffer
dialog = triggerConfiguration_gap, "Trigger Gap Override"
field = "!This is a pretty advanced feature for when you are debugging trigger synchronization"
field = "Override well known trigger gaps", overrideTriggerGaps
field = gapTrackingLengthOverride, gapTrackingLengthOverride, { overrideTriggerGaps == 1 }
field = "First gap", triggerGapOverride1, { overrideTriggerGaps == 1 }
field = "Second gap", triggerGapOverride2, { overrideTriggerGaps == 1 }
field = "Third gap", triggerGapOverride3, { overrideTriggerGaps == 1 }
dialog = triggerConfiguration_IO, "Advanced Trigger"
field = "!https://rusefi.com/s/vvt"
; todo: code generator to hard-code all triggers not requiring VVT?
; todo: https://github.com/rusefi/rusefi/issues/2077
field = "Cam mode (intake cams)", vvtMode1, {trigger_type != @@TT_TT_MAZDA_MIATA_NA@@}
field = "Cam mode (exhaust cams)", vvtMode2, {trigger_type != @@TT_TT_MAZDA_MIATA_NA@@}
field = "VVT sync edge", vvtCamSensorUseRise, {trigger_type != @@TT_TT_MAZDA_MIATA_NA@@}
field = "#Set offset so VVT indicates 0 degrees in default position"
field = "VVT offset bank 1 intake", vvtOffsets1, { camInputs1 != 0 }
field = "VVT offset bank 1 exhaust", vvtOffsets2, { camInputs2 != 0 }
field = "VVT offset bank 2 intake", vvtOffsets3, { camInputs3 != 0 }
field = "VVT offset bank 2 exhaust", vvtOffsets4, { camInputs4 != 0 }
field = "Print verbose VVT sync details to console",verboseVVTDecoding
field = "Print verbose trigger sync to console", verboseTriggerSynchDetails
field = "Do not print messages in case of sync error", silentTriggerError
field = "Enable noise filtering", useNoiselessTriggerDecoder, {trigger_type == @@TT_TT_TOOTHED_WHEEL_60_2@@ || trigger_type == @@TT_TT_TOOTHED_WHEEL_36_1@@}
dialog = triggerInputs, "Trigger Inputs"
field = "#Cam is primary if you have cam sensor as part of trigger shape"
field = "Primary channel", triggerInputPins1
field = "Invert Primary", invertPrimaryTriggerSignal
field = "Secondary channel", triggerInputPins2, { triggerInputPins1 != 0 && trigger_type != @@TT_TT_TOOTHED_WHEEL@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_60_2@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_36_1@@ && trigger_type != @@TT_TT_ONE@@ && trigger_type != @@TT_TT_60_2_VW@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_36_2@@}
field = "Invert Secondary", invertSecondaryTriggerSignal, { triggerInputPins2 != 0 && trigger_type != @@TT_TT_TOOTHED_WHEEL@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_60_2@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_36_1@@ && trigger_type != @@TT_TT_ONE@@ && trigger_type != @@TT_TT_60_2_VW@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_36_2@@}
field = "#VVT or Cam for 60/2 goes below"
field = "#If your engine has no exhaust cam sensor, use intake cam inputs"
field = "Cam sensor bank 1 intake", camInputs1, { vvtMode1 != @@VM_VVT_INACTIVE@@ }
field = "Cam sensor bank 1 exhaust", camInputs2, { vvtMode2 != @@VM_VVT_INACTIVE@@ && camInputs1 != 0 }
field = "Cam sensor bank 2 intake", camInputs3, { vvtMode1 != @@VM_VVT_INACTIVE@@ && camInputs1 != 0 }
field = "Cam sensor bank 2 exhaust", camInputs4, { vvtMode2 != @@VM_VVT_INACTIVE@@ && camInputs2 != 0 }
field = "Invert cam inputs", invertCamVVTSignal, { camInputs1 != 0 }
panel = triggerInputComparator @@if_ts_show_trigger_comparator
dialog = triggerConfiguration
panel = triggerConfiguration_settings, North, { consumeObdSensors == 0 }
panel = triggerInputs, South, { consumeObdSensors == 0 }
; Engine->Injection Settings
dialog = injChars, "Injector Settings", yAxis
field = "Injector Flow", injector_flow, {isInjectionEnabled == 1}
field = "Fuel rail pressure sensor", injectorPressureType, { isInjectionEnabled && (highPressureFuel_hwChannel || lowPressureFuel_hwChannel) }
field = "Injector flow compensation mode", injectorCompensationMode, { isInjectionEnabled }
field = "Injector reference pressure", fuelReferencePressure, { isInjectionEnabled && injectorCompensationMode != 0 }
dialog = fuelParams, "Fuel characteristics", yAxis
field = "Stoichiometric ratio", stoichRatioPrimary, {isInjectionEnabled == 1}
field = "E100 stoichiometric ratio", stoichRatioSecondary, {isInjectionEnabled == 1 && flexSensorPin != 0 }
dialog = fuelTrimSettings, "Fuel Trim", yAxis
field = "Cylinder 1", fuelTrim1
field = "Cylinder 2", fuelTrim2, {cylindersCount > 1}
field = "Cylinder 3", fuelTrim3, {cylindersCount > 2}
field = "Cylinder 4", fuelTrim4, {cylindersCount > 3}
field = "Cylinder 5", fuelTrim5, {cylindersCount > 4}
field = "Cylinder 6", fuelTrim6, {cylindersCount > 5}
field = "Cylinder 7", fuelTrim7, {cylindersCount > 6}
field = "Cylinder 8", fuelTrim8, {cylindersCount > 7}
field = "Cylinder 9", fuelTrim9, {cylindersCount > 8}
field = "Cylinder 10", fuelTrim10, {cylindersCount > 9}
field = "Cylinder 11", fuelTrim11, {cylindersCount > 10}
field = "Cylinder 12", fuelTrim12, {cylindersCount > 11}
dialog = injectorOutputSettings, "Injector Outputs", yAxis
field = "Use only first half of pins for batch mode"
field = "Injection Pin 1", injectionPins1, {isInjectionEnabled == 1}
field = "Injection Pin 2", injectionPins2, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 1}
field = "Injection Pin 3", injectionPins3, {isInjectionEnabled == 1 && injectionMode != @@IM_IM_SINGLE_POINT@@ && cylindersCount > 2}
field = "Injection Pin 4", injectionPins4, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 3}
field = "Injection Pin 5 ", injectionPins5, {isInjectionEnabled == 1 && injectionMode != @@IM_IM_SINGLE_POINT@@ && cylindersCount > 4}
field = "Injection Pin 6 ", injectionPins6, {isInjectionEnabled == 1 && injectionMode != @@IM_IM_SINGLE_POINT@@ && cylindersCount > 5}
field = "Injection Pin 7 ", injectionPins7, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 6}
field = "Injection Pin 8 ", injectionPins8, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 7}
field = "Injection Pin 9 ", injectionPins9, {isInjectionEnabled == 1 && cylindersCount > 8}
field = "Injection Pin 10 ", injectionPins10, {isInjectionEnabled == 1 && cylindersCount > 9}
field = "Injection Pin 11 ", injectionPins11, {isInjectionEnabled == 1 && cylindersCount > 10}
field = "Injection Pin 12 ", injectionPins12, {isInjectionEnabled == 1 && cylindersCount > 11}
field = ""
field = "injection Pin Mode", injectionPinMode, {isInjectionEnabled == 1}
dialog = cylinderBankSelect, "Cylinder Banks", yAxis
field = "Cylinder 1", cylinderBankSelect1, {isInjectionEnabled == 1}
field = "Cylinder 2", cylinderBankSelect2, {isInjectionEnabled == 1 && injectionMode != @@IM_IM_SINGLE_POINT@@ && cylindersCount > 1}
field = "Cylinder 3", cylinderBankSelect3, {isInjectionEnabled == 1 && injectionMode != @@IM_IM_SINGLE_POINT@@ && cylindersCount > 2}
field = "Cylinder 4", cylinderBankSelect4, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 3}
field = "Cylinder 5 ", cylinderBankSelect5, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 4}
field = "Cylinder 6 ", cylinderBankSelect6, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 5}
field = "Cylinder 7 ", cylinderBankSelect7, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 6}
field = "Cylinder 8 ", cylinderBankSelect8, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 7}
field = "Cylinder 9 ", cylinderBankSelect9, {isInjectionEnabled == 1 && cylindersCount > 8}
field = "Cylinder 10 ", cylinderBankSelect10, {isInjectionEnabled == 1 && cylindersCount > 9}
field = "Cylinder 11 ", cylinderBankSelect11, {isInjectionEnabled == 1 && cylindersCount > 10}
field = "Cylinder 12 ", cylinderBankSelect12, {isInjectionEnabled == 1 && cylindersCount > 11}
dialog = injectorNonlinearPolynomial, "Polynomial Adder", yAxis
field = "Add nonlinearity below pulse", applyNonlinearBelowPulse
field = "constant", injectorCorrectionPolynomial1
field = "x^1", injectorCorrectionPolynomial2
field = "x^2", injectorCorrectionPolynomial3
field = "x^3", injectorCorrectionPolynomial4
field = "x^4", injectorCorrectionPolynomial5
field = "x^5", injectorCorrectionPolynomial6
field = "x^6", injectorCorrectionPolynomial7
field = "x^7", injectorCorrectionPolynomial8
dialog = injectorNonlinear
field = "Small pulse correction mode", injectorNonlinearMode
panel = injectorNonlinearPolynomial, {1}, { injectorNonlinearMode != 0 }
dialog = testFsio, "FSIO Test"
commandButton = "FSIO#1", cmd_test_fsio1
commandButton = "FSIO#2", cmd_test_fsio2
commandButton = "FSIO#3", cmd_test_fsio3
commandButton = "FSIO#4", cmd_test_fsio4
commandButton = "FSIO#5", cmd_test_fsio5
commandButton = "FSIO#6", cmd_test_fsio6
commandButton = "FSIO#7", cmd_test_fsio7
commandButton = "FSIO#8", cmd_test_fsio8
commandButton = "FSIO#9", cmd_test_fsio9
commandButton = "FSIO#10", cmd_test_fsio10
commandButton = "FSIO#11", cmd_test_fsio11
commandButton = "FSIO#12", cmd_test_fsio12
commandButton = "FSIO#13", cmd_test_fsio13
commandButton = "FSIO#14", cmd_test_fsio14
commandButton = "FSIO#15", cmd_test_fsio15
commandButton = "FSIO#16", cmd_test_fsio16
dialog = testInjectors, "Injector Test"
commandButton = "Injector #1", cmd_test_inj1
commandButton = "Injector #2", cmd_test_inj2
commandButton = "Injector #3", cmd_test_inj3
commandButton = "Injector #4", cmd_test_inj4
commandButton = "Injector #5", cmd_test_inj5
commandButton = "Injector #6", cmd_test_inj6
commandButton = "Injector #7", cmd_test_inj7
commandButton = "Injector #8", cmd_test_inj8
commandButton = "Injector #9", cmd_test_inj9
commandButton = "Injector #10", cmd_test_inj10
commandButton = "Injector #11", cmd_test_inj11
commandButton = "Injector #12", cmd_test_inj12
dialog = testSolenoids, "TCU Solenoid Test"
commandButton = "Solenoid #1", cmd_test_sol1
commandButton = "Solenoid #2", cmd_test_sol2
commandButton = "Solenoid #3", cmd_test_sol3
commandButton = "Solenoid #4", cmd_test_sol4
commandButton = "Solenoid #5", cmd_test_sol5
commandButton = "Solenoid #6", cmd_test_sol6
dialog = injectionSettingsEast, "", yAxis
panel = testInjectors
field = ""
dialog = injectionSettingsWest, "", yAxis
panel = injectorOutputSettings
field = ""
dialog = injectionSettings, "", xAxis
panel = injectionSettingsWest
panel = injectionSettingsEast
dialog = injectorConfig, "", yAxis
topicHelp = "fuelHelp"
panel = baseInjection
panel = injChars
panel = fuelParams
panel = injectorsDeadTime
dialog = ignitionCylExtra, "Ignition Cylinder Extra Timing"
field = "Extra cyl #1", timing_offset_cylinder1
field = "Extra cyl #2", timing_offset_cylinder2, {cylindersCount > 1}
field = "Extra cyl #3", timing_offset_cylinder3, {cylindersCount > 2}
field = "Extra cyl #4", timing_offset_cylinder4, {cylindersCount > 3}
field = "Extra cyl #5", timing_offset_cylinder5, {cylindersCount > 4}
field = "Extra cyl #6", timing_offset_cylinder6, {cylindersCount > 5}
field = "Extra cyl #7", timing_offset_cylinder7, {cylindersCount > 6}
field = "Extra cyl #8", timing_offset_cylinder8, {cylindersCount > 7}
field = "Extra cyl #9", timing_offset_cylinder9, {cylindersCount > 8}
field = "Extra cyl #10", timing_offset_cylinder10, {cylindersCount > 9}
field = "Extra cyl #11", timing_offset_cylinder11, {cylindersCount > 10}
field = "Extra cyl #12", timing_offset_cylinder12, {cylindersCount > 11}
dialog = multisparkDwellParams, "Delay & Dwell"
field = "Spark duration", multisparkSparkDuration, {multisparkEnable}
field = "Subsequent spark dwell", multisparkDwell, {multisparkEnable}
dialog = multisparkMain, "Configuration"
field = "Maximum engine speed", multisparkMaxRpm, {multisparkEnable}
field = "Fire sparks for this angle duration" multisparkMaxSparkingAngle, {multisparkEnable}
field = "Maximum extra spark count" multisparkMaxExtraSparkCount, {multisparkEnable}
dialog = multisparkSettings, "Multispark"
field = "#WARNING! These settings have the potential to overheat ignition components"
field = "#and cause other nasty misbehavior. Use with care, at your own risk!"
field = "#Not recommended for use on distributor or wasted spark ignition systems."
field = "Enable multiple sparks", multisparkEnable
panel = multisparkMain
panel = multisparkDwellParams
dialog = dwellSettings, "", yAxis
panel = dwellCorrection
panel = dwellVoltageCorrection
; Sensors->AUX1 Thermistor Sensor Setting
dialog = auxTempSensor1Sensor, "aux1 Thermistor Settings"
field = "Input channel", auxTempSensor1_adcChannel
field = "Bias resistor", auxTempSensor1_bias_resistor, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "#Here is three pairs of thermistor temperature and resistance."
field = "#Typical temperatures is -40 deg C, 0 deg C and 100 deg C"
field = ""
field = "Lowest temperature", auxTempSensor1_tempC_1, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ LT", auxTempSensor1_resistance_1, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Middle temperature", auxTempSensor1_tempC_2, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ MT", auxTempSensor1_resistance_2, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Highest temperature", auxTempSensor1_tempC_3, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ HT", auxTempSensor1_resistance_3, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@}
; Sensors->AUX2 Thermistor Sensor Setting
dialog = auxTempSensor2Sensor, "aux2 Thermistor Settings"
field = "Input channel", auxTempSensor2_adcChannel
field = "Bias resistor", auxTempSensor2_bias_resistor, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "#Here is three pairs of thermistor temperature and resistance."
field = "#Typical temperatures is -40 deg C, 0 deg C and 100 deg C"
field = ""
field = "Lowest temperature", auxTempSensor2_tempC_1, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ LT", auxTempSensor2_resistance_1, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Middle temperature", auxTempSensor2_tempC_2, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ MT", auxTempSensor2_resistance_2, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Highest temperature", auxTempSensor2_tempC_3, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ HT", auxTempSensor2_resistance_3, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@}
dialog = tpsNum1, "Throttle Body #1"
field = "Primary sensor", tps1_1AdcChannel
field = "Primary min", tpsMin, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Primary max", tpsMax, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Secondary sensor", tps1_2AdcChannel, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Secondary min", tps1SecondaryMin, {tps1_2AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Secondary max", tps1SecondaryMax, {tps1_2AdcChannel != @@ADC_CHANNEL_NONE@@}
commandButton = "Auto Calibrate ETB 1", cmb_etb_auto_calibrate, {tps1_2AdcChannel != @@ADC_CHANNEL_NONE@@ && throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@}
dialog = tpsNum2, "Throttle Body #2"
field = "Primary sensor", tps2_1AdcChannel
field = "Primary min", tps2Min, {tps2_1AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Primary max", tps2Max, {tps2_1AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Secondary sensor", tps2_2AdcChannel, {tps2_1AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Secondary min", tps2SecondaryMin, {tps2_2AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Secondary max", tps2SecondaryMax, {tps2_2AdcChannel != @@ADC_CHANNEL_NONE@@}
commandButton = "Auto Calibrate ETB 2", cmb_etb_auto_calibrate_2, {tps2_1AdcChannel != @@ADC_CHANNEL_NONE@@ && tps2_2AdcChannel != @@ADC_CHANNEL_NONE@@ && throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@}
dialog = tpsLimits, "TPS Limits"
field = "TPS minimum valid value", tpsErrorDetectionTooLow, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "TPS maximum valid value", tpsErrorDetectionTooHigh, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@}
dialog = tpsSensorLeft, "TPS"
panel = tpsLimits
panel = tpsNum1
panel = tpsNum2
dialog = pedalSensorLeft, "Accelerator pedal"
field = "Accelerator position sensor", throttlePedalPositionAdcChannel
field = "Up voltage", throttlePedalUpVoltage
field = "Down (WOT) voltage", throttlePedalWOTVoltage
field = "Accelerator position 2nd sensor", throttlePedalPositionSecondAdcChannel
field = "Up voltage", throttlePedalSecondaryUpVoltage
field = "Down (WOT) voltage", throttlePedalSecondaryWOTVoltage
dialog = pedalGauges
gauge = pedalPositionGauge
gauge = rawPpsPrimaryGauge
gauge = rawPpsSecondaryGauge
dialog = tpsGauges
gauge = rawTps1PrimaryGauge
gauge = rawTps1SecondaryGauge
gauge = rawTps2PrimaryGauge
gauge = rawTps2SecondaryGauge
dialog = pedalSensor, "Accelerator pedal", border
panel = pedalSensorLeft, West
panel = pedalGauges, East
dialog = tpsSensor, "TPS", border
panel = tpsSensorLeft, West
panel = tpsGauges, East
dialog = wastegatePosConfig, "Wastegate position sensor"
field = "Input pin", wastegatePositionSensor
field = "Min (fully closed, most boost)", wastegatePositionMin
field = "Max (fully open, least boost)", wastegatePositionMax
dialog = idlePosConfig, "Idle position sensor"
field = "Input pin", idlePositionSensor
field = "Min (valve closed, low idle)", idlePositionMin
field = "Max (valve open, high idle)", idlePositionMax
dialog = wastegateIdlePosLeft, ""
panel = wastegatePosConfig
panel = idlePosConfig
dialog = wastegateIdlePosGauges, ""
gauge = rawWastegatePositionGauge, West
gauge = wastegatePosGauge, East
gauge = rawIdlePositionSensorGauge
gauge = idlePosSensGauge
dialog = wastegateIdlePos, "", border
panel = wastegateIdlePosLeft, West
panel = wastegateIdlePosGauges, East
dialog = mc33Dialog, "Low-Z injector control (MC33816)"
field = "MC33816 cs", mc33816_cs
field = "MC33816 rstb", mc33816_rstb
field = "MC33816 flag0", mc33816_flag0
field = "MC33816 SPI Device", mc33972spiDevice
field = "HPFP Valve Pin", hpfpValvePin
field = "HPFP Valve Pin Mode", hpfpValvePinMode
field = tempHpfpStart, tempHpfpStart
field = tempHpfpDuration, tempHpfpDuration
field = "Boost voltage", mc33_hvolt
field = "Boost current target", mc33_i_boost
field = "Max boost time (timeout)", mc33_t_max_boost
field = "Boost -> Peak Bypass Time", mc33_t_peak_off
field = "Peak current target", mc33_i_peak
field = "Peak time", mc33_t_peak_tot
field = "Peak -> Hold Bypass Time", mc33_t_bypass
field = "Hold current target", mc33_i_hold
field = "mc33_t_hold_off ?????", mc33_t_hold_off
field = "Maximum injection duration", mc33_t_hold_tot
; Sensor Inputs
dialog = otherSensorInputs, "Other Sensor Inputs"
field = "Clutch down switch", clutchDownPin
field = "Clutch down inverted", clutchDownPinInverted
field = "Clutch down mode", clutchDownPinMode
field = "Clutch up switch", clutchUpPin
field = "Clutch up inverted", clutchUpPinInverted
field = "Clutch up mode", clutchUpPinMode
field = "Throttle Up switch", throttlePedalUpPin
field = "Brake pedal switch", brakePedalPin
field = "Flex fuel sensor", flexSensorPin
dialog = fuelLevelDialog, "Fuel Level Sensor"
field = "Input channel", fuelLevelSensor
panel = fuelLevelCurve
dialog = triggerInputComparator, "Built-in Comparator Settings (Kinetis-only)"
field = "Comparator Center Point Voltage", triggerCompCenterVolt
field = "Comparator hysteresis voltage (Min)", triggerCompHystMin
field = "Comparator hysteresis voltage (Max)", triggerCompHystMax
field = "VR-sensor saturation RPM", triggerCompSensorSatRpm
dialog = joystickPanel, "Joystick"
field = "joustick center button", joystickCenterPin
field = "joustick button A", joystickAPin
field = "joustick button B", joystickBPin
field = "joustick button C", joystickCPin
field = "joustick button D", joystickDPin
;
; allXXX sections allows a quick overview of used I/O in order to address conflicts mostly, not really to
; configure the features.
;
dialog = allPinsSensors, "Sensors"
field = "Throttle pedal Position Channel", throttlePedalPositionAdcChannel
field = "Throttle pedal Position #2", throttlePedalPositionSecondAdcChannel
field = "Primary input channel", triggerInputPins1
field = "Secondary channel", triggerInputPins2
field = "Cam Sync/VVT input", camInputs1
field = "CLT ADC input", clt_adcChannel
field = "IAT ADC input", iat_adcChannel
field = "vBatt ADC input", vbattAdcChannel
field = "TPS1 ADC input", tps1_1AdcChannel
field = "TPS2 ADC input", tps2_1AdcChannel
field = "MAF ADC input", mafAdcChannel
field = "AFR ADC input", afr_hwChannel
field = "Baro ADC input", baroSensor_hwChannel
field = "MAP ADC input", map_sensor_hwChannel
field = "FuelLevelSensor", fuelLevelSensor
field = "Vehicle Speed Input pin", vehicleSpeedSensorInputPin
field = "clutchDownPin", clutchDownPin
field = "clutchUpPin", clutchUpPin
field = "brakePedalPin", brakePedalPin
field = "A/C Switch", acSwitch
field = "Aux Temperature #1", auxTempSensor1_adcChannel
field = "Aux Temperature #2", auxTempSensor2_adcChannel
field = "Aux Fast Analog", auxFastSensor1_adcChannel
dialog = allTriggerDebug, "Trigger Debug"
field = "trigger 1 debug", triggerInputDebugPins1
field = "trigger 2 debug", triggerInputDebugPins2
field = "trigger 3 debug", triggerInputDebugPins3
field = "cam 1 debug", camInputsDebug1
field = "cam 2 debug", camInputsDebug2
field = "cam 3 debug", camInputsDebug3
field = "cam 4 debug", camInputsDebug4
dialog = allPinsMC33, "MC33816"
field = "Chip Select", mc33816_cs
field = rstb, mc33816_rstb
field = flag0, mc33816_flag0
field = mc33816_driven, mc33816_driven
field = mc33816spiDevice, mc33816spiDevice
field = hpfpValcePin, hpfpValvePin
dialog = allPins1_1
field = "trigger stimulator pin #1", triggerSimulatorPins1
field = "trigger stimulator pin #2", triggerSimulatorPins2
field = "trigger stimulator pin #2", triggerSimulatorPins3
field = "Warning Led", warningLedPin
field = "tle6240_cs", tle6240_cs
field = "tle6240 SPI", tle6240spiDevice
panel = joystickPanel
dialog = allPins1_2
field = "Tachometer output Pin", tachOutputPin
field = "O2 heater pin", o2heaterPin
field = "Idle Solenoid Pin", idle_solenoidPin
field = "Second Idle Solenoid Pin", secondSolenoidPin
field = "Idle Stepper Dir", idle_stepperDirectionPin
field = "Idle Stepper Step", idle_stepperStepPin
field = "Idle Stepper Enable", stepperEnablePin
field = "Fuel Pump Pin", fuelPumpPin
field = "ETB#1 Dir #1", etbIo1_directionPin1 @@if_ts_show_etb_pins
field = "ETB#1 Dir #2", etbIo1_directionPin2 @@if_ts_show_etb_pins
field = "ETB#1 Control", etbIo1_controlPin @@if_ts_show_etb_pins
field = "ETB#1 Disable", etbIo1_disablePin @@if_ts_show_etb_pins
field = "ETB#2 Dir #1", etbIo2_directionPin1 @@if_ts_show_etb_pins
field = "ETB#2 Dir #2", etbIo2_directionPin2 @@if_ts_show_etb_pins
field = "ETB#2 Control", etbIo2_controlPin @@if_ts_show_etb_pins
field = "ETB#2 Disable", etbIo2_disablePin @@if_ts_show_etb_pins
field = "SD CS Pin", sdCardCsPin @@if_ts_show_sd_card
field = "MIL / Check Engine Pin", malfunctionIndicatorPin
field = "test557pin", test557pin
field = "Fan Pin", fanPin
field = "A/C Relay", acRelayPin
field = "Main Relay Pin", mainRelayPin
field = "Starter Relay Pin", starterRelayDisablePin
dialog = allPins2_1
field = "Injection Pin 1", injectionPins1
field = "Injection Pin 2", injectionPins2
field = "Injection Pin 3", injectionPins3
field = "Injection Pin 4", injectionPins4
field = "Injection Pin 5 ", injectionPins5
field = "Injection Pin 6 ", injectionPins6
field = "Injection Pin 7 ", injectionPins7
field = "Injection Pin 8 ", injectionPins8
field = "Injection Pin 9 ", injectionPins9
field = "Injection Pin 10 ", injectionPins10
field = "Injection Pin 11 ", injectionPins11
field = "Injection Pin 12 ", injectionPins12
field = "FSIO dig inp #1", fsioDigitalInputs1
field = "FSIO dig inp #2", fsioDigitalInputs2
field = "FSIO dig inp #3", fsioDigitalInputs3
field = "FSIO dig inp #4", fsioDigitalInputs4
field = "FSIO dig inp #5", fsioDigitalInputs5
field = "FSIO dig inp #6", fsioDigitalInputs6
dialog = allPins2_2
field = "Ignition Pin 1", ignitionPins1
field = "Ignition Pin 2", ignitionPins2
field = "Ignition Pin 3", ignitionPins3
field = "Ignition Pin 4", ignitionPins4
field = "Ignition Pin 5", ignitionPins5
field = "Ignition Pin 6", ignitionPins6
field = "Ignition Pin 7", ignitionPins7
field = "Ignition Pin 8", ignitionPins8
field = "Ignition Pin 9", ignitionPins9
field = "Ignition Pin 10", ignitionPins10
field = "Ignition Pin 11", ignitionPins11
field = "Ignition Pin 12", ignitionPins12
field = "output #1", fsioOutputPins1
field = "output #2", fsioOutputPins2
field = "output #3", fsioOutputPins3
field = "output #4", fsioOutputPins4
field = "output #5", fsioOutputPins5
field = "output #6", fsioOutputPins6
dialog = allPins2_3
field = "LCD E pin", HD44780_e
field = "LCD D4 pin", HD44780_db4
field = "LCD D5 pin", HD44780_db5
field = "LCD D6 pin", HD44780_db6
field = "LCD D7 pin", HD44780_db7
field = "Debug Trigger Sync", debugTriggerSync
panel = allTriggerDebug
panel = allPinsMC33
dialog = allPins1_3
field = "FSIO ADC #1", auxAnalogInputs1
field = "FSIO ADC #2", auxAnalogInputs2
field = "FSIO ADC #3", auxAnalogInputs3
field = "FSIO ADC #4", auxAnalogInputs4
field = "FSIO ADC #5", auxAnalogInputs5
field = "FSIO ADC #6", auxAnalogInputs6
field = "FSIO ADC #7", auxAnalogInputs7
field = "FSIO ADC #8", auxAnalogInputs8
field = "GPS RX", gps_rx_pin @@if_ts_show_gps
field = "GPS TX", gps_tx_pin @@if_ts_show_gps
field = "CAN RX pin", canRxPin @@if_ts_show_can_pins
field = "CAN TX pin", canTxPin @@if_ts_show_can_pins
field = "SPI1 MOSI", spi1mosiPin, {is_enabled_spi_1 == 1} @@if_ts_show_spi
field = "SPI1 MISO", spi1misoPin, {is_enabled_spi_1 == 1} @@if_ts_show_spi
field = "SPI1 SCK", spi1sckPin, {is_enabled_spi_1 == 1} @@if_ts_show_spi
field = "SPI2 MOSI", spi2mosiPin, {is_enabled_spi_2 == 1} @@if_ts_show_spi
field = "SPI2 MISO", spi2misoPin, {is_enabled_spi_2 == 1} @@if_ts_show_spi
field = "SPI2 SCK", spi2sckPin, {is_enabled_spi_2 == 1} @@if_ts_show_spi
field = "SPI3 MOSI", spi3mosiPin, {is_enabled_spi_3 == 1} @@if_ts_show_spi
field = "SPI3 MISO", spi3misoPin, {is_enabled_spi_3 == 1} @@if_ts_show_spi
field = "SPI3 SCK", spi3sckPin, {is_enabled_spi_3 == 1} @@if_ts_show_spi
field = "hip9011CsPin", hip9011CsPin
field = "LIS302DLCsPin", LIS302DLCsPin
field = "MIL / Check Engine", malfunctionIndicatorPin
field = "Saab CDM knock", cdmInputPin
field = "DRV8860 CS", drv8860_cs
field = "DRV8860 CS Mode", drv8860_csPinMode
field = "DRV8860 MISO pin", drv8860_miso
field = "DRV8860 SPI", drv8860spiDevice
field = "comm status light", communicationLedPin
field = "running status light", runningLedPin
dialog = allPins3_1
panel = allPinsSensors
dialog = allPins3_2
field = "servo#1", servoOutputPins1
field = "servo#2", servoOutputPins2
field = "servo#3", servoOutputPins3
field = "servo#4", servoOutputPins4
field = "servo#5", servoOutputPins5
field = "VVT Pin #1", auxPidPins1
field = "VVT Pin #2", auxPidPins2
field = "VVT Pin #3", auxPidPins3
field = "VVT Pin #4", auxPidPins4
field = "Aux Valve #1", auxValves1
field = "Aux Valve #2", auxValves2
field = "TLE8888 Chip Select", tle8888_cs @@if_ts_show_spi
field = "TLE 8888 spi", tle8888spiDevice @@if_ts_show_spi
field = "AUX Serial TX", auxSerialTxPin
field = "AUX Serial RX", auxSerialRxPin
field = "Start/Stop Button", startStopButtonPin
field = "Upshift Pin", tcuUpshiftButtonPin
field = "Downshift Pin", tcuDownshiftButtonPin
dialog = allPins3_1_and_2, "All Pins 3/3", xAxis
panel = allPins3_1
panel = allPins3_2
dialog = allPins1_1_and_2, "", xAxis
panel = allPins1_1
panel = allPins1_2
dialog = allPins1, "All Pins 1/3", xAxis
panel = allPins1_1_and_2
panel = allPins1_3
dialog = allPins2_1_and_2, "", xAxis
panel = allPins2_1
panel = allPins2_2
dialog = allPins2, "All Pins 2/3", xAxis
panel = allPins2_1_and_2
panel = allPins2_3
; Sensors->CLT sensor
dialog = clt_thermistor, "CLT sensor"
field = "Input channel", clt_adcChannel
field = "Bias resistor", clt_bias_resistor, {clt_adcChannel != @@ADC_CHANNEL_NONE@@}
settingSelector = "Common CLT Sensors"
settingOption = "GM CLT", clt_tempC_1=0,clt_resistance_1=9240,clt_tempC_2=40,clt_resistance_2=1459,clt_tempC_3=100,clt_resistance_3=177,useLinearCltSensor=0
settingOption = "Miata NA", clt_tempC_1=-20,clt_resistance_1=16150,clt_tempC_2=40,clt_resistance_2=1150,clt_tempC_3=80,clt_resistance_3=330,useLinearCltSensor=0
settingOption = "Miata NB", clt_tempC_1=-10,clt_resistance_1=9000,clt_tempC_2=20,clt_resistance_2=2500,clt_tempC_3=80,clt_resistance_3=320,useLinearCltSensor=0
settingOption = "Bosch Various", clt_tempC_1=0,clt_resistance_1=5896,clt_tempC_2=50,clt_resistance_2=834,clt_tempC_3=100,clt_resistance_3=187,useLinearCltSensor=0
field = "#Input three pairs of thermistor temperature and resistance."
field = "#Typical temperatures are -40 deg C, 0 deg C and 100 deg C"
field = ""
field = "Lowest temperature", clt_tempC_1, {clt_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ LT", clt_resistance_1, {clt_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Middle temperature", clt_tempC_2, {clt_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ MT", clt_resistance_2, {clt_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Highest temperature", clt_tempC_3, {clt_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ HT", clt_resistance_3, {clt_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Linear characteristic", useLinearCltSensor, {clt_adcChannel != @@ADC_CHANNEL_NONE@@}
dialog = cltGauges
gauge = CLTGauge
gauge = rawCltGauge
dialog = cltSensor, "CLT Sensor", border
panel = clt_thermistor, West
panel = cltGauges, East
; Sensors->IAT sensor
dialog = iat_thermistor, "IAT sensor"
field = "Input channel", iat_adcChannel
field = "Bias resistor", iat_bias_resistor, {iat_adcChannel != @@ADC_CHANNEL_NONE@@}
settingSelector = "Common IAT Sensors", {iat_adcChannel != 0}
settingOption = "GM IAT", iat_tempC_1=8.9,iat_resistance_1=7000,iat_tempC_2=30.6,iat_resistance_2=1930,iat_tempC_3=63.3,iat_resistance_3=560,useLinearIatSensor=0
settingOption = "Miata NA/NB", iat_tempC_1=-20,iat_resistance_1=16150,iat_tempC_2=40,iat_resistance_2=1150,iat_tempC_3=80,iat_resistance_3=330,useLinearIatSensor=0
settingOption = "Bosch Various", iat_tempC_1=-10,iat_resistance_1=9397,iat_tempC_2=30,iat_resistance_2=1707,iat_tempC_3=70,iat_resistance_3=436,useLinearIatSensor=0
field = "#Input three pairs of thermistor temperature and resistance."
field = "#Typical temperatures are -40 deg C, 0 deg C and 100 deg C"
field = ""
field = "Lowest temperature", iat_tempC_1, {iat_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ LT", iat_resistance_1, {iat_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Middle temperature", iat_tempC_2, {iat_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ MT", iat_resistance_2, {iat_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Highest temperature", iat_tempC_3, {iat_adcChannel != @@ADC_CHANNEL_NONE@@}
field = "Resistance @ HT", iat_resistance_3, {iat_adcChannel != @@ADC_CHANNEL_NONE@@}
field = ""
field = "Linear characteristic", useLinearIatSensor, {iat_adcChannel != @@ADC_CHANNEL_NONE@@}
dialog = iatGauges
gauge = IATGauge
gauge = rawIatGauge
dialog = iatSensor, "IAT Sensor", border
panel = iat_thermistor, West
panel = iatGauges, East
; Sensors->Oil pressure sensor
dialog = oilp_settings, "Oil Pressure Sensor"
field = "Oil Pressure ADC input", oilPressure_hwChannel
field = "low voltage", oilPressure_v1, {oilPressure_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "low pressure", oilPressure_value1, {oilPressure_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "high voltage", oilPressure_v2, {oilPressure_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "high pressure", oilPressure_value2, {oilPressure_hwChannel != @@ADC_CHANNEL_NONE@@}
dialog = oilPressureGauges
gauge = OilPressGauge
gauge = rawOilPressureGauge
dialog = oilPressureSensor, "", border
panel = oilp_settings, West
panel = oilPressureGauges, East
dialog = fuelp_settings, "Fuel Pressure Sensor"
field = "Fuel low pressure ADC input", lowPressureFuel_hwChannel
field = "low voltage", lowPressureFuel_v1, {lowPressureFuel_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "low pressure", lowPressureFuel_value1, {lowPressureFuel_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "high voltage", lowPressureFuel_v2, {lowPressureFuel_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "high pressure", lowPressureFuel_value2, {lowPressureFuel_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "Fuel high pressure ADC input", highPressureFuel_hwChannel
field = "low voltage", highPressureFuel_v1, {highPressureFuel_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "low pressure", highPressureFuel_value1, {highPressureFuel_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "high voltage", highPressureFuel_v2, {highPressureFuel_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "high pressure", highPressureFuel_value2, {highPressureFuel_hwChannel != @@ADC_CHANNEL_NONE@@}
dialog = fuelPressureGauges
gauge = lowFuelPressureGauge
gauge = rawLowFuelPressureGauge
gauge = highFuelPressureGauge
gauge = rawHighFuelPressureGauge
dialog = fuelPressureSensor, "", border
panel = fuelp_settings, West
panel = fuelPressureGauges, East
; Sensors->MAP sensor
dialog = mapSensorAnalog, "MAP sensor", yAxis
field = "MAP ADC input", map_sensor_hwChannel
field = "MAP type", map_sensor_type, { map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ }
field = "MAP value low point", map_sensor_lowValue, { map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ && map_sensor_type == 0 }
field = "MAP voltage low point", mapLowValueVoltage, { map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ && map_sensor_type == 0 }
field = "MAP value high point", map_sensor_highValue,{ map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ && map_sensor_type == 0 }
field = "MAP voltage high value", mapHighValueVoltage, { map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ && map_sensor_type == 0 }
dialog = mapCommon, "MAP common settings"
field = "Low value threshold", mapErrorDetectionTooLow
field = "High value threshold", mapErrorDetectionTooHigh
field = ""
field = "Measure Map Only In One Cylinder", measureMapOnlyInOneCylinder
field = "Cylinder count to sample MAP", mapMinBufferLength
dialog = mapSettings, "", yAxis
panel = mapCommon
panel = mapSensorAnalog
dialog = baroSettings, "Baro sensor"
field = "Baro ADC input", baroSensor_hwChannel
field = baroSensor_lowValue, baroSensor_lowValue, {baroSensor_hwChannel != @@ADC_CHANNEL_NONE@@}
field = baroSensor_highValue, baroSensor_highValue, {baroSensor_hwChannel != @@ADC_CHANNEL_NONE@@}
field = baroSensor_type, baroSensor_type, {baroSensor_hwChannel != @@ADC_CHANNEL_NONE@@}
field = "LPS25 Baro SCL", lps25BaroSensorScl
field = "LPS25 Baro SDA", lps25BaroSensorSda
dialog = mapCurves, "MAP sampling", yAxis
field = "isMapAveragingEnabled", isMapAveragingEnabled
panel = map_samplingAngleCurve
panel = map_samplingWindowCurve
dialog = mafSettings, "MAF sensor", yAxis
field = "MAF ADC input", mafAdcChannel
; Sensors->EGO sensor
dialog = egoSettings_sensor, "EGO sensor"
field = "Type", afr_type
; todo: only use these values for custom!
field = "low voltage", afr_v1
field = "low value", afr_value1
field = "high voltage", afr_v2
field = "high value", afr_value2
field = "Correction", egoValueShift
dialog = egoSettings_IO, "EGO Sensor I/O"
field = "Input channel", afr_hwChannel
field = "Heater pin", o2heaterPin
dialog = egoSettings, "", yAxis
field = "Enable CAN Wideband", enableAemXSeries, { canReadEnabled }
field = "Enable Innovate LC-2 Serial", enableInnovateLC2, { auxSerialRxPin && auxSerialTxPin }
panel = egoSettings_IO
panel = egoSettings_sensor, {afr_hwChannel != @@ADC_CHANNEL_NONE@@ && enableAemXSeries == 0 && !auxSerialRxPin && !auxSerialTxPin}
; Engine->EGT inputs
dialog = egtInputs, "EGT inputs"
field = "SPI", max31855spiDevice
field = "CS #1", max31855_cs1
field = "CS #2", max31855_cs2
field = "CS #3", max31855_cs3
field = "CS #4", max31855_cs4
field = "CS #5", max31855_cs5
field = "CS #6", max31855_cs6
field = "CS #7", max31855_cs7
field = "CS #8", max31855_cs8
; Engine->idle Settings
dialog = idleSolenoid, "Solenoid"
field = "Idle Solenoid Pin Mode", idle_solenoidPinMode, !useStepperIdle
field = "Idle Solenoid Pin", idle_solenoidPin, !useStepperIdle
field = "Second Idle Solenoid Pin", secondSolenoidPin, { !useStepperIdle && isDoubleSolenoidIdle }
field = "Idle Solenoid Frequency", idle_solenoidFrequency, !useStepperIdle
dialog = etbHbridgeHardware, "ETB H-Bridge Hardware"
field = "PWM Frequency", etbFreq
field = "Two-wire mode", etb_use_two_wires
field = "No1 Direction #1", etbIo1_directionPin1
field = "No1 Direction #2", etbIo1_directionPin2
field = "No1 Control", etbIo1_controlPin
field = "No1 Disable", etbIo1_disablePin
field = "No2 Direction #1", etbIo2_directionPin1
field = "No2 Direction #2", etbIo2_directionPin2
field = "No2 Control", etbIo2_controlPin
field = "No2 Disable", etbIo2_disablePin
dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware"
field = "Inverted driver pins", stepperDcInvertedPins
field = "No1 Direction #1", stepperDcIo1_directionPin1
field = "No1 Direction #2", stepperDcIo1_directionPin2
field = "No1 Disable", stepperDcIo1_disablePin
field = "No2 Direction #1", stepperDcIo2_directionPin1
field = "No2 Direction #2", stepperDcIo2_directionPin2
field = "No2 Disable", stepperDcIo2_disablePin
dialog = idleStepperHw, "Stepper Hardware"
field = "Idle Stepper Step Pin", idle_stepperStepPin
field = "Idle Stepper Dir Pin", idle_stepperDirectionPin
field = "Idle Stepper Dir Pin Mode", stepperDirectionPinMode
field = "Idle Stepper Enable Pin", stepperEnablePin
field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode
dialog = idleStepperHwType, "", xAxis
panel = idleStepperHw, East, { useStepperIdle && !useHbridgesToDriveIdleStepper }
panel = stepperHbridgeHardware, West, { useStepperIdle && useHbridgesToDriveIdleStepper }
dialog = idleStepperGeneral, ""
field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle
field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle
field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle
field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle
field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle
dialog = idleStepperMicro, "Micro-Stepping"
field = "Stepping Mode", stepperNumMicroSteps, useHbridgesToDriveIdleStepper
field = "Min. Duty Cycle", stepperMinDutyCycle, { useHbridgesToDriveIdleStepper && stepperNumMicroSteps > 1 }
field = "Max. Duty Cycle", stepperMaxDutyCycle, { useHbridgesToDriveIdleStepper && stepperNumMicroSteps > 1 }
dialog = idleStepperSettings, "", xAxis
panel = idleStepperGeneral, East
panel = idleStepperMicro, West
dialog = idleStepper, "Stepper"
panel = idleStepperSettings
panel = idleStepperHwType
dialog = idleHwType, "Idle Valve Hardware", yAxis
panel = idleStepper
panel = idleSolenoid
dialog = idlehw, "", yAxis
field = "!ECU reboot needed to apply these settings"
field = "Use Stepper", useStepperIdle
field = "Double Solenoid Mode", isDoubleSolenoidIdle
field = "Use electronic throttle for idle", useETBforIdleControl, { throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@ }
field = "Electronic throttle idle range", etbIdleThrottleRange, { useETBforIdleControl == 1 }
panel = idleHwType
dialog = idlePidSettings, "Closed Loop Idle"
field = "P-factor", idleRpmPid_pFactor
field = "I-factor", idleRpmPid_iFactor
field = "derivativeFilterLoss", idle_derivativeFilterLoss
field = "antiwindupFreq", idle_antiwindupFreq
field = "D-factor", idleRpmPid_dFactor
field = "Offset", idleRpmPid_offset
field = "Min", idleRpmPid_minValue
field = "Max", idleRpmPid_maxValue
field = "iTerm Min", idlerpmpid_iTermMin
field = "iTerm Max", idlerpmpid_iTermMax
field = "PID Extra for low RPM", pidExtraForLowRpm
field = idleIncrementalPidCic, idleIncrementalPidCic
field = "use Cic Pid", useCicPidForIdle
field = "Use IAC PID Multiplier Table", useIacPidMultTable
dialog = idleOpenLoop, "Open Loop Idle"
slider = "Open loop base position", manIdlePosition, horizontal
field = "A/C adder", acIdleExtraOffset
field = "A/C target adder", acIdleRpmBump
field = "Fan #1 adder", fan1ExtraIdle
field = "Fan #2 adder", fan2ExtraIdle
field = "Extra idle air if throttle pressed", iacByTpsTaper
dialog = idleGating, "Idle Detection Thresholds"
field = "TPS threshold", idlePidDeactivationTpsThreshold
field = "RPM upper limit", idlePidRpmUpperLimit
field = "RPM deadzone", idlePidRpmDeadZone
field = "Max vehicle speed", maxIdleVss
dialog = idleExtra, "Extra Idle Features"
field = "Use idle ignition table", useSeparateAdvanceForIdle
field = "Use idle VE table", useSeparateVeForIdle
field = "Use idle tables for cranking taper", useSeparateIdleTablesForCrankingTaper
field = "Use coasting idle table", useIacTableForCoasting, {idleMode == 0}
field = useInstantRpmForIdle, useInstantRpmForIdle
field = "Detailed status in console", isVerboseIAC
dialog = idleSettings, "", yAxis
field = "Idle control mode", idleMode
field = "! Solenoid idle control is disabled at zero RPM"
panel = idleGating
panel = idleOpenLoop
panel = idlePidSettings, { idleMode == 0}
panel = idleExtra
dialog = idleTimingPidCorrDialog, "", yAxis
field = ""
field = "Enable closed loop idle ignition timing", useIdleTimingPidControl
field = "RPM deadzone", idleTimingPidDeadZone
field = ""
field = "#Gain is in degrees advance per rpm away from target"
field = "#A good starting point is 0.1 = 10 deg per 100 rpm"
field = "Proportional gain", idleTimingPid_pFactor, {useIdleTimingPidControl == 1}
field = "Derivative gain", idleTimingPid_dFactor, {useIdleTimingPidControl == 1}
field = ""
field = "Min adjustment (retard)", idleTimingPid_minValue, {useIdleTimingPidControl == 1}
field = "Max adjustment (advance)", idleTimingPid_maxValue, {useIdleTimingPidControl == 1}
field = ""
field = "#Use debug mode 'Timing' to view idle timing adjustment"
; Engine->Fan Settings
dialog = fan1Settings, "Fan 1"
field = "Pin", fanPin
field = "Pin mode", fanPinMode
field = "On temperature", fanOnTemperature
field = "Off temperature", fanOffTemperature
field = "Enable with AC", enableFan1WithAc
field = "Disable when engine stopped", disableFan1WhenStopped
dialog = fan2Settings, "Fan 2"
field = "Pin", fan2Pin
field = "Pin mode", fan2PinMode
field = "On temperature", fan2OnTemperature
field = "Off temperature", fan2OffTemperature
field = "Enable with AC", enableFan2WithAc
field = "Disable when engine stopped", disableFan2WhenStopped
dialog = fanTest, "", xAxis
commandButton = "Test Fan 1", cmd_test_fan_1
commandButton = "Test Fan 2", cmd_test_fan_2
indicatorPanel = fanIndicators, 2
indicator = { ind_fan }, "fan 1 off", "fan 1 on", white, black, green, black
indicator = { ind_fan_2 }, "fan 2 off", "fan 2 on", white, black, green, black
dialog = acSettings, "A/C Settings"
field = "A/C switch", acSwitch
field = "A/C switch mode", acSwitchMode
field = "A/C Relay", acRelayPin
field = "A/C Relay Mode", acRelayPinMode
field = "Max RPM", maxAcRpm
field = "Max CLT", maxAcClt
field = "Max TPS", maxAcTps
dialog = fanSetting, "Fan Settings"
panel = fan1Settings
panel = fan2Settings
panel = fanTest
panel = fanIndicators
dialog = fuelPump, "Fuel Pump"
field = "Pin", fuelPumpPin
field = "Pin mode", fuelPumpPinMode
field = "Prime duration", startUpFuelPumpDuration
; Controller->Actuator Outputs
dialog = mainRelayDialog, "Main relay output"
field = "microRusEFI main relay control is hard wired on pin #29"@@if_ts_show_main_relay_microRusEFI_message
field = "Pin", mainRelayPin@@if_ts_show_main_relay
field = "Pin mode", mainRelayPinMode@@if_ts_show_main_relay
dialog = starterRelay, "Starter relay output"
field = "Pin", starterRelayDisablePin
field = "Pin mode", starterRelayDisablePinMode
dialog = statusLeds, "Status LEDs"
field = "Running status LED", runningLedPin
field = "TS communication status LED", communicationLedPin
field = "Warning LED", warningLedPin
field = "Trigger error LED", triggerErrorPin
field = "Debug Trigger Sync", debugTriggerSync
; Engine->MIL Settings
dialog = malfunction, "Check Engine Settings"
field = "Pin", malfunctionIndicatorPin
field = "Pin mode", malfunctionIndicatorPinMode
field = "Warning Period", warningPeriod
dialog = softwareKnockCfg, "Configuration"
field = "Enable", enableSoftwareKnock
field = "Cylinder Bore", cylinderBore
field = "Knock filter frequency", knockBandCustom, {enableSoftwareKnock}
field = "knockDetectionWindowStart",knockDetectionWindowStart, {enableSoftwareKnock}
field = "knockSamplingDuration", knockSamplingDuration, {enableSoftwareKnock}
field = ""
field = "Select the nearest sensor for each cylinder"
field = "Cylinder 1", knockBankCyl1, {enableSoftwareKnock}
field = "Cylinder 2", knockBankCyl2, {enableSoftwareKnock && cylindersCount >= 2}
field = "Cylinder 3", knockBankCyl3, {enableSoftwareKnock && cylindersCount >= 3}
field = "Cylinder 4", knockBankCyl4, {enableSoftwareKnock && cylindersCount >= 4}
field = "Cylinder 5", knockBankCyl5, {enableSoftwareKnock && cylindersCount >= 5}
field = "Cylinder 6", knockBankCyl6, {enableSoftwareKnock && cylindersCount >= 6}
field = "Cylinder 7", knockBankCyl7, {enableSoftwareKnock && cylindersCount >= 7}
field = "Cylinder 8", knockBankCyl8, {enableSoftwareKnock && cylindersCount >= 8}
field = "Cylinder 9", knockBankCyl9, {enableSoftwareKnock && cylindersCount >= 9}
field = "Cylinder 10", knockBankCyl10, {enableSoftwareKnock && cylindersCount >= 10}
field = "Cylinder 11", knockBankCyl11, {enableSoftwareKnock && cylindersCount >= 11}
field = "Cylinder 12", knockBankCyl12, {enableSoftwareKnock && cylindersCount >= 12}
dialog = softwareKnock, "Software Knock", border
panel = softwareKnockCfg, West
panel = swKnockThresholdCurve, Center
; Engine->hip9011 Settings
dialog = hipFunction, "HIP9011 Settings (knock decoder)"
field = "Enabled", isHip9011Enabled
field = "!ECU reboot needed to apply these settings"
field = "IntHold pin (hip9011 input)", hip9011IntHoldPin, {isHip9011Enabled == 1}
field = "IntHold pin (hip9011 input) mode", hip9011IntHoldPinMode, {isHip9011Enabled == 1}
field = "ChipSelect pin", hip9011CsPin, {isHip9011Enabled == 1}
field = "ChipSelect mode", hip9011CsPinMode, {isHip9011Enabled == 1}
field = "hip Output/stm input", hipOutputChannel, {isHip9011Enabled == 1}
field = "prescaler & SDO", hip9011PrescalerAndSDO, {isHip9011Enabled == 1}
field = "knockDetectionWindowStart", knockDetectionWindowStart, {isHip9011Enabled == 1}
field = "knockDetectionWindowEnd", knockDetectionWindowEnd, {isHip9011Enabled == 1}
field = "cylinder bore (mm)", cylinderBore, {isHip9011Enabled == 1}
field = "Band Freq override", knockBandCustom, {isHip9011Enabled == 1}
field = "SPI device", hip9011SpiDevice, {isHip9011Enabled == 1}
panel = knockThresholdCurve
; Engine->cj125 Settings
dialog = cj125Function, "CJ125 Settings (wbo decoder)"
field = "Enabled", isCJ125Enabled
commandButton = "Calibrate", cmd_cj125_calibrate
field = "Using 4.9 sensor?", cj125isLsu49
field = "!ECU reboot needed to apply these settings"
field = "ChipSelect pin", cj125CsPin, {isCJ125Enabled == 1}
field = "ChipSelect mode", cj125CsPinMode, {isCJ125Enabled == 1}
field = "!See also 'Controller-SPI setting'"
field = "SPI device", cj125SpiDevice
field = "Heater pin", wboHeaterPin, {isCJ125Enabled == 1}
field = "UA input", cj125ua, {isCJ125Enabled == 1}
field = "UR input", cj125ur, {isCJ125Enabled == 1}
field = "Is UA input divided?" cj125isUaDivided, {isCJ125Enabled == 1}
field = "Is UR input divided?" cj125isUrDivided, {isCJ125Enabled == 1}
dialog = spiFunction, "SPI settings"
field = "!ECU reboot needed to apply these settings"
field = "SPI1 enable", is_enabled_spi_1
field = "SPI1 MOSI", spi1mosiPin, {is_enabled_spi_1 == 1}
field = "SPI1mosi mode", spi1MosiMode, {is_enabled_spi_1 == 1}
field = "SPI1 MISO", spi1misoPin, {is_enabled_spi_1 == 1}
field = "SPI1miso mode", spi1MisoMode, {is_enabled_spi_1 == 1}
field = "SPI1 SCK", spi1sckPin, {is_enabled_spi_1 == 1}
field = "SPI1sck mode", spi1SckMode, {is_enabled_spi_1 == 1}
field = "SPI2 enable", is_enabled_spi_2
field = "SPI2 MOSI", spi2mosiPin, {is_enabled_spi_2 == 1}
field = "SPI2mosi mode", spi2MosiMode, {is_enabled_spi_2 == 1}
field = "SPI2 MISO", spi2misoPin, {is_enabled_spi_2 == 1}
field = "SPI2miso mode", spi2MisoMode, {is_enabled_spi_2 == 1}
field = "SPI2 SCK", spi2sckPin, {is_enabled_spi_2 == 1}
field = "SPI2sck mode", spi2SckMode, {is_enabled_spi_2 == 1}
field = "SPI3 enable", is_enabled_spi_3
field = "SPI3 MOSI", spi3mosiPin, {is_enabled_spi_3 == 1}
field = "SPI3mosi mode", spi3MosiMode, {is_enabled_spi_3 == 1}
field = "SPI3 MISO", spi3misoPin, {is_enabled_spi_3 == 1}
field = "SPI3miso mode", spi3MisoMode, {is_enabled_spi_3 == 1}
field = "SPI3 SCK", spi3sckPin, {is_enabled_spi_3 == 1}
field = "SPI3sck mode", spi3SckMode, {is_enabled_spi_3 == 1}
field = "LIS302DLCsPin", LIS302DLCsPin
dialog = stftPartitioning, "Region Configuration"
field = "Idle region RPM", stft_maxIdleRegionRpm
field = "Overrun region load", stft_maxOverrunLoad
field = "Power region load", stft_minPowerLoad
dialog = stftPartitionSettingsMain, "Main Region", xAxis
field = "Time const", stft_cellCfgs4_timeConstant
field = "Max add", stft_cellCfgs4_maxAdd
field = "Max remove", stft_cellCfgs4_maxRemove
dialog = stftPartitionSettingsIdle, "Idle Region", xAxis
field = "Time const", stft_cellCfgs1_timeConstant
field = "Max add", stft_cellCfgs1_maxAdd
field = "Max remove", stft_cellCfgs1_maxRemove
dialog = stftPartitionSettingsPower, "Power Region", xAxis
field = "Time const", stft_cellCfgs3_timeConstant
field = "Max add", stft_cellCfgs3_maxAdd
field = "Max remove", stft_cellCfgs3_maxRemove
dialog = stftPartitionSettingsOverrun, "Overrun Region", xAxis
field = "Time const", stft_cellCfgs2_timeConstant
field = "Max add", stft_cellCfgs2_maxAdd
field = "Max remove", stft_cellCfgs2_maxRemove
dialog = fuelClosedLoopDialog, "Closed loop fuel correction"
field = "Enabled", fuelClosedLoopCorrectionEnabled
field = "Startup delay" stft_startupDelay, {fuelClosedLoopCorrectionEnabled == 1}
field = "Minimum CLT for correction", stft_minClt, {fuelClosedLoopCorrectionEnabled == 1}
field = "Minimum AFR for correction", stft_minAfr, {fuelClosedLoopCorrectionEnabled == 1}
field = "Maximum AFR for correction", stft_maxAfr, {fuelClosedLoopCorrectionEnabled == 1}
field = "Adjustment deadband", stft_deadband, {fuelClosedLoopCorrectionEnabled == 1}
field = "Ignore error magnitude", stftIgnoreErrorMagnitude, {fuelClosedLoopCorrectionEnabled == 1}
panel = stftPartitioning, {fuelClosedLoopCorrectionEnabled == 1}
panel = stftPartitionSettingsMain, {fuelClosedLoopCorrectionEnabled == 1}
panel = stftPartitionSettingsIdle, {fuelClosedLoopCorrectionEnabled == 1}
panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1}
panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1}
dialog = vvtPidDialog0, "Configuration"
field = "VVT solenoid bank 1 intake", auxPidPins1
field = "VVT solenoid bank 1 exhaust", auxPidPins2
field = "VVT solenoid bank 2 intake", auxPidPins3
field = "VVT solenoid bank 2 exhaust", auxPidPins4
field = "PWM frequency", auxPidFrequency1, {auxPidPins1 != 0 || auxPidPins2 != 0}
field = "Detailed status in console", isVerboseAuxPid1, {auxPidPins1 != 0 || auxPidPins2 != 0}
dialog = vvtPidDialog1, "Intake PID"
field = "offset", auxPid1_offset, {auxPidPins1 != 0}
field = "P factor", auxPid1_pFactor, {auxPidPins1 != 0}
field = "I factor", auxPid1_iFactor, {auxPidPins1 != 0}
field = "D factor", auxPid1_dFactor, {auxPidPins1 != 0}
field = "Min", auxPid1_minValue, {auxPidPins1 != 0}
field = "Max", auxPid1_maxValue, {auxPidPins1 != 0}
dialog = vvtPidDialog2, "Exhaust PID"
field = "offset", auxPid2_offset, {auxPidPins2 != 0}
field = "P factor", auxPid2_pFactor, {auxPidPins2 != 0}
field = "I factor", auxPid2_iFactor, {auxPidPins2 != 0}
field = "D factor", auxPid2_dFactor, {auxPidPins2 != 0}
field = "Min", auxPid2_minValue, {auxPidPins2 != 0}
field = "Max", auxPid2_maxValue, {auxPidPins2 != 0}
dialog = vvtPidDialog, "VVT Configuration & PID", border
panel = vvtPidDialog0, West
panel = vvtPidDialog1, Center
panel = vvtPidDialog2, East
; Engine->Battery & Alternator
dialog = batteryDialog, "Battery Settings", yAxis
field = "vBatt ADC input", vbattAdcChannel
field = "Battery Input Divider Coefficient", vbattDividerCoeff
dialog = alternator, "Alternator Settings", yAxis
field = "Enabled", isAlternatorControlEnabled
field = "simple on/off mode", onOffAlternatorLogic, {isAlternatorControlEnabled == 1}
field = "Target", targetVBatt, {isAlternatorControlEnabled == 1}
field = "Pin", alternatorControlPin, {isAlternatorControlEnabled == 1}
field = "Pin Mode", alternatorControlPinMode, {isAlternatorControlEnabled == 1}
field = "PWM frequency", alternatorPwmFrequency, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0}
field = "Off Above TPS", alternatorOffAboveTps, {isAlternatorControlEnabled == 1}
field = "Detailed status in console", isVerboseAlternator, {isAlternatorControlEnabled == 1}
field = "control period", alternatorControl_periodMs, {isAlternatorControlEnabled == 1}
field = "#PID control"
field = "offset", alternatorControl_offset, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0}
field = "P factor", alternatorControl_pFactor, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0}
field = "I factor", alternatorControl_iFactor, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0}
field = "D factor", alternatorControl_dFactor, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0}
field = "Min", alternatorControl_minValue, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0}
field = "Max", alternatorControl_maxValue, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0}
field = "#% duty = Pterm + Iterm + Dterm + offset%"
dialog = startStopDialog, "Start/Stop Button"
field = "Start/Stop Button Pin", startStopButtonPin
field = "Start/Stop Button Mode", startStopButtonMode
field = "Starter Control", starterControlPin, {startStopButtonPin != 0}
field = "Start cranking maximum time", startCrankingDuration, {startStopButtonPin != 0}
dialog = energySystems, "Battery and Alternator Settings", yAxis
panel = batteryDialog
panel = alternator
panel = startStopDialog
dialog = speedSensorAnalog
field = "Input pin", vehicleSpeedSensorInputPin
field = "revolution to speed mult", vehicleSpeedCoef
dialog = speedSensorCan
field = "Vss Car Type", canVssNbcType, { enableCanVss }
dialog = vssFilter
field = "Filter Reciprocal", vssFilterReciprocal
dialog = speedSensorLeft, "Speed sensor config", yAxis
panel = speedSensorCan, { enableCanVss }
panel = speedSensorAnalog, { enableCanVss == 0 }
field = "Enable CANbus VSS values", enableCanVss, { canReadEnabled }
panel = vssFilter
dialog = speedSensor, "Speed sensor", xAxis
panel = speedSensorLeft
gauge = VSSGauge
; Engine->Other inputs
dialog = analogInputSettings, "Analog Input Settings"
field = "!ECU reboot needed to apply these settings"
field = "Use fixed baro corr from MAP", useFixedBaroCorrFromMap
field = "Analog divider ratio", analogInputDividerCoefficient@@if_ts_show_analog_divider
field = "Smoothing factor", slowAdcAlpha
dialog = tachSettings, "Tachometer output"
field = "Pin", tachOutputPin
field = "Pin mode", tachOutputPinMode
field = "Pulse Mode", tachPulseDurationAsDutyCycle
field = "Pulse duration", tachPulseDuractionMs
field = "Pulse per Rev", tachPulsePerRev
; Board->Connection
dialog = tsPort, "Secondary Serial"
field = "Use UART/TTL serial?", useSerialPort
field = "tunerStudioSerialSpeed", tunerStudioSerialSpeed, {useSerialPort == 1}
field = "TX pin", binarySerialTxPin, {useSerialPort == 1}
field = "RX pin", binarySerialRxPin, {useSerialPort == 1}
dialog = canBus, "CAN Bus"
field = "CAN read enabled", canReadEnabled
field = "CAN write enabled", canWriteEnabled
field = "CAN bitrate", canBaudRate
field = "CAN dash type", canNbcType
field = "inertia measurement unit", imuType
field = "Enable rusEFI CAN broadcast", enableVerboseCanTx
field = "rusEFI CAN data base address", verboseCanBaseAddress
field = "rusEFI CAN data period", canSleepPeriodMs
field = "RX pin", canRxPin @@if_ts_show_can_pins
field = "TX pin", canTxPin @@if_ts_show_can_pins
dialog = canBus2, "Secondary CAN Bus"
field = "CAN read enabled", can2ReadEnabled
field = "CAN write enabled", can2WriteEnabled
field = "CAN bitrate", can2BaudRate
field = "CAN dash type", can2NbcType
field = "Enable rusEFI CAN broadcast", enableVerboseCan2Tx
field = "rusEFI CAN data base address", verboseCan2BaseAddress
field = "rusEFI CAN data period", can2SleepPeriodMs
field = "RX pin", can2RxPin @@if_ts_show_can_pins
field = "TX pin", can2TxPin @@if_ts_show_can_pins
dialog = canBusMain, "CAN Bus Communication", yAxis
panel = canBus
panel = canBus2 @@if_ts_show_can2
dialog = auxSerial, "AUX Serial"
field = "RX pin", auxSerialRxPin @@if_ts_show_auxserial_pins
field = "TX pin", auxSerialTxPin @@if_ts_show_auxserial_pins
field = "Serial Baud Rate", auxSerialSpeed @@if_ts_show_auxserial_pins
dialog = sdCard, "SD Card Logger"
field = "Enable SD Card", isSdCardEnabled
field = "showSdCardWarning", showSdCardWarning
field = "CS Pin", sdCardCsPin
field = "SPI", sdCardSpiDevice
field = "log format", logFormat
field = "Write Period", sdCardPeriodMs
dialog = gpsReceiver, "GPS Receiver"
field = "gps RX", gps_rx_pin
field = "gps TX", gps_tx_pin
dialog = lcdScreen, "LCD screen"
field = "display Mode", displayMode
field = "height", HD44780height
field = "width", HD44780width
field = "RS pin", HD44780_rs
field = "E pin", HD44780_e
field = "D4 pin", HD44780_db4
field = "D5 pin", HD44780_db5
field = "D6 pin", HD44780_db6
field = "D7 pin", HD44780_db7
dialog = tle8888, "TLE8888", yAxis
field = "TLE8888 Chip Select", tle8888_cs @@if_ts_show_spi
field = "TLE8888 SPI", tle8888spiDevice @@if_ts_show_spi
field = "Mode", tle8888mode
field = "useTLE8888 cranking reset hack", useTLE8888_cranking_hack
field = "useTLE8888 stepper", useTLE8888_stepper
commandButton = "Reinit", cmd_tle8888_init
dialog = connection, "", yAxis
field = "ADC vRef voltage", adcVcc
panel = tsPort @@if_ts_show_tunerstudio_port
field = "uartConsoleSerialSpeed", uartConsoleSerialSpeed
panel = auxSerial
panel = gpsReceiver @@if_ts_show_gps
dialog = monitoringSettings, "rusEFI Console Settings"
field = "Sensor Sniffer", sensorChartMode
field = " Threshold", sensorSnifferRpmThreshold
field = "Engine Sniffer", isEngineChartEnabled
field = " Threshold", engineSnifferRpmThreshold
dialog = generalSettings, "General"
field = "!https://rusefi.com/s/fuel"
field = "Fuel strategy", fuelAlgorithm
dialog = debugging, "Debug"
field = "!https://rusefi.com/s/debugmode"
field = "Debug mode", debugMode
dialog = limits, "Limits"
field = "Cut fuel on RPM limit", cutFuelOnHardLimit
field = "Cut spark on RPM limit", cutSparkOnHardLimit
field = "RPM hard limit", rpmHardLimit, { cutFuelOnHardLimit || cutSparkOnHardLimit }
field = "Boost cut pressure", boostCutPressure
field = "Minimum oil pressure after start", minOilPressureAfterStart
dialog = etbLimits, "Electronic Throttle Limiting"
field = "Smoothly close the throttle to limit RPM."
field = "Soft limiter start", etbRevLimitStart
field = "Soft limiter range", etbRevLimitRange
dialog = fallbacks, "Fallbacks"
field = "Use MAP estimation table as fallback", enableMapEstimationTableFallback
field = "Failed MAP sensor fallback", failedMapFallback, { !enableMapEstimationTableFallback }
dialog = limitsAndFallback, "Limits and fallbacks"
panel = limits
panel = etbLimits
panel = fallbacks
; Engine->Base Engine Settings
dialog = engineChars, "Base Engine Settings"
topicHelp = "baseHelp"
panel = baseEngineConfig
panel = engineMetadata
panel = generalSettings
panel = debugging
dialog = crankingFuel, "Fuel"
field = "Injection mode", crankingInjectionMode
field = "Fuel Source For Cranking", useRunningMathForCranking
field = "Base fuel mass", cranking_baseFuel, {useRunningMathForCranking == 0}
dialog = crankingIAC, "Idle air valve"
field = "Cranking base IAC position", crankingIACposition
field = "After cranking IAC taper duration",afterCrankingIACtaperDuration
field = "Override cranking IAC CLT multiplier", overrideCrankingIacSetting
dialog = crankingIgnition, "Ignition"
field = "Timing Advance mode", useSeparateAdvanceForCranking
field = "Fixed cranking advance", crankingTimingAngle, {useSeparateAdvanceForCranking == 0}
field = "Fixed Cranking Dwell", ignitionDwellForCrankingMs
dialog = postCrankingEnrichment, "After start enrichment"
field = "Post-Cranking factor", postCrankingFactor
field = "Duration", postCrankingDurationSec
dialog = primingFuelPulsePanel, "Priming fuel pulse"
field = "Duration at -40C degrees", startOfCrankingPrimingPulse
field = "Falloff temperature", primeInjFalloffTemperature
dialog = crankingAdv, "Advanced"
field = "Enable flood clear", isCylinderCleanupEnabled
field = "Enable faster engine spin-up", isFasterEngineSpinUpEnabled
field = "Use Advance Corrections for cranking", useAdvanceCorrectionsForCranking
; Cranking->Cranking Settings
dialog = crankingDialog, "Cranking Settings"
field = "Cranking RPM limit", cranking_rpm
panel = crankingFuel
panel = crankingIgnition
panel = crankingIAC
panel = crankingAdv
dialog = TpsAccelPanel, "TPS"
field = "Set 'Debug Mode' to see detailed 'TPS acceleration enrichment' diagnostics"
field = "Length", tpsAccelLength
field = "Accel Threshold", tpsAccelEnrichmentThreshold
field = "Decel Threshold", tpsDecelEnleanmentThreshold
; field = "Decel Multiplier", tpsDecelEnleanmentMultiplier
field = "#Accelerator Pump model:"
field = "Fraction Period", tpsAccelFractionPeriod
field = "Fraction Divisor", tpsAccelFractionDivisor
dialog = WallWettingAccelPanel, "Wall Wetting (alpha version)"
field = "evaporation time constant / tau", wwaeTau
field = "added to wall coef / beta", wwaeBeta
; Tuning->AccelEnrichment
dialog = AccelEnrich, "Accel/Decel Enrichment"
panel = TpsAccelPanel
panel = WallWettingAccelPanel
field = "No accel after RPM hard limit", noAccelAfterHardLimitPeriodSecs
; Flex Logic
dialog = fsioIO, "Outputs"
field = "output #1", fsioOutputPins1
field = "output #2", fsioOutputPins2
field = "output #3", fsioOutputPins3
field = "output #4", fsioOutputPins4
field = "output #5", fsioOutputPins5
field = "output #6", fsioOutputPins6
field = "aux valve #1", auxValves1
field = "aux valve #2", auxValves2
dialog = fsioFrequency, "Frequency"
field = "freq #1", fsioFrequency1
field = "freq #2", fsioFrequency2
field = "freq #3", fsioFrequency3
field = "freq #4", fsioFrequency4
field = "freq #5", fsioFrequency5
field = "freq #6", fsioFrequency6
field = ""
field = ""
dialog = fsioSetting, "Setting"
field = "Set number is not associated with the output number."
field = "Set number, only the cell number with some numbers."
field = "set #1", fsio_setting1
field = "set #2", fsio_setting2
field = "set #3", fsio_setting3
field = "set #4", fsio_setting4
field = "set #5", fsio_setting5
field = "set #6", fsio_setting6
dialog = fsioOutputsDialog, "FSIO outputs", border
panel = fsioIO, West
panel = fsioFrequency, Center
panel = fsioSetting, East
dialog = fsioFormulas, "FSIO Formulas"
field = "!FSIO uses Reverse Polish Notation. Please read http://rusefi.com/s/fsio"
field = "#fsioinfo command in rusEFI console could be useful while troubleshooting those"
field = "#1", fsioFormulas1
field = "#2", fsioFormulas2
field = "#3", fsioFormulas3
field = "use FSIO #4 for serious engine warning",useFSIO4ForSeriousEngineWarning
field = "#4", fsioFormulas4
field = "use FSIO #5 for critical engine stop", useFSIO5ForCriticalIssueEngineStop
field = "#5", fsioFormulas5
field = "#6", fsioFormulas6
dialog = auxInputsDialog, "Aux inputs"
field = "ADC #1", auxAnalogInputs1
field = "ADC #2", auxAnalogInputs2
field = "ADC #3", auxAnalogInputs3
field = "ADC #4", auxAnalogInputs4
field = "ADC #5", auxAnalogInputs5
field = "ADC #6", auxAnalogInputs6
field = "ADC #7", auxAnalogInputs7
field = "ADC #8", auxAnalogInputs8
dialog = luaOutputs, "Lua Outputs"
field = "#Call startPwm to initialize, then call"
field = "#setPwmDuty and setPwmFreq to vary duty/freq"
field = "#See rusefi.com/s/lua for more info"
field = "output #0", luaOutputPins1
field = "output #1", luaOutputPins2
field = "output #2", luaOutputPins3
field = "output #3", luaOutputPins4
field = "output #4", luaOutputPins5
field = "output #5", luaOutputPins6
field = "output #6", luaOutputPins7
field = "output #7", luaOutputPins8
dialog = transmissionPanel
field = "TCU Enabled" tcuEnabled
dialog = solenoidPanel, "Shift Solenoids"
field = "Solenoid 1 Pin" tcu_solenoid1, { tcuEnabled }
field = "Solenoid 2 Pin" tcu_solenoid2, { tcuEnabled }
field = "Solenoid 3 Pin" tcu_solenoid3, { tcuEnabled }
field = "Solenoid 4 Pin" tcu_solenoid4, { tcuEnabled }
field = "Solenoid 5 Pin" tcu_solenoid5, { tcuEnabled }
field = "Solenoid 6 Pin" tcu_solenoid6, { tcuEnabled }
field = "Solenoid 1 Pin Mode" tcu_solenoid_mode1, { tcuEnabled }
field = "Solenoid 2 Pin Mode" tcu_solenoid_mode2, { tcuEnabled }
field = "Solenoid 3 Pin Mode" tcu_solenoid_mode3, { tcuEnabled }
field = "Solenoid 4 Pin Mode" tcu_solenoid_mode4, { tcuEnabled }
field = "Solenoid 5 Pin Mode" tcu_solenoid_mode5, { tcuEnabled }
field = "Solenoid 6 Pin Mode" tcu_solenoid_mode6, { tcuEnabled }
dialog = buttonShiftInputPanel, "Switch/Button Shift"
field = "Upshift Pin" tcuUpshiftButtonPin, { tcuEnabled }
field = "Upshift Pin Mode" tcuUpshiftButtonPinMode, { tcuEnabled }
field = "Downshift Pin" tcuDownshiftButtonPin, { tcuEnabled }
field = "Downshift Pin Mode" tcuDownshiftButtonPinMode, { tcuEnabled }
dialog = tcuControls, "Transmission Settings"
panel = transmissionPanel
panel = solenoidPanel
panel = buttonShiftInputPanel
;Boost Open Loop
dialog = boost_left, ""
field = "Enable", isBoostControlEnabled
field = "Control Mode", boostType, { isBoostControlEnabled }
field = "Output", boostControlPin, { isBoostControlEnabled }
field = "Output Mode", boostControlPinMode, { isBoostControlEnabled }
field = "Frequency", boostPwmFrequency, { isBoostControlEnabled }
field = "Safe duty cycle", boostControlSafeDutyCycle, { isBoostControlEnabled }
dialog = boostDialog, "", border
panel = boost_left, West
panel = boostTableTbl, Center
;Boost Closed Loop
dialog = boostPidleft, ""
field = "Enable closed loop above", minimumBoostClosedLoopMap, { isBoostControlEnabled && boostType == 1 }
field = "P Gain", boostPid_pFactor, { isBoostControlEnabled && boostType == 1 }
field = "I Gain", boostPid_iFactor, { isBoostControlEnabled && boostType == 1 }
field = "D Gain", boostPid_dFactor, { isBoostControlEnabled && boostType == 1 }
field = "Min adjustment", boostPid_minValue, { isBoostControlEnabled && boostType == 1 }
field = "Max adjustment", boostPid_maxValue, { isBoostControlEnabled && boostType == 1 }
dialog = boostTableDialog, "", card
panel = boostTable2Tbl
dialog = boostPidDialog, "", border
panel = boostPidleft, West
panel = boostTableDialog, Center
dialog = boostEtbPid, ""
field = "!This section is for advanced users only!"
field = "H-Bridge #1 function", etbFunctions1
field = "H-Bridge #2 function", etbFunctions2
field = "P gain", etbWastegatePid_pFactor, { isBoostControlEnabled }
field = "I gain", etbWastegatePid_iFactor, { isBoostControlEnabled }
field = "D gain", etbWastegatePid_dFactor, { isBoostControlEnabled }
field = "PID min", etbWastegatePid_minValue, { isBoostControlEnabled }
field = "PID max", etbWastegatePid_maxValue, { isBoostControlEnabled }
help = veTableDialogHelp, "Volumetric Efficiency"
text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)"
webHelp = "https://rusefi.com/s/fuel"
help = fuelHelp, "Fuel Control"
text = "More about fuel control on the web"
webHelp = "https://rusefi.com/s/fuel"
help = etbHelp, "ETB Control"
text = "More about electronic throttle body on the web"
webHelp = "https://rusefi.com/s/etb"
help = vrThresholdHelp, "VR Sensor Threshold"
text = "This is about rusEFI VR Discrete decoder"
webHelp = "https://rusefi.com/"
help = tpsTpsHelp, "Acceleration Enrichment"
text = "More about Tps To Tps acceleration on the web"
webHelp = "https://rusefi.com/s/tpstps"
help = baseHelp, "Base Settings Control"
text = "More about rusefi on the web"
webHelp = "https://rusefi.com/"
dialog = veTableDialog
topicHelp = "veTableDialogHelp"
panel = veTableTbl, South
dialog = veTableDialog3D, "VE Table"
topicHelp = "veTableDialogHelp"
panel = veTableMap, South
dialog = etbPidDialog, "PID settings"
field = "pFactor", etb_pFactor
field = "iFactor", etb_iFactor
field = "dFactor", etb_dFactor
field = "pid min", etb_minValue
field = "pid max", etb_maxValue
field = "iTermMin", etb_iTermMin
field = "iTermMax", etb_iTermMax
dialog = etbIdleDialog, "ETB Idle"
field = "use ETB for idle", useETBforIdleControl
field = "ETB idle maximum angle", etbIdleThrottleRange
dialog = etbDialogLeft
field = "https://rusefi.com/s/etb"
field = "Detailed status in console", isVerboseETB
field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped
field = "Disable ETB Motor", pauseEtbControl
field = "H-Bridge #1 function", etbFunctions1
field = "H-Bridge #2 function", etbFunctions2
; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility
; criteria for the same panel when used in multiple places
; todo: report bug to TS?
; another todo: split panel into two panels so that we can enable/disable h-bridge #1 separately from h-bridge #2
panel = etbHbridgeHardware, { etbFunctions1 != @@ETB_FUNCTION_NONE@@ || etbFunctions2 != @@ETB_FUNCTION_NONE@@ || (useStepperIdle && useHbridgesToDriveIdleStepper) }
dialog = etbAutotune, "PID Autotune"
field = "First step: calibrate TPS and hit 'Burn'"
commandButton = "Auto Calibrate ETB 1", cmb_etb_auto_calibrate
commandButton = "Auto Calibrate ETB 2", cmb_etb_auto_calibrate_2
field = "Second step"
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog, { throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@ }
panel = etbPidDialog, { (throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@) || (etbFunctions1 == @@DC_FUNCTION_IDLE@@) }
panel = etbAutotune
; Neutral position handling not yet implemented!
;field = "Neutral Position", etbNeutralPosition
dialog = etbDialog, "Electronic Throttle Body", border
topicHelp = "etbHelp"
panel = etbDialogLeft, West
panel = etbDialogRight, East
dialog = testSpark, "Spark"
commandButton = "Spark #1", cmd_test_spk1
commandButton = "Spark #2", cmd_test_spk2
commandButton = "Spark #3", cmd_test_spk3
commandButton = "Spark #4", cmd_test_spk4
commandButton = "Spark #5", cmd_test_spk5
commandButton = "Spark #6", cmd_test_spk6
commandButton = "Spark #7", cmd_test_spk7
commandButton = "Spark #8", cmd_test_spk8
commandButton = "Spark #9", cmd_test_spk9
commandButton = "Spark #10",cmd_test_spk10
commandButton = "Spark #11",cmd_test_spk11
commandButton = "Spark #12",cmd_test_spk12
dialog = testMisc, "Misc"
; commandButton = "Come To Pit", cmd_call_from_pit
commandButton = "Main Relay", cmd_test_main_relay@@if_ts_show_main_relay
commandButton = "Fuel Pump", cmd_test_fuel_pump
commandButton = "Cooling Fan", cmd_test_fan_1
commandButton = "Cooling Fan 2", cmd_test_fan_2
commandButton = "A/C Relay", cmd_test_ac_relay
commandButton = "Check Engine", cmd_test_check_engine_light
commandButton = "Idle Air Valve", cmd_test_idle_valve
commandButton = "HPFP Valve", cmd_test_hpfp_valve
commandButton = "Starter Relay", cmd_test_starter_relay
commandButton = "Stop Engine", cmd_stop_engine
commandButton = "Write Config", cmd_write_config
commandButton = "Reset ECU", cmd_reset_controller
commandButton = "Reset to DFU", cmd_dfu
commandButton = "F7 nDBANK fix", cmd_nDBANK@@if_ts_show_f7_presets
commandButton = "No flash Burn mode", cmd_burn_without_flash
; bench test
dialog = ioTest, "Bench Test & Commands", xAxis
panel = testSpark
panel = testInjectors
panel = testSolenoids
panel = testFsio
panel = testMisc
dialog = widebandConfig, "rusEFI Wideband Config"
field = "!Please connect exactly one wideband controller before pressing these buttons!"
commandButton = "Update Firmware", cmd_wideband_firmare_update
field = "!These buttons will set ALL connected controllers to the specified index."
field = "!Disconnect all controllers you don't want to set!"
commandButton = "Set Index 0", cmd_set_wideband_idx_0
commandButton = "Set Index 1", cmd_set_wideband_idx_1
dialog = engineTypeDialog, "Popular vehicles"
field = "!These buttons send a command to rusEFI controller to apply preset values"
field = "!Once you send the command, please reconnect to rusEFI controller in order to read fresh values"
commandButton = "Frankenso Miata NA6 Stage 0", cmd_set_engine_type_Frankenso_Miata_NA6_VAF@@if_show_Frankenso_presets
commandButton = "Frankenso Miata NA6 Stage 1", cmd_set_engine_type_Frankenso_Miata_NA6_MAP@@if_show_Frankenso_presets
commandButton = "Frankenso Miata NB2 MAP", cmd_set_engine_type_Frankenso_Miata_NB2@@if_show_Frankenso_presets
commandButton = "microRusEFI Defaults", cmd_set_engine_type_microRusEFI_Defaults@@if_show_microRusEFI_presets
commandButton = "microRusEFI Miata NA6 VAF", cmd_set_engine_type_microRusEFI_Miata_NA6_VAF@@if_show_microRusEFI_presets
commandButton = "microRusEFI Miata NA6 MAP", cmd_set_engine_type_microRusEFI_Miata_NA6_MAP@@if_show_microRusEFI_presets
commandButton = "microRusEFI Miata 94/95 MAP", cmd_set_engine_type_microRusEFI_Miata_94_MAP@@if_show_microRusEFI_presets
commandButton = "microRusEFI Miata NB2 MAP", cmd_set_engine_type_microRusEFI_Miata_NB2_MAP@@if_show_microRusEFI_presets
commandButton = "microRusEFI Miata NB2 MAF", cmd_set_engine_type_microRusEFI_Miata_NB2_MAF@@if_show_microRusEFI_presets
commandButton = "microRusEFI GDI VAG B6 test", cmd_set_engine_type_microRusEFI_VW_B6@@if_show_microRusEFI_presets
commandButton = "microRusEFI BCM", cmd_set_engine_type_microRusEFI_MRE_BODY_CONTROL@@if_show_microRusEFI_presets
commandButton = "microRusEFI Subaru EJ18", cmd_set_engine_type_ET_MRE_SUBARU_EJ18@@if_show_microRusEFI_presets
commandButton = "Proteus M73 v12", cmd_set_engine_type_Proteus_M73@@if_show_Proteus_presets
commandButton = "Proteus Miata TCU", cmd_set_engine_type_Proteus_Miata_TCU@@if_show_Proteus_presets
commandButton = "Proteus Miata NB2", cmd_set_engine_type_PROTEUS_MIATA_NB2@@if_show_Proteus_presets
commandButton = "Proteus Honda K", cmd_set_engine_type_PROTEUS_HONDA_ELEMENT_2003@@if_show_Proteus_presets
commandButton = "Proteus Honda OBD2A", cmd_set_engine_type_PROTEUS_HONDA_OBD2A@@if_show_Proteus_presets
commandButton = "Hellen NA6", cmd_set_engine_type_hellen_NA6@@if_show_HellenNA6_presets
commandButton = "Hellen NA8 94-95", cmd_set_engine_type_hellen_NA94@@if_show_HellenNA6_presets
commandButton = "Hellen NB1 36 wheel", cmd_set_engine_type_hellen_NB2_36@@if_show_HellenNB1_presets
commandButton = "Hellen NB2 36 wheel", cmd_set_engine_type_hellen_NB2_36@@if_show_HellenNB2_presets
commandButton = "Hellen Nissan 4 cylinder", cmd_set_engine_type_hellen_nissan_121_4@@if_show_Hellen121nissan_presets
commandButton = "Hellen Nissan 6 cylinder", cmd_set_engine_type_hellen_nissan_121_6@@if_show_Hellen121nissan_presets
commandButton = "Hellen Nissan 8 cylinder", cmd_set_engine_type_hellen_nissan_121_8@@if_show_Hellen121nissan_presets
commandButton = "Hellen 121 VAG i4", cmd_set_engine_type_hellen_121_vag_4@@if_show_Hellen121vag_presets
commandButton = "Hellen 121 VAG i5", cmd_set_engine_type_hellen_121_vag_5@@if_show_Hellen121vag_presets
commandButton = "Hellen 121 VAG v6", cmd_set_engine_type_hellen_121_vag_v6@@if_show_Hellen121vag_presets
commandButton = "Hellen 121 VAG vr6", cmd_set_engine_type_hellen_121_vag_vr6@@if_show_Hellen121vag_presets
commandButton = "Hellen 121 VAG v8", cmd_set_engine_type_hellen_121_vag_8@@if_show_Hellen121vag_presets
commandButton = "Hellen 128 Merc 4 cyl", cmd_set_engine_type_hellen_128_merc_4@@if_show_Hellen128merc_presets
commandButton = "Hellen 128 Merc 6 cyl", cmd_set_engine_type_hellen_128_merc_6@@if_show_Hellen128merc_presets
commandButton = "Hellen 128 Merc v8", cmd_set_engine_type_hellen_128_merc_8@@if_show_Hellen128merc_presets
commandButton = "Hellen Genesis Couple BK1", cmd_set_engine_type_hellen_couple_bk1@@if_show_Hellen_hyundai_154
commandButton = "Hellen Genesis Couple BK2", cmd_set_engine_type_hellen_couple_bk2@@if_show_Hellen_hyundai_154
commandButton = "ETB test bench", cmd_set_engine_type_etb_test@@if_show_test_presets
commandButton = "TLE8888 test bench", cmd_set_engine_type_8888_test@@if_show_test_presets
commandButton = "Reset firmware settings", cmd_set_engine_type_default
; Board->ECU stimulator
dialog = ecuStimulator, "ECU stimulator"
field = "Trigger Simulator", triggerSimulatorFrequency
commandButton = "Enable internal trigger simulation", cmd_enable_self_stim
commandButton = "Enable external trigger simulation", cmd_enable_ext_stim @@if_ts_show_hardware_simulator
commandButton = "Disable trigger simulation", cmd_disable_self_stim
; field = ""
; field = "digipot spi", digitalPotentiometerSpiDevice
; field = "digipot CS #0", digitalPotentiometerChipSelect1
; field = "digipot CS #1", digitalPotentiometerChipSelect2
; field = "digipot CS #2", digitalPotentiometerChipSelect3
; field = "digipot CS #3", digitalPotentiometerChipSelect4
field = ""@@if_ts_show_hardware_simulator
field = "trigger stimulator pin #1", triggerSimulatorPins1@@if_ts_show_hardware_simulator
field = "trigger stimulator pin mode #1", triggerSimulatorPinModes1@@if_ts_show_hardware_simulator
field = "trigger stimulator pin #2", triggerSimulatorPins2@@if_ts_show_hardware_simulator
field = "trigger stimulator pin mode #2", triggerSimulatorPinModes2@@if_ts_show_hardware_simulator
field = "trigger stimulator pin #3", triggerSimulatorPins3@@if_ts_show_hardware_simulator
field = "trigger stimulator pin mode #3", triggerSimulatorPinModes3@@if_ts_show_hardware_simulator
field = ""
field = "Logic input channel 1", logicAnalyzerPins1
field = "Logic input channel 2", logicAnalyzerPins2
field = "Logic input channel 3", logicAnalyzerPins3
field = "Logic input channel 4", logicAnalyzerPins4
field = ""
field = "Engine chart size", engineChartSize
dialog = datalogSettings, "Datalogging Settings"
field = "#Disabling optional logging may increase update rate!"
field = "Log debug channels", enableLogDebugChannels
field = "Log recent errors list", enableLogErrorList
; Racing Features->Launch Control
dialog = smLaunchControl, "Launch Control Settings EXPERIMENTAL"
field = "Enable Launch Control", launchControlEnabled
field = "Activation Mode", launchActivationMode
field = "Switch Input", launchActivatePin, {launchActivationMode == 0 && launchControlEnabled == 1}
field = "Clutch Input", clutchDownPin, {launchActivationMode == 1 && launchControlEnabled == 1}
field = "Clutch Input inverted", clutchDownPinMode, {launchActivationMode == 1 && launchControlEnabled == 1}
field = ""
field = "Rpm Treshold", launchRpmTreshold, {launchControlEnabled == 1}
field = "Speed Treshold", launchSpeedTreshold, {launchControlEnabled == 1}
field = ""
field = "Launch RPM", launchRpm, {launchControlEnabled == 1}
;field = "Extra Fuel", launchFuelAdded, {launchControlEnabled == 1}
;field = "Boost Solenoid Duty", launchBoostDuty, {launchControlEnabled == 1}
field = "Ignition Retard enable", enableLaunchRetard, {launchControlEnabled == 1}
field = "Ignition Retard", launchTimingRetard, {launchControlEnabled == 1}
field = "Ignition Retard RPM Range", launchTimingRpmRange, {launchControlEnabled == 1}
field = "Smooth Retard Mode", launchSmoothRetard, {launchControlEnabled == 1}
field = "Hard Cut Mode"
field = "Ignition Cut", launchSparkCutEnable, {launchControlEnabled == 1}
field = "Fuel Cut", launchFuelCutEnable, {launchControlEnabled == 1}
field = "Hard Cut RPM Range", hardCutRpmRange, {launchControlEnabled == 1}
; Racing Features->Rolling Launch
dialog = smRollingLaunch, "Rolling Launch Settings NOT WORKING"
field = "Enable Rolling Launch", rollingLaunchEnabled
; Racing Features->Rolling Launch
dialog = antiLag, "AntiLag Settings NOT WORKING"
field = "Enable AntiLag", antiLagEnabled
field = "Activation Mode", antiLagActivationMode, {antiLagEnabled == 1}
field = "Switch Input", antiLagActivatePin, {antiLagActivationMode == 1 && antiLagEnabled == 1}
dialog = coastingFuelCutControl, "Coasting Fuel Cutoff Settings"
field = "Enable Coasting Fuel Cutoff", coastingFuelCutEnabled
field = "No cut below CLT", coastingFuelCutClt, {coastingFuelCutEnabled == 1}
field = "Cut fuel above", coastingFuelCutRpmHigh, {coastingFuelCutEnabled == 1}
field = "Restore fuel below", coastingFuelCutRpmLow, {coastingFuelCutEnabled == 1}
field = "Cut fuel below TPS", coastingFuelCutTps, {coastingFuelCutEnabled == 1}
field = "Cut fuel below MAP", coastingFuelCutMap, {coastingFuelCutEnabled == 1}
dialog = rotaryDialog, "Rotary"
field = "Enable Trailing Sparks", enableTrailingSparks
field = "Trailing Spark Offset", trailingSparkAngle
field = "Trailing Pin 1", trailingCoilPins1
field = "Trailing Pin 2", trailingCoilPins2
field = "Trailing Pin 3", trailingCoilPins3
field = "Trailing Pin 4", trailingCoilPins4
dialog = parkingLot, "Experimental/Broken"
field = "#System hacks"
field = "Global fuel correction", globalFuelCorrection
field = "MAP Averaging Logic @", mapAveragingSchedulingAtIndex
field = "showHumanReadableWarning (affects Burn)", showHumanReadableWarning
field = "Warning Message", warning_message
field = "Ford redundant TPS mode", useFordRedundantTps
field = "consumeObdSensors", consumeObdSensors, { canReadEnabled == 1 && canWriteEnabled == 1}
field = "use FSIO Table CAN Sniffing Filtering",useFSIOTableForCanSniffingFiltering
field = "turbo speed sensor", turboSpeedSensorInputPin
field = "turbo speed multiplier", turboSpeedSensorMultiplier
field = "Artificial Misfire", artificialTestMisfire
panel = allTriggerDebug
help = helpGeneral, "rusEFI General Help"
webHelp = @@MAIN_HELP_URL@@
text = "<img src='https://rusefi.com/style/logo_100.gif'>"
dialog = vrThreshold1, "VR 1 Threshold"
field = "Pin", vrThreshold1_pin
panel = vrThresholdCurve1
dialog = vrThreshold2, "VR 2 Threshold"
field = "Pin", vrThreshold2_pin
panel = vrThresholdCurve2
dialog = vrThreshold
topicHelp = "vrThresholdHelp"
panel = vrThreshold1
panel = vrThreshold2
dialog = gppwm1left, ""
field = "Pin", gppwm1_pin
field = ""
field = "Set frequency to 0hz for on-off mode"
field = "Frequency", gppwm1_pwmFrequency, {gppwm1_pin != 0}
field = ""
field = "On above duty", gppwm1_onAboveDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0}
field = "Off below duty", gppwm1_offBelowDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0}
field = "Duty if error", gppwm1_dutyIfError, {gppwm1_pin != 0}
field = ""
field = "Load Axis", gppwm1_loadAxis, {gppwm1_pin != 0}
field = "Note", gpPwmNote1
field = ""
field = ""
field = ""
field = ""
field = ""
dialog = gppwm1, "General Purpose PWM 1", xAxis
panel = gppwm1left
panel = gppwm1Tbl, {gppwm1_pin != 0}
dialog = gppwm2left, ""
field = "Pin", gppwm2_pin
field = ""
field = "Set frequency to 0hz for on-off mode"
field = "Frequency", gppwm2_pwmFrequency, {gppwm2_pin != 0}
field = ""
field = "On above duty", gppwm2_onAboveDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0}
field = "Off below duty", gppwm2_offBelowDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0}
field = "Duty if error", gppwm2_dutyIfError, {gppwm2_pin != 0}
field = ""
field = "Load Axis", gppwm2_loadAxis, {gppwm2_pin != 0}
field = "Note", gpPwmNote2
field = ""
field = ""
field = ""
field = ""
field = ""
dialog = gppwm2, "General Purpose PWM 2", xAxis
panel = gppwm2left
panel = gppwm2Tbl, {gppwm2_pin != 0}
dialog = gppwm3left, ""
field = "Pin", gppwm3_pin
field = ""
field = "Set frequency to 0hz for on-off mode"
field = "Frequency", gppwm3_pwmFrequency, {gppwm3_pin != 0}
field = ""
field = "On above duty", gppwm3_onAboveDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0}
field = "Off below duty", gppwm3_offBelowDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0}
field = "Duty if error", gppwm3_dutyIfError, {gppwm3_pin != 0}
field = ""
field = "Load Axis", gppwm3_loadAxis, {gppwm3_pin != 0}
field = "Note", gpPwmNote3
field = ""
field = ""
field = ""
field = ""
field = ""
dialog = gppwm3, "General Purpose PWM 3", xAxis
panel = gppwm3left
panel = gppwm3Tbl, {gppwm3_pin != 0}
dialog = gppwm4left, ""
field = "Pin", gppwm4_pin
field = ""
field = "Set frequency to 0hz for on-off mode"
field = "Frequency", gppwm4_pwmFrequency, {gppwm4_pin != 0}
field = ""
field = "On above duty", gppwm4_onAboveDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0}
field = "Off below duty", gppwm4_offBelowDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0}
field = "Duty if error", gppwm4_dutyIfError, {gppwm4_pin != 0}
field = ""
field = "Load Axis", gppwm4_loadAxis, {gppwm4_pin != 0}
field = "Note", gpPwmNote4
field = ""
field = ""
field = ""
field = ""
field = ""
dialog = gppwm4, "General Purpose PWM 4", xAxis
panel = gppwm4left
panel = gppwm4Tbl, {gppwm4_pin != 0}
[Tools]
;addTool = toolName, PanelName
addTool = veTableGenerator, "VE Table Generator", veTableTbl
#if LAMBDA
#else
addTool = afrTableGenerator, "AFR Table Generator", afrTableTbl
#endif