; This is a TunerStudio project for the RusEFI.com engine management system ; ; This file has been generated by invoking gen_config.bat. ; The input files are ; rusefi.input the common template ; rusefi_config.txt the project specific file ; ; In TunerStudio some fields have little question mark on the left of the name for additional field tips. ; Those tips are defined in ../integration/rusefi_config.txt ; ; For example ; ; float bias_resistor;+Pull-up resistor value on your board;"Ohm" ; here 'bias_resistor' is internal field name and the text between semicolons is what produces the tooltip ; Note that '+' sign is required after first semicolon for tooltop to appear in TunerStudio ; ; ; field = "# blue text" ; field = "! red text" ; field = "normal text" ; ; ; this should stop TS from looking for the CAN ID in the 2nd byte location and allow the page reads to work correctly. enable2ndByteCanID = false [SettingGroups] ; the referenceName will over-ride previous, so if you are creating a ; settingGroup with a reference name of lambdaSensor, it will replace the ; setting group defined in the settingGroups.xml of the TunerStudio config ; folder. If is is an undefined referenceName, it will be added. ; keyword = referenceName, DisplayName [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 signature = @@TS_SIGNATURE@@ [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. signature = @@TS_SIGNATURE@@ ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC messageEnvelopeFormat = msEnvelope_1.0 endianness = little nPages = 1 pageIdentifier = "\x00\x00" pageReadCommand = "@@TS_READ_COMMAND_char@@%2o%2c" burnCommand = "@@TS_BURN_COMMAND_char@@" pageActivate = "@@TS_PAGE_COMMAND_char@@" pageValueWrite = "@@TS_SINGLE_WRITE_COMMAND_char@@%2o%v" pageChunkWrite = "@@TS_CHUNK_WRITE_COMMAND_char@@%2o%2c%v" crc32CheckCommand = "@@TS_CRC_CHECK_COMMAND_char@@%2o%2c" retrieveConfigError = "e" ;communication settings pageActivationDelay = 500 ; Milliseconds delay after burn command. See https://sourceforge.net/p/rusefi/tickets/77/ ;e.g. put writeblocks off and add an interwrite delay writeBlocks = on interWriteDelay = 10 blockReadTimeout = 3000; Milliseconds general timeout ; delayAfterPortOpen = 500 blockingFactor = @@BLOCKING_FACTOR@@ ; max chunk size ;end communication settings ; name = bits, type, offset, bits ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START ; this section will be generated automatically by ConfigDefinition.jar based on rusefi_config.txt ; CONFIG_DEFINITION_END idleRpmPid_offset = "Constant base value" idleRpmPid_periodMs = "PID recalculation period" [Tuning] spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators. cursorDepth = 2 ; Same as spot depth. gaugeColumns = 1 ; Only 1 or 2 are valid. pageButtons = "&EGO" gauge1 = RPMGauge gauge2 = afr1Gauge gauge3 = MAPGauge gauge4 = veValueGauge [LoggerDefinition] ; valid logger types: composite, tooth, trigger, csv ; loggerDef = compositeLogger, "Primary Trigger Logger", tooth loggerDef = compositeLogger, "Trigger Logger", composite startCommand = "l\x01" stopCommand = "l\x02" dataReadCommand = "L" dataReadTimeout = 10000 ; time in ms dataReadyCondition = { toothLogReady } continuousRead = true ; each packet is @@COMPOSITE_PACKET_SIZE@@ and we have @@COMPOSITE_PACKET_COUNT@@ of those dataLength = @@COMPOSITE_DATA_LENGTH@@ ;tooth ; recordDef = headerLen, footerLen, recordLen ; recordDef = 0, 0, @@COMPOSITE_PACKET_SIZE@@ ; uint16 that stores 1/100 second ; recordField = toothTime, "tooth", 0, 16, 0.01, "ms" ; recordDef = headerLen, footerLen, recordLen recordDef = 0, 0, @@COMPOSITE_PACKET_SIZE@@ ; these names are hard-coded inside TS recordField = priLevel, "PriLevel", 0, 1, 1.0, "Flag" recordField = secLevel, "SecLevel", 1, 1, 1.0, "Flag" recordField = trigger, "Trigger", 2, 1, 1.0, "Flag" recordField = sync, "Sync", 3, 1, 1.0, "Flag" recordField = time, "Time", 8, 32, 0.01, "ms" ; it seems that TS also needs to know the diff.size of a tooth calcField = toothTime, "ToothTime", "ms", { time - pastValue(time, 1) } [VeAnalyze] ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition veAnalyzeMap = veTableTbl, afrTableTbl, AFRValue, egoCorrection, { 1 } 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 [OutputChannels] ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code ochBlockSize = @@TS_OUTPUT_SIZE@@ ; ; see TunerStudioOutputChannels struct ; ; Bit flags hasSdCard = bits, U32, 0, [0:0], "true", "false"; isIgnitionEnabledIndicator=bits,U32, 0, [1:1], "true", "false"; ind_injection_enabled=bits,U32, 0, [2:2], "true", "false"; isCylinderCleanupEnabled=bits,U32, 0, [3:3], "true", "false"; isCylinderCleanupActivated=bits,U32, 0, [4:4], "true", "false"; ind_fuel_pump = bits, U32, 0, [5:5], "true", "false"; ind_fan = bits, U32, 0, [6:6], "true", "false"; ind_o2_heater = bits, U32, 0, [7:7], "true", "false"; ind_check_engine= bits, U32, 0, [8:8], "true", "false"; needBurn = bits, U32, 0, [9:9], "true", "false"; 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"; ; not implemented ; ind_map_error = bits, U32, 0, [20:20], "true", "false"; ind_iat_error = bits, U32, 0, [21:21], "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 auxt1 = scalar, S16, 16, "deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0.0 auxt2 = scalar, S16, 18, "deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0.0 ; throttle, pedal TPSValue = scalar, S16, 20, "%",{1/@@PACK_MULT_PERCENT@@}, 0 throttlePedalPosition = scalar,S16, 22, "%",{1/@@PACK_MULT_PERCENT@@}, 0 tpsADC = scalar, U16, 24, "ADC", 1, 0.0; ; air flow/mass measurments MAFValue = scalar, U16, 26, "V",,{1/@@PACK_MULT_VOLTAGE@@},, 0 massAirFlowValue= scalar, U16, 28, "Kg/h", {1/@@PACK_MULT_MASS_FLOW@@}, 0 MAPValue = scalar, U16, 30, "kPa",{1/@@PACK_MULT_PRESSURE@@}, 0.0 baroPressure = scalar, U16, 32, "kPa",{1/@@PACK_MULT_PRESSURE@@}, 0.0 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, "mg",{1/@@PACK_MULT_FUEL_MASS@@}, 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, "%",{1/@@PACK_MULT_PERCENT@@}, 0 ; Wall model AE wallFuelAmount = scalar, U16, 72, "ms",{1/@@PACK_MULT_MS@@}, 0 wallFuelCorrection=scalar, S16, 74, "ms",0.001, 0 ; TPS/load AE 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 ; Y axis values for selectable tables veTableYAxis = scalar, U16, 104, "%", 0.01, 0 afrTableYAxis = scalar, U16, 106, "%", 0.01, 0 ; Knock knockLevel = scalar, F32, 108, "Volts", 1, 0 ; Mode, firmware, protocol, run time ; TS requires 'seconds' name since it has special internal meaning seconds = scalar, U32, 112, "sec", 1, 0.0 engineMode = scalar, U32, 116, "em", 1, 0.0; firmwareVersion = scalar, U32, 120,"version_f", 1, 0 ; calibation helpers calibrationValue = scalar, F32, 128, "", 1, 0 calibrationMode = scalar, U08, 132, "", 1, 0 ; 1 bytes padding1 fuelingLoad = scalar, U16, 134, "%", 0.01, 0 ignitionLoad = scalar, U16, 136, "%", 0.01, 0 engineMakeCodeNameCrc16= scalar, U16, 138, "crc16", 1, 0 ; Errors totalTriggerErrorCounter=scalar,U32, 140,"counter", 1, 0 ; orderingErrorCounter 144 warningCounter = scalar, U16, 148, "count", 1, 0 lastErrorCode = scalar, U16, 150, "error", 1, 0 recentErrorCode0= scalar, U16, 152, "error", 1, 0 recentErrorCode1= scalar, U16, 154, "error", 1, 0 recentErrorCode2= scalar, U16, 156, "error", 1, 0 recentErrorCode3= scalar, U16, 158, "error", 1, 0 recentErrorCode4= scalar, U16, 160, "error", 1, 0 recentErrorCode5= scalar, U16, 162, "error", 1, 0 recentErrorCode6= scalar, U16, 164, "error", 1, 0 recentErrorCode7= scalar, U16, 166, "error", 1, 0 ; Debug debugFloatField1= scalar, F32, 168, "val", 1, 0.0 debugFloatField2= scalar, F32, 172, "val", 1, 0.0 debugFloatField3= scalar, F32, 176, "val", 1, 0.0 debugFloatField4= scalar, F32, 180, "val", 1, 0.0 debugFloatField5= scalar, F32, 184, "val", 1, 0.0 debugFloatField6= scalar, F32, 188, "val", 1, 0.0 debugFloatField7= scalar, F32, 192, "val", 1, 0.0 debugIntField1 = scalar, S32, 196, "val", 1, 0.0 debugIntField2 = scalar, S32, 200, "val", 1, 0.0 debugIntField3 = scalar, S32, 204, "val", 1, 0.0 debugIntField4 = scalar, S16, 208, "val", 1, 0.0 debugIntField5 = scalar, S16, 210, "val", 1, 0.0 ; Accel accelerationX = scalar, S16, 212, "G", 0.01, 0 accelerationY = scalar, S16, 214, "G", 0.01, 0 ; egt egt1 = scalar, S16, 216, "deg C", 1, 0 egt2 = scalar, S16, 218, "deg C", 1, 0 egt3 = scalar, S16, 220, "deg C", 1, 0 egt4 = scalar, S16, 222, "deg C", 1, 0 egt5 = scalar, S16, 224, "deg C", 1, 0 egt6 = scalar, S16, 226, "deg C", 1, 0 egt7 = scalar, S16, 228, "deg C", 1, 0 egt8 = scalar, S16, 230, "deg C", 1, 0 TPS2Value = scalar, S16, 232, "%",{1/@@PACK_MULT_PERCENT@@}, 0 rawTps1Primary = scalar, U16, 234, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0 rawPpsPrimary = scalar, U16, 236, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0 rawClt = scalar, U16, 238, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0 rawIat = scalar, U16, 240, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0 rawOilPressure = scalar, U16, 242, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0 rawPpsSecondary = scalar, U16, 248, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0 ; we use this to match logs to tunes tuneCrc16 = scalar, U16, 244, "crc16", 1, 0 sd_status = scalar, U08, 246, "", 1.0, 0.0 ; Transmission tcuCurrentGear = scalar, S08, 247, "gear", 1, 0 tcuDesiredGear = scalar, S08, 262, "gear", 1, 0 knock1 = scalar, S08, 250, "dbv", 1, 0 knock2 = scalar, S08, 251, "dbv", 1, 0 knock3 = scalar, S08, 252, "dbv", 1, 0 knock4 = scalar, S08, 253, "dbv", 1, 0 knock5 = scalar, S08, 254, "dbv", 1, 0 knock6 = scalar, S08, 255, "dbv", 1, 0 knock7 = scalar, S08, 256, "dbv", 1, 0 knock8 = scalar, S08, 257, "dbv", 1, 0 rawIdlePositionSensor = scalar, U16, 264, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0 rawWastegatePosition = scalar, U16, 266, "V",{1/@@PACK_MULT_VOLTAGE@@}, 0.0 wastegatePositionSensor = scalar, S16, 268, "%",{1/@@PACK_MULT_PERCENT@@}, 0 idlePositionSensor = scalar, S16, 270, "%",{1/@@PACK_MULT_PERCENT@@}, 0 ; ; see TunerStudioOutputChannels struct ; ; todo: generate this section programatically LM_SPEED_DENSITY = {3}, LM_REAL_MAF = {4} egoCorrection = { 100 } time = { timeNow } ; These "synthetic" channels provide the Y-axis (load) value for gen purp PWM table's Y axes gppwm1_load = {(gppwm1_loadAxis == 0) ? TPSValue : ((gppwm1_loadAxis == 1) ? MAPValue : ((gppwm1_loadAxis == 2) ? coolant : ((gppwm1_loadAxis == 3) ? intake : ((gppwm1_loadAxis == 4) ? fuelingLoad : ignitionLoad))))} gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : ((gppwm2_loadAxis == 3) ? intake : ((gppwm2_loadAxis == 4) ? fuelingLoad : ignitionLoad))))} gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : ((gppwm3_loadAxis == 3) ? intake : ((gppwm3_loadAxis == 4) ? fuelingLoad : ignitionLoad))))} gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : ((gppwm4_loadAxis == 3) ? intake : ((gppwm4_loadAxis == 4) ? fuelingLoad : ignitionLoad))))} [PcVariables] tuneCrcPcVariable = continuousChannelValue, tuneCrc16 wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1; wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0 gearCountArray = array, S08, [@@TCU_GEAR_COUNT@@], "Gear", 1, 0, -1, { @@TCU_GEAR_COUNT@@ - 2 }, 0, noMsqSave solenoidCountArray = array, U08, [@@TCU_SOLENOID_COUNT@@], "Solenoid", 1, 0, 1, @@TCU_SOLENOID_COUNT@@, 0, noMsqSave ; These are inverted (false = "Yes") so that they default to enabled enableLogDebugChannels = bits, U08, [0:0], "Yes", "No" enableLogErrorList = bits, U08, [0:0], "Yes", "No" ; wall of debug mode :) ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL ; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "TPS1/2 Diff", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "Acc Pedal Pri/Sec Diff","", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] ; defaultValue is used to provide TunerStudio with a value to use in the case of ; the constant not yet being initialized. This is primarily important if the ; constant is used as a variable in the ini. ; defaultValue = constantName, value; defaultValue = wueAfrTargetOffset, -1.5 -1.4 -1.15 -0.95 -0.775 -0.65 -0.5625 -0.5 -0.4375 -0.375 -0.3125 -0.25 -0.1875 -0.125 -0.0625 0 ; TPS 1 Primary maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax } maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin } ; TPS 1 Secondary maintainConstantValue = tps1SecondaryMax, { (calibrationMode == 6 ) ? calibrationValue : tps1SecondaryMax } maintainConstantValue = tps1SecondaryMin, { (calibrationMode == 7 ) ? calibrationValue : tps1SecondaryMin } ; TPS 2 Primary maintainConstantValue = tps2Max, { (calibrationMode == 8 ) ? calibrationValue : tps2Max } maintainConstantValue = tps2Min, { (calibrationMode == 9 ) ? calibrationValue : tps2Min } ; TPS 2 Secondary maintainConstantValue = tps2SecondaryMax, { (calibrationMode == 10 ) ? calibrationValue : tps2SecondaryMax } maintainConstantValue = tps2SecondaryMin, { (calibrationMode == 11 ) ? calibrationValue : tps2SecondaryMin } ; ETB Auto Gain Calibration maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor } maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor } maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor } requiresPowerCycle = warningLedPin requiresPowerCycle = runningLedPin requiresPowerCycle = binarySerialTxPin requiresPowerCycle = binarySerialRxPin requiresPowerCycle = etb_use_two_wires requiresPowerCycle = etbFreq requiresPowerCycle = idle_solenoidFrequency requiresPowerCycle = boostPwmFrequency requiresPowerCycle = alternatorPwmFrequency requiresPowerCycle = auxPidFrequency1 requiresPowerCycle = auxPidFrequency2 requiresPowerCycle = auxPidFrequency3 requiresPowerCycle = auxPidFrequency4 requiresPowerCycle = fsioOutputPins1 requiresPowerCycle = fsioOutputPins2 requiresPowerCycle = fsioOutputPins3 requiresPowerCycle = fsioOutputPins4 requiresPowerCycle = fsioOutputPins5 requiresPowerCycle = fsioOutputPins6 requiresPowerCycle = fsioOutputPins7 requiresPowerCycle = fsioOutputPins8 requiresPowerCycle = fsioOutputPins9 requiresPowerCycle = fsioOutputPins10 requiresPowerCycle = fsioOutputPins11 requiresPowerCycle = fsioOutputPins12 requiresPowerCycle = fsioOutputPins13 requiresPowerCycle = fsioOutputPins14 requiresPowerCycle = fsioOutputPins15 requiresPowerCycle = fsioOutputPins16 requiresPowerCycle = fsioFrequency1 requiresPowerCycle = fsioFrequency2 requiresPowerCycle = fsioFrequency3 requiresPowerCycle = fsioFrequency4 requiresPowerCycle = fsioFrequency5 requiresPowerCycle = fsioFrequency6 requiresPowerCycle = fsioFrequency7 requiresPowerCycle = fsioFrequency8 requiresPowerCycle = fsioFrequency9 requiresPowerCycle = fsioFrequency10 requiresPowerCycle = fsioFrequency11 requiresPowerCycle = fsioFrequency12 requiresPowerCycle = fsioFrequency13 requiresPowerCycle = fsioFrequency14 requiresPowerCycle = fsioFrequency15 requiresPowerCycle = fsioFrequency16 requiresPowerCycle = fsioAdc1 requiresPowerCycle = fsioAdc2 requiresPowerCycle = fsioAdc3 requiresPowerCycle = fsioAdc4 readOnly = warning_message defaultValue = gearCountArray, -1 0 1 2 3 4 5 6 7 8 readOnly = gearCountArray defaultValue = solenoidCountArray, 1 2 3 4 5 6 7 8 readOnly = solenoidCountArray [CurveEditor] ; xAxis = leftValue, rightValue, step ; yAxis = bottomValue, topValue, step curve = knockThresholdCurve, "Engine knock threshold RPM based" columnLabel = "RPM", "Threshold" xAxis = 0, 8000, 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, 9 yAxis = 0, 8, 9 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" columnLabel = "Voltage", "Dead Time" xAxis = 8, 16, 9 yAxis = 0, 2, 5 xBins = injector_battLagCorrBins, VBatt yBins = injector_battLagCorr 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, 9 yAxis = 0, 2, 11 xBins = iatFuelCorrBins, intake yBins = iatFuelCorr gauge = IATGauge curve = cltTimingCorrCurve, "Warmup timing correction" columnLabel = "Coolant", "Extra" xAxis = -40, 120, 9 yAxis = 0, 20, 9 xBins = cltTimingBins, coolant yBins = cltTimingExtra gauge = CLTGauge curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 9 yAxis = 0, 3, 10 xBins = cltFuelCorrBins, coolant yBins = cltFuelCorr gauge = CLTGauge curve = crankingCltCurve, "Cranking Coolant Temperature Multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 9 yAxis = 0, 3, 10 xBins = crankingFuelBins, coolant yBins = crankingFuelCoef gauge = CLTGauge curve = etbTpsBiasCurve, "Electronic TB Bias Curve" columnLabel = "TPS", "duty bias" xAxis = 0, 50, 11 yAxis = -40, 40, 9 xBins = etbBiasBins, TPSValue yBins = etbBiasValues gauge = TPSGauge curve = crankingTpsCurve, "Cranking TPS Multiplier" columnLabel = "TPS", "Multiplier" xAxis = 0, 100, 11 yAxis = 0, 3, 10 xBins = crankingTpsBins, TPSValue yBins = crankingTpsCoef gauge = TPSGauge curve = crankingDurationCurve, "Cranking Duration Multiplier" columnLabel = "Engine Cycle", "Multiplier" xAxis = 0, 50, 11 yAxis = 0, 5, 6 xBins = crankingCycleBins yBins = crankingCycleCoef curve = cltIdleCurve, "Warmup Idle multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 10 yAxis = 0, 3, 10 xBins = cltIdleCorrBins, coolant yBins = cltIdleCorr gauge = CLTGauge curve = iacCoastingCurve, "Coasting IAC Position for Auto-Idle" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 9 yAxis = 0, 100, 10 xBins = iacCoastingBins, coolant yBins = iacCoasting gauge = idleAirValvePositionGauge curve = cltCrankingCurve, "Cranking Idle Air multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 9 yAxis = 0, 3, 10 xBins = cltCrankingCorrBins, coolant yBins = cltCrankingCorr gauge = CLTGauge curve = cltIdleRPMCurve, "Idle Target RPM" columnLabel = "Coolant", "RPM" xAxis = -40, 120, 9 yAxis = 0, 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 ; move table into a panel? or find a way to add a link to https://rusefi.com//wiki/index.php?title=Manual:Software:TPSTPS table = tpsTpsAccelTbl, tpsTpsAccelMap, "TPS/TPS Acceleration Extra Fuel(ms)", 1 topicHelp = "tpstpsHelp" xBins = tpsTpsAccelFromRpmBins, TPSValue yBins = tpsTpsAccelToRpmBins, TPSValue zBins = tpsTpsAccelTable table = boostTableTbl, boostMapOpen, "Boost control duty cycle (open loop)", 1 xBins = boostRpmBins, RPMValue yBins = boostTpsBins, TPSValue zBins = boostTableOpenLoop table = boostTable2Tbl, boostMapClosed, "Boost control target", 1 xBins = boostRpmBins, RPMValue yBins = boostTpsBins, TPSValue zBins = boostTableClosedLoop table = fsioTable1Tbl, fsioTable1Map, "FSIO Table #1", 1 xBins = fsioTable1RpmBins, RPMValue yBins = fsioTable1LoadBins, fuelingLoad zBins = fsioTable1 table = fsioTable2Tbl, fsioTable2Map, "FSIO Table #2", 1 xBins = fsioTable2RpmBins, RPMValue yBins = fsioTable2LoadBins, fuelingLoad zBins = fsioTable2 table = fsioTable3Tbl, fsioTable3Map, "FSIO Table #3", 1 xBins = fsioTable3RpmBins, RPMValue yBins = fsioTable3LoadBins, fuelingLoad zBins = fsioTable3 table = fsioTable4Tbl, fsioTable4Map, "FSIO Table #4", 1 xBins = fsioTable4RpmBins, RPMValue yBins = fsioTable4LoadBins, fuelingLoad zBins = fsioTable4 table = baroCorrTbl, baroCorrMap, "Baro Correction", 1 ; constant, variable xBins = baroCorrRpmBins, RPMValue yBins = baroCorrPressureBins, baroPressure zBins = baroCorrTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = ignitionTableTbl, ignitionTableMap, "Ignition Table", 1 ; constant, variable xBins = ignitionRpmBins, RPMValue yBins = ignitionLoadBins, ignitionLoad zBins = ignitionTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = ignitionIatCorrTableTbl, ignitionIatCorrTableMap, "Ignition Intake Air Temp correction", 1 ; constant, variable xBins = ignitionIatCorrRpmBins, RPMValue yBins = ignitionIatCorrLoadBins, intake zBins = ignitionIatCorrTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = veTableTbl, veTableMap, "VE Table", 1 ; constant, variable xBins = veRpmBins, RPMValue yBins = veLoadBins, veTableYAxis zBins = veTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = injPhaseTableTbl, injPhaseTableMap, "Injection Phase", 1 topicHelp = "fuelHelp" ; constant, variable xBins = injPhaseRpmBins, RPMValue yBins = injPhaseLoadBins, fuelingLoad zBins = injectionPhase ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" table = pedalToTpsTbl, pedalToTpsMap, "ETB Pedal to TPS", 1 ; constant, variable xBins = pedalToTpsRpmBins, RPMValue yBins = pedalToTpsPedalBins, throttlePedalPosition zBins = pedalToTpsTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" table = afrTableTbl, afrTableMap, "Target AFR Table", 1 ; constant, variable xBins = afrRpmBins, RPMValue yBins = afrLoadBins, afrTableYAxis 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, fuelingLoad zBins = iacPidMultTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" table = gppwm1Tbl, gppwm1Map, "GP#1", 1 xyLabels = "RPM", "" xBins = gppwm1_rpmBins, RPMValue yBins = gppwm1_loadBins, gppwm1_load zBins = gppwm1_table table = gppwm2Tbl, gppwm2Map, "GP#2", 1 xyLabels = "RPM", "" xBins = gppwm2_rpmBins, RPMValue yBins = gppwm2_loadBins, gppwm2_load zBins = gppwm2_table table = gppwm3Tbl, gppwm3Map, "GP#3", 1 xyLabels = "RPM", "" xBins = gppwm3_rpmBins, RPMValue yBins = gppwm3_loadBins, gppwm3_load zBins = gppwm3_table table = gppwm4Tbl, gppwm4Map, "GP#4", 1 xyLabels = "RPM", "" xBins = gppwm4_rpmBins, RPMValue yBins = gppwm4_loadBins, gppwm4_load zBins = gppwm4_table table = tcuSolenoidTableTbl, tcuSolenoidTableMap, "Solenoids Active By Gear", 1 yBins = gearCountArray, tcuCurrentGear xBins = solenoidCountArray, tcuCurrentGear zBins = tcuSolenoidTable xyLabels = "Solenoid", "Gear" [GaugeConfigurations] gaugeCategory = Sensors - Extra 2 egt1Gauge = egt1, "EGT#1", "C", 0, 2000 egt2Gauge = egt2, "EGT#2", "C", 0, 2000 egt3Gauge = egt3, "EGT#3", "C", 0, 2000 egt4Gauge = egt4, "EGT#4", "C", 0, 2000 egt5Gauge = egt5, "EGT#5", "C", 0, 2000 egt6Gauge = egt6, "EGT#6", "C", 0, 2000 egt7Gauge = egt7, "EGT#7", "C", 0, 2000 egt8Gauge = egt8, "EGT#8", "C", 0, 2000 rpmAccelerationGa = rpmAcceleration, "rpm delta", "dRpm", 0, 3, 0, 1, 3, 4, 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 wastegatePosGauge = wastegatePositionSensor, "Wastegate position sensor", "%", 0, 100, 0, 0, 100, 100, 1, 1 idlePosSensGauge = idlePositionSensor, "Idle position sensor", "%", 0, 100, 0, 0, 100, 100, 1, 1 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 tuneCrc16Gauge = tuneCrc16, "tune CRC16", "", 0, 64000, 0, 0, 64000, 64000, 0, 0 gaugeCategory = Debug debugF1Gauge = debugFloatField1, {bitStringValue( debugFieldF1List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 4, 4 debugF2Gauge = debugFloatField2, {bitStringValue( debugFieldF2List, debugMode )}, "", -100, 100, 0, 0, 100, 100, 4, 4 debugF3Gauge = debugFloatField3, {bitStringValue( debugFieldF3List, debugMode )}, "", -100, 100, 0, 0, 100, 100, 4, 4 debugF4Gauge = debugFloatField4, {bitStringValue( debugFieldF4List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 4, 4 debugF5Gauge = debugFloatField5, {bitStringValue( debugFieldF5List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 4, 4 debugF6Gauge = debugFloatField6, {bitStringValue( debugFieldF6List, debugMode )}, "", -100, 100, 0, 0, 100, 100, 4, 4 debugF7Gauge = debugFloatField7, {bitStringValue( debugFieldF7List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 4, 4 debugI1Gauge = debugIntField1, {bitStringValue( debugFieldI1List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0 debugI2Gauge = debugIntField2, {bitStringValue( debugFieldI2List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0 debugI3Gauge = debugIntField3, {bitStringValue( debugFieldI3List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0 debugI4Gauge = debugIntField4, {bitStringValue( debugFieldI4List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0 debugI5Gauge = debugIntField5, {bitStringValue( debugFieldI5List, debugMode )}, "", 0, 100, 0, 0, 100, 100, 0, 0 gaugeCategory = Sensors - Basic RPMGauge = RPMValue, "RPM - engine speed", "RPM", 0, 15000, 200, 500, 6000, 6000, 0, 0 CLTGauge = coolant, "Coolant temp", "deg C", -40, 140, -15, 1, 95, 110, 1, 1 IATGauge = intake, "Intake air temp", "deg C", -40, 140, -15, 1, 95, 110, 1, 1 afr1Gauge = AFRValue, "Air fuel ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2 MAFGauge = MAFValue, "Mass air flow", "v", 0, 5, 0, 1, 3, 4, 1, 1 VBattGauge = VBatt, "Battery voltage", "V", 8, 21, 9, 10, 17, 19, 1, 1 MAPGauge = MAPValue, "MAP", "kPa", 0, 300, 10, 10, 200, 200, 0, 0 massAirFlowValueGa = massAirFlowValue,"Mass air flow", "kg/hr", 0, 50, -999, -999, 999, 999, 1, 1 gaugeCategory = Sensors - Extra 1 VSSGauge = vehicleSpeedKph, "Vehicle speed", "kmh", 0, 200, 0, 1, 3, 4, 1, 1 accelerationXGauge = accelerationX, @@GAUGE_NAME_ACCEL_X@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1 accelerationYGauge = accelerationY, @@GAUGE_NAME_ACCEL_Y@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1 atmPresCGauge = baroPressure, @@GAUGE_NAME_BARO_PRESSURE@@, "kPa", 0, 1024, 0, 0, 0, 0, 0, 0 vvtPositionGauge = vvtPosition, @@GAUGE_NAME_VVT@@, "deg", 0, 100, 0, 0, 720, 720, 0, 0 internalMcuTemperatureGauge = internalMcuTemperature, @@GAUGE_NAME_ECU_TEMPERATURE@@, "C", 0, 100, 0, 0, 75, 100, 0, 0 OilPressGauge = oilPressure, "Oil Pressure", "kPa", 0, 750, 35, 75, 550, 700, 0, 0 idleAirValvePositionGauge = idleAirValvePosition, "Idle position", "%", 0, 100, 0, 0, 100, 100, 1, 1 AuxT1Gauge = auxt1, "Aux temp 1", "deg C", -40, 140, -15, 1, 95, 110, 1, 1 AuxT2Gauge = auxt2, "Aux temp 2", "deg C", -40, 140, -15, 1, 95, 110, 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 ignitionLoadGauge = ignitionLoad, @@GAUGE_NAME_IGNITION_LOAD@@, "%", 0, 300, 0, 0, 300, 300, 1, 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, 100, 0, 0, 100, 100, 2, 0 fuelPidCorrectionGauge = fuelPidCorrection, @@GAUGE_NAME_FUEL_PID_CORR@@, "%", -10, 10, -8, -5, 5, 8, 3, 1 fuelingLoadGauge = fuelingLoad, @@GAUGE_NAME_FUEL_LOAD@@, "%", 0, 300, 0, 0, 300, 300, 1, 1 gaugeCategory = Throttle Body (incl. ETB) pedalPositionGauge = throttlePedalPosition, @@GAUGE_NAME_THROTTLE_PEDAL@@, "%", 0, 120, 0, 0, 100, 100, 1, 1 tpsADCGauge = tpsADC, "tps1 ADC", "ADC", 0, 1024, 0, 0, 0, 0, 0, 0 TPSGauge = TPSValue, "Throttle position", "%", 0, 100, 0, 0, 100, 100, 1, 1 TPS2Gauge = TPS2Value, "Throttle position #2", "%", 0, 100, 0, 0, 100, 100, 1, 1 etbTargetGauge = etbTarget, @@GAUGE_NAME_ETB_TARGET@@, "%", 0, 100, 0, 0, 100, 100, 1, 1 etbErrorGauge = etb1Error, @@GAUGE_NAME_ETB_ERROR@@, "%", -20, 20, -10, -5, 5, 10, 2, 0 etbDutyCycleGauge = etb1DutyCycle, @@GAUGE_NAME_ETB_DUTY@@, "%", -100, 100, -75, -50, 50, 75, 0, 0 gaugeCategory = Sensors - Raw rawTps1PrimaryGauge = rawTps1Primary, "Raw TPS 1 Primary", "volts", 0, 5, 0, 0, 5, 5, 3, 0 rawPpsPrimaryGauge = rawPpsPrimary , "Raw Pedal Primary", "volts", 0, 5, 0, 0, 5, 5, 3, 0 rawCltGauge = rawClt , "Raw CLT", "volts", 0, 5, 0, 0, 5, 5, 3, 0 rawIatGauge = rawIat , "Raw IAT", "volts", 0, 5, 0, 0, 5, 5, 3, 0 rawOilPressureGauge = rawOilPressure, "Raw Oil Pressure", "volts", 0, 5, 0, 0, 5, 5, 3, 0 rawPpsSecondaryGauge = rawPpsSecondary,"Raw Pedal Secondary","volts", 0, 5, 0, 0, 5, 5, 3, 0 rawIdlePositionSensorGauge = rawIdlePositionSensor, "Raw Idle Position", "volts", 0, 5, 0, 0, 5, 5, 3, 0 rawWastegatePositionGauge = rawWastegatePosition,"Raw Wastegate Position","volts", 0, 5, 0, 0, 5, 5, 3, 0 gaugeCategory = Transmission desiredGearGauge = tcuDesiredGear, "Desired", "gear", -1, 10, -1, -1, 10, 10, 0, 0 currentGearGauge = tcuCurrentGear, "Current", "gear", -1, 10, -1, -1, 10, 10, 0, 0 gaugeCategory = Knock knock1Gauge = knock1, "Knock Cyl 1", "dBv", -60, 10, -60, -60, 10, 10, 0, 0 knock2Gauge = knock2, "Knock Cyl 2", "dBv", -60, 10, -60, -60, 10, 10, 0, 0 knock3Gauge = knock3, "Knock Cyl 3", "dBv", -60, 10, -60, -60, 10, 10, 0, 0 knock4Gauge = knock4, "Knock Cyl 4", "dBv", -60, 10, -60, -60, 10, 10, 0, 0 knock5Gauge = knock5, "Knock Cyl 5", "dBv", -60, 10, -60, -60, 10, 10, 0, 0 knock6Gauge = knock6, "Knock Cyl 6", "dBv", -60, 10, -60, -60, 10, 10, 0, 0 knock7Gauge = knock7, "Knock Cyl 7", "dBv", -60, 10, -60, -60, 10, 10, 0, 0 knock8Gauge = knock8, "Knock Cyl 8", "dBv", -60, 10, -60, -60, 10, 10, 0, 0 [WueAnalyze] ; wueCurveName, afrTempCompensationCurve, lambdaTargetTableName, lambdaChannel, coolantTempChannel, egoCorrectionChannel, wueChannel, activeCondition wueAnalyzeMap = wueAnalyzer_warmup_curve, wueAfrTargetOffsetCurve, afrTableTbl, AFRValue, coolant, cltCorrection, egoCorrection lambdaTargetTables = afrTableTbl, afrTSCustom wuePercentOffset = 0 ; for working with 0 based enrichment set to 100 option = disableLiveUpdates option = burnOnSend ; filter = std_DeadLambda ; Auto build filter = decelFilterMap,"After Start Enrich", engine, & , 4 , , false filter = accelFilterTp, "TP Accel Enrich" , engine, & , 16, , false filter = decelFilterTp, "TP Decel Enrich" , engine, & , 32, , false filter = accelFilterMap,"MAP Accel Enrich" , engine, & , 64, , false filter = decelFilterMap,"MAP Decel Enrich" , engine, & , 128, , false ; this works, just another way to skin a cat ;filter = decelFilter, "Decel Flag" , tpsaccden, > , 0, , false filter = overrunFilter, "Overrun" , pulseWidth1, = , 0, , false filter = highThrottle, "High Throttle" , throttle, > , 15, , true filter = lowRpm, "Low RPM" , rpm, < , 300, , false filter = std_Custom ; Standard Custom Expression Filter. [FrontPage] ; Gauges are numbered left to right, top to bottom. ; ; 1 2 3 4 ; 5 6 7 8 gauge1 = RPMGauge gauge2 = CLTGauge gauge3 = TPSGauge gauge4 = MAPGauge gauge5 = afr1Gauge gauge6 = VBattGauge gauge7 = dwellGauge gauge8 = ignadvGauge ; = expression, off-label, on-label, off-bg, off-fg, on-bg, on-fg ; important status indicator = { ind_hasFatalError }, "", "CRITICAL ERROR", white, black, red, black indicator = { ind_isWarnNow }, "", "WARNING", white, black, yellow, black indicator = { ind_check_engine }, "", "Check Engine", white, black, red, black indicator = { isIgnitionEnabledIndicator}, "no ignition", "ignition", yellow, black, white, black indicator = { ind_injection_enabled}, "no injection", "injection", yellow, black, white, black indicator = { ind_isTriggerError}, "trigger ok", "trigger err", white, black, red, black indicator = { sd_status & 1}, "No SD", "SD in", white, black, green, black indicator = { sd_status & 4}, "SD ready", "SD ready", white, black, green, black indicator = { sd_status & 8}, "SD Log", "SD Log", white, black, green, black indicator = { sd_status & 16}, "SD Err", "SD Err", white, black, red, black ; this is required so that the "config error" feature works in TS ; don't change this line - TS is looking for an indicator with particular text/styling ; you don't even have to show it by default indicator = { ind_hasFatalError }, "Config Error", "Config Error", white, black, red, black ; minor info indicator = { ind_fan}, "fan off", "fan on", white, black, green, black indicator = { isCylinderCleanupActivated}, "no cyl cleanup", "cyl cleanup", white, black, yellow, black indicator = { needBurn }, "config ok", "unsaved changes", white, black, yellow, black indicator = { hasSdCard}, "no SD", "with SD", white, black, green, black indicator = { ind_fuel_pump}, "pump off", "pump on", white, black, green, black indicator = { clutchUpState }, "clutch", "cltch Up", white, black, red, black indicator = { clutchDownState }, "clutch", "cltch Down", white, black, yellow, black indicator = { brakePedalIndicator }, "brake", "brake down", white, black, red, black indicator = { acSwitchIndicator }, "AC off", "AC on", white, black, blue, white ; error codes indicator = { ind_tps_error}, "tps", "tps error", white, black, red, black indicator = { ind_clt_error}, "clt", "clt error", white, black, red, black indicator = { ind_iat_error}, "iat", "iat error", white, black, red, black ; not implemented ; indicator = { ind_map_error}, "map", "map error", white, black, red, black indicator = { ind_pedal_error}, "pedal", "pedal error", white, black, red, black indicator = { knockEverIndicator }, "", "Knock recently", white, black, red, black indicator = { knockNowIndicator }, "no knock", "Knock NOW", white, black, red, black [KeyActions] showPanel = spi, spiFunction showPanel = con, connection [Datalog] ; Channel Label Type Format entry = time, @@GAUGE_NAME_TIME@@, float, "%.3f" entry = RPMValue, @@GAUGE_NAME_RPM@@, int, "%d" entry = firmwareVersion, @@GAUGE_NAME_VERSION@@, int, "%d" entry = coolant, @@GAUGE_NAME_CLT@@, float, "%.2f" entry = intake, @@GAUGE_NAME_IAT@@, float, "%.2f" entry = oilPressure, "Oil Press", float, "%.1f" entry = TPSValue, @@GAUGE_NAME_TPS@@, float, "%.2f" entry = TPS2Value, @@GAUGE_NAME_TPS2@@, float, "%.2f" entry = MAFValue, @@GAUGE_NAME_MAF@@, float, "%.2f" entry = MAPValue, @@GAUGE_NAME_MAP@@, float, "%.1f" entry = AFRValue, @@GAUGE_NAME_AFR@@, float, "%.2f" entry = VBatt, @@GAUGE_NAME_VBAT@@, float, "%.2f" entry = engineLoad, @@GAUGE_NAME_ENGINE_LOAD@@, float, "%.1f" entry = fuelingLoad, @@GAUGE_NAME_FUEL_LOAD@@, float, "%.1f" entry = ignitionLoad, @@GAUGE_NAME_IGNITION_LOAD@@, float, "%.1f" entry = ignitionAdvance, @@GAUGE_NAME_TIMING_ADVANCE@@, float, "%.2f" entry = knockLevel, @@GAUGE_NAME_KNOCK_LEVEL@@, float, "%.2f" entry = vehicleSpeedKph, @@GAUGE_NAME_VVS@@, float, "%.2f" entry = speedToRpmRatio, "s2rpm", float, "%.3f" entry = rpmAcceleration, "dRPM", 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, @@GAUGE_NAME_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" entry = debugFloatField1, {bitStringValue( debugFieldF1List, debugMode )},float,"%.4f", { !enableLogDebugChannels } entry = debugFloatField2, {bitStringValue( debugFieldF2List, debugMode )},float,"%.4f", { !enableLogDebugChannels } entry = debugFloatField3, {bitStringValue( debugFieldF3List, debugMode )},float,"%.4f", { !enableLogDebugChannels } entry = debugFloatField4, {bitStringValue( debugFieldF4List, debugMode )},float,"%.4f", { !enableLogDebugChannels } entry = debugFloatField5, {bitStringValue( debugFieldF5List, debugMode )},float,"%.4f", { !enableLogDebugChannels } entry = debugFloatField6, {bitStringValue( debugFieldF6List, debugMode )},float,"%.4f", { !enableLogDebugChannels } entry = debugFloatField7, {bitStringValue( debugFieldF7List, debugMode )},float,"%.4f", { !enableLogDebugChannels } entry = debugIntField1, {bitStringValue( debugFieldI1List, debugMode )},int,"%d", { !enableLogDebugChannels } entry = debugIntField2, {bitStringValue( debugFieldI2List, debugMode )},int,"%d", { !enableLogDebugChannels } entry = debugIntField3, {bitStringValue( debugFieldI3List, debugMode )},int,"%d", { !enableLogDebugChannels } entry = debugIntField4, {bitStringValue( debugFieldI4List, debugMode )},int,"%d", { !enableLogDebugChannels } entry = debugIntField5, {bitStringValue( debugFieldI5List, debugMode )},int,"%d", { !enableLogDebugChannels } entry = engineMakeCodeNameCrc16, "Engine CRC16",int,"%d" entry = tuneCrc16, "Tune CRC16",int,"%d" entry = engineMode, "Engine Mode",int,"%d" entry = warningCounter, @@GAUGE_NAME_WARNING_COUNTER@@,int,"%d" entry = lastErrorCode, @@GAUGE_NAME_WARNING_LAST@@,int,"%d" entry = recentErrorCode0, "error 0",int,"%d", { !enableLogErrorList } entry = recentErrorCode1, "error 1",int,"%d", { !enableLogErrorList } entry = recentErrorCode2, "error 2",int,"%d", { !enableLogErrorList } entry = recentErrorCode3, "error 3",int,"%d", { !enableLogErrorList } entry = recentErrorCode4, "error 4",int,"%d", { !enableLogErrorList } entry = recentErrorCode5, "error 5",int,"%d", { !enableLogErrorList } entry = recentErrorCode6, "error 6",int,"%d", { !enableLogErrorList } entry = recentErrorCode7, "error 7",int,"%d", { !enableLogErrorList } entry = internalMcuTemperature, @@GAUGE_NAME_CPU_TEMP@@,float,"%.2f" entry = tCharge, "tCharge",float,"%.3f" entry = clutchUpState, @@INDICATOR_NAME_CLUTCH_UP@@,int,"%d" entry = clutchDownState, @@INDICATOR_NAME_CLUTCH_DOWN@@,int,"%d" entry = brakePedalIndicator, @@INDICATOR_NAME_BRAKE_DOWN@@,int,"%d" entry = 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, @@GAUGE_NAME_ETB_DUTY@@, float, "%.3f" entry = etbTarget, "ETB Target", float, "%.3f" ; Transmission entry = tcuDesiredGear, "Desired Gear", int, "%d" entry = tcuCurrentGear, "Current Gear", int, "%d" entry = knock1, "Knock 1", int, "%d" entry = knock2, "Knock 2", int, "%d" entry = knock3, "Knock 3", int, "%d" entry = knock4, "Knock 4", int, "%d" entry = knock5, "Knock 5", int, "%d" entry = knock6, "Knock 6", int, "%d" entry = knock7, "Knock 7", int, "%d" entry = knock8, "Knock 8", int, "%d" ; tpsADC = U16, "ADC", ; alignmet = U16, "al", ; atmPres = F32, "pres", ; crankingFuel = F32, "ms", ; tCharge = F32, "T", ; sparkDwell = F32, "MAP", ; warmUpEnrich = F32, "%", [Menu] menuDialog = main ; see #1653 ; menu = "Data Logging" ; subMenu = std_ms3SdConsole, "Browse / Import SD Card" menu = "&Base &Engine" subMenu = engineChars, "Base engine" subMenu = triggerConfiguration, "Trigger" subMenu = triggerConfiguration_IO, "Advanced Trigger" subMenu = std_separator subMenu = energySystems, "Battery and alternator" subMenu = std_separator # Digital outputs subMenu = mainRelayDialog, "Main relay" subMenu = starterRelay, "Starter Disable relay" subMenu = fuelPump, "Fuel pump & rail" subMenu = fanSetting, "Fan" subMenu = tachSettings, "Tachometer" subMenu = malfunction, "Check engine light" subMenu = statusLeds, "Status LEDs" menu = "Fuel" # basic subMenu = injectorConfig, "Injection configuration" subMenu = injectionSettings, "Injection hardware", 0, {isInjectionEnabled == 1} subMenu = std_separator # Air mass model subMenu = veTableDialog, "VE", 0, {isInjectionEnabled == 1} subMenu = tChargeSettings, "Charge temperature estimation", 0, {isInjectionEnabled == 1} subMenu = baroCorrTbl, "Barometric pressure correction", 0, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY} subMenu = std_separator # Fuel model subMenu = afrTableTbl, "Target AFR", 0, {isInjectionEnabled == 1} subMenu = cltFuelCorrCurve, "CLT multiplier", 0, {isInjectionEnabled == 1} subMenu = iatFuelCorrCurve, "IAT multiplier", 0, {isInjectionEnabled == 1} subMenu = fuelClosedLoopDialog, "Closed loop fuel correction", 0, {isInjectionEnabled == 1} subMenu = coastingFuelCutControl, "Deceleration fuel cutoff (DFCO)", 0, {isInjectionEnabled == 1} subMenu = std_separator # Injector model subMenu = injPhaseTableTbl, "Injection phase", 0, {isInjectionEnabled == 1} subMenu = std_separator # Accel enrichment subMenu = AccelEnrich, "Acceleration enrichment", 0, {isInjectionEnabled == 1} subMenu = tpsTpsAccelTbl, "TPS/TPS acceleration extra fuel", 0, {isInjectionEnabled == 1} subMenu = mapAccelTaper, "Engine load AE taper", 0, {isInjectionEnabled == 1} menu = "Ignition" subMenu = ignitionSettings, "Ignition settings" subMenu = std_separator subMenu = dwellSettings, "Dwell", 0, {isIgnitionEnabled == 1} subMenu = ignitionCylExtra, "Ignition cylinder trim", 0, {isIgnitionEnabled == 1} ; 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} subMenu = std_separator # corrections subMenu = cltTimingCorrCurve, "CLT correction", 0, {isIgnitionEnabled == 1} subMenu = ignitionIatCorrTableTbl, "IAT correction", 0, {isIgnitionEnabled == 1} menu = "&Cranking" subMenu = crankingDialog, "Cranking settings" subMenu = std_separator subMenu = crankingCltCurve, "Fuel CLT multiplier" subMenu = crankingDurationCurve, "Fuel duration multiplier" subMenu = crankingTpsCurve, "Fuel TPS multiplier" subMenu = std_separator subMenu = crankingAdvanceCurve, "Ignition advance", 0, {useSeparateAdvanceForCranking == 1} subMenu = std_separator subMenu = cltCrankingCurve, "IAC multiplier", 0, {overrideCrankingIacSetting == 1} menu = "&Idle" subMenu = idleSettings, "Idle settings" subMenu = idlehw, "Idle hardware" subMenu = std_separator subMenu = cltIdleRPMCurve, "Target RPM", 0, {idleMode == 0} subMenu = iacPidMultTbl, "IAC PID Multiplier", 0, {idleMode == 0 && useIacPidMultTable == 1} subMenu = std_separator subMenu = idleVeCurve, "VE", 0, {useSeparateVeForIdle == 1} subMenu = idleAdvanceCurve, "Ignition advance", 0, {useSeparateAdvanceForIdle == 1} subMenu = std_separator subMenu = idleTimingPidCorrDialog, "Closed-loop idle timing" subMenu = cltIdleCurve, "CLT multiplier" subMenu = iacCoastingCurve, "Coasting IAC Position for Auto-Idle", 0, {useIacTableForCoasting == 1} menu = "&Advanced" subMenu = boostDialog, "Boost Control" subMenu = boostPidDialog, "Closed Loop Boost", { boostType == 1 } subMenu = std_separator subMenu = gppwm1, "General Purpose PWM 1" subMenu = gppwm2, "General Purpose PWM 2" subMenu = gppwm3, "General Purpose PWM 3" subMenu = gppwm4, "General Purpose PWM 4" subMenu = std_separator subMenu = fsioInputsDialog, "FSIO inputs" subMenu = auxPidDialog, "Aux PID" subMenu = fsioOutputsDialog, "FSIO outputs" subMenu = fsioTable1Tbl, "FSIO Table #1" subMenu = fsioTable2Tbl, "FSIO Table #2" subMenu = fsioTable3Tbl, "FSIO Table #3" subMenu = fsioTable4Tbl, "FSIO Table #4" subMenu = fsioFormulas, "FSIO Formulas" subMenu = fsioCurve1, "FSIO Curve #1" subMenu = fsioCurve2, "FSIO Curve #2" subMenu = fsioCurve3, "FSIO Curve #3" subMenu = fsioCurve4, "FSIO Curve #4" subMenu = std_separator subMenu = tcuControls, "Transmission Settings" subMenu = tcuSolenoidTableTbl, "TCU Solenoids" menu = "&Sensors" # Base analog input settings subMenu = otherSensorInputs, "Misc sensors" subMenu = analogInputSettings, "Analog input settings" subMenu = std_separator # Thermistors subMenu = cltSensor, "CLT sensor" subMenu = iatSensor, "IAT sensor" subMenu = auxTempSensor1Sensor, "AuxTemp1 sensor" subMenu = auxTempSensor2Sensor, "AuxTemp2 sensor" subMenu = std_separator # TPS/pedal subMenu = tpsSensor, "TPS" subMenu = pedalSensor, "Accelerator pedal" subMenu = std_separator # MAP/Baro subMenu = mapSettings, "MAP sensor" subMenu = mapCurves, "MAP sampling" subMenu = baroSettings, "Baro sensor" subMenu = std_separator # MAF subMenu = mafSettings, "MAF sensor" subMenu = mafDecodingCurve, "MAF transfer function", 0, {mafAdcChannel != @@ADC_CHANNEL_NONE@@ } subMenu = std_separator # O2 sensor(s) subMenu = egoSettings, "EGO sensor" subMenu = 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 subMenu = wastegateIdlePos, "Wastegate and idle position sensors" menu = "&Controller" subMenu = ecuStimulator, "ECU stimulator" subMenu = datalogSettings, "Datalogging" subMenu = ioTest, "Bench test" subMenu = engineTypeDialog, "Popular vehicles" subMenu = std_separator subMenu = lcdScreen, "LCD" @@if_ts_show_lcd subMenu = joystickPanel, "Joystick" @@if_ts_show_joystick subMenu = spiFunction, "SPI"@@if_ts_show_spi subMenu = monitoringSettings, "rusEFI console" subMenu = std_separator subMenu = canBusMain, "CAN Bus Communication" subMenu = sdCard, "SD Card Logger" @@if_ts_show_sd_card subMenu = connection, "Connection" subMenu = tle8888, "TLE8888" subMenu = allPins1, "Full pinout 1/3" @@if_ts_show_full_pinout subMenu = allPins2, "Full pinout 2/3" @@if_ts_show_full_pinout subMenu = allPins3_1_and_2 "Full pinout 3/3" @@if_ts_show_full_pinout subMenu = std_separator # EXPERIMENTAL FEATURES subMenu = parkingLot, "Experimental/Broken" subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1} subMenu = mc33Dialog, "GDI Dreams" subMenu = std_separator subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" @@if_ts_show_hip9011 subMenu = softwareKnock, "Software Knock" @@if_ts_show_software_knock subMenu = std_separator subMenu = etbDialog, "Electronic throttle body (beta version)" @@if_ts_show_etb subMenu = etbTpsBiasCurve, "Electronic throttle body bias curve" @@if_ts_show_etb subMenu = pedalToTpsTbl, "Electronic Pedal Map" @@if_ts_show_etb subMenu = std_separator subMenu = smLaunchControl, "Launch Control" subMenu = std_separator # subMenu = smRollingLaunch, "Rolling Launch" # subMenu = std_separator # subMenu = antiLag, "Antilag Setup" # subMenu = std_separator menu = "Help" subMenu = helpGeneral, "rusEFI Info" [ControllerCommands] ; commandName = command1, command2, commandn... ; command in standard ini format, a command name can be assigned to 1 to n commands that will be executed in order. ; This does not include any resultant protocol envelope data, only the response data itself. ; WARNING!! These commands bypass TunerStudio's normal memory synchronization. If these commands ; alter mapped settings (Constant) memory in the controller, TunerStudio will have an out of sync condition ; and may create error messages. ; It is expected that these commands would not typically alter any ram mapped to a Constant. ; ; see TS_IO_TEST_COMMAND in firmware code ; cmd_test_spk1 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x01" cmd_test_spk2 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x02" cmd_test_spk3 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x03" cmd_test_spk4 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x04" cmd_test_spk5 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x05" cmd_test_spk6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x06" cmd_test_spk7 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x07" cmd_test_spk8 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x08" cmd_test_spk9 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x09" cmd_test_spk10 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0a" cmd_test_spk11 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0b" cmd_test_spk12 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0c" cmd_test_spk13 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0d" cmd_test_spk14 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0e" cmd_test_spk15 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x0f" cmd_test_spk16 = "@@TS_IO_TEST_COMMAND_char@@\x00\x12\x00\x10" cmd_test_fsio1 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x01" cmd_test_fsio2 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY_16_hex@@\x00\x02" cmd_test_fsio3 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x03" cmd_test_fsio4 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x04" cmd_test_fsio5 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x05" cmd_test_fsio6 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x06" cmd_test_fsio7 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x07" cmd_test_fsio8 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x08" cmd_test_fsio9 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x09" cmd_test_fsio10 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x0a" cmd_test_fsio11 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_FSIO_CATEGORY@@\x00\x0b" cmd_test_inj1 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_INJECTOR_CATEGORY_16_hex@@\x00\x01" cmd_test_inj2 = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_INJECTOR_CATEGORY_16_hex@@\x00\x02" cmd_test_inj3 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x03" cmd_test_inj4 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x04" cmd_test_inj5 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x05" cmd_test_inj6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x06" cmd_test_inj7 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x07" cmd_test_inj8 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x08" cmd_test_inj9 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x09" cmd_test_inj10 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0a" cmd_test_inj11 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0b" cmd_test_inj12 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0c" cmd_test_main_relay = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_MAIN_RELAY_16_hex@@" cmd_test_fuel_pump = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_FUEL_PUMP_16_hex@@" cmd_test_starter_relay = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_STARTER_ENABLE_RELAY_16_hex@@" cmd_test_starter_disable_relay = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_STARTER_DISABLE_RELAY_16_hex@@" cmd_test_ac_relay = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_AC_COMPRESSOR_RELAY_16_hex@@" cmd_test_radiator_fan = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_FAN_RELAY_16_hex@@" cmd_test_check_engine_light = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_CHECK_ENGINE_LIGHT_16_hex@@" cmd_test_idle_valve = "@@TS_IO_TEST_COMMAND_char@@@@CMD_TS_BENCH_CATEGORY_16_hex@@@@CMD_TS_BENCH_IDLE_VALVE_16_hex@@" cmd_calibrate_tps_1_closed = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x02" cmd_calibrate_tps_1_wot = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x03" cmd_calibrate_tps_2_closed = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x04" cmd_calibrate_tps_2_wot = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x05" cmd_calibrate_pedal_up = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x06" cmd_calibrate_pedal_down = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x07" cmd_tle8888_init = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x08" cmd_write_config = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x0A" cmd_etb_autotune = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x0C" cmd_enable_self_stim = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x0D" cmb_etb_auto_calibrate = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x0E" cmb_etb_auto_calibrate_2 = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x11" cmd_disable_self_stim = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x0F" cmd_etb_autotune_stop = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x10" cmd_cj125_calibrate = "@@TS_IO_TEST_COMMAND_char@@\x00\x18\x00\x00" cmd_call_from_pit = "@@TS_IO_TEST_COMMAND_char@@\x00\x20\x34\x56" cmd_stop_engine = "@@TS_IO_TEST_COMMAND_char@@\x00\x79\x00\x00" ; reboot ECU cmd_reset_controller = "@@TS_IO_TEST_COMMAND_char@@\x00\xbb\x00\x00" ; jump to DFU mode cmd_dfu = "@@TS_IO_TEST_COMMAND_char@@\x00\xba\x00\x00" ; See 'executeTSCommand' in firmware source code ; MRE_MIATA_NB2_MAP = 11 cmd_set_engine_type_microRusEFI_Miata_NB2_MAP = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_NB2_MAP_16_hex@@" cmd_set_engine_type_microRusEFI_VW_B6 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_VW_B6_16_hex@@" cmd_set_engine_type_microRusEFI_MRE_BODY_CONTROL = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_BODY_CONTROL_16_hex@@" ; MRE_MIATA_NA6 12 cmd_set_engine_type_microRusEFI_Miata_NA6_VAF = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_NA6_VAF_16_hex@@" cmd_set_engine_type_microRusEFI_Miata_NA6_MAP = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_NA6_MAP_16_hex@@" ; MRE_MIATA_NB2_MAF = 15 cmd_set_engine_type_microRusEFI_Miata_NB2_MAF = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_MIATA_NB2_MAF_16_hex@@" cmd_set_engine_type_microRusEFI_Defaults = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_MRE_DEFAULTS_16_hex@@" ; MIATA_NA6_MAP = 41 cmd_set_engine_type_Frankenso_Miata_NA6_MAP = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_FRANKENSO_MIATA_NA6_16_hex@@" ; MIATA_NA6_VAF = 57 cmd_set_engine_type_Frankenso_Miata_NA6_VAF = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_FRANKENSO_MIATA_NA6_VAF_16_hex@@" ; MAZDA_MIATA_2003 = 47 cmd_set_engine_type_Frankenso_Miata_NB2 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_FRANKENSO_MIATA_NB2_16_hex@@" cmd_set_engine_type_Proteus_M73 = "@@TS_IO_TEST_COMMAND_char@@\x00\x30@@ET_BMW_M73_PROTEUS_16_hex@@" ; ETB_BENCH_ENGINE = 58 cmd_set_engine_type_etb_test = "@@TS_IO_TEST_COMMAND_char@@\x00\x30\x00\x3A" ; ETB_BENCH_ENGINE = 59 cmd_set_engine_type_8888_test = "@@TS_IO_TEST_COMMAND_char@@\x00\x30\x00\x3B" cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" [UserDefined] dialog = tChargeRpmTpsSettings, "RPM+TPS Mode Settings" field = "We use these coefficients to approximate air/fuel charge temperate" field = "based on CLT and IAT, depending on RPM and TPM" field = "minRPM minTPS", tChargeMinRpmMinTps field = "minRPM maxTPS", tChargeMinRpmMaxTps field = "maxRPM minTPS", tChargeMaxRpmMinTps field = "maxRPM maxTPS", tChargeMaxRpmMaxTps dialog = tChargeGeneralSettings, "" field = "tCharge Mode", tChargeMode field = "tChange Increment Limit, deg/sec", tChargeAirIncrLimit field = "tChange Decrement Limit, deg/sec", tChargeAirDecrLimit field = "" dialog = tChargeAirInterpSettings, "Air Interpolation Mode Settings" field = "Min tCharge Coeff.", tChargeAirCoefMin field = "Max tCharge Coeff.", tChargeAirCoefMax field = "Max Air Flow, kg/h", tChargeAirFlowMax dialog = tChargeSettings, "tCharge Settings" panel = tChargeGeneralSettings panel = tChargeRpmTpsSettings, { tChargeMode == 0} panel = tChargeAirInterpSettings, { tChargeMode == 1} dialog = baseInjection, "General" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" field = "Two wire batch emulation", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2} field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } dialog = ignitionOutputs, "Ignition Outputs" field = "Ignition Pin Mode", ignitionPinMode, {isIgnitionEnabled == 1} field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1} ; see rusefi_config.txt comment next to 'ignitionPin2logic' which says ; this section is auto-generated by FiringOrderTSLogic.java @@FIRINGORDER@@ dialog = ignitionBasic, "" field = "Enabled", isIgnitionEnabled field = "Mode", ignitionMode, {isIgnitionEnabled == 1} field = "Two wire wasted", twoWireBatchIgnition, {isIgnitionEnabled == 1 && ignitionMode == 2} field = "Override ignition table load axis", ignOverrideMode, {isIgnitionEnabled} field = "#Use fixed timing while validating with a timing gun" field = "Timing Mode", timingMode, {isIgnitionEnabled == 1} field = "Fixed Timing", fixedTiming, {isIgnitionEnabled == 1 && timingMode == 1} dialog = ignitionSettings, "", xAxis panel = ignitionBasic panel = ignitionOutputs dialog = baseEngineConfig, "Engine Configuration" ; field = "Engine Preset", engineType ; this field is useful for rusEFI online catalog field = "Engine Make", engineMake ; this field is useful for rusEFI online catalog field = "Manufacturer Engine Code", engineCode ; this field is useful for rusEFI online catalog field = "Vehicle Name", vehicleName field = "Number of Cylinders", cylindersCount field = "Engine Displacement", displacement field = "Firing Order", firingOrder ; this field is useful for rusEFI online catalog field = "Compression Ratio", compressionRatio ; this field is useful for rusEFI online catalog field = "Forced Induction?", isForcedInduction ; Engine->Trigger configuration dialog = triggerConfiguration_settings, "Trigger Pattern" field = "!https://rusefi.com/s/trigger" field = "Trigger type", trigger_type field = "Total tooth count", trigger_customTotalToothCount, {trigger_type == 0}, {trigger_type == 0} field = "Missing/skipped tooth count", trigger_customSkippedToothCount, {trigger_type == 0}, {trigger_type == 0} ; see also in firmware '[doesTriggerImplyOperationMode]' tag field = "Operation mode / speed", ambiguousOperationMode field = "#Please use '4 stroke with cam' only if primary trigger sensor is actually on cam" field = "#Separate cam input not part of Trigger Pattern does not count here" field = "With VR sensors only rising edge has reliable position" field = "use only rising edge", useOnlyRisingEdgeForTrigger field = "!Reminder that 4-stroke cycle is 720 degrees" field = "!For well-known trigger types use '0' trigger angle offset" field = "Trigger Angle Advance", globalTriggerAngleOffset field = "Display only interesting", displayLogicLevelsInEngineSniffer dialog = triggerConfiguration_IO, "Advanced Trigger" field = "!https://rusefi.com/s/vvt" field = "VVT mode", vvtMode, {trigger_type != 80} field = "VVT use rise front", vvtCamSensorUseRise, {trigger_type != 80} field = "VVT position display offset", vvtOffset field = "print verbose VVT sync details to console",verboseVVTDecoding field = "Do not print messages in case of sync error", silentTriggerError field = "Enable noise filtering", useNoiselessTriggerDecoder, {trigger_type == @@TT_TT_TOOTHED_WHEEL_60_2@@ || trigger_type == @@TT_TT_TOOTHED_WHEEL_36_1@@} dialog = triggerInputs, "Trigger Inputs" field = "!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 != @@TT_TT_TOOTHED_WHEEL@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_60_2@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_36_1@@ && trigger_type != @@TT_TT_ONE@@ && trigger_type != @@TT_TT_60_2_VW@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_36_2@@} field = "Invert Secondary", invertSecondaryTriggerSignal, { trigger_type != @@TT_TT_TOOTHED_WHEEL@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_60_2@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_36_1@@ && trigger_type != @@TT_TT_ONE@@ && trigger_type != @@TT_TT_60_2_VW@@ && trigger_type != @@TT_TT_TOOTHED_WHEEL_36_2@@} field = "Cam Sync/VVT input", camInputs1 field = "Invert Cam/VVT", invertCamVVTSignal panel = triggerInputComparator @@if_ts_show_trigger_comparator dialog = triggerConfiguration panel = triggerConfiguration_settings, North, { consumeObdSensors == 0 } panel = triggerInputs, South, { consumeObdSensors == 0 } ; Engine->Injection Settings dialog = injChars, "Injector Settings", yAxis field = "Injector Flow", injector_flow, {isInjectionEnabled == 1} dialog = fuelParams, "Fuel characteristics", yAxis field = "Stoichiometric ratio", stoichRatioPrimary, {isInjectionEnabled == 1} dialog = injectorOutputSettings, "Injector Outputs", yAxis field = "Use only first half of pins for batch mode" field = "Injection Pin 1", injectionPins1, {isInjectionEnabled == 1} field = "Injection Pin 2", injectionPins2, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 1} field = "Injection Pin 3", injectionPins3, {isInjectionEnabled == 1 && injectionMode != 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} field = "" field = "injection Pin Mode", injectionPinMode, {isInjectionEnabled == 1} dialog = testInjectors, "Injector Test" commandButton = "Injector #1", cmd_test_inj1 commandButton = "Injector #2", cmd_test_inj2 commandButton = "Injector #3", cmd_test_inj3 commandButton = "Injector #4", cmd_test_inj4 commandButton = "Injector #5", cmd_test_inj5 commandButton = "Injector #6", cmd_test_inj6 commandButton = "Injector #7", cmd_test_inj7 commandButton = "Injector #8", cmd_test_inj8 commandButton = "Injector #9", cmd_test_inj9 commandButton = "Injector #10", cmd_test_inj10 commandButton = "Injector #11", cmd_test_inj11 commandButton = "Injector #12", cmd_test_inj12 commandButton = "FSIO#1", cmd_test_fsio1 commandButton = "FSIO#2", cmd_test_fsio2 commandButton = "FSIO#3", cmd_test_fsio3 commandButton = "FSIO#4", cmd_test_fsio4 commandButton = "FSIO#5", cmd_test_fsio5 commandButton = "FSIO#6", cmd_test_fsio6 commandButton = "FSIO#7", cmd_test_fsio7 commandButton = "FSIO#8", cmd_test_fsio8 commandButton = "FSIO#9", cmd_test_fsio9 commandButton = "FSIO#10", cmd_test_fsio10 dialog = injectionSettingsEast, "", yAxis panel = testInjectors field = "" dialog = injectionSettingsWest, "", yAxis panel = injectorOutputSettings field = "" dialog = injectionSettings, "", xAxis panel = injectionSettingsWest panel = injectionSettingsEast dialog = injectorConfig, "", yAxis topicHelp = "fuelHelp" panel = baseInjection panel = injChars panel = fuelParams panel = injectorsDeadTime dialog = ignitionCylExtra, "Ignition Cylinder Extra Timing" field = "Extra cyl #1", timing_offset_cylinder1 field = "Extra cyl #2", timing_offset_cylinder2, {cylindersCount > 1} field = "Extra cyl #3", timing_offset_cylinder3, {cylindersCount > 2} field = "Extra cyl #4", timing_offset_cylinder4, {cylindersCount > 3} field = "Extra cyl #5", timing_offset_cylinder5, {cylindersCount > 4} field = "Extra cyl #6", timing_offset_cylinder6, {cylindersCount > 5} field = "Extra cyl #7", timing_offset_cylinder7, {cylindersCount > 6} field = "Extra cyl #8", timing_offset_cylinder8, {cylindersCount > 7} field = "Extra cyl #9", timing_offset_cylinder9, {cylindersCount > 8} field = "Extra cyl #10", timing_offset_cylinder10, {cylindersCount > 9} field = "Extra cyl #11", timing_offset_cylinder11, {cylindersCount > 10} field = "Extra cyl #12", timing_offset_cylinder12, {cylindersCount > 11} dialog = multisparkDwellParams, "Delay & Dwell" field = "Spark Duration", multisparkSparkDuration, {multisparkEnable} field = "Dwell", multisparkDwell, {multisparkEnable} dialog = multisparkMain, "Configuration" field = "Maximum engine speed", multisparkMaxRpm, {multisparkEnable} field = "Fire sparks for this angle duration" multisparkMaxSparkingAngle, {multisparkEnable} field = "Maximum extra spark count" multisparkMaxExtraSparkCount, {multisparkEnable} dialog = multisparkSettings, "Multispark" field = "#WARNING! These settings have the potential to overheat ignition components" field = "#and cause other nasty misbehavior. Use with care, at your own risk!" field = "Enable Multiple Sparks", multisparkEnable panel = multisparkMain panel = multisparkDwellParams dialog = dwellSettings, "", yAxis panel = dwellCorrection, Center ; Sensors->AUX1 Thermistor Sensor Setting dialog = auxTempSensor1Sensor, "aux1 Thermistor Settings" field = "Input channel", auxTempSensor1_adcChannel field = "Bias resistor", auxTempSensor1_bias_resistor, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@} field = "#Here is three pairs of thermistor temperature and resistance." field = "#Typical temperatures is -40 deg C, 0 deg C and 100 deg C" field = "" field = "Lowest temperature", auxTempSensor1_tempC_1, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ LT", auxTempSensor1_resistance_1, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Middle temperature", auxTempSensor1_tempC_2, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ MT", auxTempSensor1_resistance_2, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Highest temperature", auxTempSensor1_tempC_3, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ HT", auxTempSensor1_resistance_3, {auxTempSensor1_adcChannel != @@ADC_CHANNEL_NONE@@} ; Sensors->AUX2 Thermistor Sensor Setting dialog = auxTempSensor2Sensor, "aux2 Thermistor Settings" field = "Input channel", auxTempSensor2_adcChannel field = "Bias resistor", auxTempSensor2_bias_resistor, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@} field = "#Here is three pairs of thermistor temperature and resistance." field = "#Typical temperatures is -40 deg C, 0 deg C and 100 deg C" field = "" field = "Lowest temperature", auxTempSensor2_tempC_1, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ LT", auxTempSensor2_resistance_1, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Middle temperature", auxTempSensor2_tempC_2, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ MT", auxTempSensor2_resistance_2, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Highest temperature", auxTempSensor2_tempC_3, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ HT", auxTempSensor2_resistance_3, {auxTempSensor2_adcChannel != @@ADC_CHANNEL_NONE@@} dialog = tpsNum1, "Throttle #1" field = "!See Tools>Calibrate TPS" field = "Primary sensor", tps1_1AdcChannel field = "Primary min", tpsMin, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@} field = "Primary max", tpsMax, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@} field = "Secondary sensor", tps1_2AdcChannel field = "Secondary min", tps1SecondaryMin, {tps1_2AdcChannel != @@ADC_CHANNEL_NONE@@} field = "Secondary max", tps1SecondaryMax, {tps1_2AdcChannel != @@ADC_CHANNEL_NONE@@} commandButton = "Auto Calibrate TPS 1", cmb_etb_auto_calibrate, {tps1_2AdcChannel != @@ADC_CHANNEL_NONE@@ && throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@} dialog = tpsNum2, "Throttle #2" field = "Primary sensor", tps2_1AdcChannel field = "Primary min", tps2Min, {tps2_1AdcChannel != @@ADC_CHANNEL_NONE@@} field = "Primary max", tps2Max, {tps2_1AdcChannel != @@ADC_CHANNEL_NONE@@} field = "Secondary sensor", tps2_2AdcChannel field = "Secondary min", tps2SecondaryMin, {tps2_2AdcChannel != @@ADC_CHANNEL_NONE@@} field = "Secondary max", tps2SecondaryMax, {tps2_2AdcChannel != @@ADC_CHANNEL_NONE@@} commandButton = "Auto Calibrate TPS 2", cmb_etb_auto_calibrate_2, {tps2_2AdcChannel != @@ADC_CHANNEL_NONE@@ && throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@} dialog = tpsLimits, "TPS Limits" field = "TPS minimum valid value", tpsErrorDetectionTooLow, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@} field = "TPS maximum valid value", tpsErrorDetectionTooHigh, {tps1_1AdcChannel != @@ADC_CHANNEL_NONE@@} dialog = tpsSensor, "TPS" panel = tpsLimits panel = tpsNum1 panel = tpsNum2 dialog = pedalSensorLeft, "Accelerator pedal" field = "Accelerator position sensor", throttlePedalPositionAdcChannel field = "Up voltage", throttlePedalUpVoltage field = "Down (WOT) voltage", throttlePedalWOTVoltage field = "Accelerator position 2nd sensor", throttlePedalPositionSecondAdcChannel field = "Up voltage" throttlePedalSecondaryUpVoltage field = "Down (WOT) voltage", throttlePedalSecondaryWOTVoltage dialog = pedalGauges gauge = pedalPositionGauge gauge = rawPpsPrimaryGauge gauge = rawPpsSecondaryGauge dialog = pedalSensor, "Accelerator pedal", border panel = pedalSensorLeft, West panel = pedalGauges, East dialog = wastegatePosConfig, "Wastegate position sensor" field = "Input pin", wastegatePositionSensor field = "Min (fully closed, most boost)", wastegatePositionMin field = "Max (fully open, least boost)", wastegatePositionMax dialog = idlePosConfig, "Wastegate position sensor" field = "Input pin", idlePositionSensor field = "Min (valve closed, low idle)", idlePositionMin field = "Max (valve open, high idle)", idlePositionMax dialog = wastegateIdlePosLeft, "" panel = wastegatePosConfig panel = idlePosConfig dialog = wastegateIdlePosGauges, "" gauge = rawWastegatePositionGauge, West gauge = wastegatePosGauge, East gauge = rawIdlePositionSensorGauge gauge = idlePosSensGauge dialog = wastegateIdlePos, "", border panel = wastegateIdlePosLeft, West panel = wastegateIdlePosGauges, East dialog = mc33Dialog, "Low-Z injector control (MC33816)" field = "MC33816 cs", mc33816_cs field = "MC33816 rstb", mc33816_rstb field = "MC33816 flag0", mc33816_flag0 field = "MC33816 SPI Device", mc33972spiDevice field = "Boost voltage", mc33_hvolt field = "Boost current target", mc33_i_boost field = "Max boost time (timeout)", mc33_t_max_boost field = "Boost -> Peak Bypass Time", mc33_t_peak_off field = "Peak current target", mc33_i_peak field = "Peak time", mc33_t_peak_tot field = "Peak -> Hold Bypass Time", mc33_t_bypass field = "Hold current target", mc33_i_hold field = "mc33_t_hold_off ?????", mc33_t_hold_off field = "Maximum injection duration", mc33_t_hold_tot ; Sensor Inputs dialog = otherSensorInputs, "Other Sensor Inputs" field = "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", acSwitch field = "A/C switch mode", acSwitchMode dialog = triggerInputComparator, "Built-in Comparator Settings (Kinetis-only)" field = "Comparator Center Point Voltage", triggerCompCenterVolt field = "Comparator hysteresis voltage (Min)", triggerCompHystMin field = "Comparator hysteresis voltage (Max)", triggerCompHystMax field = "VR-sensor saturation RPM", triggerCompSensorSatRpm dialog = joystickPanel, "Joystick" field = "joustick center button", joystickCenterPin field = "joustick button A", joystickAPin field = "joustick button B", joystickBPin field = "joustick button C", joystickCPin field = "joustick button D", joystickDPin ; ; allXXX sections allows a quick overview of used I/O in order to address conflicts mostly, not really to ; configure the features. ; dialog = allPinsSensors, "Sensors" field = "Throttle pedal Position Channel", throttlePedalPositionAdcChannel field = "Primary input channel", triggerInputPins1 field = "Secondary channel", triggerInputPins2 field = "Cam Sync/VVT input", camInputs1 field = "CLT ADC input", clt_adcChannel field = "IAT ADC input", iat_adcChannel field = "vBatt ADC input", vbattAdcChannel field = "TPS1 ADC input", tps1_1AdcChannel field = "TPS2 ADC input", tps2_1AdcChannel field = "MAF ADC input", mafAdcChannel field = "AFR ADC input", afr_hwChannel field = "Baro ADC input", baroSensor_hwChannel field = "MAP ADC input", map_sensor_hwChannel field = "FrequencyReportingMapInputPin", frequencyReportingMapInputPin field = "FuelLevelSensor", fuelLevelSensor field = "Vehicle Speed Input pin", vehicleSpeedSensorInputPin field = "clutchDownPin", clutchDownPin field = "clutchUpPin", clutchUpPin field = "brakePedalPin", brakePedalPin field = "A/C Switch", acSwitch field = "Aux Temperature #1", auxTempSensor1_adcChannel field = "Aux Temperature #2", auxTempSensor2_adcChannel field = "Aux Fast Analog", auxFastSensor1_adcChannel dialog = allPinsMC33, "MC33816" field = "Chip Select", mc33816_cs field = rstb, mc33816_rstb field = flag0, mc33816_flag0 field = mc33816_driven, mc33816_driven field = mc33816spiDevice, mc33816spiDevice dialog = allPins1_1 field = "trigger stimulator pin #1", triggerSimulatorPins1 field = "trigger stimulator pin #2", triggerSimulatorPins2 field = "trigger stimulator pin #2", triggerSimulatorPins3 field = high_fuel_pressure_sensor_1, high_fuel_pressure_sensor_1 field = high_fuel_pressure_sensor_2, high_fuel_pressure_sensor_2 field = low_fuel_pressure_sensor, low_fuel_pressure_sensor field = "Warning Led", warningLedPin field = "tle6240_cs", tle6240_cs field = "tle6240 SPI", tle6240spiDevice panel = joystickPanel dialog = allPins1_2 field = "Tachometer output Pin", tachOutputPin field = "O2 heater pin", o2heaterPin field = "Idle Solenoid Pin", idle_solenoidPin field = "Second Idle Solenoid Pin", secondSolenoidPin field = "Idle Stepper Dir", idle_stepperDirectionPin field = "Idle Stepper Step", idle_stepperStepPin field = "Idle Stepper Enable", stepperEnablePin field = "Fuel Pump Pin", fuelPumpPin field = "ETB#1 Dir #1", etbIo1_directionPin1 @@if_ts_show_etb_pins field = "ETB#1 Dir #2", etbIo1_directionPin2 @@if_ts_show_etb_pins field = "ETB#1 Control #1", etbIo1_controlPin1 @@if_ts_show_etb_pins field = "ETB#1 Disable", etbIo1_disablePin @@if_ts_show_etb_pins field = "ETB#2 Dir #1", etbIo2_directionPin1 @@if_ts_show_etb_pins field = "ETB#2 Dir #2", etbIo2_directionPin2 @@if_ts_show_etb_pins field = "ETB#2 Control #1", etbIo2_controlPin1 @@if_ts_show_etb_pins field = "ETB#2 Disable", etbIo2_disablePin @@if_ts_show_etb_pins field = "SD CS Pin", sdCardCsPin @@if_ts_show_sd_card field = "MIL / Check Engine Pin", malfunctionIndicatorPin field = "test557pin", test557pin field = "Fan Pin", fanPin field = "A/C Relay", acRelayPin field = "Main Relay Pin", mainRelayPin field = "Starter Relay Pin", starterRelayDisablePin dialog = allPins2_1 field = "Injection Pin 1", injectionPins1 field = "Injection Pin 2", injectionPins2 field = "Injection Pin 3", injectionPins3 field = "Injection Pin 4", injectionPins4 field = "Injection Pin 5 ", injectionPins5 field = "Injection Pin 6 ", injectionPins6 field = "Injection Pin 7 ", injectionPins7 field = "Injection Pin 8 ", injectionPins8 field = "Injection Pin 9 ", injectionPins9 field = "Injection Pin 10 ", injectionPins10 field = "Injection Pin 11 ", injectionPins11 field = "Injection Pin 12 ", injectionPins12 field = "FSIO dig inp #1", fsioDigitalInputs1 field = "FSIO dig inp #2", fsioDigitalInputs2 field = "FSIO dig inp #3", fsioDigitalInputs3 field = "FSIO dig inp #4", fsioDigitalInputs4 field = "FSIO dig inp #5", fsioDigitalInputs5 field = "FSIO dig inp #6", fsioDigitalInputs6 field = "FSIO dig inp #7", fsioDigitalInputs7 field = "FSIO dig inp #8", fsioDigitalInputs8 field = "FSIO dig inp #9", fsioDigitalInputs9 field = "FSIO dig inp #10", fsioDigitalInputs10 field = "FSIO dig inp #11", fsioDigitalInputs11 field = "FSIO dig inp #12", fsioDigitalInputs12 field = "FSIO dig inp #13", fsioDigitalInputs13 field = "FSIO dig inp #14", fsioDigitalInputs14 field = "FSIO dig inp #15", fsioDigitalInputs15 field = "FSIO dig inp #16", fsioDigitalInputs16 dialog = allPins2_2 field = "Ignition Pin 1", ignitionPins1 field = "Ignition Pin 2", ignitionPins2 field = "Ignition Pin 3", ignitionPins3 field = "Ignition Pin 4", ignitionPins4 field = "Ignition Pin 5", ignitionPins5 field = "Ignition Pin 6", ignitionPins6 field = "Ignition Pin 7", ignitionPins7 field = "Ignition Pin 8", ignitionPins8 field = "Ignition Pin 9", ignitionPins9 field = "Ignition Pin 10", ignitionPins10 field = "Ignition Pin 11", ignitionPins11 field = "Ignition Pin 12", ignitionPins12 field = "output #1", fsioOutputPins1 field = "output #2", fsioOutputPins2 field = "output #3", fsioOutputPins3 field = "output #4", fsioOutputPins4 field = "output #5", fsioOutputPins5 field = "output #6", fsioOutputPins6 field = "output #7", fsioOutputPins7 field = "output #8", fsioOutputPins8 field = "output #9", fsioOutputPins9 field = "output #10", fsioOutputPins10 field = "output #11", fsioOutputPins11 field = "output #12", fsioOutputPins12 field = "output #13", fsioOutputPins13 field = "output #14", fsioOutputPins14 field = "output #15", fsioOutputPins15 field = "output #16", fsioOutputPins16 dialog = allPins2_3 field = "LCD E pin", HD44780_e field = "LCD D4 pin", HD44780_db4 field = "LCD D5 pin", HD44780_db5 field = "LCD D6 pin", HD44780_db6 field = "LCD D7 pin", HD44780_db7 field = "Debug Trigger Sync", debugTriggerSync panel = allPinsMC33 dialog = allPins1_3 field = "FSIO ADC #1", fsioAdc1 field = "FSIO ADC #2", fsioAdc2 field = "FSIO ADC #3", fsioAdc3 field = "FSIO ADC #4", fsioAdc4 field = "GPS RX", gps_rx_pin @@if_ts_show_gps field = "GPS TX", gps_tx_pin @@if_ts_show_gps field = "CAN RX pin", canRxPin @@if_ts_show_can_pins field = "CAN TX pin", canTxPin @@if_ts_show_can_pins field = "SPI1 MOSI", spi1mosiPin, {is_enabled_spi_1 == 1} @@if_ts_show_spi field = "SPI1 MISO", spi1misoPin, {is_enabled_spi_1 == 1} @@if_ts_show_spi field = "SPI1 SCK", spi1sckPin, {is_enabled_spi_1 == 1} @@if_ts_show_spi field = "SPI2 MOSI", spi2mosiPin, {is_enabled_spi_2 == 1} @@if_ts_show_spi field = "SPI2 MISO", spi2misoPin, {is_enabled_spi_2 == 1} @@if_ts_show_spi field = "SPI2 SCK", spi2sckPin, {is_enabled_spi_2 == 1} @@if_ts_show_spi field = "SPI3 MOSI", spi3mosiPin, {is_enabled_spi_3 == 1} @@if_ts_show_spi field = "SPI3 MISO", spi3misoPin, {is_enabled_spi_3 == 1} @@if_ts_show_spi field = "SPI3 SCK", spi3sckPin, {is_enabled_spi_3 == 1} @@if_ts_show_spi field = "hip9011CsPin", hip9011CsPin field = "LIS302DLCsPin", LIS302DLCsPin field = "MIL / Check Engine", malfunctionIndicatorPin field = "Saab CDM knock", cdmInputPin field = "DRV8860 CS", drv8860_cs field = "DRV8860 CS Mode", drv8860_csPinMode field = "DRV8860 MISO pin", drv8860_miso field = "DRV8860 SPI", drv8860spiDevice field = "comm status light", communicationLedPin field = "running status light", runningLedPin dialog = allPins3_1 panel = allPinsSensors dialog = allPins3_2 field = "servo#1", servoOutputPins1 field = "servo#2", servoOutputPins2 field = "servo#3", servoOutputPins3 field = "servo#4", servoOutputPins4 field = "servo#5", servoOutputPins5 field = "Aux Pin #1", auxPidPins1 field = "Aux Pin #2", auxPidPins2 field = "Aux Pin #3", auxPidPins3 field = "Aux Pin #4", auxPidPins4 field = "Aux Valve #1", auxValves1 field = "Aux Valve #2", auxValves2 field = "TLE8888 Chip Select", tle8888_cs @@if_ts_show_spi field = "TLE 8888 spi", tle8888spiDevice @@if_ts_show_spi field = "AUX Serial TX", auxSerialTxPin field = "AUX Serial RX", auxSerialRxPin dialog = allPins3_1_and_2, "All Pins 3/3", xAxis panel = allPins3_1 panel = allPins3_2 dialog = allPins1_1_and_2, "", xAxis panel = allPins1_1 panel = allPins1_2 dialog = allPins1, "All Pins 1/3", xAxis panel = allPins1_1_and_2 panel = allPins1_3 dialog = allPins2_1_and_2, "", xAxis panel = allPins2_1 panel = allPins2_2 dialog = allPins2, "All Pins 2/3", xAxis panel = allPins2_1_and_2 panel = allPins2_3 ; Sensors->CLT sensor dialog = clt_thermistor, "CLT sensor" field = "Input channel", clt_adcChannel field = "Bias resistor", clt_bias_resistor, {clt_adcChannel != @@ADC_CHANNEL_NONE@@} field = "#Input three pairs of thermistor temperature and resistance." field = "#Typical temperatures are -40 deg C, 0 deg C and 100 deg C" field = "" field = "Lowest temperature", clt_tempC_1, {clt_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ LT", clt_resistance_1, {clt_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Middle temperature", clt_tempC_2, {clt_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ MT", clt_resistance_2, {clt_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Highest temperature", clt_tempC_3, {clt_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ HT", clt_resistance_3, {clt_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Linear characteristic", useLinearCltSensor, {clt_adcChannel != @@ADC_CHANNEL_NONE@@} dialog = cltGauges gauge = CLTGauge gauge = rawCltGauge dialog = cltSensor, "CLT Sensor", border panel = clt_thermistor, West panel = cltGauges, East ; Sensors->IAT sensor dialog = iat_thermistor, "IAT sensor" field = "Input channel", iat_adcChannel field = "Bias resistor", iat_bias_resistor, {iat_adcChannel != @@ADC_CHANNEL_NONE@@} field = "#Input three pairs of thermistor temperature and resistance." field = "#Typical temperatures are -40 deg C, 0 deg C and 100 deg C" field = "" field = "Lowest temperature", iat_tempC_1, {iat_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ LT", iat_resistance_1, {iat_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Middle temperature", iat_tempC_2, {iat_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ MT", iat_resistance_2, {iat_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Highest temperature", iat_tempC_3, {iat_adcChannel != @@ADC_CHANNEL_NONE@@} field = "Resistance @ HT", iat_resistance_3, {iat_adcChannel != @@ADC_CHANNEL_NONE@@} field = "" field = "Linear characteristic", useLinearIatSensor, {iat_adcChannel != @@ADC_CHANNEL_NONE@@} dialog = iatGauges gauge = IATGauge gauge = rawIatGauge dialog = iatSensor, "IAT Sensor", border panel = iat_thermistor, West panel = iatGauges, East ; Sensors->Oil pressure sensor dialog = oilp_settings, "Oil Pressure Sensor" field = "Oil Pressure ADC input", oilPressure_hwChannel field = "low voltage", oilPressure_v1, {oilPressure_hwChannel != @@ADC_CHANNEL_NONE@@} field = "low pressure", oilPressure_value1, {oilPressure_hwChannel != @@ADC_CHANNEL_NONE@@} field = "high voltage", oilPressure_v2, {oilPressure_hwChannel != @@ADC_CHANNEL_NONE@@} field = "high pressure", oilPressure_value2, {oilPressure_hwChannel != @@ADC_CHANNEL_NONE@@} dialog = oilPressureGauges gauge = OilPressGauge gauge = rawOilPressureGauge dialog = oilPressureSensor, "", border panel = oilp_settings, West panel = oilPressureGauges, East ; Sensors->MAP sensor dialog = mapSensorAnalog, "MAP sensor", yAxis field = "MAP ADC input", map_sensor_hwChannel field = "MAP type", map_sensor_type, { map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ } field = "MAP value low point", map_sensor_lowValue, { map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ && map_sensor_type == 0 } field = "MAP voltage low point", mapLowValueVoltage, { map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ && map_sensor_type == 0 } field = "MAP value high point", map_sensor_highValue,{ map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ && map_sensor_type == 0 } field = "MAP voltage high value", mapHighValueVoltage, { map_sensor_hwChannel != @@ADC_CHANNEL_NONE@@ && map_sensor_type == 0 } dialog = mapSensorFreq, "MAP frequency sensor", yAxis field = "MAP Freq", frequencyReportingMapInputPin field = "0 kPa freq", mapFrequency0Kpa field = "100 kpa freq", mapFrequency100Kpa dialog = mapCommon, "MAP common settings" field = "frequency-based MAP", hasFrequencyReportingMapSensor field = "Low value threshold", mapErrorDetectionTooLow field = "High value threshold", mapErrorDetectionTooHigh field = "" field = "Measure Map Only In One Cylinder", measureMapOnlyInOneCylinder field = "Minimum MAP samples", mapMinBufferLength dialog = mapSettings, "", yAxis panel = mapCommon panel = mapSensorAnalog, {hasFrequencyReportingMapSensor == 0} panel = mapSensorFreq, {hasFrequencyReportingMapSensor == 1} dialog = baroSettings, "Baro sensor" field = "Baro ADC input", baroSensor_hwChannel field = baroSensor_lowValue, baroSensor_lowValue, {baroSensor_hwChannel != @@ADC_CHANNEL_NONE@@} field = baroSensor_highValue, baroSensor_highValue, {baroSensor_hwChannel != @@ADC_CHANNEL_NONE@@} field = baroSensor_type, baroSensor_type, {baroSensor_hwChannel != @@ADC_CHANNEL_NONE@@} dialog = mapCurves, "MAP sampling", yAxis field = "isMapAveragingEnabled", isMapAveragingEnabled panel = map_samplingAngleCurve panel = map_samplingWindowCurve dialog = mafSettings, "MAF sensor", yAxis field = "MAF ADC input", mafAdcChannel ; Sensors->EGO sensor dialog = egoSettings_sensor, "EGO sensor" field = "Type", afr_type ; todo: only use these values for custom! field = "low voltage", afr_v1 field = "low value", afr_value1 field = "high voltage", afr_v2 field = "high value", afr_value2 field = "Correction", egoValueShift dialog = egoSettings_IO, "EGO Sensor I/O" field = "Input channel", afr_hwChannel field = "Heater pin", o2heaterPin dialog = egoSettings, "", yAxis panel = egoSettings_IO panel = egoSettings_sensor, {afr_hwChannel != @@ADC_CHANNEL_NONE@@ && enableAemXSeries == 0 && !auxSerialRxPin && !auxSerialTxPin} field = "Enable AEM X-Series CANbus", enableAemXSeries, { canReadEnabled } field = "Enable Innovate LC-2 Serial", enableInnovateLC2, { auxSerialRxPin && auxSerialTxPin } ; Engine->EGT inputs dialog = egtInputs, "EGT inputs" field = "SPI", max31855spiDevice field = "CS #1", max31855_cs1 field = "CS #2", max31855_cs2 field = "CS #3", max31855_cs3 field = "CS #4", max31855_cs4 field = "CS #5", max31855_cs5 field = "CS #6", max31855_cs6 field = "CS #7", max31855_cs7 field = "CS #8", max31855_cs8 ; Engine->idle Settings dialog = idleSolenoid, "Solenoid" field = "Idle Solenoid Pin Mode", idle_solenoidPinMode, !useStepperIdle field = "Idle Solenoid Pin", idle_solenoidPin, !useStepperIdle field = "Second Idle Solenoid Pin", secondSolenoidPin, { !useStepperIdle && isDoubleSolenoidIdle } field = "Idle Solenoid Frequency", idle_solenoidFrequency, !useStepperIdle dialog = hbridgeHardware, "H-Bridge Hardware" field = "PWM Frequency", etbFreq field = "Two-wire mode", etb_use_two_wires field = "No1 Direction #1", etbIo1_directionPin1 field = "No1 Direction #2", etbIo1_directionPin2 field = "No1 Control #1", etbIo1_controlPin1, { etb_use_two_wires == 0 } field = "No1 Disable", etbIo1_disablePin field = "No2 Direction #1", etbIo2_directionPin1 field = "No2 Direction #2", etbIo2_directionPin2 field = "No2 Control #1", etbIo2_controlPin1, { etb_use_two_wires == 0} field = "No2 Disable", etbIo2_disablePin dialog = idleStepperHw, "Stepper Hardware" field = "Idle Stepper Step Pin", idle_stepperStepPin field = "Idle Stepper Dir Pin", idle_stepperDirectionPin field = "Idle Stepper Enable Pin", stepperEnablePin field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle panel = idleStepperHw, { useStepperIdle && !useHbridges } panel = hbridgeHardware, { useStepperIdle && useHbridges } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West panel = idleStepper, East dialog = idlehw, "", yAxis field = "!ECU reboot needed to apply these settings" field = "Use Stepper", useStepperIdle field = "Double Solenoid Mode", isDoubleSolenoidIdle panel = idleHwType dialog = idlePidSettings, "PID IAC Control" field = "#See Idle Target RPM Curve" field = "use Cic Pid", useCicPidForIdle field = "P-factor", idleRpmPid_pFactor field = "I-factor", idleRpmPid_iFactor field = "derivativeFilterLoss", idle_derivativeFilterLoss field = "antiwindupFreq", idle_antiwindupFreq field = "D-factor", idleRpmPid_dFactor field = "Offset", idleRpmPid_offset field = "A/C Offset extra", acIdleExtraOffset field = "Min", idleRpmPid_minValue field = "A/C Min extra", acIdleExtraMin field = "Max", idleRpmPid_maxValue field = "iTerm Min", idlerpmpid_iTermMin field = "iTerm Max", idlerpmpid_iTermMax 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, { throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@ } 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" field = "! Solenoid Idle control requires above zero RPM" 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 ; this one has build-in FSIO logic field = "A/C Relay", acRelayPin field = "A/C Relay Mode", acRelayPinMode dialog = fuelPumpConfig, "Fuel Pump" field = "Pin", fuelPumpPin field = "Pin mode", fuelPumpPinMode field = "Prime duration", startUpFuelPumpDuration dialog = fuelRailConfig, "Fuel Rail" field = "Absolute Fuel Pressure", absoluteFuelPressure field = "Fuel Rail pressure", fuelRailPressure, {absoluteFuelPressure == 1} dialog = fuelPump, "" panel = fuelPumpConfig panel = fuelRailConfig ; Controller->Actuator Outputs dialog = mainRelayDialog, "Main relay output" field = "microRusEFI main relay control is hard wired on pin #29"@@if_ts_show_main_relay_microRusEFI_message field = "Pin", mainRelayPin@@if_ts_show_main_relay field = "Pin mode", mainRelayPinMode@@if_ts_show_main_relay dialog = starterRelay, "Starter relay output" field = "Pin", starterRelayDisablePin field = "Pin mode", starterRelayDisablePinMode dialog = statusLeds, "Status LEDs" field = "Running status LED", runningLedPin field = "TS communication status LED", communicationLedPin field = "Warning LED", warningLedPin field = "Trigger error LED", triggerErrorPin field = "Debug Trigger Sync", debugTriggerSync ; Engine->MIL Settings dialog = malfunction, "Check Engine Settings" field = "Pin", malfunctionIndicatorPin field = "Pin mode", malfunctionIndicatorPinMode field = "Warning Period", warningPeriod dialog = softwareKnock, "Software Knock" field = "Enable", enableSoftwareKnock field = "Knock filter frequency", knockBandCustom, {enableSoftwareKnock} field = "" field = "Select the nearest sensor for each cylinder" field = "Cylinder 1", knockBankCyl1, {enableSoftwareKnock} field = "Cylinder 2", knockBankCyl2, {enableSoftwareKnock && cylindersCount >= 2} field = "Cylinder 3", knockBankCyl3, {enableSoftwareKnock && cylindersCount >= 3} field = "Cylinder 4", knockBankCyl4, {enableSoftwareKnock && cylindersCount >= 4} field = "Cylinder 5", knockBankCyl5, {enableSoftwareKnock && cylindersCount >= 5} field = "Cylinder 6", knockBankCyl6, {enableSoftwareKnock && cylindersCount >= 6} field = "Cylinder 7", knockBankCyl7, {enableSoftwareKnock && cylindersCount >= 7} field = "Cylinder 8", knockBankCyl8, {enableSoftwareKnock && cylindersCount >= 8} field = "Cylinder 9", knockBankCyl9, {enableSoftwareKnock && cylindersCount >= 9} field = "Cylinder 10", knockBankCyl10, {enableSoftwareKnock && cylindersCount >= 10} field = "Cylinder 11", knockBankCyl11, {enableSoftwareKnock && cylindersCount >= 11} field = "Cylinder 12", knockBankCyl12, {enableSoftwareKnock && cylindersCount >= 12} ; Engine->hip9011 Settings dialog = hipFunction, "HIP9011 Settings (knock decoder)" field = "Enabled", isHip9011Enabled field = "Threshold", knockVThreshold, {isHip9011Enabled == 1} field = "!ECU reboot needed to apply these settings" field = "IntHold pin (hip9011 input)", hip9011IntHoldPin, {isHip9011Enabled == 1} field = "IntHold pin (hip9011 input) mode", hip9011IntHoldPinMode, {isHip9011Enabled == 1} field = "ChipSelect pin", hip9011CsPin, {isHip9011Enabled == 1} field = "ChipSelect mode", hip9011CsPinMode, {isHip9011Enabled == 1} field = "hip Output/stm input", hipOutputChannel, {isHip9011Enabled == 1} field = "prescaler & SDO", hip9011PrescalerAndSDO, {isHip9011Enabled == 1} field = "knockDetectionWindowStart", knockDetectionWindowStart, {isHip9011Enabled == 1} field = "knockDetectionWindowEnd", knockDetectionWindowEnd, {isHip9011Enabled == 1} field = "cylinder bore (mm)", cylinderBore, {isHip9011Enabled == 1} field = "Band Freq override", knockBandCustom, {isHip9011Enabled == 1} field = "SPI device", hip9011SpiDevice, {isHip9011Enabled == 1} panel = knockThresholdCurve ; Engine->cj125 Settings dialog = cj125Function, "CJ125 Settings (wbo decoder)" field = "Enabled", isCJ125Enabled commandButton = "Calibrate", cmd_cj125_calibrate field = "Using 4.9 sensor?", cj125isLsu49 field = "!ECU reboot needed to apply these settings" field = "ChipSelect pin", cj125CsPin, {isCJ125Enabled == 1} field = "ChipSelect mode", cj125CsPinMode, {isCJ125Enabled == 1} field = "!See also 'Controller-SPI setting'" field = "SPI device", cj125SpiDevice field = "Heater pin", wboHeaterPin, {isCJ125Enabled == 1} field = "UA input", cj125ua, {isCJ125Enabled == 1} field = "UR input", cj125ur, {isCJ125Enabled == 1} field = "Is UA input divided?" cj125isUaDivided, {isCJ125Enabled == 1} field = "Is UR input divided?" cj125isUrDivided, {isCJ125Enabled == 1} dialog = spiFunction, "SPI settings" field = "!ECU reboot needed to apply these settings" field = "SPI1 enable", is_enabled_spi_1 field = "SPI1 MOSI", spi1mosiPin, {is_enabled_spi_1 == 1} field = "SPI1mosi mode", spi1MosiMode, {is_enabled_spi_1 == 1} field = "SPI1 MISO", spi1misoPin, {is_enabled_spi_1 == 1} field = "SPI1miso mode", spi1MisoMode, {is_enabled_spi_1 == 1} field = "SPI1 SCK", spi1sckPin, {is_enabled_spi_1 == 1} field = "SPI1sck mode", spi1SckMode, {is_enabled_spi_1 == 1} field = "SPI2 enable", is_enabled_spi_2 field = "SPI2 MOSI", spi2mosiPin, {is_enabled_spi_2 == 1} field = "SPI2mosi mode", spi2MosiMode, {is_enabled_spi_2 == 1} field = "SPI2 MISO", spi2misoPin, {is_enabled_spi_2 == 1} field = "SPI2miso mode", spi2MisoMode, {is_enabled_spi_2 == 1} field = "SPI2 SCK", spi2sckPin, {is_enabled_spi_2 == 1} field = "SPI2sck mode", spi2SckMode, {is_enabled_spi_2 == 1} field = "SPI3 enable", is_enabled_spi_3 field = "SPI3 MOSI", spi3mosiPin, {is_enabled_spi_3 == 1} field = "SPI3mosi mode", spi3MosiMode, {is_enabled_spi_3 == 1} field = "SPI3 MISO", spi3misoPin, {is_enabled_spi_3 == 1} field = "SPI3miso mode", spi3MisoMode, {is_enabled_spi_3 == 1} field = "SPI3 SCK", spi3sckPin, {is_enabled_spi_3 == 1} field = "SPI3sck mode", spi3SckMode, {is_enabled_spi_3 == 1} field = "LIS302DLCsPin", LIS302DLCsPin dialog = stftPartitioning, "Region Configuration" field = "Idle region RPM", stft_maxIdleRegionRpm field = "Overrun region load", stft_maxOverrunLoad field = "Power region load", stft_minPowerLoad dialog = stftPartitionSettingsMain, "Main Region", xAxis field = "Time Const", stft_cellCfgs4_timeConstant field = "Max add", stft_cellCfgs4_maxAdd field = "Max remove", stft_cellCfgs4_maxRemove dialog = stftPartitionSettingsIdle, "Idle Region", xAxis field = "Time Const", stft_cellCfgs1_timeConstant field = "Max add", stft_cellCfgs1_maxAdd field = "Max remove", stft_cellCfgs1_maxRemove dialog = stftPartitionSettingsPower, "Power Region", xAxis field = "Time Const", stft_cellCfgs3_timeConstant field = "Max add", stft_cellCfgs3_maxAdd field = "Max remove", stft_cellCfgs3_maxRemove dialog = stftPartitionSettingsOverrun, "Overrun Region", xAxis field = "Time Const", stft_cellCfgs2_timeConstant field = "Max add", stft_cellCfgs2_maxAdd field = "Max remove", stft_cellCfgs2_maxRemove dialog = fuelClosedLoopDialog, "Short-term fuel trim" field = "Enabled", fuelClosedLoopCorrectionEnabled field = "Startup delay" stft_startupDelay, {fuelClosedLoopCorrectionEnabled == 1} field = "Minimum CLT for correction", stft_minClt, {fuelClosedLoopCorrectionEnabled == 1} field = "Minimum AFR for correction", stft_minAfr, {fuelClosedLoopCorrectionEnabled == 1} field = "Maximum AFR for correction", stft_maxAfr, {fuelClosedLoopCorrectionEnabled == 1} field = "Adjustment deadband", stft_deadband, {fuelClosedLoopCorrectionEnabled == 1} field = "Ignore error magnitude", stftIgnoreErrorMagnitude, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitioning, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsMain, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsIdle, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} dialog = auxPidDialog, "Aux PID" field = "Enabled", activateAuxPid1 field = "FSIO pin #1", auxPidPins1 field = "PWM Frequency", auxPidFrequency1 field = "Detailed status in console", isVerboseAuxPid1 field = "#target based on FSIO map#1" field = "control period", auxPid1_periodMs, {activateAuxPid1 == 1} field = "#PID control" field = "offset", auxPid1_offset, {activateAuxPid1 == 1} field = "P factor", auxPid1_pFactor, {activateAuxPid1 == 1} field = "I factor", auxPid1_iFactor, {activateAuxPid1 == 1} field = "D factor", auxPid1_dFactor, {activateAuxPid1 == 1} field = "Min", auxPid1_minValue, {activateAuxPid1 == 1} field = "Max", auxPid1_maxValue, {activateAuxPid1 == 1} field = "FSIO pin #2", auxPidPins2 field = "FSIO pin #3", auxPidPins3 field = "FSIO pin #4", auxPidPins4 ; Engine->Battery & Alternator dialog = batteryDialog, "Battery Settings", yAxis field = "vBatt ADC input", vbattAdcChannel field = "Battery Input Divider Coefficient", vbattDividerCoeff dialog = alternator, "Alternator Settings", yAxis field = "Enabled", isAlternatorControlEnabled field = "simple on/off mode", onOffAlternatorLogic, {isAlternatorControlEnabled == 1} field = "Target", targetVBatt, {isAlternatorControlEnabled == 1} field = "Pin", alternatorControlPin, {isAlternatorControlEnabled == 1} field = "Pin Mode", alternatorControlPinMode, {isAlternatorControlEnabled == 1} field = "PWM frequency", alternatorPwmFrequency, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0} field = "Off Above TPS", alternatorOffAboveTps, {isAlternatorControlEnabled == 1} field = "Detailed status in console", isVerboseAlternator, {isAlternatorControlEnabled == 1} field = "control period", alternatorControl_periodMs, {isAlternatorControlEnabled == 1} field = "#PID control" field = "offset", alternatorControl_offset, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0} field = "P factor", alternatorControl_pFactor, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0} field = "I factor", alternatorControl_iFactor, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0} field = "D factor", alternatorControl_dFactor, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0} field = "Min", alternatorControl_minValue, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0} field = "Max", alternatorControl_maxValue, {isAlternatorControlEnabled == 1 && onOffAlternatorLogic == 0} field = "#% duty = Pterm + Iterm + Dterm + offset%" dialog = startStopDialog, "Start/Stop Button" field = "Start/Stop Button Pin", startStopButtonPin field = "Start/Stop Button Mode", startStopButtonMode field = "Starter Control", starterControlPin, {startStopButtonPin != 0} field = "Start cranking maximum time", startCrankingDuration, {startStopButtonPin != 0} dialog = energySystems, "Battery and Alternator Settings", yAxis panel = batteryDialog panel = alternator panel = startStopDialog dialog = speedSensorAnalog field = "Input pin", vehicleSpeedSensorInputPin field = "revolution to speed mult", vehicleSpeedCoef dialog = speedSensorCan field = "Vss Car Type", canVssNbcType, { enableCanVss } dialog = speedSensorLeft, "Speed sensor config", yAxis panel = speedSensorCan, { enableCanVss } panel = speedSensorAnalog, { enableCanVss == 0 } field = "Enable CANbus VSS values", enableCanVss, { canReadEnabled } dialog = speedSensor, "Speed sensor", xAxis panel = speedSensorLeft gauge = VSSGauge ; Engine->Other inputs dialog = analogInputSettings, "Analog Input Settings" field = "!ECU reboot needed to apply these settings" field = "Use fixed baro corr from MAP", useFixedBaroCorrFromMap field = "Analog divider ratio", analogInputDividerCoefficient@@if_ts_show_analog_divider field = "Smoothing factor", slowAdcAlpha dialog = tachSettings, "Tachometer output" field = "Pin", tachOutputPin field = "Pin mode", tachOutputPinMode field = "Rise at trigger index", tachPulseTriggerIndex field = "Pulse duration is duty cycle", tachPulseDurationAsDutyCycle field = "Pulse duration", tachPulseDuractionMs field = "Pulse per Rev", tachPulsePerRev ; Board->Connection dialog = tsPort, "TunerStudio Port" field = "tunerStudioSerialSpeed", tunerStudioSerialSpeed field = "Use UART/TTL serial?", useSerialPort field = "TX pin", binarySerialTxPin, {useSerialPort == 1} field = "RX pin", binarySerialRxPin, {useSerialPort == 1} field = "uartConsoleSerialSpeed", uartConsoleSerialSpeed dialog = canBus, "CAN Bus" field = "Can Read Enabled", canReadEnabled field = "Can Write Enabled", canWriteEnabled field = "consumeObdSensors", consumeObdSensors, { canReadEnabled == 1 && canWriteEnabled == 1} field = "Can Nbc Type", canNbcType field = "Can Baud Rate", canBaudRate field = "Enable rusEFI CAN broadcast", 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 = canBus2, "Secondary CAN Bus" field = "Can Read Enabled", can2ReadEnabled field = "Can Write Enabled", can2WriteEnabled field = "Can Nbc Type", can2NbcType field = "Can Baud Rate", can2BaudRate field = "Enable rusEFI CAN broadcast", enableVerboseCan2Tx field = "rusEFI CAN data base address", verboseCan2BaseAddress field = "Can Sleep Period", can2SleepPeriodMs field = "RX pin", can2RxPin @@if_ts_show_can_pins field = "TX pin", can2TxPin @@if_ts_show_can_pins dialog = canBusMain, "CAN Bus Communication", yAxis panel = canBus panel = canBus2 @@if_ts_show_can2 dialog = auxSerial, "AUX Serial" field = "RX pin", auxSerialRxPin @@if_ts_show_auxserial_pins field = "TX pin", auxSerialTxPin @@if_ts_show_auxserial_pins field = "Serial Baud Rate", auxSerialSpeed @@if_ts_show_auxserial_pins dialog = sdCard, "SD Card Logger" field = "Enable SD Card", isSdCardEnabled field = "showSdCardWarning", showSdCardWarning field = "CS Pin", sdCardCsPin field = "SPI", sdCardSpiDevice field = "log format", logFormat field = "Write Period", sdCardPeriodMs dialog = gpsReceiver, "GPS Receiver" field = "gps RX", gps_rx_pin field = "gps TX", gps_tx_pin dialog = lcdScreen, "LCD screen" field = "display Mode", displayMode field = "height", HD44780height field = "width", HD44780width field = "RS pin", HD44780_rs field = "E pin", HD44780_e field = "D4 pin", HD44780_db4 field = "D5 pin", HD44780_db5 field = "D6 pin", HD44780_db6 field = "D7 pin", HD44780_db7 dialog = tle8888, "TLE8888", yAxis field = "TLE8888 Chip Select", tle8888_cs @@if_ts_show_spi field = "TLE8888 SPI", tle8888spiDevice @@if_ts_show_spi field = "Mode", tle8888mode field = "useTLE8888 cranking reset hack", useTLE8888_cranking_hack commandButton = "Reinit", cmd_tle8888_init dialog = connection, "", yAxis field = "ADC vRef voltage", adcVcc panel = tsPort @@if_ts_show_tunerstudio_port panel = auxSerial panel = gpsReceiver @@if_ts_show_gps dialog = monitoringSettings, "rusEFI Console Settings" field = "Sensor Sniffer", sensorChartMode field = " Threshold", sensorSnifferRpmThreshold field = " Each X cycle", sensorChartFrequency field = "Engine Sniffer", isEngineChartEnabled field = " Threshold", engineSnifferRpmThreshold dialog = generalSettings, "General" field = "!https://rusefi.com/s/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" field = "!https://rusefi.com/s/debugmode" field = "Debug mode", debugMode field = "Warning Text", warning_message field = "showHumanReadableWarning (affects Burn)", showHumanReadableWarning dialog = limits, "Limits" field = "RPM hard limit", rpmHardLimit field = "Boost cut pressure", boostCutPressure ; Engine->Base Engine Settings dialog = engineChars, "Base Engine Settings" topicHelp = "baseHelp" panel = baseEngineConfig panel = generalSettings panel = limits panel = debugging dialog = crankingFuel, "Fuel" field = "Injection mode", crankingInjectionMode field = "Fuel Source For Cranking", useRunningMathForCranking field = "Base fuel pulse width", cranking_baseFuel, {useRunningMathForCranking == 0} dialog = crankingIAC, "IAC" field = "Cranking IAC position", crankingIACposition field = "After cranking IAC taper duration", afterCrankingIACtaperDuration field = "Override IAC multiplier for cranking", overrideCrankingIacSetting dialog = crankingIgnition, "Ignition" field = "Advance", crankingTimingAngle, {useSeparateAdvanceForCranking == 0} field = "Use separate Advance Table for cranking", useSeparateAdvanceForCranking field = "Use Advance Corrections for cranking", useAdvanceCorrectionsForCranking field = "Use fixed cranking dwell", useConstantDwellDuringCranking field = "Fixed Cranking Dwell", ignitionDwellForCrankingMs, {useConstantDwellDuringCranking == 1} field = "Cranking Dwell Angle", crankingChargeAngle, {useConstantDwellDuringCranking == 0} dialog = postCrankingEnrichment, "After start enrichment" field = "Post-Cranking factor", postCrankingFactor field = "Duration", postCrankingDurationSec dialog = primingFuelPulsePanel, "Priming fuel pulse" field = "Duration at -40C degrees", startOfCrankingPrimingPulse field = "Falloff temperature", primeInjFalloffTemperature ; Cranking->Cranking Settings dialog = crankingDialog, "Cranking Settings" field = "Cranking RPM limit", cranking_rpm field = "Enable cylinder cleanup", isCylinderCleanupEnabled field = "" field = "Enable faster engine spin-up", isFasterEngineSpinUpEnabled panel = primingFuelPulsePanel panel = crankingFuel panel = crankingIgnition panel = crankingIAC panel = postCrankingEnrichment dialog = EngineLoadAccelPanel, "Engine Load (alpha version)" field = "Length", engineLoadAccelLength field = "Accel threshold", engineLoadAccelEnrichmentThreshold field = "Accel multiplier", engineLoadAccelEnrichmentMultiplier field = "Decel threshold", engineLoadDecelEnleanmentThreshold field = "Decel multiplier", engineLoadDecelEnleanmentMultiplier dialog = TpsAccelPanel, "TPS" field = "Set 'Debug Mode' to see detailed 'TPS acceleration enrichment' diagnostics" field = "Length", tpsAccelLength field = "Accel Threshold", tpsAccelEnrichmentThreshold field = "Decel Threshold", tpsDecelEnleanmentThreshold ; field = "Decel Multiplier", tpsDecelEnleanmentMultiplier field = "#Accelerator Pump model:" field = "Fraction Period", tpsAccelFractionPeriod field = "Fraction Divisor", tpsAccelFractionDivisor dialog = WallWettingAccelPanel, "Wall Wetting (alpha version)" field = "evaporation time constant / tau", wwaeTau field = "added to wall coef / beta", wwaeBeta ; Tuning->AccelEnrichment dialog = AccelEnrich, "Accel/Decel Enrichment" panel = TpsAccelPanel panel = WallWettingAccelPanel panel = EngineLoadAccelPanel field = "No accel after RPM hard limit", noAccelAfterHardLimitPeriodSecs ; Flex Logic dialog = fsioIO, "Outputs" field = "output #1", fsioOutputPins1 field = "output #2", fsioOutputPins2 field = "output #3", fsioOutputPins3 field = "output #4", fsioOutputPins4 field = "output #5", fsioOutputPins5 field = "output #6", fsioOutputPins6 field = "output #7", fsioOutputPins7 field = "output #8", fsioOutputPins8 field = "output #9", fsioOutputPins9 field = "output #10", fsioOutputPins10 field = "output #11", fsioOutputPins11 field = "output #12", fsioOutputPins12 field = "output #13", fsioOutputPins13 field = "output #14", fsioOutputPins14 field = "output #15", fsioOutputPins15 field = "output #16", fsioOutputPins16 field = "aux valve #1", auxValves1 field = "aux valve #2", auxValves2 field = "Start/Stop Button", startStopButtonPin field = "External Knock", externalKnockSenseAdc dialog = fsioFrequency, "Frequency" field = "freq #1", fsioFrequency1 field = "freq #2", fsioFrequency2 field = "freq #3", fsioFrequency3 field = "freq #4", fsioFrequency4 field = "freq #5", fsioFrequency5 field = "freq #6", fsioFrequency6 field = "freq #7", fsioFrequency7 field = "freq #8", fsioFrequency8 field = "freq #9", fsioFrequency9 field = "freq #10", fsioFrequency10 field = "freq #11", fsioFrequency11 field = "freq #12", fsioFrequency12 field = "freq #13", fsioFrequency13 field = "freq #14", fsioFrequency14 field = "freq #15", fsioFrequency15 field = "freq #16", fsioFrequency16 field = "" field = "" dialog = fsioSetting, "Setting" field = "Set number is not associated with the output number." field = "Set number, only the cell number with some numbers." field = "set #1", fsio_setting1 field = "set #2", fsio_setting2 field = "set #3", fsio_setting3 field = "set #4", fsio_setting4 field = "set #5", fsio_setting5 field = "set #6", fsio_setting6 field = "set #7", fsio_setting7 field = "set #8", fsio_setting8 field = "set #9", fsio_setting9 field = "set #10", fsio_setting10 field = "set #11", fsio_setting11 field = "set #12", fsio_setting12 field = "set #13", fsio_setting13 field = "set #14", fsio_setting14 field = "set #15", fsio_setting15 field = "set #16", fsio_setting16 dialog = fsioOutputsDialog, "FSIO outputs", border panel = fsioIO, West panel = fsioFrequency, Center panel = fsioSetting, East dialog = fsioFormulas, "FSIO Formulas" field = "!FSIO uses Reverse Polish Notation. Please read http://rusefi.com/s/fsio" field = "#fsioinfo command in rusEFI console could be useful while troubleshooting those" field = "#1", fsioFormulas1 field = "#2", fsioFormulas2 field = "#3", fsioFormulas3 field = "use FSIO #4 for serious engine warning",useFSIO4ForSeriousEngineWarning field = "#4", fsioFormulas4 field = "use FSIO #5 for critical engine stop", useFSIO5ForCriticalIssueEngineStop field = "#5", fsioFormulas5 field = "use FSIO #6 for rev limiter", useFSIO6ForRevLimiter 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 dialog = transmissionPanel field = "TCU Enabled" tcuEnabled dialog = solenoidPanel, "Shift Solenoids" field = "Solenoid 1 Pin" tcu_solenoid1, { tcuEnabled } field = "Solenoid 2 Pin" tcu_solenoid2, { tcuEnabled } field = "Solenoid 3 Pin" tcu_solenoid3, { tcuEnabled } field = "Solenoid 4 Pin" tcu_solenoid4, { tcuEnabled } field = "Solenoid 5 Pin" tcu_solenoid5, { tcuEnabled } field = "Solenoid 6 Pin" tcu_solenoid6, { tcuEnabled } field = "Solenoid 1 Pin Mode" tcu_solenoid_mode1, { tcuEnabled } field = "Solenoid 2 Pin Mode" tcu_solenoid_mode2, { tcuEnabled } field = "Solenoid 3 Pin Mode" tcu_solenoid_mode3, { tcuEnabled } field = "Solenoid 4 Pin Mode" tcu_solenoid_mode4, { tcuEnabled } field = "Solenoid 5 Pin Mode" tcu_solenoid_mode5, { tcuEnabled } field = "Solenoid 6 Pin Mode" tcu_solenoid_mode6, { tcuEnabled } dialog = buttonShiftInputPanel, "Switch/Button Shift" field = "Upshift Pin" tcuUpshiftButtonPin, { tcuEnabled } field = "Upshift Pin Mode" tcuUpshiftButtonPinMode, { tcuEnabled } field = "Downshift Pin" tcuDownshiftButtonPin, { tcuEnabled } field = "Downshift Pin Mode" tcuDownshiftButtonPinMode, { tcuEnabled } dialog = tcuControls, "Transmission Settings" panel = transmissionPanel panel = solenoidPanel panel = buttonShiftInputPanel ;Boost Open Loop dialog = boost_left, "" field = "Enable", isBoostControlEnabled field = "Control Mode", boostType, { isBoostControlEnabled } field = "Output", boostControlPin, { isBoostControlEnabled } field = "Output Mode", boostControlPinMode, { isBoostControlEnabled } field = "Frequency", boostPwmFrequency, { isBoostControlEnabled } 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 field = "iFactor", etb_iFactor field = "dFactor", etb_dFactor field = "pid min", etb_minValue field = "pid max", etb_maxValue field = "iTermMin", etb_iTermMin field = "iTermMax", etb_iTermMax dialog = etbIdleDialog, "ETB Idle" field = "use ETB for idle", useETBforIdleControl field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft field = "https://rusefi.com/s/etb" field = "Detailed status in console", isVerboseETB field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places panel = hbridgeHardware, { throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@ || (useStepperIdle && useHbridges) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" commandButton = "Auto Calibrate TPS 1", cmb_etb_auto_calibrate commandButton = "Auto Calibrate TPS 2", cmb_etb_auto_calibrate_2 field = "Second step" commandButton = "Start ETB PID Autotune", cmd_etb_autotune commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop field = "!Set debug mode below to 'ETB Autotune' to show more detail" field = "Debug mode", debugMode dialog = etbDialogRight panel = etbIdleDialog, { throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@ } panel = etbPidDialog, { (throttlePedalPositionAdcChannel != @@ADC_CHANNEL_NONE@@) } panel = etbAutotune ; Neutral position handling not yet implemented! ;field = "Neutral Position", etbNeutralPosition dialog = etbDialog, "Electronic Throttle Body (beta)", border topicHelp = "etbHelp" panel = etbDialogLeft, West panel = etbDialogRight, East dialog = testSpark, "Spark" commandButton = "Spark #1", cmd_test_spk1 commandButton = "Spark #2", cmd_test_spk2 commandButton = "Spark #3", cmd_test_spk3 commandButton = "Spark #4", cmd_test_spk4 commandButton = "Spark #5", cmd_test_spk5 commandButton = "Spark #6", cmd_test_spk6 commandButton = "Spark #7", cmd_test_spk7 commandButton = "Spark #8", cmd_test_spk8 commandButton = "Spark #9", cmd_test_spk9 commandButton = "Spark #10",cmd_test_spk10 commandButton = "Spark #11",cmd_test_spk11 commandButton = "Spark #12",cmd_test_spk12 dialog = testMisc, "Misc" ; commandButton = "Come To Pit", cmd_call_from_pit commandButton = "Fuel Pump", cmd_test_fuel_pump commandButton = "Radiator Fan", cmd_test_radiator_fan commandButton = "Check Engine", cmd_test_check_engine_light commandButton = "Idle Air Valve", cmd_test_idle_valve commandButton = "A/C Relay", cmd_test_ac_relay commandButton = "Starter Relay", cmd_test_starter_relay commandButton = "Stop Engine", cmd_stop_engine commandButton = "Write Config", cmd_write_config commandButton = "Reset ECU", cmd_reset_controller commandButton = "Reset to DFU", cmd_dfu ; bench test dialog = ioTest, "Bench Test & Commands", border panel = testSpark, West panel = testInjectors, Center panel = testMisc, East dialog = engineTypeDialog, "Popular vehicles" field = "!These buttons send a command to rusEFI controller to apply preset values" field = "!Once you send the command, please reconnect to rusEFI controller in order to read fresh values" commandButton = "Frankenso Miata NA6 Stage 0", cmd_set_engine_type_Frankenso_Miata_NA6_VAF@@if_show_Frankenso_presets commandButton = "Frankenso Miata NA6 Stage 1", cmd_set_engine_type_Frankenso_Miata_NA6_MAP@@if_show_Frankenso_presets commandButton = "Frankenso Miata NB2 MAP", cmd_set_engine_type_Frankenso_Miata_NB2@@if_show_Frankenso_presets commandButton = "microRusEFI Miata NA6 VAF", cmd_set_engine_type_microRusEFI_Miata_NA6_VAF@@if_show_microRusEFI_presets commandButton = "microRusEFI Miata NA6 MAP", cmd_set_engine_type_microRusEFI_Miata_NA6_MAP@@if_show_microRusEFI_presets commandButton = "microRusEfi Miata NB2 MAP", cmd_set_engine_type_microRusEFI_Miata_NB2_MAP@@if_show_microRusEFI_presets commandButton = "microRusEFI Miata NB2 MAF", cmd_set_engine_type_microRusEFI_Miata_NB2_MAF@@if_show_microRusEFI_presets commandButton = "microRusEFI Defaults", cmd_set_engine_type_microRusEFI_Defaults@@if_show_microRusEFI_presets commandButton = "microRusEFI B6 test", cmd_set_engine_type_microRusEFI_VW_B6@@if_show_microRusEFI_presets commandButton = "microRusEFI BCM", cmd_set_engine_type_microRusEFI_MRE_BODY_CONTROL@@if_show_microRusEFI_presets commandButton = "Proteus M73 v12", cmd_set_engine_type_Proteus_M73@@if_show_Proteus_presets commandButton = "ETB test bench", cmd_set_engine_type_etb_test@@if_show_test_presets commandButton = "TLE8888 test bench", cmd_set_engine_type_8888_test@@if_show_test_presets commandButton = "Reset firmware settings", cmd_set_engine_type_default field = "#Please DO NOT hit 'Burn' - just press a command button above and disconnect TunerStudio!" ; Board->ECU stimulator dialog = ecuStimulator, "ECU stimulator" field = "Trigger Simulator", triggerSimulatorFrequency commandButton = "Enable Internal Trigger Simulation", cmd_enable_self_stim commandButton = "Disable Internal Trigger Simulation", cmd_disable_self_stim field = "" field = "digipot spi", digitalPotentiometerSpiDevice field = "digipot CS #0", digitalPotentiometerChipSelect1 field = "digipot CS #1", digitalPotentiometerChipSelect2 field = "digipot CS #2", digitalPotentiometerChipSelect3 field = "digipot CS #3", digitalPotentiometerChipSelect4 field = "" field = "trigger stimulator pin #1", triggerSimulatorPins1 field = "trigger stimulator pin mode #1", triggerSimulatorPinModes1 field = "trigger stimulator pin #2", triggerSimulatorPins2 field = "trigger stimulator pin mode #2", triggerSimulatorPinModes2 field = "trigger stimulator pin #3", triggerSimulatorPins3 field = "trigger stimulator pin mode #3", triggerSimulatorPinModes3 field = "" field = "Logic input channel 1", logicAnalyzerPins1 field = "Logic input channel 2", logicAnalyzerPins2 field = "Logic input channel 3", logicAnalyzerPins3 field = "Logic input channel 4", logicAnalyzerPins4 field = "" field = "Engine chart size", engineChartSize dialog = datalogSettings, "Datalogging Settings" field = "#Disabling optional logging may increase update rate!" field = "Log debug channels", enableLogDebugChannels field = "Log recent errors list", enableLogErrorList ; Racing Features->Launch Control dialog = smLaunchControl, "Launch Control Settings EXPERIMENTAL" field = "Enable Launch Control", launchControlEnabled field = "Activation Mode", launchActivationMode field = "Switch Input", launchActivatePin, {launchActivationMode == 0 && launchControlEnabled == 1} field = "Clutch Input", clutchDownPin, {launchActivationMode == 1 && launchControlEnabled == 1} field = "" field = "Rpm Treshold", launchRpmTreshold, {launchControlEnabled == 1} field = "Speed Treshold", launchSpeedTreshold, {launchControlEnabled == 1} field = "" field = "Launch RPM", launchRpm, {launchControlEnabled == 1} field = "Extra Fuel", launchFuelAdded, {launchControlEnabled == 1} field = "Boost Solenoid Duty", launchBoostDuty, {launchControlEnabled == 1} field = "Ignition Retard enable", enableLaunchRetard, {launchControlEnabled == 1} field = "Ignition Retard", launchTimingRetard, {launchControlEnabled == 1} field = "Ignition Retard RPM Range", launchTimingRpmRange, {launchControlEnabled == 1} field = "Smooth Retard Mode", launchSmoothRetard, {launchControlEnabled == 1} field = "Hard Cut Mode" field = "Ignition Cut", launchSparkCutEnable, {launchControlEnabled == 1} field = "Fuel Cut", launchFuelCutEnable, {launchControlEnabled == 1} field = "Hard Cut RPM Range", hardCutRpmRange, {launchControlEnabled == 1} ; Racing Features->Rolling Launch dialog = smRollingLaunch, "Rolling Launch Settings NOT WORKING" field = "Enable Rolling Launch", rollingLaunchEnabled ; Racing Features->Rolling Launch dialog = antiLag, "AntiLag Settings NOT WORKING" field = "Enable AntiLag", antiLagEnabled field = "Activation Mode", antiLagActivationMode, {antiLagEnabled == 1} field = "Switch Input", antiLagActivatePin, {antiLagActivationMode == 1 && antiLagEnabled == 1} dialog = coastingFuelCutControl, "Coasting Fuel Cutoff Settings" field = "Enable Coasting Fuel Cutoff", coastingFuelCutEnabled field = "Cutoff Activation RPM High Limit", coastingFuelCutRpmHigh, {coastingFuelCutEnabled == 1} field = "Cutoff Deactivation RPM Low Limit", coastingFuelCutRpmLow, {coastingFuelCutEnabled == 1} field = "TPS Deactivation Threshold", coastingFuelCutTps, {coastingFuelCutEnabled == 1} field = "CLT Activation Threshold", coastingFuelCutClt, {coastingFuelCutEnabled == 1} field = "MAP Deactivation Threshold", coastingFuelCutMap, {coastingFuelCutEnabled == 1} dialog = parkingLot, "Experimental/Broken" field = "#System hacks" field = "Global fuel correction", globalFuelCorrection field = "Ignition Math Logic @", ignMathCalculateAtIndex field = "MAP Averaging Logic @", mapAveragingSchedulingAtIndex help = helpGeneral, "rusEFI General Help" webHelp = "http://www.rusefi.com/" text = "" dialog = gppwm1left, "" field = "Pin", gppwm1_pin field = "" field = "Set frequency to 0hz for on-off mode" field = "Frequency", gppwm1_pwmFrequency, {gppwm1_pin != 0} field = "" field = "On above duty", gppwm1_onAboveDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} field = "Off below duty", gppwm1_offBelowDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} field = "Duty if error", gppwm1_dutyIfError, {gppwm1_pin != 0} field = "" field = "Load Axis", gppwm1_loadAxis, {gppwm1_pin != 0} field = "" field = "" field = "" field = "" field = "" dialog = gppwm1, "General Purpose PWM 1", xAxis panel = gppwm1left panel = gppwm1Tbl, {gppwm1_pin != 0} dialog = gppwm2left, "" field = "Pin", gppwm2_pin field = "" field = "Set frequency to 0hz for on-off mode" field = "Frequency", gppwm2_pwmFrequency, {gppwm2_pin != 0} field = "" field = "On above duty", gppwm2_onAboveDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} field = "Off below duty", gppwm2_offBelowDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} field = "Duty if error", gppwm2_dutyIfError, {gppwm2_pin != 0} field = "" field = "Load Axis", gppwm2_loadAxis, {gppwm2_pin != 0} field = "" field = "" field = "" field = "" field = "" dialog = gppwm2, "General Purpose PWM 2", xAxis panel = gppwm2left panel = gppwm2Tbl, {gppwm2_pin != 0} dialog = gppwm3left, "" field = "Pin", gppwm3_pin field = "" field = "Set frequency to 0hz for on-off mode" field = "Frequency", gppwm3_pwmFrequency, {gppwm3_pin != 0} field = "" field = "On above duty", gppwm3_onAboveDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} field = "Off below duty", gppwm3_offBelowDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} field = "Duty if error", gppwm3_dutyIfError, {gppwm3_pin != 0} field = "" field = "Load Axis", gppwm3_loadAxis, {gppwm3_pin != 0} field = "" field = "" field = "" field = "" field = "" dialog = gppwm3, "General Purpose PWM 3", xAxis panel = gppwm3left panel = gppwm3Tbl, {gppwm3_pin != 0} dialog = gppwm4left, "" field = "Pin", gppwm4_pin field = "" field = "Set frequency to 0hz for on-off mode" field = "Frequency", gppwm4_pwmFrequency, {gppwm4_pin != 0} field = "" field = "On above duty", gppwm4_onAboveDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} field = "Off below duty", gppwm4_offBelowDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} field = "Duty if error", gppwm4_dutyIfError, {gppwm4_pin != 0} field = "" field = "Load Axis", gppwm4_loadAxis, {gppwm4_pin != 0} field = "" field = "" field = "" field = "" field = "" dialog = gppwm4, "General Purpose PWM 4", xAxis panel = gppwm4left panel = gppwm4Tbl, {gppwm4_pin != 0} [Tools] ;addTool = toolName, PanelName addTool = veTableGenerator, "VE Table Generator", veTableTbl addTool = afrTableGenerator, "AFR Table Generator", afrTableTbl