; 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. [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" ; crc32CheckCommand = "k%2i%2o\xB8\x36" ; ; TODO: interesting - 0x36B8 equals 14008 which looks like pageSize at some point in the past? is this a defect here - should ; we have current pageSize or (pageSize + 8) here? ; crc32CheckCommand = "k\x00\x00\x00\x00\x36\xB8" 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 startCommand = "l\x01" stopCommand = "l\x02" dataReadCommand = "L" dataReadTimeout = 10000 ; time in ms dataReadyCondition = { toothLogReady } ; recordDef = headerLen, footerLen, recordLen recordDef = 0, 0, 2; in bytes, the recordLen is for each record, currently limited to 4 bytes ; uint16 that stores 1/100 second recordField = toothTime, "tooth", 0, 16, 0.01, "ms" [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] fileVersion = { @@TS_FILE_VERSION@@ } 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 firmwareTsVersion=scalar, U32, 124,"version_p", 1, 0 ; Errors totalTriggerErrorCounter=scalar,U32, 128,"counter", 1, 0 ; orderingErrorCounter 132 warningCounter = scalar, U16, 136, "count", 1, 0 lastErrorCode = scalar, U16, 138, "error", 1, 0 recentErrorCode0= scalar, U16, 140, "error", 1, 0 recentErrorCode1= scalar, U16, 142, "error", 1, 0 recentErrorCode2= scalar, U16, 144, "error", 1, 0 recentErrorCode3= scalar, U16, 146, "error", 1, 0 recentErrorCode4= scalar, U16, 148, "error", 1, 0 recentErrorCode5= scalar, U16, 150, "error", 1, 0 recentErrorCode6= scalar, U16, 152, "error", 1, 0 recentErrorCode7= scalar, U16, 154, "error", 1, 0 ; Debug debugFloatField1= scalar, F32, 156, "val", 1, 0.0 debugFloatField2= scalar, F32, 160, "val", 1, 0.0 debugFloatField3= scalar, F32, 164, "val", 1, 0.0 debugFloatField4= scalar, F32, 168, "val", 1, 0.0 debugFloatField5= scalar, F32, 172, "val", 1, 0.0 debugFloatField6= scalar, F32, 176, "val", 1, 0.0 debugFloatField7= scalar, F32, 180, "val", 1, 0.0 debugIntField1 = scalar, S32, 184, "val", 1, 0.0 debugIntField2 = scalar, S32, 188, "val", 1, 0.0 debugIntField3 = scalar, S32, 192, "val", 1, 0.0 debugIntField4 = scalar, S16, 196, "val", 1, 0.0 debugIntField5 = scalar, S16, 198, "val", 1, 0.0 ; Accel accelerationX = scalar, S16, 200, "G", 0.01, 0 accelerationY = scalar, S16, 202, "G", 0.01, 0 ; egt egt1 = scalar, S16, 204, "deg C", 1, 0 egt2 = scalar, S16, 206, "deg C", 1, 0 egt3 = scalar, S16, 208, "deg C", 1, 0 egt4 = scalar, S16, 210, "deg C", 1, 0 egt5 = scalar, S16, 212, "deg C", 1, 0 egt6 = scalar, S16, 214, "deg C", 1, 0 egt7 = scalar, S16, 216, "deg C", 1, 0 egt8 = scalar, S16, 218, "deg C", 1, 0 ; TPS2Value = scalar, S16, 220, "%",{1/@@PACK_MULT_PERCENT@@}, 0 ; ; see TunerStudioOutputChannels struct ; ; todo: generate this section programatically LM_PLAIN_MAF = {0}, LM_ALPHA_N = {1}, LM_MAP = {2}, LM_SPEED_DENSITY = {3}, LM_REAL_MAF = {4} egoCorrection = { 100 } time = { timeNow } ; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS } [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" ; 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 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Boost Start Launcher debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "", "", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "Channel 3 Rise Counter", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "df5", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle df1", "Channel 1 Fall 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 df3", "Channel 3 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle df4", "", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle df5", "", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "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 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 = critical_error_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, 100, 10 yAxis = 0, 100, 10 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, "", 1 xBins = boostRpmBins, RPMValue yBins = boostMapBins, MAPValue zBins = boostTableOpenLoop table = boostTable2Tbl, boostMapClosed, "", 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)" [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, "Barometric pressure", "kPa", 0, 1024, 0, 0, 0, 0, 0, 0 vvtPositionGauge = vvtPosition, "VVT position", "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 [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 ; currently a minimum of 6 gauges must be on the dash, this appears to be an old not needed limitation. next release 1 will work. gauge1 = RPMGauge gauge2 = CLTGauge gauge3 = TPSGauge gauge4 = MAFGauge 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", green, black, red, black indicator = { firmwareTsVersion == fileVersion }, "WRONG VERSION", "version", red, black, green, black indicator = { ind_isWarnNow }, "", "warn", green, black, red, black indicator = { ind_check_engine }, "ok", "Check engine", green, black, red, black indicator = { isIgnitionEnabledIndicator}, "no ignition", "ignition", red, black, green, black indicator = { ind_injection_enabled}, "no injection", "injection", red, black, green, black indicator = { ind_isTriggerError}, "ok", "trg err", green, 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}, "no fan", "fan", white, black, green, black indicator = { isCylinderCleanupActivated}, "no cyl cleanup", "cyl cleanup", white, black, green, 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}, "no pump", "pump", 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 on", "AC off", yellow, black, white, black ; 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}, "map", "map 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 = 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 = std_separator subMenu = energySystems, "Battery and alternator" subMenu = std_separator # Digital outputs subMenu = mainRelay, "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} 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} subMenu = veTableDialog, "VE", 0, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY} 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 = 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 = triggerInputs, "Trigger inputs" 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 != 16} 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 = allPins1, "Full pinout 1/2" @@if_ts_show_full_pinout subMenu = allPins2, "Full pinout 2/2" @@if_ts_show_full_pinout subMenu = std_separator # EXPERIMENTAL FEATURES subMenu = parkingLot, "Experimental/Broken" subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1} 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 [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_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_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 ; MIATA_NA6_MAP = 41 cmd_set_engine_type_Miata_NA6_MAP = "w\x00\x30\x00\x29" ; MIATA_NA6_VAF = 57 cmd_set_engine_type_Miata_NA6_VAF = "w\x00\x30\x00\x39" ; MAZDA_MIATA_2003 = 47 cmd_set_engine_type_Miata_NA2 = "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 field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))} field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))} field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))} field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))} field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )} field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))} field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} 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 field = "Number of Cylinders", cylindersCount field = "Engine Displacement", displacement field = "Firing Order", firingOrder ; Engine->Trigger configuration dialog = triggerConfiguration_settings, "Settings Trigger" field = "!https://rusefi.com/s/trigger" field = "Trigger type", trigger_type ; 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 = "#Custom Trigger" field = "total Tooth Count", trigger_customTotalToothCount, {trigger_type == 0} field = "skipped Tooth Count", trigger_customSkippedToothCount, {trigger_type == 0} dialog = triggerConfiguration_IO, "Settings I/O" 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 = "VVT display inverted", vvtDisplayInverted 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 == 8 || trigger_type == 9} dialog = triggerConfiguration panel = triggerConfiguration_settings, North panel = triggerConfiguration_IO, 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 != 16} 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 != 16} field = "Resistance @ LT", auxTempSensor1_resistance_1, {auxTempSensor1_adcChannel != 16} field = "" field = "Middle temperature", auxTempSensor1_tempC_2, {auxTempSensor1_adcChannel != 16} field = "Resistance @ MT", auxTempSensor1_resistance_2, {auxTempSensor1_adcChannel != 16} field = "" field = "Highest temperature", auxTempSensor1_tempC_3, {auxTempSensor1_adcChannel != 16} field = "Resistance @ HT", auxTempSensor1_resistance_3, {auxTempSensor1_adcChannel != 16} ; Sensors->AUX2 Thermistor Sensor Setting dialog = auxTempSensor2Sensor, "aux2 Thermistor Settings" field = "Input channel", auxTempSensor2_adcChannel field = "Bias resistor", auxTempSensor2_bias_resistor, {auxTempSensor2_adcChannel != 16} 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 != 16} field = "Resistance @ LT", auxTempSensor2_resistance_1, {auxTempSensor2_adcChannel != 16} field = "" field = "Middle temperature", auxTempSensor2_tempC_2, {auxTempSensor2_adcChannel != 16} field = "Resistance @ MT", auxTempSensor2_resistance_2, {auxTempSensor2_adcChannel != 16} field = "" field = "Highest temperature", auxTempSensor2_tempC_3, {auxTempSensor2_adcChannel != 16} field = "Resistance @ HT", auxTempSensor2_resistance_3, {auxTempSensor2_adcChannel != 16} dialog = tpsSensor, "TPS" field = "!See Tools>Calibrate TPS" field = "Throttle1 position sensor", tps1_1AdcChannel field = "Throttle1 2nd position sensor", tps1_2AdcChannel field = "Throttle2 position sensor", tps2_1AdcChannel field = "Throttle2 2nd position sensor", tps2_2AdcChannel field = "Throttle2 min value", tps2Min field = "Throttle2 max value", tps2Max field = "TPS low value detection threshold", tpsErrorDetectionTooLow, {tps1_1AdcChannel != 16} field = "TPS high value detection threshold", tpsErrorDetectionTooHigh, {tps1_1AdcChannel != 16} dialog = pedalSensor, "Accelerator pedal" field = "Accelerator position sensor", throttlePedalPositionAdcChannel field = "Accelerator position 2nd sensor", throttlePedalPositionSecondAdcChannel field = "Up voltage", throttlePedalUpVoltage field = "Down (WOT) voltage", throttlePedalWOTVoltage ; 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 = 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 ; ; 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 dialog = allPins1_1 field = mc33816_cs, mc33816_cs field = mc33816_rstb, mc33816_rstb field = high_fuel_pressure_sensor_1, high_fuel_pressure_sensor_1 field = high_fuel_pressure_sensor_2, high_fuel_pressure_sensor_2 field = mc33816_driven, mc33816_driven field = mc33816spiDevice, mc33816spiDevice field = "Warning Led", warningLedPin field = "tle6240_cs", tle6240_cs field = "tle6240 SPI", tle6240spiDevice field = "mc33972_cs", mc33972_cs field = "mc33972 SPI", mc33972spiDevice panel = allPinsSensors 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#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 = "SD CS Pin", sdCardCsPin @@if_ts_show_sd_card field = "MIL / Check Engine Pin", malfunctionIndicatorPin field = "Aux Pin #1", auxPidPins1 field = "Aux Pin #2", auxPidPins2 field = "Aux Pin #3", auxPidPins3 field = "Aux Pin #4", auxPidPins4 field = "test557pin", test557pin field = "Fan Pin", fanPin field = "Main Relay Pin", mainRelayPin field = "Starter Relay Pin", starterRelayDisablePin field = "aux valve #1", auxValves1 field = "aux valve #2", auxValves2 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 field = "Debug Timer Callback", debugTimerCallback field = "Debug Set Timer", debugSetTimer field = "Aux Fast Analog", auxFastSensor1_adcChannel 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 field = "TLE8888 Chip Select", tle8888_cs @@if_ts_show_spi field = "TLE 8888 spi", tle8888spiDevice @@if_ts_show_spi field = "servo#1", servoOutputPins1 field = "servo#2", servoOutputPins2 field = "servo#3", servoOutputPins3 field = "servo#4", servoOutputPins4 field = "servo#5", servoOutputPins5 dialog = allPins1_1_and_2, "", xAxis panel = allPins1_1 panel = allPins1_2 dialog = allPins1, "All Pins 1/2", 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/2", 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 != 16} 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", clt_tempC_1, {clt_adcChannel != 16} field = "Resistance @ LT", clt_resistance_1, {clt_adcChannel != 16} field = "" field = "Middle temperature", clt_tempC_2, {clt_adcChannel != 16} field = "Resistance @ MT", clt_resistance_2, {clt_adcChannel != 16} field = "" field = "Highest temperature", clt_tempC_3, {clt_adcChannel != 16} field = "Resistance @ HT", clt_resistance_3, {clt_adcChannel != 16} field = "" field = "Linear characteristic", useLinearCltSensor, {clt_adcChannel != 16} dialog = cltSensor, "", xAxis panel = clt_thermistor gauge = CLTGauge ; Sensors->IAT sensor dialog = iat_thermistor, "IAT sensor" field = "Input channel", iat_adcChannel field = "Bias resistor", iat_bias_resistor, {iat_adcChannel != 16} 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", iat_tempC_1, {iat_adcChannel != 16} field = "Resistance @ LT", iat_resistance_1, {iat_adcChannel != 16} field = "" field = "Middle temperature", iat_tempC_2, {iat_adcChannel != 16} field = "Resistance @ MT", iat_resistance_2, {iat_adcChannel != 16} field = "" field = "Highest temperature", iat_tempC_3, {iat_adcChannel != 16} field = "Resistance @ HT", iat_resistance_3, {iat_adcChannel != 16} field = "" field = "Linear characteristic", useLinearIatSensor, {iat_adcChannel != 16} dialog = iatSensor, "", xAxis panel = iat_thermistor gauge = IATGauge ; Sensors->Oil pressure sensor dialog = oilp_settings, "Oil pressure sensor" field = "Oil Pressure ADC input", oilPressure_hwChannel field = "low voltage", oilPressure_v1, {oilPressure_hwChannel != 16} field = "low pressure", oilPressure_value1, {oilPressure_hwChannel != 16} field = "high voltage", oilPressure_v2, {oilPressure_hwChannel != 16} field = "high pressure", oilPressure_value2, {oilPressure_hwChannel != 16} dialog = oilPressureSensor, "", xAxis panel = oilp_settings gauge = OilPressGauge ; Sensors->MAP sensor dialog = mapSensorAnalog, "MAP sensor", yAxis field = "MAP ADC input", map_sensor_hwChannel field = "MAP type", map_sensor_type field = "MAP value low point", map_sensor_lowValue field = "MAP voltage low point", mapLowValueVoltage field = "MAP value high point", map_sensor_highValue field = "MAP voltage high value", mapHighValueVoltage 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, {enableAemXSeries == 0} panel = egoSettings_sensor, {afr_hwChannel != 16 && enableAemXSeries == 0} field = "Enable AEM X-Series CANbus", enableAemXSeries, { canReadEnabled } ; 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 = "No2 Direction #1", etbIo2_directionPin1 field = "No2 Direction #2", etbIo2_directionPin2 field = "No2 Control #1", etbIo2_controlPin1, { etb_use_two_wires == 0} 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 = mainRelay, "Main relay output" field = "Pin", mainRelayPin field = "Pin mode", mainRelayPinMode 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 = "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 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 = speedSensorLeft field = "Input pin", vehicleSpeedSensorInputPin field = "revolution to speed mult", vehicleSpeedCoef 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 = "RX pin", binarySerialRxPin, {useSerialPort == 1} field = "TX pin", binarySerialTxPin, {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 = 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 = "useTLE8888_hall_mode", useTLE8888_hall_mode 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 = sdCard @@if_ts_show_sd_card panel = gpsReceiver @@if_ts_show_gps panel = tle8888 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 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 = "Critical Error", critical_error_message 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 = "!Value '1' is currently recommended" 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, "Post-cranking short-time fuel enrichment (NOT IMPLEMENTED #331)" 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 = "offset", etb_offset, {throttlePedalPositionAdcChannel != 16} field = "control period", etb_periodMs, {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 = etbDialogLeft field = "https://rusefi.com/s/etb" field = "Detailed status in console", isVerboseETB field = "Pause ETB control", pauseEtbControl field = "Throttle Pedal Up", throttlePedalUpVoltage field = "Throttle Pedal Wide Open", throttlePedalWOTVoltage field = etbCalibrationOnStart, etbCalibrationOnStart field = "TPS#2 min", tps2Min, { tps2_1AdcChannel != 16 } field = "TPS#2 max", tps2Max, { tps2_1AdcChannel != 16 } ; 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 } panel = etbPidDialog dialog = etbDialogRight field = "!https://rusefi.com/s/debugmode" field = "Neutral Position", etbNeutralPosition field = "Debug mode", debugMode field = "use ETB for idle", useETBforIdleControl field = "ETB idle maximum angle", etbIdleThrottleRange field = "Press buttons to calibrate sensors" field = "You would have to remove air filter to move throttle manually" commandButton = "TPS#1 closed position", cmd_calibrate_tps_1_closed commandButton = "TPS#1 wide open position", cmd_calibrate_tps_1_wot field = "Not many vehicles have two throttle bodies but some do" commandButton = "TPS#2 closed position", cmd_calibrate_tps_2_closed commandButton = "TPS#2 wide open position", cmd_calibrate_tps_2_wot commandButton = "Pedal Up", cmd_calibrate_pedal_up commandButton = "Pedal Down", cmd_calibrate_pedal_down 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 = "Miata NA6 Stage 0", cmd_set_engine_type_Miata_NA6_VAF commandButton = "Miata NA6 Stage 1", cmd_set_engine_type_Miata_NA6_MAP commandButton = "Miata NB2 MAP", cmd_set_engine_type_Miata_NA2 commandButton = "ETB test bench", cmd_set_engine_type_etb_test commandButton = "TLE8888B test bench", cmd_set_engine_type_8888_test commandButton = "Reset firmware settings", cmd_set_engine_type_default ; Board->ECU stimulator dialog = ecuStimulator, "ECU stimulator" field = "Trigger Simulator", triggerSimulatorFrequency field = "self-stimulation", directSelfStimulation 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 field = "Target temperature", postCrankingTargetClt [Tools] ;addTool = toolName, PanelName addTool = veTableGenerator, "VE Table Generator", veTableTbl addTool = afrTableGenerator, "AFR Table Generator", afrTableTbl