struct_no_prefix ts_outputs_s bit sd_present bit isIgnitionEnabledIndicator; bit isInjectionEnabledIndicator; bit sd_logging_internal bit isCylinderCleanupActivated; bit isFuelPumpOn; bit isFanOn; bit isO2HeaterOn; bit checkEngine; bit needBurn; bit sd_msd bit clutchUpState; bit clutchDownState; bit isFan2On bit unusedb14; bit brakePedalState; bit toothLogReady; bit acSwitchState; bit isTpsError; bit isCltError; bit isMapError; bit isIatError; bit acState; bit isTriggerError; bit hasCriticalError; bit isWarnNow; bit isPedalError; bit isKnockChipOk; bit launchTriggered; bit isTps2Error; bit isIdleClosedLoop; bit isIdleCoasting; uint16_t autoscale RPMValue;@@GAUGE_NAME_RPM@@;"RPM",1, 0, 0, 0, 0 uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 0, 0 uint16_t autoscale speedToRpmRatio;s2rpm;"value",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint8_t autoscale vehicleSpeedKph;@@GAUGE_NAME_VVS@@;"kph",1, 0, 0, 0, 0 uint8_t autoscale internalMcuTemperature;@@GAUGE_NAME_CPU_TEMP@@;"deg C",1, 0, 0, 0, 0 uint16_t autoscale coolant;@@GAUGE_NAME_CLT@@;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0 uint16_t autoscale intake;@@GAUGE_NAME_IAT@@;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0 uint16_t autoscale auxTemp1;;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0 uint16_t autoscale auxTemp2;;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0 uint16_t autoscale TPSValue;@@GAUGE_NAME_TPS@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale throttlePedalPosition;@@GAUGE_NAME_THROTTLE_PEDAL@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t tpsADC;;"ADC", 1, 0, 0, 0, 0 uint16_t autoscale MAFValue;@@GAUGE_NAME_MAF@@;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale massAirFlowValue;@@GAUGE_NAME_AIR_FLOW@@;"Kg/h",{1/@@PACK_MULT_MASS_FLOW@@}, 0, 0, 0, 0 uint16_t autoscale MAPValue;@@GAUGE_NAME_MAP@@;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 0 uint16_t autoscale baroPressure;;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 0 uint16_t autoscale lambdaValue;@@GAUGE_NAME_LAMBDA@@;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 0 uint8_t autoscale knockRetard;;"deg",{1/10}, 0, 0, 0, 0 uint8_t unused37;;"",1, 0, 0, 0, 0 uint16_t autoscale VBatt;@@GAUGE_NAME_VBAT@@;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale oilPressure;@@GAUGE_NAME_OIL_PRESSURE@@;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 0 uint16_t autoscale vvtPositionB1I;@@GAUGE_NAME_VVT_B1I@@;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0 uint16_t autoscale chargeAirMass;@@GAUGE_NAME_AIR_MASS@@;"g",{1/1000}, 0, 0, 0, 0 uint16_t autoscale crankingFuelMs;crankingFuelMs\nairmass in mg, 0-65 grams;"ms",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 0 uint16_t autoscale currentTargetAfr;@@GAUGE_NAME_TARGET_AFR@@;"ratio",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 0 uint16_t autoscale baseFuel;@@GAUGE_NAME_FUEL_BASE@@\nThis is the raw value we take from the fuel map or base fuel algorithm, before the corrections;"mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 0 uint16_t autoscale fuelRunning;@@GAUGE_NAME_FUEL_RUNNING@@\nTotal fuel with CLT IAT and TPS acceleration without injector lag corrections per cycle, as pulse per cycle;"mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 0 uint16_t autoscale actualLastInjection;@@GAUGE_NAME_FUEL_LAST_INJECTION@@\nActual last injection time - including all compensation and injection mode;"ms",{1/@@PACK_MULT_MS@@}, 0, 0, 0, 0 uint8_t autoscale injectorDutyCycle;@@GAUGE_NAME_FUEL_INJ_DUTY@@;"%",{1/2}, 0, 0, 0, 0 uint8_t autoscale veValue;@@GAUGE_NAME_FUEL_VE@@;"ratio",{1/2}, 0, 0, 0, 0 uint16_t autoscale injectionOffset;;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0 uint16_t autoscale tCharge;;"deg C",{1/@@PACK_MULT_TEMPERATURE@@}, 0, 0, 0, 0 ! Corrections uint16_t autoscale injectorLagMs;@@GAUGE_NAME_INJECTOR_LAG@@;"ms",{1/@@PACK_MULT_MS@@}, 0, 0, 0, 0 uint16_t autoscale iatCorrection;@@GAUGE_NAME_FUEL_IAT_CORR@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale cltCorrection;@@GAUGE_NAME_FUEL_CLT_CORR@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale baroCorrection;@@GAUGE_NAME_FUEL_BARO_CORR@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale currentEnginePhase;"Engine Phase";"deg",1, 0, 0, 0, 0 ! Wall model AE uint16_t autoscale wallFuelAmount;;"mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 0 int16_t autoscale wallFuelCorrection;;"mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 0 uint16_t unused76;;"",1, 0, 0, 0, 0 uint16_t autoscale deltaTps;TPS acceleration enrichment;"ratio",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t unused80;;"",1, 0, 0, 0, 0 uint16_t autoscale tpsAccelFuel;;"ms",{1/@@PACK_MULT_MS@@}, 0, 0, 0, 0 ! Ignition uint16_t autoscale ignitionAdvance;;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0 uint16_t autoscale sparkDwellValue;;"ms",{1/@@PACK_MULT_MS@@}, 0, 0, 0, 0 uint16_t autoscale coilDutyCycle;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 ! Idle & ETB uint16_t autoscale idleAirValvePosition;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale etbTarget;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale etb1DutyCycle;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale etb1Error;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 ! Fuel system uint16_t autoscale fuelTankLevel;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale totalFuelConsumption;;"grams",1, 0, 0, 0, 0 uint16_t autoscale fuelFlowRate;;"gram/s",{1/@@PACK_MULT_FUEL_FLOW@@}, 0, 0, 0, 0 ! Y axis values for selectable tables uint16_t autoscale veTableYAxis;;"%",{1/100}, 0, 0, 0, 0 uint16_t autoscale afrTableYAxis;;"%",{1/100}, 0, 0, 0, 0 float autoscale knockLevel;;"Volts", 1, 0, 0, 0, 0 ! integration magic: TS requires exact 'seconds' name uint32_t autoscale seconds;@@GAUGE_NAME_UPTIME@@;"sec", 1, 0, 0, 0, 0 uint32_t autoscale engineMode;;"em", 1, 0, 0, 0, 0 uint32_t autoscale firmwareVersion;@@GAUGE_NAME_VERSION@@;"version_f", 1, 0, 0, 0, 0 ! todo: this not needed in light of TS_SIGNATURE but rusEFI console still uses it. Need to migrate ! rusEFI console from TS_FILE_VERSION to TS_SIGNATURE :( uint32_t autoscale tsConfigVersion;;"", 1, 0, 0, 0, 0 ! These two fields indicate to TS that we'd like to set a particular field to a particular value ! We use a maintainConstantValue in TS for each field we'd like to set, like this: ! maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax } ! maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin } ! When the mode is set to a particular value, TS will copy the calibrationValue in to the specified field. ! ! With this simple construct, the ECU can send any number of internally computed configuration fields ! back to TunerStudio, getting around the problem of setting values on the controller without TS's knowledge. ! The ECU simply has to sequentially set a mode/value, wait briefly, then repeat until all the values ! it wants to send have been sent. float autoscale calibrationValue;;"", 1, 0, 0, 0, 0 uint8_t autoscale calibrationMode;;"", 1, 0, 0, 0, 0 uint8_t autoscale padding;;"", 1, 0, 0, 0, 0 ! Values used for load axes for fuel/ign tables ! These may or may not be the same value, depending on mode uint16_t autoscale fuelingLoad;;"%",{1/100}, 0, 0, 0, 0 uint16_t autoscale ignitionLoad;;"%",{1/100}, 0, 0, 0, 0 ! we want a hash of engineMake+engineCode+vehicleName in the log file in order to match TS logs to rusEFI Online tune uint16_t autoscale engineMakeCodeNameCrc16;;"crc16",1, 0, 0, 0, 0 ! Errors uint32_t autoscale totalTriggerErrorCounter;;"counter",1, 0, 0, 0, 0 uint32_t orderingErrorCounter;;"",1, 0, 0, 0, 0 uint16_t autoscale warningCounter;;"count",1, 0, 0, 0, 0 uint16_t autoscale lastErrorCode;;"error",1, 0, 0, 0, 0 uint16_t[8 iterate] recentErrorCode;;"error", 1, 0, 0, 0, 0 float autoscale debugFloatField1;;"val", 1, 0, 0, 0, 0 float autoscale debugFloatField2;;"val", 1, 0, 0, 0, 0 float autoscale debugFloatField3;;"val", 1, 0, 0, 0, 0 float autoscale debugFloatField4;;"val", 1, 0, 0, 0, 0 float autoscale debugFloatField5;;"val", 1, 0, 0, 0, 0 float autoscale debugFloatField6;;"val", 1, 0, 0, 0, 0 float autoscale debugFloatField7;;"val", 1, 0, 0, 0, 0 uint32_t autoscale debugIntField1;;"val", 1, 0, 0, 0, 0 uint32_t autoscale debugIntField2;;"val", 1, 0, 0, 0, 0 uint32_t autoscale debugIntField3;;"val", 1, 0, 0, 0, 0 uint16_t autoscale debugIntField4;;"val", 1, 0, 0, 0, 0 uint16_t autoscale debugIntField5;;"val", 1, 0, 0, 0, 0 uint16_t autoscale accelerationX;;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale accelerationY;;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t[EGT_CHANNEL_COUNT iterate] egt;;"deg C", 1, 0, 0, 0, 0 uint16_t autoscale TPS2Value;@@GAUGE_NAME_TPS2@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale rawTps1Primary;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale rawPpsPrimary;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale rawClt;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale rawIat;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale rawOilPressure;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale tuneCrc16;;"crc16", 1, 0, 0, 0, 0 uint8_t autoscale unusedAt246;;"", 1, 0, 0, 0, 0 uint8_t autoscale tcuCurrentGear;;"gear", 1, 0, 0, 0, 0 uint16_t autoscale rawPpsSecondary;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint8_t[12 iterate] autoscale knock;;"",1, 0, 0, 0, 0 uint8_t autoscale tcuDesiredGear;;"gear",1, 0, 0, 0, 0 uint8_t autoscale flexPercent;;"%",{1/2}, 0, 0, 0, 0 uint16_t autoscale rawIdlePositionSensor;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale rawWastegatePosition;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale wastegatePositionSensor;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale idlePositionSensor;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale rawLowFuelPressure;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale rawHighFuelPressure;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale lowFuelPressure;;"kpa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 0, 0 uint16_t autoscale highFuelPressure;;"bar",{1/@@PACK_MULT_HIGH_PRESSURE@@}, 0, 0, 0, 0 uint16_t autoscale targetLambda;;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 0 uint16_t autoscale AFRValue;@@GAUGE_NAME_AFR@@;"AFR",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 0 uint16_t autoscale VssAcceleration;"Vss Accel";"m/s2",{1/@@PACK_MULT_MS@@}, 0, 0, 0, 0 uint16_t autoscale lambdaValue2;@@GAUGE_NAME_LAMBDA2@@;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 0 uint16_t autoscale AFRValue2;@@GAUGE_NAME_AFR2@@;"AFR",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 0 uint16_t autoscale vvtPositionB1E;;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0 uint16_t autoscale vvtPositionB2I;;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0 uint16_t autoscale vvtPositionB2E;;"deg",{1/@@PACK_MULT_ANGLE@@}, 0, 0, 0, 0 uint16_t[2 iterate] autoscale fuelPidCorrection;;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale rawTps1Secondary;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale rawTps2Primary;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t autoscale rawTps2Secondary;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 0, 0 uint16_t knockCount;;"",1, 0, 0, 0, 0 uint16_t autoscale accelerationZ;;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale accelerationRoll;;"",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint16_t autoscale accelerationYaw;;"",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 0 uint8_t[4 iterate] autoscale vvtTargets;;"deg",1, 0, 0, 0, 0 uint16_t turboSpeed;;"hz",1, 0, 0, 0, 0 ! we have some unused bytes to allow compatible TS changes uint8_t[20 iterate] unusedAtTheEnd;;"",1, 0, 0, 0, 0 end_struct