; this is TunerStudio project for www.rusefi.com DIY engine management system ; ; rusefi.ini is generated by invoking gen_config.bat (look inside for the exact command to run it outside of Windows) ; inputs are rusefi.input template and rusefi_config.txt file ; ; this should stop TS from looking for the CAN ID in the 2nd byte location and allow the page reads to work correctly. enable2ndByteCanID = false #unset tuneByMAF ;[SettingGroups] ; the referenceName will over-ride previous, so if you are creating a ; settingGroup with a reference name of lambdaSensor, it will replace the ; setting group defined in the settingGroups.xml of the TunerStudio config ; folder. If is is an undefined referenceName, it will be added. ; keyword = referenceName, DisplayName ; settingGroup = fAlgorithmSetting, "Fuel Logic / Tables" ; settingOption = FA_PLAIN_MAF, "Plain MAF" ; settingOption = FA_TPS, "AlphaN/TPS" ; settingOption = DEFAULT, "Speed Density" ; DEFAULT will be over looked and this will fall into the #else block of the statement. [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. signature = "MShift v0.02" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC messageEnvelopeFormat = msEnvelope_1.0 endianness = little nPages = 1 pageIdentifier = "\x00\x00" pageReadCommand = "R\x00\x00%2o%2c" burnCommand = "B\x00\x00" pageActivate = "P\x00\x00" pageValueWrite = "W\x00\x00%2o%v" pageChunkWrite = "C\x00\x00%2o%2c%v" ; crc32CheckCommand = "k%2i%2o\xB8\x36" crc32CheckCommand = "k\x00\x00\x00\x00\x36\xB8" ;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 = 400 ; 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 [SettingContextHelp] fuelAlgorithm = "See also http://rusefi.com/fuel" [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 = tooth, "Tooth Logger", tooth dataReadCommand = "L" dataReadTimeout = 15000 ; time in ms dataReadyCondition = { toothLogReady } dataLength = 256 ; in bytes, including headers, footers and data ; recordDef = headerLen, footerLen, recordLen recordDef = 0, 0, 4; in bytes, the recordLen is for each record, currently limited to 4 bytes recordField = PA3, "Inj D", 3, 1, 1, "" recordField = PA2, "Inj C", 2, 1, 1, "" recordField = PA1, "Inj B", 1, 1, 1, "" recordField = PA0, "Inj A", 0, 1, 1, "" [VeAnalyze] ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition #if tuneByMAF veAnalyzeMap = fuelTableTbl, afrTableTbl, AFRValue, egoCorrection, { 1 } #else veAnalyzeMap = veTableTbl, afrTableTbl, AFRValue, egoCorrection, { 1 } #endif lambdaTargetTables = afrTableTbl, afrTSCustom ; filter = Name, "DisplayName", outputChannel, operator, defaultVal, userAdjustable filter = minRPMFilter, "Minimum RPM", RPMValue, < , 500, , true #if CELSIUS filter = minCltFilter, "Minimum CLT", coolant, < , 60, , true #else filter = minCltFilter, "Minimum CLT", coolant, < , 160, , true #endif filter = deltaTps, "dTPS", deltaTps > , 50, , true filter = VBatt, "VBatt", VBatt < , 12, , true ; filter = minTps, "Minimum TPS", TPS, > , 1, , true ;[VeAnalyze] ; fuelAnalyzeMap = fuelTableTbl, afrTableTbl, AFRValue, egoCorrection , { 1 } ; filter = minRPMFilter, "Minimum RPM", RPMValue, < , 500, , true [OutputChannels] ; see TS_FILE_VERSION in firmware code fileVersion = { 20171101 } ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code ochBlockSize = 356 ; ; see TunerStudioOutputChannels struct ; RPMValue = scalar, U32, 0, "RPM", 1, 0.00000 #if CELSIUS coolant = scalar, F32, 4, "°C", 1, 0.0 #else coolant = scalar, F32, 4, "°F", {9/5}, 17.77777 #endif #if CELSIUS intake = scalar, F32, 8, "°C", 1, 0.0 #else intake = scalar, F32, 8, "°F", {9/5}, 17.77777 #endif TPSValue = scalar, F32, 12, "%", 1, 0 MAFValue = scalar, F32, 16, "V", 1, 0 AFRValue = scalar, F32, 20, "AFR", 1, 0.0 engineLoad = scalar, F32, 24, "%", 1, 0.0 ; Blend of MAP and TPS, depends on algorithm VBatt = scalar, F32, 28, "V", 1, 0.0 ; 10 bit TPS ADC value (from 0 to 1023 in 5v scale) tpsADC = scalar, U16, 32, "ADC", 1, 0.0; alignmet = scalar, U16, 34, "al", 1, 0.0; baroPressure = scalar, F32, 36, "pres", 1, 0.0; MAPValue = scalar, F32, 40, "MAP", 1, 0.0; ; total fuel squirt duration (in MS) per engine cycle according to current CLT crankingFuel = scalar, F32, 44, "ms", 1, 0.0; baseFuel = scalar, F32, 48, "ms", 1, 0 tCharge = scalar, F32, 52, "T", 1, 0.0; ignitionAdvance = scalar, F32, 56, "deg", 1, 0.0; sparkDwellValue = scalar, F32, 60, "ms", 1, 0.0; ; actual total Ms time per engine cycle with all corrections actualLastInjection = scalar, F32, 64, "ms", 1, 0.0; debugFloatField1 = scalar, F32, 68, "val", 1, 0.0; hasSdCard = bits, U32, 72, [0:0], "true", "false"; isIgnitionEnabledIndicator=bits, U32, 72, [1:1], "true", "false"; ind_injection_enabled=bits,U32, 72, [2:2], "true", "false"; isCylinderCleanupEnabled=bits, U32, 72, [3:3], "true", "false"; isCylinderCleanupActivated=bits,U32,72, [4:4], "true", "false"; ind_fuel_pump = bits, U32, 72, [5:5], "true", "false"; ind_fan = bits, U32, 72, [6:6], "true", "false"; ind_o2_heater = bits, U32, 72, [7:7], "true", "false"; ind_check_engine= bits, U32, 72, [8:8], "true", "false"; needBurn = bits, U32, 72, [9:9], "true", "false"; ind_2nd_trigger_en=bits, U32, 72, [10:10], "true", "false"; clutchUpState =bits, U32, 72, [11:11], "true", "false"; clutchDownState =bits, U32, 72, [12:12], "true", "false"; knockEverIndicator=bits, U32, 72, [13:13], "true", "false"; knockNowIndicator=bits, U32, 72, [14:14], "true", "false"; brakePedalIndicator=bits, U32, 72, [15:15], "true", "false"; toothLogReady =bits, U32, 72, [16:16], "true", "false"; vehicleSpeedKph = scalar, F32, 76, "kph", 1, 0.0; ind_tps_error = bits, U32, 80, [0:0], "true", "false"; ind_clt_error = bits, U32, 80, [1:1], "true", "false"; ind_map_error = bits, U32, 80, [2:2], "true", "false"; ind_iat_error = bits, U32, 80, [3:3], "true", "false"; ind_isTriggerError = bits, U32, 80, [5:5], "true", "false"; ind_hasFatalError=bits, U32, 80, [6:6], "true", "false"; ind_isWarnNow =bits, U32, 80, [7:7], "true", "false"; firmwareTsVersion = scalar,U32, 84, "version_p", 1, 0 egt1 = scalar, S16, 88, "°C", 1, 0 egt2 = scalar, S16, 90, "°C", 1, 0 egt3 = scalar, S16, 92, "°C", 1, 0 egt4 = scalar, S16, 94, "°C", 1, 0 egt5 = scalar, S16, 96, "°C", 1, 0 egt6 = scalar, S16, 98, "°C", 1, 0 egt7 = scalar, S16, 100, "°C", 1, 0 egt8 = scalar, S16, 102, "°C", 1, 0 rpmAcceleration = scalar, F32, 104, "dRpm", 1, 0 massAirFlowValue= scalar, F32, 108, "Kg/h", 1, 0 veValue = scalar, F32, 112, "ratio", 1, 0 deltaTps = scalar, F32, 116, "ratio", 1, 0 triggerErrorsCounter = scalar, U32,120, "counter", 1, 0 engineLoadAccelExtra = scalar,F32, 124, "value", 1, 0 tpsAccelFuel = scalar, F32, 128, "ms", 1, 0 baroCorrection = scalar, F32, 132, "%", 1, 0 pedalPosition = scalar, F32, 136, "%", 1, 0 injectorDutyCycle= scalar, F32, 140, "%", 1, 0 knockCount = scalar, U32, 144, "counter", 1, 0 ; fuelLevel 148 knockLevel = scalar, F32, 152, "Volts", 1, 0 ; totalTriggerErrorCounter 156 wallFuelAmount = scalar, F32, 160, "ms", 1, 0 iatCorrection = scalar, F32, 164, "%", 1, 0 wallFuelCorrection = scalar, F32, 168, "ms", 1, 0 idleAirValvePosition = scalar, F32, 172, "percent", 1, 0 currentTargetAfr = scalar, F32, 176, "ratio", 1, 0 chargeAirMass = scalar, F32, 180, "g", 1, 0 cltCorrection = scalar, F32, 184, "%", 1, 0 fuelRunning = scalar, F32, 188, "g", 1, 0 debugIntField1 = scalar, U32, 192, "val", 1, 0.0; injectorLagMs = scalar, F32, 196, "ms", 1, 0.0; debugFloatField2 = scalar, F32, 200, "val", 1, 0.0; debugFloatField3 = scalar, F32, 204, "val", 1, 0.0; debugFloatField4 = scalar, F32, 208, "val", 1, 0.0; debugFloatField5 = scalar, F32, 212, "val", 1, 0.0; debugIntField2 = scalar, U32, 216, "val", 1, 0.0; debugIntField3 = scalar, U32, 220, "val", 1, 0.0; engineLoadDelta = scalar,F32, 228, "value", 1, 0 speedToRpmRatio = scalar,F32, 232, "value", 1, 0 warningCounter = scalar,U32, 236, "count", 1, 0 lastErrorCode = scalar,U32, 240, "error", 1, 0 internalMcuTemperature = scalar,F32, 244, "C", 1, 0 vvtPosition = scalar,F32, 248, "deg", 1, 0 engineMode = scalar, U32, 252, "em", 1, 0.0; debugFloatField6 = scalar, F32, 256, "val", 1, 0.0; debugFloatField7 = scalar, F32, 260, "val", 1, 0.0; firmwareVersion = scalar,U32, 264, "version_f", 1, 0 fuelPidCorrection = scalar, F32, 268, "ms", 1, 0 coilDutyCycle = scalar, F32, 272, "perc", 1, 0 accelerationX = scalar, S16, 276, "G", 0.01, 0 accelerationY = scalar, S16, 276, "G", 0.01, 0 oilPressure = scalar, F32, 280, "kPa", 1, 0.0 fuelConsumptionPerHour=scalar, F32, 284, "kPa", 1, 0.0 ; ; see TunerStudioOutputChannels struct ; ; todo: generate this section programatically LM_PLAIN_MAF = {0}, LM_ALPHA_N = {1}, LM_MAP = {2}, LM_SPEED_DENSITY = {3}, LM_REAL_MAF = {4} egoCorrection = { 100 } time = { timeNow } ; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS } [PcVariables] wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1; wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0 [ConstantsExtensions] 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 [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 = RPMValue curve = narrowToWideOxygenCurve, "Narrow to Wideband approximation" columnLabel = "Voltage", "AFR" xAxis = 0, 6, 10 yAxis = 0, 28, 10 xBins = narrowToWideOxygenBins yBins = narrowToWideOxygen gauge = afr1Gauge curve = fsioCurve1, "FSIO Curve #1" columnLabel = "X", "Y" xAxis = 0, 128, 10 yAxis = -155, 150, 10 xBins = fsioCurve1Bins yBins = fsioCurve1 curve = fsioCurve2, "FSIO Curve #2" columnLabel = "X", "Y" xAxis = 0, 128, 10 yAxis = -150, 150, 10 xBins = fsioCurve2Bins yBins = fsioCurve2 curve = fsioCurve3, "FSIO Curve #3" columnLabel = "X", "Y" xAxis = 0, 128, 10 yAxis = -5, 5, 10 xBins = fsioCurve3Bins yBins = fsioCurve3 curve = fsioCurve4, "FSIO Curve #4" columnLabel = "X", "Y" xAxis = 0, 128, 10 yAxis = -5, 5, 10 xBins = fsioCurve4Bins yBins = fsioCurve4 curve = mapAccelTaper, "Engine Load Acceleration Enrichment Taper" columnLabel = "Distance", "Multiplier" xAxis = 0, 128, 10 yAxis = -5, 5, 10 xBins = mapAccelTaperBins yBins = mapAccelTaperMult curve = dwellCorrection, "Dwell time RPM based" columnLabel = "RPM", "Dwell" xAxis = 0, 8000, 10 yAxis = 0, 30, 10 xBins = sparkDwellRpmBins, RPMValue yBins = sparkDwellValues gauge = RPMValue 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 = RPMValue 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 = RPMValue curve = injectorsDeadTime, "Injector Dead Time by VBatt" columnLabel = "Voltage", "Dead Time" xAxis = 8, 21, 10 yAxis = -3, 3, 10 xBins = injector_battLagCorrBins, VBatt yBins = injector_battLagCorr gauge = VBattGauge curve = mafDecodingCurve, "MAF Sensor Settings" columnLabel = "Voltage", "kg/hour" xAxis = -1, 6, 10 yAxis = -30, 1300, 10 xBins = mafDecodingBins, MAFValue yBins = mafDecoding gauge = MAFGauge curve = iatFuelCorrCurve, "Intake air temperature fuel Multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 10 yAxis = 0, 5, 10 xBins = iatFuelCorrBins, intake yBins = iatFuelCorr gauge = IATGauge curve = cltTimingCorrCurve, "Warmup timing correction" columnLabel = "Coolant", "Extra" xAxis = -40, 120, 10 yAxis = 0, 50, 10 xBins = cltTimingBins, coolant yBins = cltTimingExtra gauge = CLTGauge curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 10 yAxis = 0, 50, 10 xBins = cltFuelCorrBins, coolant yBins = cltFuelCorr gauge = CLTGauge curve = crankingCltCurve, "Cranking Coolant Temperature multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 10 yAxis = 0, 5, 10 xBins = crankingFuelBins, coolant yBins = crankingFuelCoef gauge = CLTGauge curve = crankingTpsCurve, "Cranking TPS Multiplier" columnLabel = "TPS", "Multiplier" xAxis = -40, 120, 10 yAxis = 0, 5, 10 xBins = crankingTpsBins, TPSValue yBins = crankingTpsCoef gauge = TPSGauge curve = crankingDurationCurve, "Cranking Duration Multiplier" columnLabel = "Engine Cycle", "Multiplier" xAxis = 0, 1000, 10 yAxis = 0, 5, 10 xBins = crankingCycleBins yBins = crankingCycleCoef curve = cltIdleCurve, "Warmup Idle multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 10 yAxis = 0, 50, 10 xBins = cltIdleCorrBins, coolant yBins = cltIdleCorr gauge = CLTGauge curve = cltCrankingCurve, "Cranking IAC multiplier" columnLabel = "Coolant", "Multiplier" xAxis = -40, 120, 10 yAxis = 0, 50, 10 xBins = cltCrankingCorrBins, coolant yBins = cltCrankingCorr gauge = CLTGauge curve = cltIdleRPMCurve, "Idle Target RPM" columnLabel = "Coolant", "RPM" xAxis = -40, 120, 10 yAxis = 0, 8000, 10 xBins = cltIdleRpmBins, coolant yBins = cltIdleRpm, RPMValue gauge = CLTGauge curve = idleAdvanceCurve, "Idle Advance Angle" columnLabel = "RPM", "degrees" xAxis = 0, 8000, 10 yAxis = -100, 100, 10 xBins = idleAdvanceBins, RPMValue yBins = idleAdvance gauge = RPMGauge curve = idleVeCurve, "Idle VE" columnLabel = "RPM", "%" xAxis = 0, 8000, 10 yAxis = 0, 250, 10 xBins = idleVeBins, RPMValue yBins = idleVe gauge = afr1Gauge curve = warmupTargetAfrCurve, "CLT-based target AFR" columnLabel = "Coolant", "Correction" xAxis = -40, 120, 10 yAxis = 0, 50, 10 xBins = warmupTargetAfrBins, coolant yBins = warmupTargetAfr gauge = CLTGauge curve = wueAfrTargetOffsetCurve, "AFR Target Temperature Adjustment" columnLabel = "Coolant", "AFR Offset" xAxis = -40, 200, 9 yAxis = -3, 1, 5 xBins = cltFuelCorrBins, coolant yBins = wueAfrTargetOffset ;gauge = cltGauge curve = wueAnalyzer_warmup_curve, "Warmup Enrichment" columnLabel = "Coolant", "Current WUE", "Coolant", "Corrected" xAxis = -40, 200, 9 yAxis = 90, 500, 6 xBins = cltFuelCorrBins, coolant yBins = cltFuelCorr yBins = wueAnalRecommend ;gauge = cltGauge lineLabel = "Warmup Correction" lineLabel = "Recommended WUE" [TableEditor] ; table_id, map3d_id, "title", page table = fuelTableMAFTbl, fuelTableMAFMap, "Fuel Table", 1 ; constant, variable xBins = fuelRpmBins, RPMValue yBins = fuelLoadBins, MAFValue zBins = fuelTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = fuelTableTPSTbl, fuelTableTPSMap, "Fuel Table", 1 ; constant, variable xBins = fuelRpmBins, RPMValue yBins = fuelLoadBins, TPSValue zBins = fuelTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = fuelTableELTbl, fuelTableELMap, "Fuel Table", 1 ; constant, variable xBins = fuelRpmBins, RPMValue yBins = fuelLoadBins, engineLoad zBins = fuelTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" ; move table into a panel? or find a way to add a link to https://rusefi.com//wiki/index.php?title=Manual:Software:TPSTPS table = tpsTpsAccelTbl, tpsTpsAccelMap, "TPS/TPS Acceleration Extra Fuel", 1 xBins = tpsTpsAccelFromRpmBins, TPSValue yBins = tpsTpsAccelToRpmBins, TPSValue zBins = tpsTpsAccelTable table = fsioTable1Tbl, fsioTable1Map, "FSIO Table #1", 1 xBins = fsioTable1RpmBins, RPMValue yBins = fsioTable1LoadBins, engineLoad zBins = fsioTable1 table = fsioTable2Tbl, fsioTable2Map, "FSIO Table #2", 1 xBins = fsioTable2RpmBins, RPMValue yBins = fsioTable2LoadBins, engineLoad zBins = fsioTable2 table = fsioTable3Tbl, fsioTable3Map, "FSIO Table #3", 1 xBins = fsioTable3RpmBins, RPMValue yBins = fsioTable3LoadBins, engineLoad zBins = fsioTable3 table = fsioTable4Tbl, fsioTable4Map, "FSIO Table #4", 1 xBins = fsioTable4RpmBins, RPMValue yBins = fsioTable4LoadBins, engineLoad zBins = fsioTable4 table = baroCorrTbl, baroCorrMap, "Baro Correction", 1 ; constant, variable xBins = baroCorrRpmBins, RPMValue yBins = baroCorrPressureBins, baroPressure zBins = baroCorrTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = ignitionTableTbl, ignitionTableMap, "Ignition Table", 1 ; constant, variable xBins = ignitionRpmBins, RPMValue #if FA_PLAIN_MAF yBins = ignitionLoadBins, MAFValue #elif FA_TPS yBins = ignitionLoadBins, TPSValue #else yBins = ignitionLoadBins, engineLoad #endif zBins = ignitionTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = 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, MAPValue 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 ; constant, variable xBins = injPhaseRpmBins, RPMValue yBins = injPhaseLoadBins, engineLoad zBins = injectionPhase ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" table = afrTableTbl, afrTableMap, "Target AFR Table", 1 ; constant, variable xBins = afrRpmBins, RPMValue yBins = afrLoadBins, MAPValue zBins = afrTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" [GaugeConfigurations] ;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld #if CELSIUS tChargeGauge = tCharge, "Charge Temp", "°C", -40, 140, -15, 1, 95, 110, 1, 1 #else tChargeGauge = tCharge, "Charge Temp", "°F", -40, 285, 5, 35, 205, 230, 1, 1 #endif ; warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0 ; accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0 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 massAirFlowValueGa = massAirFlowValue,"Air Flow", "kg/hr", 0, 50, -999, -999, 999, 999, 1, 1 veValueGauge = veValue, "fuel: VE", "", 0, 120, 10, 10, 100, 100, 1, 1 baroCorrectionGauge = baroCorrection,"BaroCorr", "%", 0, 120, 10, 10, 100, 100, 1, 1 knockCountGauge = knockCount,"Knock count", "count", 0, 120, 10, 10, 100, 100, 1, 1 knockLevelGauge = knockLevel,"Knock level", "volts", 0, 7, 10, 10, 100, 100, 1, 2 triggerErrorsCounterGauge = triggerErrorsCounter, "trg err", "count", 0, 15000, 0, 0, 6000, 6000, 0, 0 idleAirValvePositionGauge = idleAirValvePosition, "idle position", "%", 0, 100, 0, 0, 100, 100, 0, 0 speedToRpmRatioGauge = speedToRpmRatio, "speed2rpm", "", 0, 100, 0, 0, 100, 100, 4, 4 warningCounterGauge = warningCounter, "warn", "", 0, 100, 0, 0, 100, 100, 0, 0 lastErrorCodeGauge = lastErrorCode, "error", "", 0, 8000, 0, 0, 8000, 8000, 0, 0 gaugeCategory = Debug debugFloatField1Gauge = debugFloatField1, @@GAUGE_NAME_DEBUG_F1@@, "%", 0, 100, 0, 0, 100, 100, 4, 4 debugFloatField2Gauge = debugFloatField2, @@GAUGE_NAME_DEBUG_F2@@, "%", -100, 100, 0, 0, 100, 100, 4, 4 debugFloatField3Gauge = debugFloatField3, @@GAUGE_NAME_DEBUG_F3@@, "%", -100, 100, 0, 0, 100, 100, 4, 4 debugFloatField4Gauge = debugFloatField4, @@GAUGE_NAME_DEBUG_F4@@, "%", 0, 100, 0, 0, 100, 100, 4, 4 debugFloatField5Gauge = debugFloatField5, @@GAUGE_NAME_DEBUG_F5@@, "%", 0, 100, 0, 0, 100, 100, 4, 4 debugFloatField6Gauge = debugFloatField6, @@GAUGE_NAME_DEBUG_F6@@, "%", -100, 100, 0, 0, 100, 100, 4, 4 debugFloatField7Gauge = debugFloatField7, @@GAUGE_NAME_DEBUG_F7@@, "%", 0, 100, 0, 0, 100, 100, 4, 4 debugIntField1Gauge = debugIntField1, "debug i1: pParam", "%", 0, 100, 0, 0, 100, 100, 0, 0 debugIntField2Gauge = debugIntField2, "debug i2: offset", "%", 0, 100, 0, 0, 100, 100, 0, 0 debugIntField3Gauge = debugIntField3, "debug i3", "%", 0, 100, 0, 0, 100, 100, 0, 0 gaugeCategory = Sensors RPMGauge = RPMValue, "Engine Speed", "RPM", 0, 15000, 200, 500, 6000, 6000, 0, 0 #if CELSIUS CLTGauge = coolant, "Coolant Temp", "°C", -40, 140, -15, 1, 95, 110, 1, 1 #else CLTGauge = coolant, "Coolant Temp", "°F", -40, 285, 5, 35, 205, 230, 1, 1 #endif #if CELSIUS IATGauge = intake, "Intake Air Temp", "°C", -40, 140, -15, 1, 95, 110, 1, 1 #else IATGauge = intake, "Intake Air Temp", "°F", -40, 285, 5, 35, 205, 230, 1, 1 #endif TPSGauge = TPSValue, "Throttle Position", "%", 0, 100, 0, 0, 100, 100, 2, 2 afr1Gauge = AFRValue, "Air:Fuel Ratio 1", "", 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 OilPressGauge = oilPressure, "Oil Pressure", "kPa", 0, 750, 35, 75, 550, 700, 0, 0 fuelConsumptionPerHourGauge=fuelConsumptionPerHour, "f","kPa", 0, 750, 35, 75, 550, 700, 0, 0 tpsADCGauge = tpsADC, "tps ADC", "ADC", 0, 1024, 0, 0, 0, 0, 0, 0 atmPresCGauge = baroPressure, "Baro", "kPa", 0, 1024, 0, 0, 0, 0, 0, 0 vvtPositionGauge = vvtPosition, "VVT position", "deg", 0, 100, 0, 0, 720, 720, 0, 0 internalMcuTemperatureGauge = internalMcuTemperature, "internal temperature", "C", 0, 100, 0, 0, 100, 100, 0, 0 VSSGauge = vehicleSpeedKph, "Speed", "kmh", 0, 200, 0, 1, 3, 4, 1, 1 pedalPositionGauge = pedalPosition,"Throttle Pedal Position", "%", 0, 120, 10, 10, 100, 100, 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 gaugeCategory = Spark Data ignadvGauge = ignitionAdvance, "Ignition Advance 1", "degrees", -100, 100, -999, -999, 999, 999, 1, 1 dwellGauge = sparkDwellValue, "Dwell", "mSec", 0, 10, 0.5, 1.0, 6.0, 8.0, 1, 1 coilDutyCycleGauge = coilDutyCycle, @@GAUGE_NAME_DWELL_DUTY@@, "perc", -11, 11, 1.0, 1.2, 100, 100, 3, 1 gaugeCategory = Accel Data engineLoadDeltaGauge = engineLoadDelta,"fuel: load change","value", 0, 120, 10, 10, 100, 100, 1, 1 engineLoadAccelExtraGauge = engineLoadAccelExtra,"fuel: load extra","value", 0, 120, 10, 10, 100, 100, 1, 1 deltaTpsGauge = deltaTps, "fuel: TPS change", "", 0, 120, 10, 10, 100, 100, 1, 1 tpsAccelFuelGauge = tpsAccelFuel,"fuel: TPS enrich", "ms", 0, 120, 10, 10, 100, 100, 1, 1 wallFuelAmountGauge = wallFuelAmount, "fuel: wall amount", "ms", 0, 100, 0, 0, 100, 100, 0, 0 wallFuelCorrectionGauge = wallFuelCorrection, "fuel: wall correction extra", "ms", 0, 100, 0, 0, 100, 100, 0, 0 gaugeCategory = Fuel Data crankingFuelGauge = crankingFuel, "fuel: crank Width", "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 injectorLagMsGauge = injectorLagMs, @@GAUGE_NAME_INJECTOR_LAG@@, "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1 fuelRunningGauge = fuelRunning, @@GAUGE_NAME_FUEL_RUNNING@@, "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1 baseFuelGauge = baseFuel, @@GAUGE_NAME_FUEL_BASE@@, "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1 fuelPidCorrectionGauge = fuelPidCorrection, @@GAUGE_NAME_FUEL_PID_CORR@@, "mSec", -11, 11, 1.0, 1.2, 20, 25, 3, 1 [WueAnalyze] ; wueCurveName, afrTempCompensationCurve, lambdaTargetTableName, lambdaChannel, coolantTempChannel, egoCorrectionChannel, wueChannel, activeCondition wueAnalyzeMap = wueAnalyzer_warmup_curve, wueAfrTargetOffsetCurve, afrTableTbl, AFRValue, coolant, cltCorrection, egoCorrection lambdaTargetTables = afrTableTbl, afrTSCustom wuePercentOffset = 0 ; for working with 0 based enrichment set to 100 option = disableLiveUpdates option = burnOnSend ; filter = std_DeadLambda ; Auto build filter = decelFilterMap,"After Start Enrich", engine, & , 4 , , false filter = accelFilterTp, "TP Accel Enrich" , engine, & , 16, , false filter = decelFilterTp, "TP Decel Enrich" , engine, & , 32, , false filter = accelFilterMap,"MAP Accel Enrich" , engine, & , 64, , false filter = decelFilterMap,"MAP Decel Enrich" , engine, & , 128, , false ; this works, just another way to skin a cat ;filter = decelFilter, "Decel Flag" , tpsaccden, > , 0, , false filter = overrunFilter, "Overrun" , pulseWidth1, = , 0, , false filter = highThrottle, "High Throttle" , throttle, > , 15, , true filter = lowRpm, "Low RPM" , rpm, < , 300, , false filter = std_Custom ; Standard Custom Expression Filter. [FrontPage] ; Gauges are numbered left to right, top to bottom. ; ; 1 2 3 4 ; 5 6 7 8 ; currently a minimum of 6 gauges must be on the dash, this appears to be an old not needed limitation. next release 1 will work. gauge1 = RPMGauge gauge2 = CLTGauge gauge3 = TPSGauge gauge4 = MAFGauge gauge5 = afr1Gauge gauge6 = VBattGauge gauge7 = dwellGauge gauge8 = ignadvGauge ; = expression, off-label, on-label, off-bg, off-fg, on-bg, on-fg ; important status indicator = { ind_hasFatalError }, "", "FATAL ERROR", green, black, red, black indicator = { firmwareTsVersion == fileVersion }, "WRONG VERSION", "version", red, black, green, black indicator = { ind_isWarnNow }, "", "warn", green, black, red, black indicator = { ind_check_engine }, "ok", "Check engine", green, black, red, black indicator = { isIgnitionEnabledIndicator}, "no ignition", "ignition", red, black, green, black indicator = { ind_injection_enabled}, "no injection", "injection", red, black, green, black indicator = { ind_isTriggerError}, "ok", "trg err", green, black, red, black ; minor info indicator = { ind_fan}, "no fan", "fan", white, black, green, black indicator = { isCylinderCleanupActivated}, "no cyl cleanup", "cyl cleanup", white, black, green, black indicator = { needBurn }, "config ok", "unsaved changes", white, black, yellow, black indicator = { hasSdCard}, "no SD", "with SD", white, black, green, black indicator = { ind_fuel_pump}, "no pump", "pump", white, black, green, black indicator = { clutchUpState }, "clutch", "cltch Up", white, black, red, black indicator = { clutchDownState }, "clutch", "cltch Down", white, black, red, black indicator = { brakePedalIndicator }, "brake", "brake down", white, black, red, black ; error codes indicator = { ind_tps_error}, "tps", "tps error", white, black, red, black indicator = { ind_clt_error}, "clt", "clt error", white, black, red, black indicator = { ind_iat_error}, "iat", "iat error", white, black, red, black indicator = { ind_map_error}, "map", "map error", white, black, red, black indicator = { knockEverIndicator }, "", "Knock recently", white, black, red, black indicator = { knockNowIndicator }, "no knock", "Knock NOW", white, black, red, black [Datalog] ; Channel Label Type Format entry = time, "Time", float, "%.3f" entry = RPMValue, "RPM", int, "%d" entry = firmwareVersion, @@GAUGE_NAME_VERSION@@, int, "%d" entry = coolant, "CLT", float, "%.2f" entry = intake, "IAT", float, "%.2f" entry = oilPressure, "Oil Press", float, "%.1f" entry = TPSValue, "TPS", float, "%.2f" entry = MAFValue, "MAF", float, "%.2f" entry = MAPValue, "MAP", float, "%.1f" entry = AFRValue, @@GAUGE_NAME_AFR@@, float, "%.2f" entry = VBatt, @@GAUGE_NAME_VBAT@@, float, "%.2f" entry = engineLoad, @@GAUGE_NAME_ENGINE_LOAD@@, float, "%.1f" entry = ignitionAdvance, @@GAUGE_NAME_TIMING_ADVANCE@@, float, "%.2f" entry = knockLevel, @@GAUGE_NAME_KNOCK_LEVEL@@, float, "%.2f" entry = vehicleSpeedKph, @@GAUGE_NAME_VVS@@, float, "%.2f" entry = speedToRpmRatio, "s2rpm", float, "%.3f" entry = rpmAcceleration, "dRPM", float, "%.3f" entry = massAirFlowValue,"airMass", float, "%.3f" entry = pedalPosition, "pedal", float, "%.3f" entry = triggerErrorsCounter, "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, "fuel: base", float, "%.2f" entry = fuelPidCorrection,"fuel: pid", float, "%.2f" entry = veValue, @@GAUGE_NAME_FUEL_VR@@, 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" entry = accelerationY, @@GAUGE_NAME_ACCEL_Y@@, float,"%.2f" entry = engineLoadAccelExtra, @@GAUGE_NAME_FUEL_EL_EXTRA@@,float, "%.3f" entry = engineLoadDelta, "fuel: load change",float, "%.3f" entry = deltaTps, "fuel: TPS change",float, "%.3f" entry = tpsAccelFuel, @@GAUGE_NAME_FUEL_TPS_EXTRA@@, float, "%.3f" entry = wallFuelCorrection,"fuel: wall corr ms", float, "%.3f" entry = wallFuelAmount, "fuel: wall amount", float, "%.3f" entry = baroCorrection, "baroCorrection",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" ; is there a way to log parameter? entry = debugMode, "debugMode",int,"%d" ; Alternator_PID: alternator duty cycle ; DBG_TPS_ACCEL: from TPS entry = debugFloatField1, @@GAUGE_NAME_DEBUG_F1@@,float,"%.4f" ; Alternator_PID: current integration term ; DBG_TPS_ACCEL: to TPS entry = debugFloatField2, @@GAUGE_NAME_DEBUG_F2@@,float,"%.4f" ; Alternator_PID: previous error ; DBG_TPS_ACCEL: tps<>tps table value entry = debugFloatField3, @@GAUGE_NAME_DEBUG_F3@@,float,"%.4f" ; Alternator_PID: I setting ; DBG_TPS_ACCEL: extra fuel entry = debugFloatField4, @@GAUGE_NAME_DEBUG_F4@@,float,"%.4f" ; Alternator_PID: D setting entry = debugFloatField5, @@GAUGE_NAME_DEBUG_F5@@,float,"%.4f" ; Alternator_PID: dTerm entry = debugFloatField6, @@GAUGE_NAME_DEBUG_F6@@,float,"%.4f" entry = debugFloatField7, @@GAUGE_NAME_DEBUG_F7@@,float,"%.4f" ; Alternator_PID: P setting entry = debugIntField1, @@GAUGE_NAME_DEBUG_I1@@,int,"%d" ; Alternator_PID: offset setting entry = debugIntField2, @@GAUGE_NAME_DEBUG_I2@@,int,"%d" ; Alternator_PID: PID reset counter entry = debugIntField3, @@GAUGE_NAME_DEBUG_I3@@,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 = 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 = ind_fan, "radiator fan",int,"%d" ; tpsADC = U16, "ADC", ; alignmet = U16, "al", ; atmPres = F32, "pres", ; crankingFuel = F32, "ms", ; tCharge = F32, "T", ; sparkDwell = F32, "MAP", ; warmUpEnrich = F32, "%", [Menu] menu = "Engine" subMenu = engineChars, "Base Engine Settings" subMenu = triggerConfiguration, "Trigger Configuration" subMenu = std_separator subMenu = injectionSettings, "Injection Settings" subMenu = ignitionSettings, "Ignition Settings" subMenu = std_separator subMenu = analogInputs, "Analog inputs" subMenu = cltSensor, "CLT Sensor Settings" subMenu = iatSensor, "IAT Sensor Settings" subMenu = auxTempSensor1Sensor, "AuxTemp1 Sensor Settings" subMenu = auxTempSensor2Sensor, "AuxTemp2 Sensor Settings" subMenu = mapSettings, "MAP Sensor Settings" subMenu = mafDecodingCurve, "MAF Sensor Settings" subMenu = egoSettings, "EGO Sensor Settings" subMenu = narrowToWideOxygenCurve, "Narrow to Wideband approximation" subMenu = egtInputs, "EGT inputs" subMenu = oilPressureSensor, "Oil Pressure Sensor Settings" subMenu = energySystems, "Battery and Alternator Settings" subMenu = auxPidDialog, "Aux PID" subMenu = speedSensor, "Speed Sensor Settings" subMenu = tachSettings, "Tachometer output" subMenu = std_separator subMenu = fanSetting, "Fan Settings" subMenu = mainRealay, "Main Relay Settings" subMenu = fuelPump, "Fuel Pump Settings" subMenu = malfunction, "MIL Settings" subMenu = hipFunction, "hip9011 Settings (knock decoder) (alpha version)" subMenu = cj125Function, "CJ125 Settings (wbo decoder)" subMenu = spiFunction, "SPI Settings" subMenu = etbDialog, "Electronic Thtottle Body (alpha version)" menu = "Tuning" subMenu = generalSettings, "General" subMenu = monitoringSettings, "rusEfi Console Settings" subMenu = std_separator subMenu = crankingDialog, "Cranking" subMenu = crankingCltCurve, "Cranking Coolant Temp Multiplier" subMenu = crankingTpsCurve, "Cranking TPS Multiplier" subMenu = crankingDurationCurve, "Cranking Duration Multiplier" subMenu = cltCrankingCurve, "Cranking IAC multiplier", 0, {overrideCrankingIacSetting == 1} subMenu = std_separator subMenu = warmupFuelDialog, "Warmup fuel closed-loop" subMenu = cltFuelCorrCurve, "Warmup fuel manual Multiplier", 0, {useWarmupPidAfr == 0} subMenu = warmupTargetAfrCurve, "Warmup fuel auto correction AFR target", 0, {useWarmupPidAfr == 1} subMenu = cltIdleCurve, "Warmup Idle multiplier" subMenu = cltTimingCorrCurve, "Warmup timing correction" subMenu = idleSettings, "Idle Settings" subMenu = cltIdleRPMCurve, "Idle Target RPM", 0, {idleMode == 0} subMenu = std_separator subMenu = fuelTableDialog, "Fuel Table", 0, {fuelAlgorithm != LM_SPEED_DENSITY} subMenu = veTableDialog, "VE Table", 0, {fuelAlgorithm == LM_SPEED_DENSITY} subMenu = idleVeCurve, "Idle VE Table", 0, {useSeparateVeForIdle == 1} subMenu = afrTableTbl, "Target AFR Table", 0, {fuelAlgorithm == LM_SPEED_DENSITY} subMenu = iatFuelCorrCurve, "Intake air temperature fuel Multiplier" subMenu = injPhaseTableTbl, "Injection Phase" subMenu = mapAccelTaper, "Engine Load Acceleration Enrichment Taper" subMenu = std_separator subMenu = fuelClosedLoopDialog, "Fuel short-term closed-loop correction" subMenu = AccelEnrich, "Accel/Decel Enrichment/Enleanment" subMenu = tpsTpsAccelTbl, "TPS/TPS Acceleration Extra Fuel" subMenu = std_separator subMenu = ignitionTableTbl, "Ignition Advance Table" subMenu = idleAdvanceCurve, "Idle Ignition Advance Table", 0, {useSeparateAdvanceForIdle == 1} subMenu = ignitionIatCorrTableTbl, "Ignition Intake Air Temp correction" subMenu = baroCorrTbl, "Baro Correction", 0, {fuelAlgorithm == LM_SPEED_DENSITY} subMenu = std_separator subMenu = std_realtime, "&Realtime Display", 0 subMenu = tChargeSettings, "tCharge Settings" menu = "3D Map Tuning" ; subMenu = std_realtime, "Realtime Display" ; subMenu = std_warmup, "Warmup Wizard" subMenu = fuelTableELMap, "Fuel Table", 0, {fuelAlgorithm != 3} subMenu = veTableDialog3D, "VE Table", 0, {fuelAlgorithm == 3} subMenu = afrTableMap, "Target AFR Table", 0, {fuelAlgorithm == 3} subMenu = injPhaseTableMap, "Injection Phase" subMenu = ignitionTableMap, "Ignition Table" subMenu = ignitionIatCorrTableMap, "Ignition Intake Air Temp correction" menu = "Racing Features" subMenu = smLaunchControl, "Launch Control" subMenu = std_separator menu = "Board" subMenu = fsioInputsDialog, "FSIO inputs" 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 = connection, "Connection" subMenu = joystickPanel, "Joystick" subMenu = std_separator subMenu = ioTest, "I-O Test" subMenu = ecuStimulator, "ECU stimulator" subMenu = allPins, "Full pinout" [ControllerCommands] ; commandName = command1, command2, commandn... ; command in standard ini format, a command name can be assigned to 1 to n commands that will be executed in order. ; This does not include any resultant protocol envelope data, only the response data itself. ; WARNING!! These commands bypass TunerStudio's normal memory synchronization. If these commands ; alter mapped settings (Constant) memory in the controller, TunerStudio will have an out of sync condition ; and may create error messages. ; It is expected that these commands would not typically alter any ram mapped to a Constant. ; ; see TS_IO_TEST_COMMAND in firmware code ; cmd_test_spk1 = "w\x00\x12\x00\x01" cmd_test_spk2 = "w\x00\x12\x00\x02" cmd_test_spk3 = "w\x00\x12\x00\x03" cmd_test_spk4 = "w\x00\x12\x00\x04" cmd_test_spk5 = "w\x00\x12\x00\x05" cmd_test_spk6 = "w\x00\x12\x00\x06" cmd_test_spk7 = "w\x00\x12\x00\x07" cmd_test_spk8 = "w\x00\x12\x00\x08" cmd_test_spk9 = "w\x00\x12\x00\x09" cmd_test_spk10 = "w\x00\x12\x00\x0a" cmd_test_spk11 = "w\x00\x12\x00\x0b" cmd_test_spk12 = "w\x00\x12\x00\x0c" cmd_test_spk13 = "w\x00\x12\x00\x0d" cmd_test_spk14 = "w\x00\x12\x00\x0e" cmd_test_spk15 = "w\x00\x12\x00\x0f" cmd_test_spk16 = "w\x00\x12\x00\x10" cmd_test_inj1 = "w\x00\x13\x00\x01" cmd_test_inj2 = "w\x00\x13\x00\x02" cmd_test_inj3 = "w\x00\x13\x00\x03" cmd_test_inj4 = "w\x00\x13\x00\x04" cmd_test_inj5 = "w\x00\x13\x00\x05" cmd_test_inj6 = "w\x00\x13\x00\x06" cmd_test_inj7 = "w\x00\x13\x00\x07" cmd_test_inj8 = "w\x00\x13\x00\x08" cmd_test_inj9 = "w\x00\x13\x00\x09" cmd_test_inj10 = "w\x00\x13\x00\x0a" cmd_test_inj11 = "w\x00\x13\x00\x0b" cmd_test_inj12 = "w\x00\x13\x00\x0c" cmd_test_inj13 = "w\x00\x13\x00\x0d" cmd_test_inj14 = "w\x00\x13\x00\x0e" cmd_test_inj15 = "w\x00\x13\x00\x0f" cmd_test_inj16 = "w\x00\x13\x00\x10" cmd_test_fuel_pump = "w\x00\x14\x00\x01" cmd_test_radiator_fan = "w\x00\x15\x00\x01" cmd_test_check_engine_light = "w\x00\x16\x00\x01" cmd_test_idle_valve = "w\x00\x17\x00\x01" cmd_call_from_pit = "w\x00\x20\x34\x56" cmd_stop_engine = "w\x00\x99\x00\x00" [UserDefined] dialog = fuelTableBottomDialog, "", card panel = fuelTableMAFTbl, Center, {fuelAlgorithm==LM_PLAIN_MAF} panel = fuelTableTPSTbl, Center, {fuelAlgorithm==LM_ALPHA_N} panel = fuelTableELTbl, Center dialog = fuelTableRight, "", yAxis topicHelp = "http://rusefi.com/fuel" displayOnlyField = "Fuel Algorithm", fuelAlgorithm panel = fuelTableBottomDialog, Center liveGraph = fuelLive, "Fuel", South graphLine = AFRValue graphLine = RPMValue dialog = fuelTableGaugesPanel, yAxis gauge = TPSGauge gauge = MAFGauge gauge = MAPGauge dialog = fuelTableDialog, "Fuel Table", xAxis panel = fuelTableGaugesPanel panel = fuelTableRight dialog = tChargeSettings, "tChart 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 = baseInjection, "Injection" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" field = "Two wire batch", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2} dialog = baseIgnition, "Ignition" field = "Enabled", isIgnitionEnabled field = "Mode", ignitionMode, {isIgnitionEnabled == 1} field = "#Wasted spark with individual coils" field = "Two wire wasted", twoWireBatchIgnition, {isIgnitionEnabled == 1 && ignitionMode == 2} field = "Timing Mode", timingMode, {isIgnitionEnabled == 1} field = "#Use fixed timing while validating with a timing gun" field = "Fixed Timinig", fixedTiming, {isIgnitionEnabled == 1 && timingMode == 1} ; Engine->Base Engine Settings dialog = engineChars, "Base Engine Settings" ; field = "Engine Preset", engineType field = "Number of Cylinders", cylindersCount field = "Engine Displacement", displacement field = "debug fields", debugMode field = "" field = "Firing Order", firingOrder panel = baseInjection panel = baseIgnition ; Engine->Trigger configuration dialog = triggerConfiguration_settings, "Settings Trigger" field = "Trigger type", trigger_type field = "Operation mode", operationMode 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 = "Trigger Angle Offset", globalTriggerAngleOffset field = "#Custom Trigger" field = "total Tooth Count", trigger_customTotalToothCount, {trigger_type == 0} field = "skipped Tooth Count", trigger_customSkippedToothCount, {trigger_type == 0} dialog = triggerConfiguration_IO, "Settings I/O" field = "!ECU reboot needed to apply pin assignment" field = "#Cam is primary if you have cam sensor" field = "Primary input channel", triggerInputPins1 field = "Invert Primary", invertPrimaryTriggerSignal field = "Secondary channel", triggerInputPins2, { trigger_type != 0 && trigger_type != 8 && trigger_type != 9 && trigger_type != 18 && trigger_type != 20} field = "Invert Secondary", invertSecondaryTriggerSignal, { trigger_type != 0 && trigger_type != 8 && trigger_type != 9 && trigger_type != 18 && trigger_type != 20} field = "Cam Sync/VVT input", camInput field = "VVT mode", vvtMode, {trigger_type != 80} field = "VVT use rise front", vvtCamSensorUseRise, {trigger_type != 80} field = "VVT position display offset", vvtOffset field = "VVT display inverted", vvtDisplayInverted field = "NB2 from temp", nb2ratioFrom field = "NB2 to temp", nb2ratioTo field = "nbVvtIndex", nbVvtIndex field = "Trigger error LED", triggerErrorPin field = "Trigger error LED mode", triggerErrorPinMode field = "print sync details to console", isPrintTriggerSynchDetails dialog = triggerConfiguration panel = triggerConfiguration_settings, North panel = triggerConfiguration_IO, South ; Engine->Injection Settings dialog = injChars, "Injector Settings", yAxis field = "Injector Flow", injector_flow field = "phase offset", extraInjectionOffset dialog = injIO, "Injector Output", yAxis field = "!ECU reboot needed to apply these settings" field = "injection Pin Mode", injectionPinMode field = "Injection Pin 1", injectionPins1 field = "Injection Pin 2", injectionPins2, {cylindersCount > 1} field = "Injection Pin 3", injectionPins3, {cylindersCount > 2} field = "Injection Pin 4", injectionPins4, {cylindersCount > 3} field = "Injection Pin 5 ", injectionPins5, {cylindersCount > 4} field = "Injection Pin 6 ", injectionPins6, {cylindersCount > 5} field = "Injection Pin 7 ", injectionPins7, {cylindersCount > 6} field = "Injection Pin 8 ", injectionPins8, {cylindersCount > 7} field = "Injection Pin 9 ", injectionPins9, {cylindersCount > 8} field = "Injection Pin 10 ", injectionPins10, {cylindersCount > 9} field = "Injection Pin 11 ", injectionPins11, {cylindersCount > 10} field = "Injection Pin 12 ", injectionPins12, {cylindersCount > 11} dialog = injectorSetting, "", yAxis panel = injChars, North panel = injIO, East dialog = injectionSettings, "", xAxis panel = injectorSetting, West panel = injectorsDeadTime, East dialog = ignitionCylExtra, "Ignition Cyliner Extra" 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} ; Engine->Ignition Settings dialog = ignitionOutputs, "Ignition Outputs" field = "Ignition Pin Mode", ignitionPinMode field = "Ignition Pin 1", ignitionPins1 field = "Ignition Pin 2", ignitionPins2, {(ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin2logic@@)} field = "Ignition Pin 3", ignitionPins3, {(ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin3logic@@)} field = "Ignition Pin 4", ignitionPins4, {(ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin4logic@@)} field = "Ignition Pin 5", ignitionPins5, {(ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin5logic@@)} field = "Ignition Pin 6", ignitionPins6, {(ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin6logic@@)} field = "Ignition Pin 7", ignitionPins7, {(ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin7logic@@)} field = "Ignition Pin 8", ignitionPins8, {(ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin8logic@@)} field = "Ignition Pin 9", ignitionPins9, {(ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin8logic@@)} field = "Ignition Pin 10", ignitionPins10, {(ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin8logic@@)} field = "Ignition Pin 11", ignitionPins11, {(ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin8logic@@)} field = "Ignition Pin 12", ignitionPins12, {(ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 @@ignitionPin8logic@@)} field = "This is useful to have tachometer working while converting from distributor" field = "Dizzy out Pin", dizzySparkOutputPin field = "Dizzy out Pin Mode", dizzySparkOutputPinMode dialog = ignitionSettings, "", xAxis panel = ignitionOutputs, West panel = dwellCorrection, Center panel = ignitionCylExtra, East ; Engine->Aux1 Thermistor Settings dialog = auxTempSensor1_thermistor, "aux1 Thermistor Settings" field = "!Here is three pairs of thermistor temperature and his resistance." field = "!Typical temperatures is -40°C, 0°C and 100°C" field = "" field = "Lowest temperature", auxTempSensor1_tempC_1 field = "Resistance @ LT", auxTempSensor1_resistance_1 field = "" field = "Middle temperature", auxTempSensor1_tempC_2 field = "Resistance @ MT", auxTempSensor1_resistance_2 field = "" field = "Highest temperature", auxTempSensor1_tempC_3 field = "Resistance @ HT", auxTempSensor1_resistance_3 dialog = auxTempSensor1Sensor_IO, "auxTempSensor1 Sensor I/O" field = "auxTempSensor1 ADC input", auxTempSensor1_adcChannel field = "Bias Resistor Value", auxTempSensor1_bias_resistor dialog = auxTempSensor1Sensor, "", yAxis panel = auxTempSensor1_thermistor, North panel = auxTempSensor1Sensor_IO, South ; Engine->Aux2 Thermistor Settings dialog = auxTempSensor2_thermistor, "aux1 Thermistor Settings" field = "!Here is three pairs of thermistor temperature and his resistance." field = "!Typical temperatures is -40°C, 0°C and 100°C" field = "" field = "Lowest temperature", auxTempSensor2_tempC_1 field = "Resistance @ LT", auxTempSensor2_resistance_1 field = "" field = "Middle temperature", auxTempSensor2_tempC_2 field = "Resistance @ MT", auxTempSensor2_resistance_2 field = "" field = "Highest temperature", auxTempSensor2_tempC_3 field = "Resistance @ HT", auxTempSensor2_resistance_3 dialog = auxTempSensor2Sensor_IO, "auxTempSensor2 Sensor I/O" field = "auxTempSensor2 ADC input", auxTempSensor2_adcChannel field = "Bias Resistor Value", auxTempSensor2_bias_resistor dialog = auxTempSensor2Sensor, "", yAxis panel = auxTempSensor2_thermistor, North panel = auxTempSensor2Sensor_IO, South dialog = allPins1 field = "MAP ADC input", map_sensor_hwChannel field = "frequencyReportingMapInputPin", frequencyReportingMapInputPin field = "CLT ADC input", clt_adcChannel field = "IAT ADC input", iat_adcChannel field = "vBatt ADC input", vbattAdcChannel field = "TPS ADC input", tpsAdcChannel field = "MAF ADC input", mafAdcChannel field = "AFR ADC input", afr_hwChannel field = "fuelLevelSensor", fuelLevelSensor field = "Baro ADC input", baroSensor_hwChannel field = "Throttle pedal Position Channel", pedalPositionChannel field = "Primary input channel", triggerInputPins1 field = "Secondary channel", triggerInputPins2 field = "Cam Sync/VVT input", camInput field = "Vehicle Speed Input pin", vehicleSpeedSensorInputPin field = "clutchDownPin", clutchDownPin field = "clutchUpPin", clutchUpPin field = "brakePedalPin", brakePedalPin dialog = allPins2 field = "Tachometer output Pin", tachOutputPin field = "Dizzy out Pin", dizzySparkOutputPin field = "O2 heater pin", o2heaterPin field = "Idle Solenoid Pin", idle_solenoidPin field = "Idle Stepper Dir", idle_stepperDirectionPin field = "Idle Stepper Dir Mode", stepperDirectionPinMode field = "Idle Stepper Step", idle_stepperStepPin field = "Idle Stepper Enable", stepperEnablePin field = "Fuel Pump Pin", fuelPumpPin field = "ETB Dir #1", etbDirectionPin1 field = "ETB Dir #2", etbDirectionPin2 field = "ETB Control #1", etbControlPin1 field = "ETB Control #2", etbControlPin2 field = "SD CS Pin", sdCardCsPin field = "Check Engine Pin", malfunctionIndicatorPin field = "Aux Pin #1", auxPidPins1 field = "Aux Pin #2", auxPidPins2 field = "Aux Pin #3", auxPidPins3 field = "Aux Pin #4", auxPidPins4 dialog = allPins3 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 = "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 dialog = allPins4 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 = "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 dialog = allPins1_2, "", xAxis panel = allPins1 panel = allPins2 dialog = allPins3_4, "", xAxis panel = allPins3 panel = allPins4 dialog = allPins, "All Pins", xAxis panel = allPins1_2 panel = allPins3_4 ; Engine->CLT Thermistor Settings dialog = clt_thermistor, "CLT Thermistor Settings" field = "!Here is three pairs of thermistor temperature and his resistance." field = "!Typical temperatures is -40°C, 0°C and 100°C" field = "" field = "Lowest temperature", clt_tempC_1 field = "Resistance @ LT", clt_resistance_1 field = "" field = "Middle temperature", clt_tempC_2 field = "Resistance @ MT", clt_resistance_2 field = "" field = "Highest temperature", clt_tempC_3 field = "Resistance @ HT", clt_resistance_3 field = "Is linear?", useLinearCltSensor dialog = cltSensor_IO, "CLT Sensor I/O" field = "CLT ADC input", clt_adcChannel field = "Bias Resistor Value", clt_bias_resistor dialog = cltSensor, "", yAxis panel = clt_thermistor, North panel = cltSensor_IO, South ; Engine->IAT Thermistor Settings dialog = iat_thermistor, "IAT Thermistor Settings" field = "!Here is three pairs of thermistor temperature and his resistance." field = "!Typical temperatures is -40°C, 0°C and 100°C" field = "" field = "Lowest temperature", iat_tempC_1 field = "Resistance @ LT", iat_resistance_1 field = "" field = "Middle temperature", iat_tempC_2 field = "Resistance @ MT", iat_resistance_2 field = "" field = "Highest temperature", iat_tempC_3 field = "Resistance @ HT", iat_resistance_3 dialog = iatSensor_IO, "IAT Sensor I/O" field = "IAT ADC input", iat_adcChannel field = "Bias Resistor Value", iat_bias_resistor field = "Is linear?", useLinearIatSensor dialog = iatSensor, "", yAxis panel = iat_thermistor, North panel = iatSensor_IO, South dialog = oilp_settings, "Oil Pressure Sensor Settings" field = "low voltage", oilPressure_v1 field = "low pressure", oilPressure_value1 field = "high voltage", oilPressure_v2 field = "high pressure", oilPressure_value2 dialog = oilp_IO, "Oil Pressure Sensor I/O" field = "Oil Pressure ADC input", oilPressure_hwChannel dialog = oilPressureSensor, "", yAxis panel = oilp_settings, North panel = oilp_IO, South ; Engine->MAP Sensor Settings dialog = mapSensorVDlg, "Voltage Sensor Settings", xAxis field = "MAP ADC input", map_sensor_hwChannel, {hasFrequencyReportingMapSensor == 0} field = "Map type", map_sensor_type, {hasFrequencyReportingMapSensor == 0} field = "MAP value low point", map_sensor_lowValue, { map_sensor_type == 0 && hasFrequencyReportingMapSensor == 0} field = "MAP voltage low point", mapLowValueVoltage, { map_sensor_type == 0 && hasFrequencyReportingMapSensor == 0} field = "MAP value high point", map_sensor_highValue, { map_sensor_type == 0 && hasFrequencyReportingMapSensor == 0} field = "MAP voltage high value", mapHighValueVoltage, { map_sensor_type == 0 && hasFrequencyReportingMapSensor == 0} field = "Use minimal value of", mapMinBufferLength dialog = mapSensorFDlg, "Frequency Sensor Settings", xAxis field = "pin", frequencyReportingMapInputPin, {hasFrequencyReportingMapSensor == 1} field = "0 kPa freq", mapFrequency0Kpa, {hasFrequencyReportingMapSensor == 1} field = "100 kpa freq", mapFrequency100Kpa, {hasFrequencyReportingMapSensor == 1} dialog = mapCurves, "", border panel = map_samplingAngleCurve, West panel = map_samplingWindowCurve, East dialog = mapSwitch, "MAP input type" field = "frequency-based MAP", hasFrequencyReportingMapSensor dialog = mapVandF, "V and F" panel = mapSensorVDlg, North panel = mapSensorFDlg, South dialog = mapSwitchAndSettings, "Switch and Settings" field = "!ECU reboot needed to apply pin assignment" panel = mapSwitch, North panel = mapVandF, South dialog = mapSettings, "MAP Sensor Settings", border panel = mapCurves, North panel = mapSwitchAndSettings, South ; Engine->EGO Sensor Settings dialog = egoSettings_sensor, "EGO Sensor Settings" 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 = "AFR ADC input", afr_hwChannel field = "O2 heater pin", o2heaterPin dialog = egoSettings, "", yAxis panel = egoSettings_sensor, North panel = egoSettings_IO, South ; 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 = "Idle Solenoid Frequency", idle_solenoidFrequency, !useStepperIdle dialog = idleStepper, "Stepper" field = "Idle Stepper Step", idle_stepperStepPin, useStepperIdle field = "Idle Stepper Dir", idle_stepperDirectionPin, useStepperIdle field = "Idle Stepper Enable", stepperEnablePin, useStepperIdle field = "Idle Stepper Enable mode", stepperEnablePinMode, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle dialog = idleHwType, "Idle Valve Hardware", border field = "use stepper", useStepperIdle panel = idleSolenoid, West panel = idleStepper, East dialog = idlePidSettings, "PID control" field = "P-factor", idleRpmPid_pFactor field = "I-factor", idleRpmPid_iFactor field = "D-factor", idleRpmPid_dFactor field = "Offset", idleRpmPid_offset field = "Min", idleRpmPid_minValue field = "Max", idleRpmPid_maxValue dialog = idleSettings, "", yAxis field = "!Automatic Mode is now Beta Version" field = "Idle control mode", idleMode field = "Use separate Advance Table for idle", useSeparateAdvanceForIdle field = "Use separate VE Table for idle", useSeparateVeForIdle field = "Cranking Idle Air", crankingIACposition field = "TPS deactivation threshold", idlePidDeactivationTpsThreshold field = "#See Idle Target RPM Curve" panel = idlePidSettings, { idleMode == 0} field = "period", idleRpmPid_period field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone, { idleMode == 0} field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit, { idleMode == 0} field = "iacByTpsTaper", iacByTpsTaper; field = "verbose", isVerboseIAC slider = "Manual Idle Position", manIdlePosition, horizontal field = "" panel = idleHwType ; Engine->Fan Settings dialog = fanSetting, "Fan Settings" field = "Fan On Temperature", fanOnTemperature field = "Fan Off Temperature", fanOffTemperature field = "" field = "!ECU reboot needed to apply these settings" field = "Fan Pin Mode", fanPinMode field = "Fan Pin", fanPin ; Engine->Main Relay Settings dialog = mainRealay, "Main Relay Settings" field = "!ECU reboot needed to apply these settings" field = "Main Relay Mode", mainRelayPinMode field = "Main Relay Pin", mainRelayPin ; Engine->Fuel Pump Settings dialog = fuelPump, "Fuel Pump Settings" field = "!ECU reboot needed to apply these settings" field = "Fuel Pump Pin Mode", fuelPumpPinMode field = "Fuel Pump Pin", fuelPumpPin ; Engine->MIL Settings dialog = malfunction, "Check Engine Settings" field = "!ECU reboot needed to apply these settings" field = "Check Engine Pin Mode", malfunctionIndicatorPinMode field = "Check Engine Pin", malfunctionIndicatorPin field = "Warning Period", warningPeriod ; Engine->hip9011 Settings dialog = hipFunction, "HIP9011 Settings (knock decoder)" field = "Enabled", isHip9011Enabled field = "Threshold", knockVThreshold, {isHip9011Enabled == 1} field = "!ECU reboot needed to apply these settings" field = "IntHold pin (hip9011 input)", hip9011IntHoldPin, {isHip9011Enabled == 1} field = "IntHold pin (hip9011 input) mode", hip9011IntHoldPinMode, {isHip9011Enabled == 1} field = "ChipSelect pin", hip9011CsPin, {isHip9011Enabled == 1} field = "ChipSelect mode", hip9011CsPinMode, {isHip9011Enabled == 1} field = "hip Output/stm input", hipOutputChannel, {isHip9011Enabled == 1} field = "prescaler & SDO", hip9011PrescalerAndSDO, {isHip9011Enabled == 1} field = "Band Freq override", knockBandCustom, {isHip9011Enabled == 1} field = "SPI device", hip9011SpiDevice, {isHip9011Enabled == 1} field = "SPI1sck", spi1SckMode, {isHip9011Enabled == 1} field = "SPI1mosi", spi1MosiMode, {isHip9011Enabled == 1} field = "SPI1miso", spi1MisoMode, {isHip9011Enabled == 1} field = "SPI2sck", spi2SckMode, {isHip9011Enabled == 1} field = "SPI2mosi", spi2MosiMode, {isHip9011Enabled == 1} field = "SPI2miso", spi2MisoMode, {isHip9011Enabled == 1} field = "SPI3sck", spi3SckMode, {isHip9011Enabled == 1} field = "SPI3mosi", spi3MosiMode, {isHip9011Enabled == 1} field = "SPI3miso", spi3MisoMode, {isHip9011Enabled == 1} panel = knockThresholdCurve ; Engine->cj125 Settings dialog = cj125Function, "CJ125 Settings (wbo decoder)" field = "Enabled", isCJ125Enabled field = "!ECU reboot needed to apply these settings" field = "ChipSelect pin", cj125CsPin, {isCJ125Enabled == 1} field = "ChipSelect mode", cj125CsPinMode, {isCJ125Enabled == 1} field = "SPI device", cj125SpiDevice field = "Heater pin", wboHeaterPin, {isCJ125Enabled == 1} field = "UA input", cj125ua, {isCJ125Enabled == 1} field = "UR input", cj125ur, {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 = "SPI1 MISO", spi1misoPin, {is_enabled_spi_1 == 1} field = "SPI1 SCK", spi1sckPin, {is_enabled_spi_1 == 1} field = "SPI2 enable", is_enabled_spi_2 field = "SPI2 MOSI", spi2mosiPin, {is_enabled_spi_2 == 1} field = "SPI2 MISO", spi2misoPin, {is_enabled_spi_2 == 1} field = "SPI2 SCK", spi2sckPin, {is_enabled_spi_2 == 1} field = "SPI3 enable", is_enabled_spi_3 field = "SPI3 MOSI", spi3mosiPin, {is_enabled_spi_3 == 1} field = "SPI3 MISO", spi3misoPin, {is_enabled_spi_3 == 1} field = "SPI3 SCK", spi3sckPin, {is_enabled_spi_3 == 1} field = "LIS302DLCsPin", LIS302DLCsPin, {is_enabled_spi_1 == 1} dialog = fuelClosedLoopDialog, "Fuel short-term closed-loop correction" field = "#This is just the cherry on the cake once you have good VE table" field = "Enabled", fuelClosedLoopCorrectionEnabled field = "!No correction below these value" field = "CLT - low threshod", fuelClosedLoopCltThreshold, {fuelClosedLoopCorrectionEnabled == 1} field = "RPM - low threshod", fuelClosedLoopRpmThreshold, {fuelClosedLoopCorrectionEnabled == 1} field = "EGO - low threshod", fuelClosedLoopAfrLowThreshold, {fuelClosedLoopCorrectionEnabled == 1} field = "!No correction above these value" field = "TPS - high threshod", fuelClosedLoopTpsThreshold, {fuelClosedLoopCorrectionEnabled == 1} field = "EGO - high threshod", fuelClosedLoopAfrHighThreshold, {fuelClosedLoopCorrectionEnabled == 1} field = "!PID settings" field = "P factor", fuelClosedLoopPid_pFactor, {fuelClosedLoopCorrectionEnabled == 1} field = "I factor", fuelClosedLoopPid_iFactor, {fuelClosedLoopCorrectionEnabled == 1} field = "D factor", fuelClosedLoopPid_dFactor, {fuelClosedLoopCorrectionEnabled == 1} dialog = auxPidDialog, "Aux PID" field = "Enabled", activateAuxPid1 field = "FSIO pin #1", auxPidPins1 field = "PWM Frequency", auxPidFrequency1 field = "verbose", isVerboseAuxPid1 field = "#target based on FSIO map#1" field = "control period", auxPid1_period, {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 = "Verbose", isVerboseAlternator, {isAlternatorControlEnabled == 1} field = "control period", alternatorControl_period, {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 = warmupFuelDialog, "Warmup fuel closed-loop", yAxis field = "use automatic Pid Afr control", useWarmupPidAfr field = "warmup temperature Threshold", warmupAfrThreshold field = "wa offset", warmupAfrPid_offset field = "wa P factor", warmupAfrPid_pFactor field = "wa I factor", warmupAfrPid_iFactor field = "wa D factor", warmupAfrPid_dFactor field = "#correction = Pterm + Iterm + Dterm + offset" dialog = energySystems, "Battery and Alternator Settings", yAxis panel = batteryDialog panel = alternator ; Engine->Speed Sensor dialog = speedSensor, "Speed Sensor Settings" field = "Input pin", vehicleSpeedSensorInputPin field = "revolution to speed mult", vehicleSpeedCoef ; Engine->Other inputs dialog = analogInputs, "Analog inputs" field = "!ECU reboot needed to apply these settings" field = "TPS ADC input", tpsAdcChannel field = "TPS low value detection threshold", tpsErrorDetectionTooLow field = "TPS high value detection threshold", tpsErrorDetectionTooHigh field = "!todo: move MAF channel to maf curve dialog" field = "MAF ADC input", mafAdcChannel field = "Baro ADC input", baroSensor_hwChannel field = "Flex Fuel", flexFuelSensor field = "Use fixed baro corr from MAP", useFixedBaroCorrFromMap field = "Analog divider", analogInputDividerCoefficient field = "Use BiQuad averaging", useBiQuadAnalogFiltering field = "Smoothing factor", slowAdcAlpha, {useBiQuadAnalogFiltering == 0} field = "Bi_Q a0", biQuad_a0, {useBiQuadAnalogFiltering == 1} field = "Bi_Q a1", biQuad_a1, {useBiQuadAnalogFiltering == 1} field = "Bi_Q a2", biQuad_a2, {useBiQuadAnalogFiltering == 1} field = "Bi_Q b1", biQuad_b1, {useBiQuadAnalogFiltering == 1} field = "Bi_Q b2", biQuad_b2, {useBiQuadAnalogFiltering == 1} dialog = tachSettings, "Tachometer output" field = "!See also dizzySparkOutputPin" field = "pin", tachOutputPin field = "pin mode", tachOutputPinMode field = "rise at trigger index", tachPulseTriggerIndex field = "pulse duration is duty cycle", tachPulseDurationAsDutyCycle field = "pulse duration", tachPulseDuractionMs ; Board->Connection dialog = tsPort, "TunerStudio Port" field = "tunerStudioSerialSpeed", tunerStudioSerialSpeed field = "Use PC10/PC11 serial?", useSerialPort field = "startConsoleInBinaryMode", startConsoleInBinaryMode field = "uartConsoleSerialSpeed", uartConsoleSerialSpeed dialog = canBus, "CAN Bus" field = "Can Read Enabled", canReadEnabled field = "Can Write Enabled", canWriteEnabled ; field = "Can Nbc Type", canNbcType field = "Can Sleep Period", canSleepPeriod field = "TX pin", canTxPin field = "RX pin", canRxPin dialog = sdCard, "SD Card Logger" field = "SdCard", isSdCardEnabled field = "CS Pin", sdCardCsPin field = "SPI", sdCardSpiDevice field = "log format", logFormat field = "Mass Storage", storageMode 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 = connectRight, "", yAxis panel = tsPort panel = canBus panel = sdCard panel = gpsReceiver field = "stm32 voltage", adcVcc dialog = connection, "", border panel = lcdScreen, East panel = connectRight, West dialog = joystickPanel, "Joystick" field = "joustick center button", joystickCenterPin field = "joustick button A", joystickAPin field = "joustick button B", joystickBPin field = "joustick button C", joystickCPin field = "joustick button D", joystickDPin dialog = monitoringSettings, "rusEfi Console Settings" field = "Sensor Sniffer", sensorChartMode field = " Threshold", sensorSnifferRpmThreshold field = " Each X cycle", sensorChartFrequency field = "Engine Sniffer", isEngineChartEnabled field = " Threshold", engineSnifferRpmThreshold ; Tuning->General dialog = generalSettings, "General" field = "http://rusefi.com/support" field = "RPM Hard Limit", rpmHardLimit field = "Boost Cut Pressure", boostCutPressure field = "" field = "http://rusefi.com/fuel" field = "Fuel Algorithm", fuelAlgorithm field = "" field = "#System hack's" field = "Global fuel correction", globalFuelCorrection field = "Ignition Math Logic @", ignMathCalculateAtIndex field = "MAP Averaging Logic @", mapAveragingSchedulingAtIndex field = "comm status pin", communicationPin field = "running status", runningPin dialog = crankingFuel, "Fuel" field = "Injection Mode", crankingInjectionMode field = "Base Fuel Pulse Width", cranking_baseFuel dialog = crankingIgnition, "Ignition" field = "Advance", crankingTimingAngle field = "Use fixed Dwell?", useConstantDwellDuringCranking field = "Fixed Dwell", ignitionDwellForCrankingMs, {useConstantDwellDuringCranking == 1} field = "Charge Angle", crankingChargeAngle, {useConstantDwellDuringCranking == 0} dialog = postCrankingEnrichment, "Post-cranking short-time fuel enrichment" field = "Target temperature", postCrankingTargetClt field = "Post-Cranking factor", postCrankingFactor field = "Duraction", postCrankingDurationSec dialog = primingFuelPulsePanel, "Priming fuel pulse" field = "Duration at -40C degrees", startOfCrankingPrimingPulse field = "Falloff temperature", primeInjFalloffTemperature ; Tuning->Cranking dialog = crankingDialog, "Cranking" field = "Cranking RPM limit", cranking_rpm panel = crankingFuel panel = crankingIgnition field = "Cranking Idle Air", crankingIACposition panel = primingFuelPulsePanel panel = postCrankingEnrichment field = "" field = "" field = "enable Cylinder Cleanup", isCylinderCleanupEnabled field = "Override IAC Multiplier for Cranking", overrideCrankingIacSetting field = "Startup fuel pump prime", startUpFuelPumpDuration field = "After cranking IAC taper duration", afterCrankingIACtaperDuration 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 = "Length", tpsAccelLength field = "Accel Threshold", tpsAccelEnrichmentThreshold field = "Decel Threshold", tpsDecelEnleanmentThreshold ; field = "Decel Multiplier", tpsDecelEnleanmentMultiplier dialog = WallWettingAccelPanel, "Wall Wetting (alpha version)" field = "sucked off wall coefficient", suckedOffCoef field = "added to wall coef", addedToWallCoef ; 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 = "" field = "" 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 = "#1", fsioFormulas1 field = "#2", fsioFormulas2 field = "#3", fsioFormulas3 field = "#4", fsioFormulas4 field = "#5", fsioFormulas5 field = "#6", fsioFormulas6 field = "#7", fsioFormulas7 field = "#8", fsioFormulas8 field = "#9", fsioFormulas9 field = "#10", fsioFormulas10 field = "#11", fsioFormulas11 field = "#12", fsioFormulas12 field = "#13", fsioFormulas13 field = "#14", fsioFormulas14 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 = veTableDialogNorth field = "Volumetric Efficiency is used to calculate fuel in Speed Density mode" field = "http://rusefi.com/fuel" dialog = veTableDialog, "VE Table" panel = veTableDialogNorth, North panel = veTableTbl, South dialog = veTableDialog3D, "VE Table" panel = veTableDialogNorth, North panel = veTableMap, South dialog = etbDialog, "Electronic Thtottle Body (alpha)" field = "pedal Position Channel", pedalPositionChannel field = "verbose", isVerboseETB field = "Throttle Pedal Up", throttlePedalUpVoltage field = "Throttle Pedal Wide Open", throttlePedalWOTVoltage field = "PWM Frequency", etbFreq, {pedalPositionChannel != 16} field = "Dir #1", etbDirectionPin1, {pedalPositionChannel != 16} field = "Dir #2", etbDirectionPin2, {pedalPositionChannel != 16} field = "Control #1", etbControlPin1, {pedalPositionChannel != 16} field = "Control #2", etbControlPin2, {pedalPositionChannel != 16} field = "pFactor", etb_pFactor, {pedalPositionChannel != 16} field = "iFactor", etb_iFactor, {pedalPositionChannel != 16} field = "dFactor", etb_dFactor, {pedalPositionChannel != 16} field = "offset", etb_offset, {pedalPositionChannel != 16} field = "control period", etb_period, {pedalPositionChannel != 16} field = "pid min", etb_minValue, {pedalPositionChannel != 16} field = "pid max", etb_maxValue, {pedalPositionChannel != 16} dialog = testSpark, "Spark" commandButton = "Spark #1", cmd_test_spk1 commandButton = "Spark #2", cmd_test_spk2 commandButton = "Spark #3", cmd_test_spk3 commandButton = "Spark #4", cmd_test_spk4 commandButton = "Spark #5", cmd_test_spk5 commandButton = "Spark #6", cmd_test_spk6 commandButton = "Spark #7", cmd_test_spk7 commandButton = "Spark #8", cmd_test_spk8 dialog = testInjectors, "Fuel" commandButton = "Injector #1", cmd_test_inj1 commandButton = "Injector #2", cmd_test_inj2 commandButton = "Injector #3", cmd_test_inj3 commandButton = "Injector #4", cmd_test_inj4 commandButton = "Injector #5", cmd_test_inj5 commandButton = "Injector #6", cmd_test_inj6 commandButton = "Injector #7", cmd_test_inj7 commandButton = "Injector #8", cmd_test_inj8 dialog = testMisc, "Misc" commandButton = "Come To Pit", cmd_call_from_pit commandButton = "Fuel Pump", cmd_test_fuel_pump commandButton = "Radiator Fan", cmd_test_radiator_fan commandButton = "Check Engine", cmd_test_check_engine_light commandButton = "Idle Air Valve", cmd_test_idle_valve commandButton = "Stop Engine", cmd_stop_engine ; bench test dialog = ioTest, "I-O Test", border panel = testSpark, West panel = testInjectors, Center panel = testMisc, East ; Board->ECU stimulator dialog = ecuStimulator, "ECU stimulator" field = "Trigger Simulator", triggerSimulatorFrequency field = "self-stimulation", directSelfStimulation field = "" field = "digipot spi", digitalPotentiometerSpiDevice field = "digipot CS #0", digitalPotentiometerChipSelect1 field = "digipot CS #1", digitalPotentiometerChipSelect2 field = "digipot CS #2", digitalPotentiometerChipSelect3 field = "digipot CS #3", digitalPotentiometerChipSelect4 field = "" field = "trigger stimulator pin #1", triggerSimulatorPins1 field = "trigger stimulator pin #2", triggerSimulatorPins2 field = "trigger stimulator pin #3", triggerSimulatorPins3 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 ; Racing Features->Launch Control dialog = smLaunchControl, "Launch Control Settings" field = "RPM Step1 Limit", step1rpm field = "Launch RPM Window" step1RpmWindow field = "Step1 Ignition Advance", step1timing field = "Use Spark Cut", step1SparkCutEnable field = "Use Fuel Cut", step1fuelCutEnable field = "clutchDownPin", clutchDownPin field = "clutchUpPin", clutchUpPin field = "brakePedalPin", brakePedalPin [Tools] ;addTool = toolName, PanelName addTool = veTableGenerator, "VE Table Generator", veTableTbl addTool = afrTableGenerator, "AFR Table Generator", afrTableTbl