rusefi/firmware/tunerstudio/rusefi.input

3130 lines
153 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
;
;
;
; 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
;#unset tuneByMAF
[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
settingGroup = tuneVeMode, "VE Autotune Mode"
settingOption = tuneByTPS, "TPS-Based (See Injection -> Inj.Settings)"
settingOption = tuneByMAF, "MAF-Based"
settingOption = tuneByLoad, "Load-Based (Default)"
; settingGroup = fAlgorithmSetting, "Fuel Logic / Tables"
; settingOption = FA_PLAIN_MAF, "Plain MAF"
; settingOption = FA_TPS, "AlphaN/TPS"
; settingOption = DEFAULT, "Speed Density" ; DEFAULT will be over looked and this will fall into the #else block of the statement.
[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.
[Constants]
; new packet serial format with CRC
messageEnvelopeFormat = msEnvelope_1.0
endianness = little
nPages = 1
pageIdentifier = "\x00\x00"
pageReadCommand = "R\x00\x00%2o%2c"
burnCommand = "B\x00\x00"
pageActivate = "P\x00\x00"
pageValueWrite = "W\x00\x00%2o%v"
pageChunkWrite = "C\x00\x00%2o%2c%v"
; todo: make this command shorter one day, no need to have all these zeros
crc32CheckCommand = "k\x00\x00\x00\x00\x00\x00"
retrieveConfigError = "e"
;communication settings
pageActivationDelay = 500 ; Milliseconds delay after burn command. See https://sourceforge.net/p/rusefi/tickets/77/
;e.g. put writeblocks off and add an interwrite delay
writeBlocks = on
interWriteDelay = 10
blockReadTimeout = 3000; Milliseconds general timeout
; delayAfterPortOpen = 500
blockingFactor = 256 ; max chunk size
;end communication settings
; name = bits, type, offset, bits
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
; 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"
idleRpmPid_periodMs = "PID recalculation period"
[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
gauge2 = afr1Gauge
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@@
;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 = time, "Time", 8, 32, 0.01, "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 tuneByMAF
veAnalyzeMap = fuelTableMAFTbl, afrTableTbl, AFRValue, egoCorrection, { 1 }
#else
veAnalyzeMap = veTableTbl, afrTableTbl, AFRValue, egoCorrection, { 1 }
#endif
lambdaTargetTables = afrTableTbl, afrTSCustom
; 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
;[VeAnalyze]
; fuelAnalyzeMap = fuelTableTbl, afrTableTbl, AFRValue, egoCorrection , { 1 }
; filter = minRPMFilter, "Minimum RPM", RPMValue, < , 500, , true
[OutputChannels]
ochGetCommand = "O%2o%2c"
; see TS_OUTPUT_SIZE in console source code
ochBlockSize = @@TS_OUTPUT_SIZE@@
;
; see TunerStudioOutputChannels struct
;
; Bit flags
hasSdCard = bits, U32, 0, [0:0], "true", "false";
isIgnitionEnabledIndicator=bits,U32, 0, [1:1], "true", "false";
ind_injection_enabled=bits,U32, 0, [2:2], "true", "false";
isCylinderCleanupEnabled=bits,U32, 0, [3:3], "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";
ind_2nd_trigger_en=bits, U32, 0, [10:10], "true", "false";
clutchUpState =bits, U32, 0, [11:11], "true", "false";
clutchDownState =bits, U32, 0, [12:12], "true", "false";
knockEverIndicator=bits, U32, 0, [13:13], "true", "false";
knockNowIndicator=bits, U32, 0, [14:14], "true", "false";
brakePedalIndicator=bits, U32, 0, [15:15], "true", "false";
toothLogReady =bits, U32, 0, [16:16], "true", "false";
acSwitchIndicator =bits, U32, 0, [17:17], "true", "false";
ind_tps_error = bits, U32, 0, [18:18], "true", "false";
ind_clt_error = bits, U32, 0, [19:19], "true", "false";
ind_map_error = bits, U32, 0, [20:21], "true", "false";
ind_iat_error = bits, U32, 0, [21: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";
; RPM, vss
RPMValue = scalar, U16, 4, "RPM", 1, 0.00000
rpmAcceleration = scalar, S16, 6, "dRpm",{1/@@PACK_MULT_PERCENT@@}, 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
; todo: aux1
; todo: aux2
; 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", 0.01, 0
MAPValue = scalar, U16, 30, "kPa",{1/@@PACK_MULT_PRESSURE@@}, 0.0
baroPressure = scalar, U16, 32, "kPa",{1/@@PACK_MULT_PRESSURE@@}, 0.0
AFRValue = scalar, U16, 34, "AFR",,{1/@@PACK_MULT_AFR@@},, 0.0
engineLoad = scalar, U16, 36, "%",{1/@@PACK_MULT_PERCENT@@}, 0.0 ; Blend of MAP and TPS, depends on algorithm
; misc sensors
VBatt = scalar, U16, 38, "V",,{1/@@PACK_MULT_VOLTAGE@@},, 0.0
oilPressure = scalar, U16, 40, "kPa",{1/@@PACK_MULT_PRESSURE@@}, 0.0
vvtPosition = scalar, U16, 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, "ms",{1/@@PACK_MULT_MS@@}, 0.0
currentTargetAfr= scalar, U16, 48, "ratio",,{1/@@PACK_MULT_AFR@@},, 0
baseFuel = scalar, U16, 50, "ms",{1/@@PACK_MULT_MS@@}, 0
fuelRunning = scalar, U16, 52, "ms",{1/@@PACK_MULT_MS@@}, 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, 70, "ms",{1/@@PACK_MULT_MS@@}, 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
engineLoadDelta = scalar, S16, 76, "value",{1/@@PACK_MULT_PERCENT@@}, 0
deltaTps = scalar, S16, 78, "ratio",{1/@@PACK_MULT_PERCENT@@}, 0
engineLoadAccelExtra=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, S16, 98, "amount",{1/@@PACK_MULT_PERCENT@@}, 0
fuelConsumptionPerHour=scalar,F32, 100, "kPa", 1, 0.0
; Knock
knockCount = scalar, U32, 104,"counter", 1, 0
knockLevel = scalar, F32, 108, "Volts", 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
engineMakeCodeNameCrc16= scalar, U16, 134, "crc16", 1, 0
; Errors
totalTriggerErrorCounter=scalar,U32, 136,"counter", 1, 0
; orderingErrorCounter 140
warningCounter = scalar, U16, 144, "count", 1, 0
lastErrorCode = scalar, U16, 146, "error", 1, 0
recentErrorCode0= scalar, U16, 148, "error", 1, 0
recentErrorCode1= scalar, U16, 150, "error", 1, 0
recentErrorCode2= scalar, U16, 152, "error", 1, 0
recentErrorCode3= scalar, U16, 154, "error", 1, 0
recentErrorCode4= scalar, U16, 156, "error", 1, 0
recentErrorCode5= scalar, U16, 158, "error", 1, 0
recentErrorCode6= scalar, U16, 160, "error", 1, 0
recentErrorCode7= scalar, U16, 162, "error", 1, 0
; Debug
debugFloatField1= scalar, F32, 164, "val", 1, 0.0
debugFloatField2= scalar, F32, 168, "val", 1, 0.0
debugFloatField3= scalar, F32, 172, "val", 1, 0.0
debugFloatField4= scalar, F32, 176, "val", 1, 0.0
debugFloatField5= scalar, F32, 180, "val", 1, 0.0
debugFloatField6= scalar, F32, 184, "val", 1, 0.0
debugFloatField7= scalar, F32, 188, "val", 1, 0.0
debugIntField1 = scalar, S32, 192, "val", 1, 0.0
debugIntField2 = scalar, S32, 196, "val", 1, 0.0
debugIntField3 = scalar, S32, 200, "val", 1, 0.0
debugIntField4 = scalar, S16, 204, "val", 1, 0.0
debugIntField5 = scalar, S16, 206, "val", 1, 0.0
; Accel
accelerationX = scalar, S16, 208, "G", 0.01, 0
accelerationY = scalar, S16, 210, "G", 0.01, 0
; egt
egt1 = scalar, S16, 212, "deg C", 1, 0
egt2 = scalar, S16, 214, "deg C", 1, 0
egt3 = scalar, S16, 216, "deg C", 1, 0
egt4 = scalar, S16, 218, "deg C", 1, 0
egt5 = scalar, S16, 220, "deg C", 1, 0
egt6 = scalar, S16, 222, "deg C", 1, 0
egt7 = scalar, S16, 224, "deg C", 1, 0
egt8 = scalar, S16, 226, "deg C", 1, 0
TPS2Value = scalar, S16, 228, "%",{1/@@PACK_MULT_PERCENT@@}, 0
rawTps1Primary = scalar, U16, 230, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawPpsPrimary = scalar, U16, 232, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawClt = scalar, U16, 234, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawIat = scalar, U16, 236, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
rawOilPressure = scalar, U16, 238, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0
;
; see TunerStudioOutputChannels struct
;
; todo: generate this section programatically
LM_PLAIN_MAF = {0},
LM_ALPHA_N = {1},
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
egoCorrection = { 100 }
time = { timeNow }
; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS }
; 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 : intake))}
gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : intake))}
gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : intake))}
gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : intake))}
[PcVariables]
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
; 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
; 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
; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune
debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", ""
[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 }
; 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 = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
requiresPowerCycle = binarySerialRxPin
requiresPowerCycle = etb_use_two_wires
requiresPowerCycle = etbFreq
requiresPowerCycle = idle_solenoidFrequency
requiresPowerCycle = boostPwmFrequency
requiresPowerCycle = alternatorPwmFrequency
requiresPowerCycle = auxPidFrequency1
requiresPowerCycle = auxPidFrequency2
requiresPowerCycle = auxPidFrequency3
requiresPowerCycle = auxPidFrequency4
requiresPowerCycle = fsioOutputPins1
requiresPowerCycle = fsioOutputPins2
requiresPowerCycle = fsioOutputPins3
requiresPowerCycle = fsioOutputPins4
requiresPowerCycle = fsioOutputPins5
requiresPowerCycle = fsioOutputPins6
requiresPowerCycle = fsioOutputPins7
requiresPowerCycle = fsioOutputPins8
requiresPowerCycle = fsioOutputPins9
requiresPowerCycle = fsioOutputPins10
requiresPowerCycle = fsioOutputPins11
requiresPowerCycle = fsioOutputPins12
requiresPowerCycle = fsioOutputPins13
requiresPowerCycle = fsioOutputPins14
requiresPowerCycle = fsioOutputPins15
requiresPowerCycle = fsioOutputPins16
requiresPowerCycle = fsioFrequency1
requiresPowerCycle = fsioFrequency2
requiresPowerCycle = fsioFrequency3
requiresPowerCycle = fsioFrequency4
requiresPowerCycle = fsioFrequency5
requiresPowerCycle = fsioFrequency6
requiresPowerCycle = fsioFrequency7
requiresPowerCycle = fsioFrequency8
requiresPowerCycle = fsioFrequency9
requiresPowerCycle = fsioFrequency10
requiresPowerCycle = fsioFrequency11
requiresPowerCycle = fsioFrequency12
requiresPowerCycle = fsioFrequency13
requiresPowerCycle = fsioFrequency14
requiresPowerCycle = fsioFrequency15
requiresPowerCycle = fsioFrequency16
requiresPowerCycle = fsioAdc1
requiresPowerCycle = fsioAdc2
requiresPowerCycle = fsioAdc3
requiresPowerCycle = fsioAdc4
readOnly = warning_message
[CurveEditor]
; xAxis = leftValue, rightValue, step
; yAxis = bottomValue, topValue, step
curve = knockThresholdCurve, "Engine knock threshold RPM based"
columnLabel = "RPM", "Threshold"
xAxis = 0, 8000, 10
yAxis = 0, 8, 10
xBins = knockNoiseRpmBins, RPMValue
yBins = knockNoise
gauge = RPMGauge
curve = narrowToWideOxygenCurve, "Narrow to Wideband approximation"
columnLabel = "Voltage", "AFR"
xAxis = 0, 6, 10
yAxis = 0, 28, 10
xBins = narrowToWideOxygenBins
yBins = narrowToWideOxygen
gauge = afr1Gauge
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 RPM based"
columnLabel = "RPM", "Dwell"
xAxis = 0, 8000, 10
yAxis = 0, 30, 10
xBins = sparkDwellRpmBins, RPMValue
yBins = sparkDwellValues
gauge = RPMGauge
curve = map_samplingAngleCurve, "MAP Sampling Start Angle"
columnLabel = "RPM", "Angle"
xAxis = 0, 8000, 10
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, 10
yAxis = 0, 180, 10
xBins = map_samplingWindowBins, RPMValue
yBins = map_samplingWindow
gauge = MAPGauge
curve = injectorsDeadTime, "Injector Dead Time by VBatt"
columnLabel = "Voltage", "Dead Time"
xAxis = 8, 21, 10
yAxis = -3, 3, 10
xBins = injector_battLagCorrBins, VBatt
yBins = injector_battLagCorr
gauge = VBattGauge
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 = "Coolant", "Multiplier"
xAxis = -40, 120, 10
yAxis = 0, 2, 11
xBins = iatFuelCorrBins, intake
yBins = iatFuelCorr
gauge = IATGauge
curve = cltTimingCorrCurve, "Warmup timing correction"
columnLabel = "Coolant", "Extra"
xAxis = -40, 120, 10
yAxis = 0, 50, 10
xBins = cltTimingBins, coolant
yBins = cltTimingExtra
gauge = CLTGauge
curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier"
columnLabel = "Coolant", "Multiplier"
xAxis = -40, 100, 10
yAxis = 0, 3, 10
xBins = cltFuelCorrBins, coolant
yBins = cltFuelCorr
gauge = CLTGauge
curve = crankingCltCurve, "Cranking Coolant Temperature Multiplier"
columnLabel = "Coolant", "Multiplier"
xAxis = -40, 100, 10
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, 10
yAxis = 0, 3, 10
xBins = crankingTpsBins, TPSValue
yBins = crankingTpsCoef
gauge = TPSGauge
curve = crankingDurationCurve, "Cranking Duration Multiplier"
columnLabel = "Engine Cycle", "Multiplier"
xAxis = 0, 1000, 10
yAxis = 0, 3, 10
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, 10
yAxis = 0, 100, 10
xBins = iacCoastingBins, coolant
yBins = iacCoasting
gauge = idleAirValvePositionGauge
curve = cltCrankingCurve, "Cranking Idle Air multiplier"
columnLabel = "Coolant", "Multiplier"
xAxis = -40, 120, 10
yAxis = 0, 3, 10
xBins = cltCrankingCorrBins, coolant
yBins = cltCrankingCorr
gauge = CLTGauge
curve = cltIdleRPMCurve, "Idle Target RPM"
columnLabel = "Coolant", "RPM"
xAxis = -40, 120, 10
yAxis = 0, 8000, 10
xBins = cltIdleRpmBins, coolant
yBins = cltIdleRpm, RPMValue
gauge = CLTGauge
curve = idleAdvanceCurve, "Idle Advance Angle"
columnLabel = "RPM", "degrees"
xAxis = 0, 8000, 10
yAxis = -100, 100, 10
xBins = idleAdvanceBins, RPMValue
yBins = idleAdvance
gauge = RPMGauge
curve = idleVeCurve, "Idle VE"
columnLabel = "RPM", "%"
xAxis = 0, 8000, 10
yAxis = 0, 250, 10
xBins = idleVeBins, RPMValue
yBins = idleVe
gauge = afr1Gauge
curve = crankingAdvanceCurve, "Cranking Advance Angle"
columnLabel = "RPM", "degrees"
xAxis = 0, 8000, 10
yAxis = -100, 100, 10
xBins = crankingAdvanceBins, RPMValue
yBins = crankingAdvance
gauge = RPMGauge
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
table = fuelTableMAFTbl, fuelTableMAFMap, "Fuel Table", 1
topicHelp = "fuelHelp"
; constant, variable
xBins = fuelRpmBins, RPMValue
yBins = fuelLoadBins, MAFValue
zBins = fuelTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = fuelTableTPSTbl, fuelTableTPSMap, "Fuel Table", 1
topicHelp = "fuelHelp"
; constant, variable
xBins = fuelRpmBins, RPMValue
yBins = fuelLoadBins, TPSValue
zBins = fuelTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = fuelTableELTbl, fuelTableELMap, "Fuel Table", 1
topicHelp = "fuelHelp"
; constant, variable
xBins = fuelRpmBins, RPMValue
yBins = fuelLoadBins, engineLoad
zBins = fuelTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
; 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 Open", 1
xBins = boostRpmBins, RPMValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "Boost Closed", 1
xBins = boostRpmBins, RPMValue
yBins = boostTpsBins, TPSValue
zBins = boostTableClosedLoop
table = fsioTable1Tbl, fsioTable1Map, "FSIO Table #1", 1
xBins = fsioTable1RpmBins, RPMValue
yBins = fsioTable1LoadBins, engineLoad
zBins = fsioTable1
table = fsioTable2Tbl, fsioTable2Map, "FSIO Table #2", 1
xBins = fsioTable2RpmBins, RPMValue
yBins = fsioTable2LoadBins, engineLoad
zBins = fsioTable2
table = fsioTable3Tbl, fsioTable3Map, "FSIO Table #3", 1
xBins = fsioTable3RpmBins, RPMValue
yBins = fsioTable3LoadBins, engineLoad
zBins = fsioTable3
table = fsioTable4Tbl, fsioTable4Map, "FSIO Table #4", 1
xBins = fsioTable4RpmBins, RPMValue
yBins = fsioTable4LoadBins, engineLoad
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
#if FA_PLAIN_MAF
yBins = ignitionLoadBins, MAFValue
#elif FA_TPS
yBins = ignitionLoadBins, TPSValue
#else
yBins = ignitionLoadBins, engineLoad
#endif
zBins = ignitionTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = ignitionTpsTableTbl, ignitionTableMap, "Ignition TPS Table", 1
; constant, variable
; Currently we share ignitionRpmBins between two advance tables... Is it ok?
xBins = ignitionRpmBins, RPMValue
yBins = ignitionTpsBins, TPSValue
zBins = ignitionTpsTable
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
#if tuneByTPS
yBins = ignitionTpsBins, TPSValue
#else
yBins = veLoadBins, MAPValue
#endif
zBins = veTable
; gridHeight = 2.0
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
upDownLabel = "(RICHER)", "(LEANER)"
table = injPhaseTableTbl, injPhaseTableMap, "Injection Phase", 1
topicHelp = "fuelHelp"
; constant, variable
xBins = injPhaseRpmBins, RPMValue
yBins = injPhaseLoadBins, engineLoad
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)"
table = afrTableTbl, afrTableMap, "Target AFR Table", 1
; constant, variable
xBins = afrRpmBins, RPMValue
yBins = afrLoadBins, MAPValue
zBins = afrTable
; 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, engineLoad
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
[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", "dRpm", 0, 3, 0, 1, 3, 4, 1, 1
knockCountGauge = knockCount,"Knock count", "count", 0, 120, 10, 10, 100, 100, 1, 1
knockLevelGauge = knockLevel,"Knock level", "volts", 0, 7, 10, 10, 100, 100, 1, 2
fuelTankLevelGauge = fuelTankLevel,"Fuel level", "x", 0, 7, 10, 10, 100, 100, 1, 2
speedToRpmRatioGauge = speedToRpmRatio, "speed2rpm", "", 0, 100, 0, 0, 100, 100, 4, 4
gaugeCategory = ECU Status
warningCounterGauge = warningCounter, "Warning count", "", 0, 100, 0, 0, 100, 100, 0, 0
lastErrorCodeGauge = lastErrorCode, "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 , "ECU Software Version", "%", 0, 100, 0, 0, 100, 100, 0, 0
timeSecondsGauge = seconds, "Uptime", "sec", 0, 100, 0, 0, 100, 100, 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, 15000, 200, 500, 6000, 6000, 0, 0
CLTGauge = coolant, "Coolant temp", "deg C", -40, 140, -15, 1, 95, 110, 1, 1
IATGauge = intake, "Intake air temp", "deg C", -40, 140, -15, 1, 95, 110, 1, 1
afr1Gauge = AFRValue, "Air fuel ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2
MAFGauge = MAFValue, "Mass air flow", "v", 0, 5, 0, 1, 3, 4, 1, 1
VBattGauge = VBatt, "Battery voltage", "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
atmPresCGauge = baroPressure, @@GAUGE_NAME_BARO_PRESSURE@@, "kPa", 0, 1024, 0, 0, 0, 0, 0, 0
vvtPositionGauge = vvtPosition, @@GAUGE_NAME_VVT@@, "deg", 0, 100, 0, 0, 720, 720, 0, 0
internalMcuTemperatureGauge = internalMcuTemperature, @@GAUGE_NAME_ECU_TEMPERATURE@@, "C", 0, 100, 0, 0, 75, 100, 0, 0
OilPressGauge = oilPressure, "Oil Pressure", "kPa", 0, 750, 35, 75, 550, 700, 0, 0
idleAirValvePositionGauge = idleAirValvePosition, "Idle position", "%", 0, 100, 0, 0, 100, 100, 1, 1
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@@, "perc", -11, 11, 1.0, 1.2, 100, 100, 3, 1
gaugeCategory = Acceleration Enrichment
engineLoadDeltaGauge = engineLoadDelta,"AE: load change","value", 0, 120, 10, 10, 100, 100, 1, 1
engineLoadAccelExtraGauge = engineLoadAccelExtra,"AE: load extra","value", 0, 120, 10, 10, 100, 100, 1, 1
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@@, "deg 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@@, "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 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, 25.5, 1.0, 1.2, 20, 25, 3, 1
fuelRunningGauge = fuelRunning, @@GAUGE_NAME_FUEL_RUNNING@@, "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
baseFuelGauge = baseFuel, @@GAUGE_NAME_FUEL_BASE@@, "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1
fuelPidCorrectionGauge = fuelPidCorrection, @@GAUGE_NAME_FUEL_PID_CORR@@, "mSec", -11, 11, 1.0, 1.2, 20, 25, 3, 1
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", "volts", 0, 5, 0, 0, 5, 5, 3, 0
rawPpsPrimaryGauge = rawPpsPrimary , "Raw Pedal Primary", "volts", 0, 5, 0, 0, 5, 5, 3, 0
rawCltGauge = rawClt , "Raw CLT", "volts", 0, 5, 0, 0, 5, 5, 3, 0
rawIatGauge = rawIat , "Raw IAT", "volts", 0, 5, 0, 0, 5, 5, 3, 0
rawOilPressureGauge = rawOilPressure, "Raw Oil Pressure", "volts", 0, 5, 0, 0, 5, 5, 3, 0
[WueAnalyze]
; wueCurveName, afrTempCompensationCurve, lambdaTargetTableName, lambdaChannel, coolantTempChannel, egoCorrectionChannel, wueChannel, activeCondition
wueAnalyzeMap = wueAnalyzer_warmup_curve, wueAfrTargetOffsetCurve, afrTableTbl, AFRValue, coolant, cltCorrection, egoCorrection
lambdaTargetTables = afrTableTbl, afrTSCustom
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
gauge5 = afr1Gauge
gauge6 = VBattGauge
gauge7 = dwellGauge
gauge8 = ignadvGauge
; = expression, off-label, on-label, off-bg, off-fg, on-bg, on-fg
; important status
indicator = { ind_hasFatalError }, "", "CRITICAL ERROR", white, black, red, black
indicator = { ind_isWarnNow }, "", "WARNING", white, black, yellow, black
indicator = { ind_check_engine }, "", "Check Engine", white, black, red, black
indicator = { isIgnitionEnabledIndicator}, "no ignition", "ignition", yellow, black, white, black
indicator = { ind_injection_enabled}, "no injection", "injection", yellow, black, white, black
indicator = { ind_isTriggerError}, "trigger ok", "trigger err", white, black, red, 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 = { isCylinderCleanupActivated}, "no cyl cleanup", "cyl cleanup", white, black, yellow, black
indicator = { needBurn }, "config ok", "unsaved changes", white, black, yellow, black
indicator = { hasSdCard}, "no SD", "with SD", white, black, green, black
indicator = { ind_fuel_pump}, "pump off", "pump on", white, black, green, black
indicator = { clutchUpState }, "clutch", "cltch Up", white, black, red, black
indicator = { clutchDownState }, "clutch", "cltch Down", white, black, yellow, black
indicator = { brakePedalIndicator }, "brake", "brake down", white, black, red, black
indicator = { acSwitchIndicator }, "AC off", "AC on", white, black, blue, white
; error codes
indicator = { ind_tps_error}, "tps", "tps 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
indicator = { ind_map_error}, "map", "map error", white, black, red, black
indicator = { ind_pedal_error}, "pedal", "pedal error", white, black, red, black
indicator = { knockEverIndicator }, "", "Knock recently", white, black, red, black
indicator = { knockNowIndicator }, "no knock", "Knock NOW", white, black, red, black
[KeyActions]
showPanel = spi, spiFunction
showPanel = con, connection
[Datalog]
; Channel Label Type Format
entry = time, "Time", float, "%.3f"
entry = RPMValue, "RPM", int, "%d"
entry = firmwareVersion, @@GAUGE_NAME_VERSION@@, int, "%d"
entry = coolant, "CLT", float, "%.2f"
entry = intake, "IAT", float, "%.2f"
entry = oilPressure, "Oil Press", float, "%.1f"
entry = TPSValue, "TPS", float, "%.2f"
entry = MAFValue, "MAF", float, "%.2f"
entry = MAPValue, "MAP", float, "%.1f"
entry = AFRValue, @@GAUGE_NAME_AFR@@, float, "%.2f"
entry = VBatt, @@GAUGE_NAME_VBAT@@, float, "%.2f"
entry = engineLoad, @@GAUGE_NAME_ENGINE_LOAD@@, float, "%.1f"
entry = ignitionAdvance, @@GAUGE_NAME_TIMING_ADVANCE@@, float, "%.2f"
entry = knockLevel, @@GAUGE_NAME_KNOCK_LEVEL@@, float, "%.2f"
entry = knockCount, @@GAUGE_NAME_KNOCK_COUNTER@@, int, "%d"
entry = vehicleSpeedKph, @@GAUGE_NAME_VVS@@, float, "%.2f"
entry = speedToRpmRatio, "s2rpm", float, "%.3f"
entry = rpmAcceleration, "dRPM", float, "%.3f"
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 = totalTriggerErrorCounter, "trg err",int, "%d"
entry = idleAirValvePosition, @@GAUGE_NAME_IAC@@, 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_PID_CORR@@, 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 = accelerationX, @@GAUGE_NAME_ACCEL_X@@, float,"%.2f", { LIS302DLCsPin != 0 }
entry = accelerationY, @@GAUGE_NAME_ACCEL_Y@@, float,"%.2f", { LIS302DLCsPin != 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 = engineLoadAccelExtra, @@GAUGE_NAME_FUEL_EL_EXTRA@@,float, "%.3f"
entry = engineLoadDelta, "fuel: load change",float, "%.3f"
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 = vvtPosition, @@GAUGE_NAME_VVT@@, float,"%.2f"
entry = injectionOffset, "injOffset" , float, "%.2F"
; is there a way to log parameter? entry = debugMode, "debugMode",int,"%d"
; Alternator_PID: alternator duty cycle
; DBG_TPS_ACCEL: from TPS
entry = debugFloatField1, @@GAUGE_NAME_DEBUG_F1@@,float,"%.4f", { !enableLogDebugChannels }
; Alternator_PID: current integration term
; DBG_TPS_ACCEL: to TPS
entry = debugFloatField2, @@GAUGE_NAME_DEBUG_F2@@,float,"%.4f", { !enableLogDebugChannels }
; Alternator_PID: previous error
; DBG_TPS_ACCEL: tps<>tps table value
entry = debugFloatField3, @@GAUGE_NAME_DEBUG_F3@@,float,"%.4f", { !enableLogDebugChannels }
; Alternator_PID: I setting
; DBG_TPS_ACCEL: extra fuel
entry = debugFloatField4, @@GAUGE_NAME_DEBUG_F4@@,float,"%.4f", { !enableLogDebugChannels }
; Alternator_PID: D setting
entry = debugFloatField5, @@GAUGE_NAME_DEBUG_F5@@,float,"%.4f", { !enableLogDebugChannels }
; Alternator_PID: dTerm
entry = debugFloatField6, @@GAUGE_NAME_DEBUG_F6@@,float,"%.4f", { !enableLogDebugChannels }
entry = debugFloatField7, @@GAUGE_NAME_DEBUG_F7@@,float,"%.4f", { !enableLogDebugChannels }
; Alternator_PID: P setting
entry = debugIntField1, @@GAUGE_NAME_DEBUG_I1@@,int,"%d", { !enableLogDebugChannels }
; Alternator_PID: offset setting
entry = debugIntField2, @@GAUGE_NAME_DEBUG_I2@@,int,"%d", { !enableLogDebugChannels }
; Alternator_PID: PID reset counter
entry = debugIntField3, @@GAUGE_NAME_DEBUG_I3@@,int,"%d", { !enableLogDebugChannels }
entry = debugIntField4, @@GAUGE_NAME_DEBUG_I4@@,int,"%d", { !enableLogDebugChannels }
entry = debugIntField5, @@GAUGE_NAME_DEBUG_I5@@,int,"%d", { !enableLogDebugChannels }
entry = engineMakeCodeNameCrc16, "Engine 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 = acSwitchIndicator, @@INDICATOR_NAME_AC_SWITCH@@,int,"%d"
entry = ind_fan, "radiator fan",int,"%d"
; Electronic throttle body
entry = etb1Error, "ETB Error", float, "%.3f"
entry = etb1DutyCycle, "ETB Duty", float, "%.3f"
entry = etbTarget, "ETB Target", float, "%.3f"
; tpsADC = U16, "ADC",
; alignmet = U16, "al",
; atmPres = F32, "pres",
; crankingFuel = F32, "ms",
; tCharge = F32, "T",
; sparkDwell = F32, "MAP",
; warmUpEnrich = F32, "%",
[Menu]
menuDialog = main
menu = "&Base &Engine"
subMenu = engineChars, "Base engine"
subMenu = triggerConfiguration, "Trigger"
subMenu = triggerConfiguration_IO, "Advanced Trigger"
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 & rail"
subMenu = fanSetting, "Fan"
subMenu = tachSettings, "Tachometer"
subMenu = malfunction, "Check engine light"
subMenu = statusLeds, "Status LEDs"
menu = "Fuel"
# basic
subMenu = injectionSettings, "Injection settings"
subMenu = injectionDeadTime, "Injector dead time", 0, {isInjectionEnabled == 1}
subMenu = std_separator
# Targets & closed loop
subMenu = afrTableTbl, "Target AFR", 0, {isInjectionEnabled == 1 && (fuelAlgorithm == LM_SPEED_DENSITY || fuelAlgorithm == LM_REAL_MAF)}
subMenu = fuelClosedLoopDialog, "Closed loop correction", 0, {isInjectionEnabled == 1}
subMenu = coastingFuelCutControl, "Deceleration fuel cutoff (DFCO)", 0, {isInjectionEnabled == 1}
subMenu = std_separator
# Fuel table/VE
subMenu = fuelTableDialog, "Fuel table", 0, {isInjectionEnabled == 1 && fuelAlgorithm != LM_SPEED_DENSITY && fuelAlgorithm != LM_REAL_MAF}
subMenu = veTableDialog, "VE", 0, {isInjectionEnabled == 1 && (fuelAlgorithm == LM_SPEED_DENSITY || fuelAlgorithm == LM_REAL_MAF)}
subMenu = injPhaseTableTbl, "Injection phase", 0, {isInjectionEnabled == 1}
subMenu = std_separator
# Corrections
subMenu = cltFuelCorrCurve, "CLT multiplier", 0, {isInjectionEnabled == 1}
subMenu = iatFuelCorrCurve, "IAT multiplier", 0, {isInjectionEnabled == 1}
subMenu = baroCorrTbl, "Baro multiplier", 0, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY}
subMenu = tChargeSettings, "tCharge settings", 0, {isInjectionEnabled == 1}
subMenu = std_separator
# Accel enrichment
subMenu = AccelEnrich, "Accel/decel enrichment/enleanment", 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}
; todo: once proven, uncomment and remove from the "broken" menu
; subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1}
subMenu = std_separator
subMenu = ignitionTableTbl, "Ignition advance", 0, {isIgnitionEnabled == 1 && useTPSAdvanceTable == 0}
subMenu = ignitionTpsTableTbl, "Ignition advance (TPS)", 0, {isIgnitionEnabled == 1 && useTPSAdvanceTable == 1}
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 = std_separator
subMenu = crankingCltCurve, "Fuel CLT multiplier"
subMenu = crankingDurationCurve, "Fuel duration multiplier"
subMenu = crankingTpsCurve, "Fuel TPS multiplier"
subMenu = std_separator
subMenu = crankingAdvanceCurve, "Ignition advance", 0, {useSeparateAdvanceForCranking == 1}
subMenu = std_separator
subMenu = cltCrankingCurve, "IAC multiplier", 0, {overrideCrankingIacSetting == 1}
menu = "&Idle"
subMenu = idleSettings, "Idle settings"
subMenu = idlehw, "Idle hardware"
subMenu = std_separator
subMenu = cltIdleRPMCurve, "Target RPM", 0, {idleMode == 0}
subMenu = iacPidMultTbl, "IAC PID Multiplier", 0, {idleMode == 0 && useIacPidMultTable == 1}
subMenu = std_separator
subMenu = idleVeCurve, "VE", 0, {useSeparateVeForIdle == 1}
subMenu = idleAdvanceCurve, "Ignition advance", 0, {useSeparateAdvanceForIdle == 1}
subMenu = std_separator
subMenu = idleTimingPidCorrDialog, "Closed-loop idle timing"
subMenu = cltIdleCurve, "CLT multiplier"
subMenu = iacCoastingCurve, "Coasting IAC Position for Auto-Idle", 0, {useIacTableForCoasting == 1}
menu = "&Advanced"
subMenu = boostDialog, "Boost Control"
subMenu = boostPidDialog, "Closed Loop Boost", { boostType == 1 }
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
subMenu = fsioInputsDialog, "FSIO inputs"
subMenu = auxPidDialog, "Aux PID"
subMenu = fsioOutputsDialog, "FSIO outputs"
subMenu = fsioTable1Tbl, "FSIO Table #1"
subMenu = fsioTable2Tbl, "FSIO Table #2"
subMenu = fsioTable3Tbl, "FSIO Table #3"
subMenu = fsioTable4Tbl, "FSIO Table #4"
subMenu = fsioFormulas, "FSIO Formulas"
subMenu = fsioCurve1, "FSIO Curve #1"
subMenu = fsioCurve2, "FSIO Curve #2"
subMenu = fsioCurve3, "FSIO Curve #3"
subMenu = fsioCurve4, "FSIO Curve #4"
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 = 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 = egtInputs, "EGT" @@if_ts_show_egt
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 = 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 = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1}
subMenu = mc33Dialog, "GDI Dreams"
subMenu = std_separator
subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" @@if_ts_show_hip9011
subMenu = std_separator
subMenu = etbDialog, "Electronic throttle body (beta version)" @@if_ts_show_etb
subMenu = etbTpsBiasCurve, "Electronic throttle body bias curve" @@if_ts_show_etb
subMenu = pedalToTpsTbl, "Electronic Pedal Map" @@if_ts_show_etb
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 = "w\x00\x12\x00\x01"
cmd_test_spk2 = "w\x00\x12\x00\x02"
cmd_test_spk3 = "w\x00\x12\x00\x03"
cmd_test_spk4 = "w\x00\x12\x00\x04"
cmd_test_spk5 = "w\x00\x12\x00\x05"
cmd_test_spk6 = "w\x00\x12\x00\x06"
cmd_test_spk7 = "w\x00\x12\x00\x07"
cmd_test_spk8 = "w\x00\x12\x00\x08"
cmd_test_spk9 = "w\x00\x12\x00\x09"
cmd_test_spk10 = "w\x00\x12\x00\x0a"
cmd_test_spk11 = "w\x00\x12\x00\x0b"
cmd_test_spk12 = "w\x00\x12\x00\x0c"
cmd_test_spk13 = "w\x00\x12\x00\x0d"
cmd_test_spk14 = "w\x00\x12\x00\x0e"
cmd_test_spk15 = "w\x00\x12\x00\x0f"
cmd_test_spk16 = "w\x00\x12\x00\x10"
cmd_test_inj1 = "w\x00\x13\x00\x01"
cmd_test_inj2 = "w\x00\x13\x00\x02"
cmd_test_inj3 = "w\x00\x13\x00\x03"
cmd_test_inj4 = "w\x00\x13\x00\x04"
cmd_test_inj5 = "w\x00\x13\x00\x05"
cmd_test_inj6 = "w\x00\x13\x00\x06"
cmd_test_inj7 = "w\x00\x13\x00\x07"
cmd_test_inj8 = "w\x00\x13\x00\x08"
cmd_test_inj9 = "w\x00\x13\x00\x09"
cmd_test_inj10 = "w\x00\x13\x00\x0a"
cmd_test_inj11 = "w\x00\x13\x00\x0b"
cmd_test_inj12 = "w\x00\x13\x00\x0c"
cmd_test_inj13 = "w\x00\x13\x00\x0d"
cmd_test_inj14 = "w\x00\x13\x00\x0e"
cmd_test_inj15 = "w\x00\x13\x00\x0f"
cmd_test_inj16 = "w\x00\x13\x00\x10"
cmd_test_fuel_pump = "w\x00\x14\x00\x01"
cmd_calibrate_tps_1_closed = "w\x00\x14\x00\x02"
cmd_calibrate_tps_1_wot = "w\x00\x14\x00\x03"
cmd_calibrate_tps_2_closed = "w\x00\x14\x00\x04"
cmd_calibrate_tps_2_wot = "w\x00\x14\x00\x05"
cmd_calibrate_pedal_up = "w\x00\x14\x00\x06"
cmd_calibrate_pedal_down = "w\x00\x14\x00\x07"
cmd_tle8888_init = "w\x00\x14\x00\x08"
cmd_test_ac_relay = "w\x00\x14\x00\x09"
cmd_write_config = "w\x00\x14\x00\x0A"
cmd_test_starter_relay = "w\x00\x14\x00\x0B"
cmd_etb_autotune = "w\x00\x14\x00\x0C"
cmd_enable_self_stim = "w\x00\x14\x00\x0D"
cmb_etb_auto_calibrate = "w\x00\x14\x00\x0E"
cmd_disable_self_stim = "w\x00\x14\x00\x0F"
cmd_etb_autotune_stop = "w\x00\x14\x00\x10"
cmd_test_radiator_fan = "w\x00\x15\x00\x01"
cmd_test_check_engine_light = "w\x00\x16\x00\x01"
cmd_test_idle_valve = "w\x00\x17\x00\x01"
cmd_cj125_calibrate = "w\x00\x18\x00\x00"
cmd_call_from_pit = "w\x00\x20\x34\x56"
cmd_stop_engine = "w\x00\x79\x00\x00"
; reboot ECU
cmd_reset_controller = "w\x00\xbb\x00\x00"
; jump to DFU mode
cmd_dfu = "w\x00\xba\x00\x00"
; See 'executeTSCommand' in firmware source code
; MRE_MIATA_NB2_MAP = 11
cmd_set_engine_type_microRusEFI_Miata_NB2_MAP = "w\x00\x30\x00\x0B"
; MRE_MIATA_NA6 12
cmd_set_engine_type_microRusEFI_Miata_NA6 = "w\x00\x30@@ET_MRE_MIATA_NA6_16_hex@@"
; MRE_MIATA_NB2_MAF = 15
cmd_set_engine_type_microRusEFI_Miata_NB2_MAF = "w\x00\x30@@ET_MRE_MIATA_NB2_MAF_16_hex@@"
; MIATA_NA6_MAP = 41
cmd_set_engine_type_Frankenso_Miata_NA6_MAP = "w\x00\x30\x00\x29"
; MIATA_NA6_VAF = 57
cmd_set_engine_type_Frankenso_Miata_NA6_VAF = "w\x00\x30\x00\x39"
; MAZDA_MIATA_2003 = 47
cmd_set_engine_type_Frankenso_Miata_NB2 = "w\x00\x30\x00\x2F"
; ETB_BENCH_ENGINE = 58
cmd_set_engine_type_etb_test = "w\x00\x30\x00\x3A"
; ETB_BENCH_ENGINE = 59
cmd_set_engine_type_8888_test = "w\x00\x30\x00\x3B"
cmd_set_engine_type_default = "w\x00\x31\x00\x00"
[UserDefined]
dialog = fuelTableBottomDialog, "", card
panel = fuelTableMAFTbl, Center, {fuelAlgorithm==LM_PLAIN_MAF}
panel = fuelTableTPSTbl, Center, {fuelAlgorithm==LM_ALPHA_N}
panel = fuelTableELTbl, Center
dialog = fuelTableRight, "", yAxis
topicHelp = "https://rusefi.com/s/fuel"
displayOnlyField = "Fuel Algorithm", fuelAlgorithm
panel = fuelTableBottomDialog, Center
liveGraph = fuelLive, "Fuel", South
graphLine = AFRValue
graphLine = RPMValue
dialog = fuelTableGaugesPanel, yAxis
gauge = TPSGauge
gauge = MAFGauge
gauge = MAPGauge
dialog = fuelTableDialog, "Fuel Table", xAxis
topicHelp = "fuelHelp"
panel = fuelTableGaugesPanel
panel = fuelTableRight
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 = "Two wire batch emulation", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2}
#if tuneByTPS
field = "Use TPS instead of Load for VE table", useTPSBasedVeTable, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY}
#else
field = "#Enabled for TPS-Based 'VE Autotune Mode' in Project Settings"
field = "Use TPS instead of Load for VE table", useTPSBasedVeTable, {0}
#endif
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@@
field = "This is useful to have tachometer working"
field = " while converting from distributor"
field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1}
field = "Dizzy out Pin Mode", dizzySparkOutputPinMode, {isIgnitionEnabled == 1}
dialog = ignitionBasic, ""
field = "Enabled", isIgnitionEnabled
field = "Mode", ignitionMode, {isIgnitionEnabled == 1}
field = "#Wasted spark with individual coils"
field = "Two wire wasted", twoWireBatchIgnition, {isIgnitionEnabled == 1 && ignitionMode == 2}
field = "Timing Mode", timingMode, {isIgnitionEnabled == 1}
field = "Use TPS-based Advance Table", useTPSAdvanceTable, {isIgnitionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY}
field = "#Use fixed timing while validating with a timing gun"
field = "Fixed Timinig", fixedTiming, {isIgnitionEnabled == 1 && timingMode == 1}
dialog = ignitionSettings, "", xAxis
panel = ignitionBasic
panel = ignitionOutputs
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine Preset", engineType
; this field is useful for rusEFI online catalog
field = "Engine Make", engineMake
; this field is useful for rusEFI online catalog
field = "Manufacturer Engine Code", engineCode
; this field is useful for rusEFI online catalog
field = "Vehicle Name", vehicleName
field = "Number of Cylinders", cylindersCount
field = "Engine Displacement", displacement
field = "Firing Order", firingOrder
; this field is useful for rusEFI online catalog
field = "Compression Ratio", compressionRatio
; this field is useful for rusEFI online catalog
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 == 0}, {trigger_type == 0}
field = "Missing/skipped tooth count", trigger_customSkippedToothCount, {trigger_type == 0}, {trigger_type == 0}
; see also in firmware '[doesTriggerImplyOperationMode]' tag
field = "Operation mode / speed", ambiguousOperationMode
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 Offset", globalTriggerAngleOffset
field = "Display only interesting", displayLogicLevelsInEngineSniffer
dialog = triggerConfiguration_IO, "Advanced Trigger"
field = "!https://rusefi.com/s/vvt"
field = "VVT mode", vvtMode, {trigger_type != 80}
field = "VVT use rise front", vvtCamSensorUseRise, {trigger_type != 80}
field = "VVT position display offset", vvtOffset
field = "print verbose sync details to console",verboseTriggerSynchDetails
field = "Do not print messages in case of sync error", silentTriggerError
field = "Enable noise filtering", useNoiselessTriggerDecoder, {trigger_type == @@TRIGGER_TYPE_60_2@@ || trigger_type == @@TRIGGER_TYPE_36_1@@}
dialog = triggerInputs, "Trigger Inputs"
field = "!ECU reboot needed to apply these settings"
field = "#Cam is primary if you have cam sensor"
field = "Primary channel", triggerInputPins1
field = "Invert Primary", invertPrimaryTriggerSignal
field = "Secondary channel", triggerInputPins2, { trigger_type != 0 && trigger_type != 8 && trigger_type != 9 && trigger_type != 18 && trigger_type != 20}
field = "Invert Secondary", invertSecondaryTriggerSignal, { trigger_type != 0 && trigger_type != 8 && trigger_type != 9 && trigger_type != 18 && trigger_type != 20}
field = "Cam Sync/VVT input", camInputs1
panel = triggerInputComparator @@if_ts_show_trigger_comparator
dialog = triggerConfiguration
panel = triggerConfiguration_settings, North
panel = triggerInputs, South
; Engine->Injection Settings
dialog = injChars, "Injector Settings", yAxis
field = "Injector Flow", injector_flow, {isInjectionEnabled == 1}
dialog = injectorOutputSettings, "Injector Outputs", yAxis
field = "!ECU reboot needed to apply these settings"
field = "injection Pin Mode", injectionPinMode, {isInjectionEnabled == 1}
field = "With batched injection without 'Two wire batch emulation'"
field = " fill only first count / 2 values"
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 != 3 && cylindersCount > 2}
field = "Injection Pin 4", injectionPins4, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 3}
field = "Injection Pin 5 ", injectionPins5, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 4}
field = "Injection Pin 6 ", injectionPins6, {isInjectionEnabled == 1 && injectionMode != 3 && 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}
dialog = injectionBasic, ""
topicHelp = "fuelHelp"
panel = baseInjection
panel = injChars
dialog = injectionSettings, "", xAxis
panel = injectionBasic
panel = injectorOutputSettings
dialog = injectionDeadTime, "", yAxis
panel = injectorsDeadTime, East
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 = "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 = "Enable Multiple Sparks", multisparkEnable
panel = multisparkMain
panel = multisparkDwellParams
dialog = dwellSettings, "", yAxis
panel = dwellCorrection, Center
; 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 #1"
field = "!See Tools>Calibrate TPS"
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
field = "Secondary min", tps1SecondaryMin, {tps1_2AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Secondary max", tps1SecondaryMax, {tps1_2AdcChannel != @@ADC_CHANNEL_NONE@@}
dialog = tpsNum2, "Throttle #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
field = "Secondary min", tps2SecondaryMin, {tps2_2AdcChannel != @@ADC_CHANNEL_NONE@@}
field = "Secondary max", tps2SecondaryMax, {tps2_2AdcChannel != @@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 = tpsSensor, "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
dialog = pedalGauges
gauge = pedalPositionGauge
gauge = rawPpsPrimaryGauge
dialog = pedalSensor, "Accelerator pedal", border
panel = pedalSensorLeft, West
panel = pedalGauges, East
dialog = mc33Dialog, "GDI Dreams"
field = mc33816_cs, mc33816_cs
field = mc33816_rstb, mc33816_rstb
field = mc33816_flag0, mc33816_flag0
field = "mc33972 SPI", mc33972spiDevice
field = mc33_hvolt, mc33_hvolt
field = mc33_i_boost, mc33_i_boost
field = mc33_i_peak, mc33_i_peak
field = mc33_i_hold, mc33_i_hold
field = mc33_t_max_boost, mc33_t_max_boost
field = mc33_t_peak_off, mc33_t_peak_off
field = mc33_t_peak_tot, mc33_t_peak_tot
field = mc33_t_bypass, mc33_t_bypass
field = mc33_t_hold_off, mc33_t_hold_off
field = mc33_t_hold_tot, mc33_t_hold_tot
; Sensor Inputs
dialog = otherSensorInputs, "Other Sensor Inputs"
field = "Fuel level", fuelLevelSensor
field = "Clutch down switch", clutchDownPin
field = "Clutch down inverted", clutchDownPinMode
field = "Clutch up switch", clutchUpPin
field = "Clutch up inverted", clutchUpPinMode
field = "Throttle Up switch", throttlePedalUpPin
field = "Brake pedal switch", brakePedalPin
field = "A/C switch", acSwitchAdc
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 = "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 = "FrequencyReportingMapInputPin", frequencyReportingMapInputPin
field = "FuelLevelSensor", fuelLevelSensor
field = "Vehicle Speed Input pin", vehicleSpeedSensorInputPin
field = "clutchDownPin", clutchDownPin
field = "clutchUpPin", clutchUpPin
field = "brakePedalPin", brakePedalPin
field = "A/C Switch", acSwitchAdc
field = "Aux Temperature #1", auxTempSensor1_adcChannel
field = "Aux Temperature #2", auxTempSensor2_adcChannel
field = "Aux Fast Analog", auxFastSensor1_adcChannel
dialog = allPinsMC33, "MC33816"
field = "Chip Select", mc33816_cs
field = rstb, mc33816_rstb
field = flag0, mc33816_flag0
field = mc33816_driven, mc33816_driven
field = mc33816spiDevice, mc33816spiDevice
dialog = allPins1_1
field = "trigger stimulator pin #1", triggerSimulatorPins1
field = "trigger stimulator pin #2", triggerSimulatorPins2
field = "trigger stimulator pin #2", triggerSimulatorPins3
field = high_fuel_pressure_sensor_1, high_fuel_pressure_sensor_1
field = high_fuel_pressure_sensor_2, high_fuel_pressure_sensor_2
field = "Warning Led", warningLedPin
field = "tle6240_cs", tle6240_cs
field = "tle6240 SPI", tle6240spiDevice
panel = joystickPanel
dialog = allPins1_2
field = "Tachometer output Pin", tachOutputPin
field = "Dizzy out Pin", dizzySparkOutputPin
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 #1", etbIo1_controlPin1 @@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 #1", etbIo2_controlPin1 @@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 = "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
field = "FSIO dig inp #7", fsioDigitalInputs7
field = "FSIO dig inp #8", fsioDigitalInputs8
field = "FSIO dig inp #9", fsioDigitalInputs9
field = "FSIO dig inp #10", fsioDigitalInputs10
field = "FSIO dig inp #11", fsioDigitalInputs11
field = "FSIO dig inp #12", fsioDigitalInputs12
field = "FSIO dig inp #13", fsioDigitalInputs13
field = "FSIO dig inp #14", fsioDigitalInputs14
field = "FSIO dig inp #15", fsioDigitalInputs15
field = "FSIO dig inp #16", fsioDigitalInputs16
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
field = "output #7", fsioOutputPins7
field = "output #8", fsioOutputPins8
field = "output #9", fsioOutputPins9
field = "output #10", fsioOutputPins10
field = "output #11", fsioOutputPins11
field = "output #12", fsioOutputPins12
field = "output #13", fsioOutputPins13
field = "output #14", fsioOutputPins14
field = "output #15", fsioOutputPins15
field = "output #16", fsioOutputPins16
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 = allPinsMC33
dialog = allPins1_3
field = "FSIO ADC #1", fsioAdc1
field = "FSIO ADC #2", fsioAdc2
field = "FSIO ADC #3", fsioAdc3
field = "FSIO ADC #4", fsioAdc4
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 = "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 = "Aux Pin #1", auxPidPins1
field = "Aux Pin #2", auxPidPins2
field = "Aux Pin #3", auxPidPins3
field = "Aux 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
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@@}
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@@}
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
; 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 = mapSensorFreq, "MAP frequency sensor", yAxis
field = "MAP Freq", frequencyReportingMapInputPin
field = "0 kPa freq", mapFrequency0Kpa
field = "100 kpa freq", mapFrequency100Kpa
dialog = mapCommon, "MAP common settings"
field = "frequency-based MAP", hasFrequencyReportingMapSensor
field = "Low value threshold", mapErrorDetectionTooLow
field = "High value threshold", mapErrorDetectionTooHigh
field = ""
field = "Measure Map Only In One Cylinder", measureMapOnlyInOneCylinder
field = "Minimum MAP samples", mapMinBufferLength
dialog = mapSettings, "", yAxis
panel = mapCommon
panel = mapSensorAnalog, {hasFrequencyReportingMapSensor == 0}
panel = mapSensorFreq, {hasFrequencyReportingMapSensor == 1}
dialog = baroSettings, "Baro sensor"
field = "Baro ADC input", baroSensor_hwChannel
field = baroSensor_lowValue, baroSensor_lowValue, {baroSensor_hwChannel != 16}
field = baroSensor_highValue, baroSensor_highValue, {baroSensor_hwChannel != 16}
field = baroSensor_type, baroSensor_type, {baroSensor_hwChannel != 16}
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
panel = egoSettings_IO
panel = egoSettings_sensor, {afr_hwChannel != 16 && enableAemXSeries == 0 && !auxSerialRxPin && !auxSerialTxPin}
field = "Enable AEM X-Series CANbus", enableAemXSeries, { canReadEnabled }
field = "Enable Innovate LC-2 Serial", enableInnovateLC2, { 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 = hbridgeHardware, "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 #1", etbIo1_controlPin1, { etb_use_two_wires == 0 }
field = "No1 Disable", etbIo1_disablePin
field = "No2 Direction #1", etbIo2_directionPin1
field = "No2 Direction #2", etbIo2_directionPin2
field = "No2 Control #1", etbIo2_controlPin1, { etb_use_two_wires == 0}
field = "No2 Disable", etbIo2_disablePin
dialog = idleStepperHw, "Stepper Hardware"
field = "Idle Stepper Step Pin", idle_stepperStepPin
field = "Idle Stepper Dir Pin", idle_stepperDirectionPin
field = "Idle Stepper Enable Pin", stepperEnablePin
field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode
dialog = idleStepper, "Stepper"
field = "Drive stepper with dual H bridges", useHbridges, 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
panel = idleStepperHw, { useStepperIdle && !useHbridges }
panel = hbridgeHardware, { useStepperIdle && useHbridges }
dialog = idleHwType, "Idle Valve Hardware", border
panel = idleSolenoid, West
panel = idleStepper, East
dialog = idlehw, "", yAxis
field = "!ECU reboot needed to apply these settings"
field = "Use Stepper", useStepperIdle
field = "Double Solenoid Mode", isDoubleSolenoidIdle
panel = idleHwType
dialog = idlePidSettings, "PID IAC Control"
field = "#See Idle Target RPM Curve"
field = "P-factor", idleRpmPid_pFactor
field = "I-factor", idleRpmPid_iFactor
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 = "Offset#2", idleRpmPid2_offset
field = "Min#2", idleRpmPid2_minValue
field = "period", idleRpmPid_periodMs
field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone
field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit
field = "PID Extra for low RPM", pidExtraForLowRpm
field = "Use IAC PID Multiplier Table", useIacPidMultTable
dialog = idleSettings, "", yAxis
field = "Idle IAC control mode", idleMode
field = useInstantRpmForIdle, useInstantRpmForIdle
field = "use ETB for idle", useETBforIdleControl
field = "ETB Idle range", etbIdleThrottleRange, {useETBforIdleControl == 1}
field = "Use separate Ignition Table for idle", useSeparateAdvanceForIdle
field = "Use separate VE Table for idle", useSeparateVeForIdle
field = "Use separate IAC Table For Coasting", useIacTableForCoasting, {idleMode == 0}
field = idleIncrementalPidCic, idleIncrementalPidCic
field = "TPS deactivation threshold", idlePidDeactivationTpsThreshold
panel = idlePidSettings, { idleMode == 0}
field = "Extra IAC if Throttle Pressed", iacByTpsTaper;
field = "Detailed status in console", isVerboseIAC
field = "#See Warmup idle multiplier"
slider = "Manual IAC Position", manIdlePosition, horizontal
dialog = idleTimingPidCorrDialog, "", yAxis
field = "!This timing correction mode is Alpha Version"
field = "Use Auto-PID ignition advance control", useIdleTimingPidControl
field = "#See Idle Target RPM Curve"
field = "P-factor", idleTimingPid_pFactor, {useIdleTimingPidControl == 1}
field = "I-factor", idleTimingPid_iFactor, {useIdleTimingPidControl == 1}
field = "D-factor", idleTimingPid_dFactor, {useIdleTimingPidControl == 1}
field = "Offset", idleTimingPid_offset, {useIdleTimingPidControl == 1}
field = "Min Delta", idleTimingPid_minValue, {useIdleTimingPidControl == 1}
field = "Max Delta", idleTimingPid_maxValue, {useIdleTimingPidControl == 1}
field = "period", idleTimingPid_periodMs, {useIdleTimingPidControl == 1}
field = "#See RPM dead zone to deactivate IAC pid"
field = "RPM working zone for timing pid", idleTimingPidWorkZone, {useIdleTimingPidControl == 1}
field = "RPM working zone falloff", idlePidFalloffDeltaRpm, {useIdleTimingPidControl == 1}
field = "RPM dead zone to deactivate timing pid", idleTimingPidDeadZone, {useIdleTimingPidControl == 1}
; Engine->Fan Settings
dialog = fanSetting, "Fan Settings"
field = "Pin", fanPin
field = "Pin mode", fanPinMode
field = "On temperature", fanOnTemperature
field = "Off temperature", fanOffTemperature
dialog = fuelPumpConfig, "Fuel Pump"
field = "Pin", fuelPumpPin
field = "Pin mode", fuelPumpPinMode
field = "Prime duration", startUpFuelPumpDuration
dialog = fuelRailConfig, "Fuel Rail"
field = "Absolute Fuel Pressure", absoluteFuelPressure
field = "Fuel Rail pressure", fuelRailPressure, {absoluteFuelPressure == 1}
dialog = fuelPump, ""
panel = fuelPumpConfig
panel = fuelRailConfig
; 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", starterRelayDisableMode
dialog = statusLeds, "Status LEDs"
field = "Running status LED", runningLedPin
field = "TS communication status LED", communicationLedPin
field = "Warning LED", warningLedPin
field = "Trigger error LED", triggerErrorPin
; Engine->MIL Settings
dialog = malfunction, "Check Engine Settings"
field = "Pin", malfunctionIndicatorPin
field = "Pin mode", malfunctionIndicatorPinMode
field = "Warning Period", warningPeriod
; Engine->hip9011 Settings
dialog = hipFunction, "HIP9011 Settings (knock decoder)"
field = "Enabled", isHip9011Enabled
field = "Threshold", knockVThreshold, {isHip9011Enabled == 1}
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 = fuelClosedLoopDialog, "Fuel short-term closed-loop correction"
field = "#This is just the cherry on the cake once you have good VE table"
field = "Enabled", fuelClosedLoopCorrectionEnabled
field = "!No correction below these value"
field = "CLT - low threshod", fuelClosedLoopCltThreshold, {fuelClosedLoopCorrectionEnabled == 1}
field = "RPM - low threshod", fuelClosedLoopRpmThreshold, {fuelClosedLoopCorrectionEnabled == 1}
field = "EGO - low threshod", fuelClosedLoopAfrLowThreshold, {fuelClosedLoopCorrectionEnabled == 1}
field = "!No correction above these value"
field = "TPS - high threshod", fuelClosedLoopTpsThreshold, {fuelClosedLoopCorrectionEnabled == 1}
field = "EGO - high threshod", fuelClosedLoopAfrHighThreshold, {fuelClosedLoopCorrectionEnabled == 1}
field = "!PID settings"
field = "P factor", fuelClosedLoopPid_pFactor, {fuelClosedLoopCorrectionEnabled == 1}
field = "I factor", fuelClosedLoopPid_iFactor, {fuelClosedLoopCorrectionEnabled == 1}
field = "D factor", fuelClosedLoopPid_dFactor, {fuelClosedLoopCorrectionEnabled == 1}
field = "min", fuelClosedLoopPid_minValue, {fuelClosedLoopCorrectionEnabled == 1}
field = "max", fuelClosedLoopPid_maxValue, {fuelClosedLoopCorrectionEnabled == 1}
dialog = auxPidDialog, "Aux PID"
field = "Enabled", activateAuxPid1
field = "FSIO pin #1", auxPidPins1
field = "PWM Frequency", auxPidFrequency1
field = "Detailed status in console", isVerboseAuxPid1
field = "#target based on FSIO map#1"
field = "control period", auxPid1_periodMs, {activateAuxPid1 == 1}
field = "#PID control"
field = "offset", auxPid1_offset, {activateAuxPid1 == 1}
field = "P factor", auxPid1_pFactor, {activateAuxPid1 == 1}
field = "I factor", auxPid1_iFactor, {activateAuxPid1 == 1}
field = "D factor", auxPid1_dFactor, {activateAuxPid1 == 1}
field = "Min", auxPid1_minValue, {activateAuxPid1 == 1}
field = "Max", auxPid1_maxValue, {activateAuxPid1 == 1}
field = "FSIO pin #2", auxPidPins2
field = "FSIO pin #3", auxPidPins3
field = "FSIO pin #4", auxPidPins4
; 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 = speedSensorLeft, "Speed sensor config", yAxis
panel = speedSensorCan, { enableCanVss }
panel = speedSensorAnalog, { enableCanVss == 0 }
field = "Enable CANbus VSS values", enableCanVss, { canReadEnabled }
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 = "!See also dizzySparkOutputPin"
field = "Pin", tachOutputPin
field = "Pin mode", tachOutputPinMode
field = "Rise at trigger index", tachPulseTriggerIndex
field = "Pulse duration is duty cycle", tachPulseDurationAsDutyCycle
field = "Pulse duration", tachPulseDuractionMs
; todo: finish implementation under #907
field = "Pulse per Rev", tachPulsePerRev
; Board->Connection
dialog = tsPort, "TunerStudio Port"
field = "tunerStudioSerialSpeed", tunerStudioSerialSpeed
field = "Use UART/TTL serial?", useSerialPort
field = "TX pin", binarySerialTxPin, {useSerialPort == 1}
field = "RX pin", binarySerialRxPin, {useSerialPort == 1}
field = "uartConsoleSerialSpeed", uartConsoleSerialSpeed
dialog = canBus, "CAN Bus"
field = "Can Read Enabled", canReadEnabled
field = "Can Write Enabled", canWriteEnabled
field = "Can Nbc Type", canNbcType
field = "Enable rusEfi CAN data", enableVerboseCanTx
field = "rusEfi CAN data base address", verboseCanBaseAddress
field = "Can Sleep Period", canSleepPeriodMs
field = "RX pin", canRxPin @@if_ts_show_can_pins
field = "TX pin", canTxPin @@if_ts_show_can_pins
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 = "SdCard", isSdCardEnabled
field = "showSdCardWarning", showSdCardWarning
field = "CS Pin", sdCardCsPin
field = "SPI", sdCardSpiDevice
field = "log format", logFormat
field = "Mass Storage", storageMode
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
commandButton = "Reinit", cmd_tle8888_init
dialog = connection, "", yAxis
field = "ADC vRef voltage", adcVcc
panel = tsPort @@if_ts_show_tunerstudio_port
panel = canBus
panel = auxSerial
panel = sdCard @@if_ts_show_sd_card
panel = gpsReceiver @@if_ts_show_gps
dialog = monitoringSettings, "rusEfi Console Settings"
field = "Sensor Sniffer", sensorChartMode
field = " Threshold", sensorSnifferRpmThreshold
field = " Each X cycle", sensorChartFrequency
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
field = "Warning Text", warning_message
field = "showHumanReadableWarning (affects Burn)", showHumanReadableWarning
dialog = limits, "Limits"
field = "RPM hard limit", rpmHardLimit
field = "Boost cut pressure", boostCutPressure
; Engine->Base Engine Settings
dialog = engineChars, "Base Engine Settings"
topicHelp = "baseHelp"
panel = baseEngineConfig
panel = generalSettings
panel = limits
panel = debugging
dialog = crankingFuel, "Fuel"
field = "Injection mode", crankingInjectionMode
field = "Fuel Source For Cranking", useRunningMathForCranking
field = "Base fuel pulse width", cranking_baseFuel, {useRunningMathForCranking == 0}
dialog = crankingIAC, "IAC"
field = "Cranking IAC position", crankingIACposition
field = "After cranking IAC taper duration", afterCrankingIACtaperDuration
field = "Override IAC multiplier for cranking", overrideCrankingIacSetting
dialog = crankingIgnition, "Ignition"
field = "Advance", crankingTimingAngle, {useSeparateAdvanceForCranking == 0}
field = "Use separate Advance Table for cranking", useSeparateAdvanceForCranking
field = "Use Advance Corrections for cranking", useAdvanceCorrectionsForCranking
field = "Use fixed cranking dwell", useConstantDwellDuringCranking
field = "Fixed Cranking Dwell", ignitionDwellForCrankingMs, {useConstantDwellDuringCranking == 1}
field = "Cranking Dwell Angle", crankingChargeAngle, {useConstantDwellDuringCranking == 0}
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
; Cranking->Cranking Settings
dialog = crankingDialog, "Cranking Settings"
field = "Cranking RPM limit", cranking_rpm
field = "Enable cylinder cleanup", isCylinderCleanupEnabled
field = ""
field = "Enable faster engine spin-up", isFasterEngineSpinUpEnabled
panel = primingFuelPulsePanel
panel = crankingFuel
panel = crankingIgnition
panel = crankingIAC
panel = postCrankingEnrichment
dialog = EngineLoadAccelPanel, "Engine Load (alpha version)"
field = "Length", engineLoadAccelLength
field = "Accel threshold", engineLoadAccelEnrichmentThreshold
field = "Accel multiplier", engineLoadAccelEnrichmentMultiplier
field = "Decel threshold", engineLoadDecelEnleanmentThreshold
field = "Decel multiplier", engineLoadDecelEnleanmentMultiplier
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
panel = EngineLoadAccelPanel
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 = "output #7", fsioOutputPins7
field = "output #8", fsioOutputPins8
field = "output #9", fsioOutputPins9
field = "output #10", fsioOutputPins10
field = "output #11", fsioOutputPins11
field = "output #12", fsioOutputPins12
field = "output #13", fsioOutputPins13
field = "output #14", fsioOutputPins14
field = "output #15", fsioOutputPins15
field = "output #16", fsioOutputPins16
field = "aux valve #1", auxValves1
field = "aux valve #2", auxValves2
field = "Start/Stop Button", startStopButtonPin
field = "External Knock", externalKnockSenseAdc
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 = "freq #7", fsioFrequency7
field = "freq #8", fsioFrequency8
field = "freq #9", fsioFrequency9
field = "freq #10", fsioFrequency10
field = "freq #11", fsioFrequency11
field = "freq #12", fsioFrequency12
field = "freq #13", fsioFrequency13
field = "freq #14", fsioFrequency14
field = "freq #15", fsioFrequency15
field = "freq #16", fsioFrequency16
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
field = "set #7", fsio_setting7
field = "set #8", fsio_setting8
field = "set #9", fsio_setting9
field = "set #10", fsio_setting10
field = "set #11", fsio_setting11
field = "set #12", fsio_setting12
field = "set #13", fsio_setting13
field = "set #14", fsio_setting14
field = "set #15", fsio_setting15
field = "set #16", fsio_setting16
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
field = "#7", fsioFormulas7
field = "use FSIO #8 for servo #1", useFSIO8ForServo1
field = "#8", fsioFormulas8
field = "use FSIO #9 for servo #2", useFSIO9ForServo2
field = "#9", fsioFormulas9
field = "use FSIO #10 for servo #3", useFSIO10ForServo3
field = "#10", fsioFormulas10
field = "use FSIO #11 for servo #4", useFSIO11ForServo4
field = "#11", fsioFormulas11
field = "use FSIO #12 for servo #5", useFSIO12ForServo5
field = "use FSIO #12 idle offset", useFSIO12ForIdleOffset
field = "#12", fsioFormulas12
field = "use FSIO #13 idle min value", useFSIO13ForIdleMinValue
field = "#13", fsioFormulas13
field = "#14", fsioFormulas14
field = "use FSIO #15 for target idle RPM adjustment", useFSIO15ForIdleRpmAdjustment
field = "#15", fsioFormulas15
field = "use FSIO #16 for timing adjustment", useFSIO16ForTimingAdjustment
field = "#16", fsioFormulas16
dialog = fsioInputsDialog, "FSIO inputs"
field = "ADC #1", fsioAdc1
field = "ADC #2", fsioAdc2
field = "ADC #3", fsioAdc3
field = "ADC #4", fsioAdc4
;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 }
dialog = boostDialog, "", border
panel = boost_left, West
panel = boostTableTbl, Center
;Boost Closed Loop
dialog = boostPidleft, ""
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 = "Control Period", boostPid_periodMs, { isBoostControlEnabled && boostType == 1 }
field = "Min Duty", boostPid_minValue, { isBoostControlEnabled && boostType == 1 }
field = "Max Duty", boostPid_maxValue, { isBoostControlEnabled && boostType == 1 }
dialog = boostTableDialog, "", card
panel = boostTable2Tbl
dialog = boostPidDialog, "", border
panel = boostPidleft, West
panel = boostTableDialog, Center
help = veTableDialogHelp, "Volumetric Efficiency"
text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode"
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 = 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, {throttlePedalPositionAdcChannel != 16}
field = "iFactor", etb_iFactor, {throttlePedalPositionAdcChannel != 16}
field = "dFactor", etb_dFactor, {throttlePedalPositionAdcChannel != 16}
field = "pid min", etb_minValue, {throttlePedalPositionAdcChannel != 16}
field = "pid max", etb_maxValue, {throttlePedalPositionAdcChannel != 16}
field = "iTermMin", etb_iTermMin, {throttlePedalPositionAdcChannel != 16}
field = "iTermMax", etb_iTermMax, {throttlePedalPositionAdcChannel != 16}
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 Motor", pauseEtbControl
; 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
panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 16 || useStepperIdle && useHbridges }
dialog = etbAutotune, "PID Autotune"
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
commandButton = "Auto Calibrate TPS", cmb_etb_auto_calibrate
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog
panel = etbPidDialog
panel = etbAutotune
; Neutral position handling not yet implemented!
;field = "Neutral Position", etbNeutralPosition
dialog = etbDialog, "Electronic Throttle Body (beta)", 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
dialog = testInjectors, "Fuel"
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
dialog = testMisc, "Misc"
; commandButton = "Come To Pit", cmd_call_from_pit
commandButton = "Fuel Pump", cmd_test_fuel_pump
commandButton = "Radiator Fan", cmd_test_radiator_fan
commandButton = "Check Engine", cmd_test_check_engine_light
commandButton = "Idle Air Valve", cmd_test_idle_valve
commandButton = "A/C Relay", cmd_test_ac_relay
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
; bench test
dialog = ioTest, "Bench Test & Commands", border
panel = testSpark, West
panel = testInjectors, Center
panel = testMisc, East
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 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 = "ETB test bench", cmd_set_engine_type_etb_test@@if_show_test_presets
commandButton = "TLE8888B 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 = "Disable Internal 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 = ""
field = "trigger stimulator pin #1", triggerSimulatorPins1
field = "trigger stimulator pin mode #1", triggerSimulatorPinModes1
field = "trigger stimulator pin #2", triggerSimulatorPins2
field = "trigger stimulator pin mode #2", triggerSimulatorPinModes2
field = "trigger stimulator pin #3", triggerSimulatorPins3
field = "trigger stimulator pin mode #3", triggerSimulatorPinModes3
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 NOT WORKING"
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 = ""
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", 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 = "Cutoff Activation RPM High Limit", coastingFuelCutRpmHigh, {coastingFuelCutEnabled == 1}
field = "Cutoff Deactivation RPM Low Limit", coastingFuelCutRpmLow, {coastingFuelCutEnabled == 1}
field = "TPS Deactivation Threshold", coastingFuelCutTps, {coastingFuelCutEnabled == 1}
field = "CLT Activation Threshold", coastingFuelCutClt, {coastingFuelCutEnabled == 1}
field = "MAP Deactivation Threshold", coastingFuelCutMap, {coastingFuelCutEnabled == 1}
dialog = parkingLot, "Experimental/Broken"
field = "#System hacks"
field = "Global fuel correction", globalFuelCorrection
field = "Ignition Math Logic @", ignMathCalculateAtIndex
field = "MAP Averaging Logic @", mapAveragingSchedulingAtIndex
help = helpGeneral, "rusEfi General Help"
webHelp = "http://www.rusefi.com/"
text = "<img src='https://rusefi.com/style/logo_100.gif'>"
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 = ""
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 = ""
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 = ""
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 = ""
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
addTool = afrTableGenerator, "AFR Table Generator", afrTableTbl