From fa940029ec95f5f1c8c248699dba8f58972db57d Mon Sep 17 00:00:00 2001 From: rusefillc Date: Mon, 10 Oct 2022 07:52:20 -0400 Subject: [PATCH] SD card log fields list should be auto-generated #3985 --- firmware/console/binary_log/sd_fields.h | 530 ++++++++++++++++++++++++ 1 file changed, 530 insertions(+) create mode 100644 firmware/console/binary_log/sd_fields.h diff --git a/firmware/console/binary_log/sd_fields.h b/firmware/console/binary_log/sd_fields.h new file mode 100644 index 0000000000..a647e2bd55 --- /dev/null +++ b/firmware/console/binary_log/sd_fields.h @@ -0,0 +1,530 @@ +static constexpr LogField fields[] = { + {engine->outputChannels.sd_present, "sd_present", "", -1}, + {engine->outputChannels.sd_logging_internal, "sd_logging_internal", "", -1}, + {engine->outputChannels.unusedb4, "unusedb4", "", -1}, + {engine->outputChannels.unusedb5, "unusedb5", "", -1}, + {engine->outputChannels.isFanOn, "radiator fan", "", -1}, + {engine->outputChannels.isO2HeaterOn, "isO2HeaterOn", "", -1}, + {engine->outputChannels.checkEngine, "checkEngine", "", -1}, + {engine->outputChannels.needBurn, "needBurn", "", -1}, + {engine->outputChannels.sd_msd, "sd_msd", "", -1}, + {engine->outputChannels.isFan2On, "isFan2On", "", -1}, + {engine->outputChannels.unusedBitLAtwfs, "unusedBitLAtwfs", "", -1}, + {engine->outputChannels.toothLogReady, "toothLogReady", "", -1}, + {engine->outputChannels.unused3123, "unused3123", "", -1}, + {engine->outputChannels.isTpsError, "isTpsError", "", -1}, + {engine->outputChannels.isCltError, "isCltError", "", -1}, + {engine->outputChannels.isMapError, "isMapError", "", -1}, + {engine->outputChannels.isIatError, "isIatError", "", -1}, + {engine->outputChannels.unused131313, "unused131313", "", -1}, + {engine->outputChannels.isTriggerError, "isTriggerError", "", -1}, + {engine->outputChannels.hasCriticalError, "hasCriticalError", "", -1}, + {engine->outputChannels.isWarnNow, "isWarnNow", "", -1}, + {engine->outputChannels.isPedalError, "isPedalError", "", -1}, + {engine->outputChannels.isKnockChipOk, "isKnockChipOk", "", -1}, + {engine->outputChannels.launchTriggered, "launchTriggered", "", -1}, + {engine->outputChannels.isTps2Error, "isTps2Error", "", -1}, + {engine->outputChannels.isIdleClosedLoop, "isIdleClosedLoop", "", -1}, + {engine->outputChannels.unusedBit_26_26, "unusedBit_26_26", "", -1}, + {engine->outputChannels.unusedBit_26_27, "unusedBit_26_27", "", -1}, + {engine->outputChannels.unusedBit_26_28, "unusedBit_26_28", "", -1}, + {engine->outputChannels.unusedBit_26_29, "unusedBit_26_29", "", -1}, + {engine->outputChannels.unusedBit_26_30, "unusedBit_26_30", "", -1}, + {engine->outputChannels.unusedBit_26_31, "unusedBit_26_31", "", -1}, + {engine->outputChannels.RPMValue, "RPM", "RPM", 0}, + {engine->outputChannels.rpmAcceleration, "dRPM", "RPM/s", 0}, + {engine->outputChannels.speedToRpmRatio, "Gearbox Ratio", "value", 0}, + {engine->outputChannels.vehicleSpeedKph, "Vehicle Speed", "kph", 0}, + {engine->outputChannels.internalMcuTemperature, "CPU Temperature", "deg C", 0}, + {engine->outputChannels.coolant, "CLT", "deg C", 0}, + {engine->outputChannels.intake, "IAT", "deg C", 0}, + {engine->outputChannels.auxTemp1, "auxTemp1", "deg C", 0}, + {engine->outputChannels.auxTemp2, "auxTemp2", "deg C", 0}, + {engine->outputChannels.TPSValue, "TPS", "%", 0}, + {engine->outputChannels.throttlePedalPosition, "Throttle pedal position", "%", 0}, + {engine->outputChannels.tpsADC, "tpsADC", "ADC", 0}, + {engine->outputChannels.rawMaf, "rawMaf", "V", 3}, + {engine->outputChannels.mafMeasured, "MAF sensor", "kg/h", 0}, + {engine->outputChannels.MAPValue, "MAP", "kPa", 0}, + {engine->outputChannels.baroPressure, "baroPressure", "kPa", 0}, + {engine->outputChannels.lambdaValue, "Lambda", "", 0}, + {engine->outputChannels.knockRetard, "knock: retard", "deg", 0}, + {engine->outputChannels.idleCurrentPosition, "idleCurrentPosition", "%", 1}, + {engine->outputChannels.VBatt, "VBatt", "V", 0}, + {engine->outputChannels.oilPressure, "Oil Pressure", "kPa", 0}, + {engine->outputChannels.vvtPositionB1I, "VVT: bank 1 intake", "deg", 0}, + {engine->outputChannels.chargeAirMass, "air mass", "g", 0}, + {engine->outputChannels.crankingFuelMs, "crankingFuelMs", "ms", 0}, + {engine->outputChannels.currentTargetAfr, "fuel: target AFR", "ratio", 0}, + {engine->outputChannels.baseFuel, "fuel: base mass", "mg", 0}, + {engine->outputChannels.fuelRunning, "fuel: running", "mg", 0}, + {engine->outputChannels.actualLastInjection, "fuel: Last injection", "ms", 0}, + {engine->outputChannels.injectorDutyCycle, "fuel: injector duty cycle", "%", 0}, + {engine->outputChannels.veValue, "fuel: VE", "ratio", 0}, + {engine->outputChannels.injectionOffset, "injectionOffset", "deg", 0}, + {engine->outputChannels.tCharge, "tCharge", "deg C", 0}, + {engine->outputChannels.injectorLagMs, "fuel: injector lag", "ms", 0}, + {engine->outputChannels.engineMakeCodeNameCrc16, "Engine CRC16", "crc16", 0}, + {engine->outputChannels.wallFuelAmount, "fuel: wall amount", "mg", 0}, + {engine->outputChannels.wallFuelCorrection, "fuel: wall correction", "mg", 0}, + {engine->outputChannels.revolutionCounterSinceStart, "revolutionCounterSinceStart", "", 0}, + {engine->outputChannels.deltaTps, "fuel: TPS change", "ratio", 0}, + {engine->outputChannels.canReadCounter, "canReadCounter", "", 0}, + {engine->outputChannels.tpsAccelFuel, "fuel: TPS acceleration extra fuel ms", "ms", 0}, + {engine->outputChannels.ignitionAdvance, "timing", "deg", 0}, + {engine->outputChannels.sparkDwellValue, "dwell: coil charge time", "ms", 0}, + {engine->outputChannels.coilDutyCycle, "dwell: coil duty cycle", "%", 0}, + {engine->outputChannels.idleAirValvePosition, "Idle Air Valve", "%", 0}, + {engine->outputChannels.etbTarget, "ETB Target", "%", 0}, + {engine->outputChannels.etb1DutyCycle, "ETB Duty", "%", 0}, + {engine->outputChannels.etb1Error, "ETB Error", "%", 0}, + {engine->outputChannels.fuelTankLevel, "Fuel level", "%", 0}, + {engine->outputChannels.totalFuelConsumption, "fuel: Total consumed", "grams", 0}, + {engine->outputChannels.fuelFlowRate, "fuel: Flow rate", "gram/s", 0}, + {engine->outputChannels.veTableYAxis, "veTableYAxis", "%", 0}, + {engine->outputChannels.afrTableYAxis, "afrTableYAxis", "%", 0}, + {engine->outputChannels.alignmentFill_at_102, "need 4 byte alignment", "units", 0}, + {engine->outputChannels.knockLevel, "knock: current level", "Volts", 0}, + {engine->outputChannels.seconds, "Uptime", "sec", 0}, + {engine->outputChannels.engineMode, "Engine Mode", "em", 0}, + {engine->outputChannels.firmwareVersion, "firmware", "version_f", 0}, + {engine->outputChannels.rawIdlePositionSensor, "rawIdlePositionSensor", "V", 3}, + {engine->outputChannels.rawWastegatePosition, "rawWastegatePosition", "V", 3}, + {engine->outputChannels.tsConfigVersion, "tsConfigVersion", "", 0}, + {engine->outputChannels.calibrationValue, "calibrationValue", "", 0}, + {engine->outputChannels.calibrationMode, "calibrationMode", "", 0}, + {engine->outputChannels.idleTargetPosition, "idleTargetPosition", "", 0}, + {engine->outputChannels.alignmentFill_at_134, "need 4 byte alignment", "units", 0}, + {engine->outputChannels.totalTriggerErrorCounter, "Trigger Error Counter", "counter", 0}, + {engine->outputChannels.orderingErrorCounter, "orderingErrorCounter", "", 0}, + {engine->outputChannels.warningCounter, "warning: counter", "count", 0}, + {engine->outputChannels.lastErrorCode, "warning: last", "error", 0}, + {engine->outputChannels.recentErrorCode1, "recentErrorCode 1", "error", 0}, + {engine->outputChannels.recentErrorCode2, "recentErrorCode 2", "error", 0}, + {engine->outputChannels.recentErrorCode3, "recentErrorCode 3", "error", 0}, + {engine->outputChannels.recentErrorCode4, "recentErrorCode 4", "error", 0}, + {engine->outputChannels.recentErrorCode5, "recentErrorCode 5", "error", 0}, + {engine->outputChannels.recentErrorCode6, "recentErrorCode 6", "error", 0}, + {engine->outputChannels.recentErrorCode7, "recentErrorCode 7", "error", 0}, + {engine->outputChannels.recentErrorCode8, "recentErrorCode 8", "error", 0}, + {engine->outputChannels.debugFloatField1, "debugFloatField1", "val", 0}, + {engine->outputChannels.debugFloatField2, "debugFloatField2", "val", 0}, + {engine->outputChannels.debugFloatField3, "debugFloatField3", "val", 0}, + {engine->outputChannels.debugFloatField4, "debugFloatField4", "val", 0}, + {engine->outputChannels.debugFloatField5, "debugFloatField5", "val", 0}, + {engine->outputChannels.debugFloatField6, "debugFloatField6", "val", 0}, + {engine->outputChannels.debugFloatField7, "debugFloatField7", "val", 0}, + {engine->outputChannels.debugIntField1, "debugIntField1", "val", 0}, + {engine->outputChannels.debugIntField2, "debugIntField2", "val", 0}, + {engine->outputChannels.debugIntField3, "debugIntField3", "val", 0}, + {engine->outputChannels.debugIntField4, "debugIntField4", "val", 0}, + {engine->outputChannels.debugIntField5, "debugIntField5", "val", 0}, + {engine->outputChannels.accelerationX, "Acceleration: X", "G", 0}, + {engine->outputChannels.accelerationY, "Acceleration: Y", "G", 0}, + {engine->outputChannels.egt1, "egt 1", "deg C", 0}, + {engine->outputChannels.egt2, "egt 2", "deg C", 0}, + {engine->outputChannels.egt3, "egt 3", "deg C", 0}, + {engine->outputChannels.egt4, "egt 4", "deg C", 0}, + {engine->outputChannels.egt5, "egt 5", "deg C", 0}, + {engine->outputChannels.egt6, "egt 6", "deg C", 0}, + {engine->outputChannels.egt7, "egt 7", "deg C", 0}, + {engine->outputChannels.egt8, "egt 8", "deg C", 0}, + {engine->outputChannels.TPS2Value, "TPS2", "%", 0}, + {engine->outputChannels.rawTps1Primary, "rawTps1Primary", "V", 3}, + {engine->outputChannels.rawPpsPrimary, "rawPpsPrimary", "V", 3}, + {engine->outputChannels.rawClt, "rawClt", "V", 3}, + {engine->outputChannels.rawIat, "rawIat", "V", 3}, + {engine->outputChannels.rawOilPressure, "rawOilPressure", "V", 3}, + {engine->outputChannels.tuneCrc16, "Tune CRC16", "crc16", 0}, + {engine->outputChannels.fuelClosedLoopBinIdx, "fuelClosedLoopBinIdx", "", 0}, + {engine->outputChannels.tcuCurrentGear, "Current Gear", "gear", 0}, + {engine->outputChannels.rawPpsSecondary, "rawPpsSecondary", "V", 3}, + {engine->outputChannels.knock1, "knock 1", "dBv", 0}, + {engine->outputChannels.knock2, "knock 2", "dBv", 0}, + {engine->outputChannels.knock3, "knock 3", "dBv", 0}, + {engine->outputChannels.knock4, "knock 4", "dBv", 0}, + {engine->outputChannels.knock5, "knock 5", "dBv", 0}, + {engine->outputChannels.knock6, "knock 6", "dBv", 0}, + {engine->outputChannels.knock7, "knock 7", "dBv", 0}, + {engine->outputChannels.knock8, "knock 8", "dBv", 0}, + {engine->outputChannels.knock9, "knock 9", "dBv", 0}, + {engine->outputChannels.knock10, "knock 10", "dBv", 0}, + {engine->outputChannels.knock11, "knock 11", "dBv", 0}, + {engine->outputChannels.knock12, "knock 12", "dBv", 0}, + {engine->outputChannels.tcuDesiredGear, "Desired Gear", "gear", 0}, + {engine->outputChannels.flexPercent, "Flex Ethanol %", "%", 0}, + {engine->outputChannels.wastegatePositionSensor, "Wastegate position sensor", "%", 0}, + {engine->outputChannels.idlePositionSensor, "Idle position sensor", "%", 0}, + {engine->outputChannels.rawLowFuelPressure, "rawLowFuelPressure", "V", 3}, + {engine->outputChannels.rawHighFuelPressure, "rawHighFuelPressure", "V", 3}, + {engine->outputChannels.lowFuelPressure, "Fuel pressure (low)", "kpa", 0}, + {engine->outputChannels.highFuelPressure, "Fuel pressure (high)", "bar", 0}, + {engine->outputChannels.targetLambda, "fuel: target lambda", "", 0}, + {engine->outputChannels.AFRValue, "Air/Fuel Ratio", "AFR", 0}, + {engine->outputChannels.VssAcceleration, "Vss Accel", "m/s2", 0}, + {engine->outputChannels.lambdaValue2, "Lambda 2", "", 0}, + {engine->outputChannels.AFRValue2, "Air/Fuel Ratio 2", "AFR", 0}, + {engine->outputChannels.vvtPositionB1E, "VVT: bank 1 exhaust", "deg", 0}, + {engine->outputChannels.vvtPositionB2I, "VVT: bank 2 intake", "deg", 0}, + {engine->outputChannels.vvtPositionB2E, "VVT: bank 2 exhaust", "deg", 0}, + {engine->outputChannels.fuelPidCorrection1, "fuelPidCorrection 1", "%", 2}, + {engine->outputChannels.fuelPidCorrection2, "fuelPidCorrection 2", "%", 2}, + {engine->outputChannels.rawTps1Secondary, "rawTps1Secondary", "V", 3}, + {engine->outputChannels.rawTps2Primary, "rawTps2Primary", "V", 3}, + {engine->outputChannels.rawTps2Secondary, "rawTps2Secondary", "V", 3}, + {engine->outputChannels.knockCount, "knock: count", "", 0}, + {engine->outputChannels.accelerationZ, "Acceleration: Z", "G", 0}, + {engine->outputChannels.accelerationRoll, "Acceleration: Roll", "G", 0}, + {engine->outputChannels.accelerationYaw, "Acceleration: Yaw", "G", 0}, + {engine->outputChannels.vvtTargets1, "vvtTargets 1", "deg", 0}, + {engine->outputChannels.vvtTargets2, "vvtTargets 2", "deg", 0}, + {engine->outputChannels.vvtTargets3, "vvtTargets 3", "deg", 0}, + {engine->outputChannels.vvtTargets4, "vvtTargets 4", "deg", 0}, + {engine->outputChannels.turboSpeed, "Turbocharger Speed", "hz", 0}, + {engine->outputChannels.tps1Split, "tps1Split", "%", 0}, + {engine->outputChannels.tps2Split, "tps2Split", "%", 0}, + {engine->outputChannels.tps12Split, "tps12Split", "%", 0}, + {engine->outputChannels.accPedalSplit, "accPedalSplit", "%", 0}, + {engine->outputChannels.sparkCutReason, "Spark Cut Code", "code", 0}, + {engine->outputChannels.fuelCutReason, "Fuel Cut Code", "code", 0}, + {engine->outputChannels.mafEstimate, "MAF estimate", "kg/h", 0}, + {engine->outputChannels.instantRpm, "instantRpm", "rpm", 0}, + {engine->outputChannels.systemEventReuse, "systemEventReuse", "counter", 0}, + {engine->outputChannels.rawMap, "rawMap", "V", 3}, + {engine->outputChannels.rawAfr, "rawAfr", "V", 3}, + {engine->outputChannels.tpsAccelFrom, "tpsAccelFrom", "%", 0}, + {engine->outputChannels.tpsAccelTo, "tpsAccelTo", "%", 0}, + {engine->outputChannels.alignmentFill_at_334, "need 4 byte alignment", "units", 0}, + {engine->outputChannels.calibrationValue2, "calibrationValue2", "", 0}, + {engine->outputChannels.isMainRelayOn, "isMainRelayOn", "", -1}, + {engine->outputChannels.isUsbConnected, "Original reason for this is to check if USB is connected from Lua", "", -1}, + {engine->outputChannels.unusedBit_170_2, "unusedBit_170_2", "", -1}, + {engine->outputChannels.unusedBit_170_3, "unusedBit_170_3", "", -1}, + {engine->outputChannels.unusedBit_170_4, "unusedBit_170_4", "", -1}, + {engine->outputChannels.unusedBit_170_5, "unusedBit_170_5", "", -1}, + {engine->outputChannels.unusedBit_170_6, "unusedBit_170_6", "", -1}, + {engine->outputChannels.unusedBit_170_7, "unusedBit_170_7", "", -1}, + {engine->outputChannels.unusedBit_170_8, "unusedBit_170_8", "", -1}, + {engine->outputChannels.unusedBit_170_9, "unusedBit_170_9", "", -1}, + {engine->outputChannels.unusedBit_170_10, "unusedBit_170_10", "", -1}, + {engine->outputChannels.unusedBit_170_11, "unusedBit_170_11", "", -1}, + {engine->outputChannels.unusedBit_170_12, "unusedBit_170_12", "", -1}, + {engine->outputChannels.unusedBit_170_13, "unusedBit_170_13", "", -1}, + {engine->outputChannels.unusedBit_170_14, "unusedBit_170_14", "", -1}, + {engine->outputChannels.unusedBit_170_15, "unusedBit_170_15", "", -1}, + {engine->outputChannels.unusedBit_170_16, "unusedBit_170_16", "", -1}, + {engine->outputChannels.unusedBit_170_17, "unusedBit_170_17", "", -1}, + {engine->outputChannels.unusedBit_170_18, "unusedBit_170_18", "", -1}, + {engine->outputChannels.unusedBit_170_19, "unusedBit_170_19", "", -1}, + {engine->outputChannels.unusedBit_170_20, "unusedBit_170_20", "", -1}, + {engine->outputChannels.unusedBit_170_21, "unusedBit_170_21", "", -1}, + {engine->outputChannels.unusedBit_170_22, "unusedBit_170_22", "", -1}, + {engine->outputChannels.unusedBit_170_23, "unusedBit_170_23", "", -1}, + {engine->outputChannels.unusedBit_170_24, "unusedBit_170_24", "", -1}, + {engine->outputChannels.unusedBit_170_25, "unusedBit_170_25", "", -1}, + {engine->outputChannels.unusedBit_170_26, "unusedBit_170_26", "", -1}, + {engine->outputChannels.unusedBit_170_27, "unusedBit_170_27", "", -1}, + {engine->outputChannels.unusedBit_170_28, "unusedBit_170_28", "", -1}, + {engine->outputChannels.unusedBit_170_29, "unusedBit_170_29", "", -1}, + {engine->outputChannels.unusedBit_170_30, "unusedBit_170_30", "", -1}, + {engine->outputChannels.unusedBit_170_31, "unusedBit_170_31", "", -1}, + {engine->outputChannels.luaInvocationCounter, "luaInvocationCounter", "count", 0}, + {engine->outputChannels.luaLastCycleDuration, "luaLastCycleDuration", "nt", 0}, + {engine->outputChannels.testBenchIter, "testBenchIter", "count", 0}, + {engine->outputChannels.tcu_currentRange, "Current Range", "", 0}, + {engine->outputChannels.tcRatio, "Torque Converter Ratio", "value", 0}, + {engine->outputChannels.lastShiftTime, "lastShiftTime", "", -1}, + {engine->outputChannels.vssEdgeCounter, "vssEdgeCounter", "", -1}, + {engine->outputChannels.issEdgeCounter, "issEdgeCounter", "", -1}, + {engine->outputChannels.auxLinear1, "Aux Linear 1", "", 0}, + {engine->outputChannels.auxLinear2, "Aux Linear 2", "", 0}, + {engine->outputChannels.dfcoActive, "dfcoActive", "", -1}, + {engine->outputChannels.tpsAccelActive, "tpsAccelActive", "", -1}, + {engine->outputChannels.unusedBit_212_2, "unusedBit_212_2", "", -1}, + {engine->outputChannels.unusedBit_212_3, "unusedBit_212_3", "", -1}, + {engine->outputChannels.unusedBit_212_4, "unusedBit_212_4", "", -1}, + {engine->outputChannels.unusedBit_212_5, "unusedBit_212_5", "", -1}, + {engine->outputChannels.unusedBit_212_6, "unusedBit_212_6", "", -1}, + {engine->outputChannels.unusedBit_212_7, "unusedBit_212_7", "", -1}, + {engine->outputChannels.unusedBit_212_8, "unusedBit_212_8", "", -1}, + {engine->outputChannels.unusedBit_212_9, "unusedBit_212_9", "", -1}, + {engine->outputChannels.unusedBit_212_10, "unusedBit_212_10", "", -1}, + {engine->outputChannels.unusedBit_212_11, "unusedBit_212_11", "", -1}, + {engine->outputChannels.unusedBit_212_12, "unusedBit_212_12", "", -1}, + {engine->outputChannels.unusedBit_212_13, "unusedBit_212_13", "", -1}, + {engine->outputChannels.unusedBit_212_14, "unusedBit_212_14", "", -1}, + {engine->outputChannels.unusedBit_212_15, "unusedBit_212_15", "", -1}, + {engine->outputChannels.unusedBit_212_16, "unusedBit_212_16", "", -1}, + {engine->outputChannels.unusedBit_212_17, "unusedBit_212_17", "", -1}, + {engine->outputChannels.unusedBit_212_18, "unusedBit_212_18", "", -1}, + {engine->outputChannels.unusedBit_212_19, "unusedBit_212_19", "", -1}, + {engine->outputChannels.unusedBit_212_20, "unusedBit_212_20", "", -1}, + {engine->outputChannels.unusedBit_212_21, "unusedBit_212_21", "", -1}, + {engine->outputChannels.unusedBit_212_22, "unusedBit_212_22", "", -1}, + {engine->outputChannels.unusedBit_212_23, "unusedBit_212_23", "", -1}, + {engine->outputChannels.unusedBit_212_24, "unusedBit_212_24", "", -1}, + {engine->outputChannels.unusedBit_212_25, "unusedBit_212_25", "", -1}, + {engine->outputChannels.unusedBit_212_26, "unusedBit_212_26", "", -1}, + {engine->outputChannels.unusedBit_212_27, "unusedBit_212_27", "", -1}, + {engine->outputChannels.unusedBit_212_28, "unusedBit_212_28", "", -1}, + {engine->outputChannels.unusedBit_212_29, "unusedBit_212_29", "", -1}, + {engine->outputChannels.unusedBit_212_30, "unusedBit_212_30", "", -1}, + {engine->outputChannels.unusedBit_212_31, "unusedBit_212_31", "", -1}, + {engine->outputChannels.boostControllerOutput, "Boost Output", "%", 1}, + {engine->outputChannels.boostControllerOpenLoopPart, "Boost Open Loop", "%", 1}, + {engine->outputChannels.fallbackMap, "fallbackMap", "kPa", 1}, + {engine->outputChannels.detectedGear, "Detected Gear", "", 0}, + {engine->outputChannels.alignmentFill_at_381, "need 4 byte alignment", "units", 0}, + {engine->outputChannels.instantMAPValue, "Instant MAP", "kPa", 2}, + {engine->outputChannels.maxLockedDuration, "maxLockedDuration", "us", 0}, + {engine->outputChannels.maxTriggerReentrant, "maxTriggerReentrant", "", 0}, + {engine->outputChannels.alignmentFill_at_387, "need 4 byte alignment", "units", 0}, + {engine->outputChannels.canWriteOk, "canWriteOk", "", 3}, + {engine->outputChannels.canWriteNotOk, "canWriteNotOk", "", 3}, + {engine->outputChannels.triggerPrimaryFall, "triggerPrimaryFall", "", 3}, + {engine->outputChannels.triggerPrimaryRise, "triggerPrimaryRise", "", 3}, + {engine->outputChannels.triggerSecondaryFall, "triggerSecondaryFall", "", 3}, + {engine->outputChannels.triggerSecondaryRise, "triggerSecondaryRise", "", 3}, + {engine->outputChannels.triggerVvtFall, "triggerVvtFall", "", 3}, + {engine->outputChannels.triggerVvtRise, "triggerVvtRise", "", 3}, + {engine->outputChannels.starterState, "starterState", "", 3}, + {engine->outputChannels.starterRelayDisable, "starterRelayDisable", "", 3}, + {engine->outputChannels.multiSparkCounter, "multiSparkCounter", "", 3}, + {engine->outputChannels.alignmentFill_at_419, "need 4 byte alignment", "units", 0}, + {engine->outputChannels.pTerm, "alternatorStatus.pTerm", "", 2}, + {engine->outputChannels.iTerm, "alternatorStatus.iTerm", "", 2}, + {engine->outputChannels.dTerm, "alternatorStatus.dTerm", "", 2}, + {engine->outputChannels.output, "alternatorStatus.output", "", 2}, + {engine->outputChannels.error, "alternatorStatus.error", "", 2}, + {engine->outputChannels.resetCounter, "alternatorStatus.resetCounter", "", 0}, + {engine->outputChannels.pTerm, "idleStatus.pTerm", "", 2}, + {engine->outputChannels.iTerm, "idleStatus.iTerm", "", 2}, + {engine->outputChannels.dTerm, "idleStatus.dTerm", "", 2}, + {engine->outputChannels.output, "idleStatus.output", "", 2}, + {engine->outputChannels.error, "idleStatus.error", "", 2}, + {engine->outputChannels.resetCounter, "idleStatus.resetCounter", "", 0}, + {engine->outputChannels.pTerm, "etbStatus.pTerm", "", 2}, + {engine->outputChannels.iTerm, "etbStatus.iTerm", "", 2}, + {engine->outputChannels.dTerm, "etbStatus.dTerm", "", 2}, + {engine->outputChannels.output, "etbStatus.output", "", 2}, + {engine->outputChannels.error, "etbStatus.error", "", 2}, + {engine->outputChannels.resetCounter, "etbStatus.resetCounter", "", 0}, + {engine->outputChannels.pTerm, "boostStatus.pTerm", "", 2}, + {engine->outputChannels.iTerm, "boostStatus.iTerm", "", 2}, + {engine->outputChannels.dTerm, "boostStatus.dTerm", "", 2}, + {engine->outputChannels.output, "boostStatus.output", "", 2}, + {engine->outputChannels.error, "boostStatus.error", "", 2}, + {engine->outputChannels.resetCounter, "boostStatus.resetCounter", "", 0}, + {engine->outputChannels.auxSpeed1, "aux speed 1", "s", 0}, + {engine->outputChannels.auxSpeed2, "aux speed 2", "s", 0}, + {engine->outputChannels.ISSValue, "Input Shaft Speed", "RPM", 0}, + {engine->outputChannels.rawAnalogInput1, "rawAnalogInput 1", "V", 3}, + {engine->outputChannels.rawAnalogInput2, "rawAnalogInput 2", "V", 3}, + {engine->outputChannels.rawAnalogInput3, "rawAnalogInput 3", "V", 3}, + {engine->outputChannels.rawAnalogInput4, "rawAnalogInput 4", "V", 3}, + {engine->outputChannels.rawAnalogInput5, "rawAnalogInput 5", "V", 3}, + {engine->outputChannels.rawAnalogInput6, "rawAnalogInput 6", "V", 3}, + {engine->outputChannels.rawAnalogInput7, "rawAnalogInput 7", "V", 3}, + {engine->outputChannels.rawAnalogInput8, "rawAnalogInput 8", "V", 3}, + {engine->outputChannels.gppwmOutput1, "GPPWM Output 1", "%", 2}, + {engine->outputChannels.gppwmOutput2, "GPPWM Output 2", "%", 2}, + {engine->outputChannels.gppwmOutput3, "GPPWM Output 3", "%", 2}, + {engine->outputChannels.gppwmOutput4, "GPPWM Output 4", "%", 2}, + {engine->outputChannels.rawBattery, "rawBattery", "V", 3}, + {engine->outputChannels.extiOverflowCount, "extiOverflowCount", "", 0}, + {engine->outputChannels.ignBlendBias1, "ignBlendBias 1", "%", 1}, + {engine->outputChannels.ignBlendBias2, "ignBlendBias 2", "%", 1}, + {engine->outputChannels.ignBlendBias3, "ignBlendBias 3", "%", 1}, + {engine->outputChannels.ignBlendBias4, "ignBlendBias 4", "%", 1}, + {engine->outputChannels.alignmentFill_at_581, "need 4 byte alignment", "units", 0}, + {engine->outputChannels.ignBlendOutput1, "ignBlendOutput 1", "deg", 2}, + {engine->outputChannels.ignBlendOutput2, "ignBlendOutput 2", "deg", 2}, + {engine->outputChannels.ignBlendOutput3, "ignBlendOutput 3", "deg", 2}, + {engine->outputChannels.ignBlendOutput4, "ignBlendOutput 4", "deg", 2}, + {engine->outputChannels.alignmentFill_at_590, "need 4 byte alignment", "units", 0}, + {engine->outputChannels.coilState1, "coilState1", "", -1}, + {engine->outputChannels.coilState2, "coilState2", "", -1}, + {engine->outputChannels.coilState3, "coilState3", "", -1}, + {engine->outputChannels.coilState4, "coilState4", "", -1}, + {engine->outputChannels.coilState5, "coilState5", "", -1}, + {engine->outputChannels.coilState6, "coilState6", "", -1}, + {engine->outputChannels.coilState7, "coilState7", "", -1}, + {engine->outputChannels.coilState8, "coilState8", "", -1}, + {engine->outputChannels.coilState9, "coilState9", "", -1}, + {engine->outputChannels.coilState10, "coilState10", "", -1}, + {engine->outputChannels.coilState11, "coilState11", "", -1}, + {engine->outputChannels.coilState12, "coilState12", "", -1}, + {engine->outputChannels.injectorState1, "injectorState1", "", -1}, + {engine->outputChannels.injectorState2, "injectorState2", "", -1}, + {engine->outputChannels.injectorState3, "injectorState3", "", -1}, + {engine->outputChannels.injectorState4, "injectorState4", "", -1}, + {engine->outputChannels.injectorState5, "injectorState5", "", -1}, + {engine->outputChannels.injectorState6, "injectorState6", "", -1}, + {engine->outputChannels.injectorState7, "injectorState7", "", -1}, + {engine->outputChannels.injectorState8, "injectorState8", "", -1}, + {engine->outputChannels.injectorState9, "injectorState9", "", -1}, + {engine->outputChannels.injectorState10, "injectorState10", "", -1}, + {engine->outputChannels.injectorState11, "injectorState11", "", -1}, + {engine->outputChannels.injectorState12, "injectorState12", "", -1}, + {engine->outputChannels.unusedBit_303_24, "unusedBit_303_24", "", -1}, + {engine->outputChannels.unusedBit_303_25, "unusedBit_303_25", "", -1}, + {engine->outputChannels.unusedBit_303_26, "unusedBit_303_26", "", -1}, + {engine->outputChannels.unusedBit_303_27, "unusedBit_303_27", "", -1}, + {engine->outputChannels.unusedBit_303_28, "unusedBit_303_28", "", -1}, + {engine->outputChannels.unusedBit_303_29, "unusedBit_303_29", "", -1}, + {engine->outputChannels.unusedBit_303_30, "unusedBit_303_30", "", -1}, + {engine->outputChannels.unusedBit_303_31, "unusedBit_303_31", "", -1}, + {engine->outputChannels.outputRequestPeriod, "outputRequestPeriod", "", -1}, + {engine->outputChannels.mapFast, "mapFast", "", -1}, + {engine->outputChannels.unusedAtTheEnd1, "unusedAtTheEnd 1", "", 0}, + {engine->outputChannels.unusedAtTheEnd2, "unusedAtTheEnd 2", "", 0}, + {engine->outputChannels.unusedAtTheEnd3, "unusedAtTheEnd 3", "", 0}, + {engine->outputChannels.unusedAtTheEnd4, "unusedAtTheEnd 4", "", 0}, + {engine->outputChannels.unusedAtTheEnd5, "unusedAtTheEnd 5", "", 0}, + {engine->outputChannels.unusedAtTheEnd6, "unusedAtTheEnd 6", "", 0}, + {engine->outputChannels.unusedAtTheEnd7, "unusedAtTheEnd 7", "", 0}, + {engine->outputChannels.unusedAtTheEnd8, "unusedAtTheEnd 8", "", 0}, + {engine->outputChannels.unusedAtTheEnd9, "unusedAtTheEnd 9", "", 0}, + {engine->outputChannels.unusedAtTheEnd10, "unusedAtTheEnd 10", "", 0}, + {engine->outputChannels.unusedAtTheEnd11, "unusedAtTheEnd 11", "", 0}, + {engine->outputChannels.unusedAtTheEnd12, "unusedAtTheEnd 12", "", 0}, + {engine->outputChannels.unusedAtTheEnd13, "unusedAtTheEnd 13", "", 0}, + {engine->outputChannels.unusedAtTheEnd14, "unusedAtTheEnd 14", "", 0}, + {engine->outputChannels.unusedAtTheEnd15, "unusedAtTheEnd 15", "", 0}, + {engine->outputChannels.unusedAtTheEnd16, "unusedAtTheEnd 16", "", 0}, + {engine->outputChannels.unusedAtTheEnd17, "unusedAtTheEnd 17", "", 0}, + {engine->outputChannels.unusedAtTheEnd18, "unusedAtTheEnd 18", "", 0}, + {engine->outputChannels.unusedAtTheEnd19, "unusedAtTheEnd 19", "", 0}, + {engine->outputChannels.unusedAtTheEnd20, "unusedAtTheEnd 20", "", 0}, + {engine->outputChannels.unusedAtTheEnd21, "unusedAtTheEnd 21", "", 0}, + {engine->outputChannels.unusedAtTheEnd22, "unusedAtTheEnd 22", "", 0}, + {engine->outputChannels.unusedAtTheEnd23, "unusedAtTheEnd 23", "", 0}, + {engine->outputChannels.unusedAtTheEnd24, "unusedAtTheEnd 24", "", 0}, + {engine->outputChannels.unusedAtTheEnd25, "unusedAtTheEnd 25", "", 0}, + {engine->outputChannels.unusedAtTheEnd26, "unusedAtTheEnd 26", "", 0}, + {engine->outputChannels.unusedAtTheEnd27, "unusedAtTheEnd 27", "", 0}, + {engine->outputChannels.unusedAtTheEnd28, "unusedAtTheEnd 28", "", 0}, + {engine->outputChannels.unusedAtTheEnd29, "unusedAtTheEnd 29", "", 0}, + {engine->outputChannels.unusedAtTheEnd30, "unusedAtTheEnd 30", "", 0}, + {engine->outputChannels.unusedAtTheEnd31, "unusedAtTheEnd 31", "", 0}, + {engine->outputChannels.unusedAtTheEnd32, "unusedAtTheEnd 32", "", 0}, + {engine->outputChannels.unusedAtTheEnd33, "unusedAtTheEnd 33", "", 0}, + {engine->outputChannels.unusedAtTheEnd34, "unusedAtTheEnd 34", "", 0}, + {engine->outputChannels.unusedAtTheEnd35, "unusedAtTheEnd 35", "", 0}, + {engine->outputChannels.unusedAtTheEnd36, "unusedAtTheEnd 36", "", 0}, + {engine->outputChannels.unusedAtTheEnd37, "unusedAtTheEnd 37", "", 0}, + {engine->outputChannels.unusedAtTheEnd38, "unusedAtTheEnd 38", "", 0}, + {engine->outputChannels.unusedAtTheEnd39, "unusedAtTheEnd 39", "", 0}, + {engine->outputChannels.unusedAtTheEnd40, "unusedAtTheEnd 40", "", 0}, + {engine->outputChannels.unusedAtTheEnd41, "unusedAtTheEnd 41", "", 0}, + {engine->outputChannels.unusedAtTheEnd42, "unusedAtTheEnd 42", "", 0}, + {engine->outputChannels.unusedAtTheEnd43, "unusedAtTheEnd 43", "", 0}, + {engine->outputChannels.unusedAtTheEnd44, "unusedAtTheEnd 44", "", 0}, + {engine->outputChannels.unusedAtTheEnd45, "unusedAtTheEnd 45", "", 0}, + {engine->outputChannels.unusedAtTheEnd46, "unusedAtTheEnd 46", "", 0}, + {engine->outputChannels.unusedAtTheEnd47, "unusedAtTheEnd 47", "", 0}, + {engine->outputChannels.unusedAtTheEnd48, "unusedAtTheEnd 48", "", 0}, + {engine->outputChannels.unusedAtTheEnd49, "unusedAtTheEnd 49", "", 0}, + {engine->outputChannels.unusedAtTheEnd50, "unusedAtTheEnd 50", "", 0}, + {engine->outputChannels.unusedAtTheEnd51, "unusedAtTheEnd 51", "", 0}, + {engine->outputChannels.unusedAtTheEnd52, "unusedAtTheEnd 52", "", 0}, + {engine->outputChannels.unusedAtTheEnd53, "unusedAtTheEnd 53", "", 0}, + {engine->outputChannels.unusedAtTheEnd54, "unusedAtTheEnd 54", "", 0}, + {engine->outputChannels.unusedAtTheEnd55, "unusedAtTheEnd 55", "", 0}, + {engine->outputChannels.unusedAtTheEnd56, "unusedAtTheEnd 56", "", 0}, + {engine->outputChannels.unusedAtTheEnd57, "unusedAtTheEnd 57", "", 0}, + {engine->outputChannels.unusedAtTheEnd58, "unusedAtTheEnd 58", "", 0}, + {engine->outputChannels.unusedAtTheEnd59, "unusedAtTheEnd 59", "", 0}, + {engine->outputChannels.unusedAtTheEnd60, "unusedAtTheEnd 60", "", 0}, + {engine->outputChannels.unusedAtTheEnd61, "unusedAtTheEnd 61", "", 0}, + {engine->outputChannels.unusedAtTheEnd62, "unusedAtTheEnd 62", "", 0}, + {engine->outputChannels.unusedAtTheEnd63, "unusedAtTheEnd 63", "", 0}, + {engine->outputChannels.unusedAtTheEnd64, "unusedAtTheEnd 64", "", 0}, + {engine->outputChannels.unusedAtTheEnd65, "unusedAtTheEnd 65", "", 0}, + {engine->outputChannels.unusedAtTheEnd66, "unusedAtTheEnd 66", "", 0}, + {engine->outputChannels.unusedAtTheEnd67, "unusedAtTheEnd 67", "", 0}, + {engine->outputChannels.unusedAtTheEnd68, "unusedAtTheEnd 68", "", 0}, + {engine->outputChannels.unusedAtTheEnd69, "unusedAtTheEnd 69", "", 0}, + {engine->outputChannels.unusedAtTheEnd70, "unusedAtTheEnd 70", "", 0}, + {engine->outputChannels.unusedAtTheEnd71, "unusedAtTheEnd 71", "", 0}, + {engine->outputChannels.unusedAtTheEnd72, "unusedAtTheEnd 72", "", 0}, + {engine->outputChannels.unusedAtTheEnd73, "unusedAtTheEnd 73", "", 0}, + {engine->outputChannels.unusedAtTheEnd74, "unusedAtTheEnd 74", "", 0}, + {engine->outputChannels.unusedAtTheEnd75, "unusedAtTheEnd 75", "", 0}, + {engine->outputChannels.unusedAtTheEnd76, "unusedAtTheEnd 76", "", 0}, + {engine->outputChannels.unusedAtTheEnd77, "unusedAtTheEnd 77", "", 0}, + {engine->outputChannels.unusedAtTheEnd78, "unusedAtTheEnd 78", "", 0}, + {engine->outputChannels.unusedAtTheEnd79, "unusedAtTheEnd 79", "", 0}, + {engine->outputChannels.unusedAtTheEnd80, "unusedAtTheEnd 80", "", 0}, + {engine->outputChannels.unusedAtTheEnd81, "unusedAtTheEnd 81", "", 0}, + {engine->outputChannels.unusedAtTheEnd82, "unusedAtTheEnd 82", "", 0}, + {engine->outputChannels.unusedAtTheEnd83, "unusedAtTheEnd 83", "", 0}, + {engine->outputChannels.unusedAtTheEnd84, "unusedAtTheEnd 84", "", 0}, + {engine->outputChannels.unusedAtTheEnd85, "unusedAtTheEnd 85", "", 0}, + {engine->outputChannels.unusedAtTheEnd86, "unusedAtTheEnd 86", "", 0}, + {engine->outputChannels.unusedAtTheEnd87, "unusedAtTheEnd 87", "", 0}, + {engine->outputChannels.unusedAtTheEnd88, "unusedAtTheEnd 88", "", 0}, + {engine->outputChannels.unusedAtTheEnd89, "unusedAtTheEnd 89", "", 0}, + {engine->outputChannels.unusedAtTheEnd90, "unusedAtTheEnd 90", "", 0}, + {engine->outputChannels.unusedAtTheEnd91, "unusedAtTheEnd 91", "", 0}, + {engine->outputChannels.unusedAtTheEnd92, "unusedAtTheEnd 92", "", 0}, + {engine->outputChannels.unusedAtTheEnd93, "unusedAtTheEnd 93", "", 0}, + {engine->outputChannels.unusedAtTheEnd94, "unusedAtTheEnd 94", "", 0}, + {engine->outputChannels.unusedAtTheEnd95, "unusedAtTheEnd 95", "", 0}, + {engine->outputChannels.unusedAtTheEnd96, "unusedAtTheEnd 96", "", 0}, + {engine->outputChannels.unusedAtTheEnd97, "unusedAtTheEnd 97", "", 0}, + {engine->outputChannels.unusedAtTheEnd98, "unusedAtTheEnd 98", "", 0}, + {engine->outputChannels.unusedAtTheEnd99, "unusedAtTheEnd 99", "", 0}, + {engine->outputChannels.unusedAtTheEnd100, "unusedAtTheEnd 100", "", 0}, + {engine->outputChannels.unusedAtTheEnd101, "unusedAtTheEnd 101", "", 0}, + {engine->outputChannels.unusedAtTheEnd102, "unusedAtTheEnd 102", "", 0}, + {engine->outputChannels.unusedAtTheEnd103, "unusedAtTheEnd 103", "", 0}, + {engine->outputChannels.unusedAtTheEnd104, "unusedAtTheEnd 104", "", 0}, + {engine->outputChannels.unusedAtTheEnd105, "unusedAtTheEnd 105", "", 0}, + {engine->outputChannels.unusedAtTheEnd106, "unusedAtTheEnd 106", "", 0}, + {engine->outputChannels.unusedAtTheEnd107, "unusedAtTheEnd 107", "", 0}, + {engine->outputChannels.unusedAtTheEnd108, "unusedAtTheEnd 108", "", 0}, + {engine->outputChannels.unusedAtTheEnd109, "unusedAtTheEnd 109", "", 0}, + {engine->outputChannels.unusedAtTheEnd110, "unusedAtTheEnd 110", "", 0}, + {engine->outputChannels.unusedAtTheEnd111, "unusedAtTheEnd 111", "", 0}, + {engine->outputChannels.unusedAtTheEnd112, "unusedAtTheEnd 112", "", 0}, + {engine->outputChannels.unusedAtTheEnd113, "unusedAtTheEnd 113", "", 0}, + {engine->outputChannels.unusedAtTheEnd114, "unusedAtTheEnd 114", "", 0}, + {engine->outputChannels.unusedAtTheEnd115, "unusedAtTheEnd 115", "", 0}, + {engine->outputChannels.unusedAtTheEnd116, "unusedAtTheEnd 116", "", 0}, + {engine->outputChannels.unusedAtTheEnd117, "unusedAtTheEnd 117", "", 0}, + {engine->outputChannels.unusedAtTheEnd118, "unusedAtTheEnd 118", "", 0}, + {engine->outputChannels.unusedAtTheEnd119, "unusedAtTheEnd 119", "", 0}, + {engine->outputChannels.unusedAtTheEnd120, "unusedAtTheEnd 120", "", 0}, + {engine->outputChannels.unusedAtTheEnd121, "unusedAtTheEnd 121", "", 0}, + {engine->outputChannels.unusedAtTheEnd122, "unusedAtTheEnd 122", "", 0}, + {engine->outputChannels.unusedAtTheEnd123, "unusedAtTheEnd 123", "", 0}, + {engine->outputChannels.unusedAtTheEnd124, "unusedAtTheEnd 124", "", 0}, + {engine->outputChannels.unusedAtTheEnd125, "unusedAtTheEnd 125", "", 0}, + {engine->outputChannels.unusedAtTheEnd126, "unusedAtTheEnd 126", "", 0}, + {engine->outputChannels.unusedAtTheEnd127, "unusedAtTheEnd 127", "", 0}, + {engine->outputChannels.unusedAtTheEnd128, "unusedAtTheEnd 128", "", 0}, + {engine->outputChannels.unusedAtTheEnd129, "unusedAtTheEnd 129", "", 0}, + {engine->outputChannels.unusedAtTheEnd130, "unusedAtTheEnd 130", "", 0}, + {engine->outputChannels.unusedAtTheEnd131, "unusedAtTheEnd 131", "", 0}, + {engine->outputChannels.unusedAtTheEnd132, "unusedAtTheEnd 132", "", 0}, + {engine->outputChannels.unusedAtTheEnd133, "unusedAtTheEnd 133", "", 0}, + {engine->outputChannels.unusedAtTheEnd134, "unusedAtTheEnd 134", "", 0}, + {engine->outputChannels.unusedAtTheEnd135, "unusedAtTheEnd 135", "", 0}, + {engine->outputChannels.unusedAtTheEnd136, "unusedAtTheEnd 136", "", 0}, + {engine->outputChannels.unusedAtTheEnd137, "unusedAtTheEnd 137", "", 0}, + {engine->outputChannels.unusedAtTheEnd138, "unusedAtTheEnd 138", "", 0}, + {engine->outputChannels.unusedAtTheEnd139, "unusedAtTheEnd 139", "", 0}, + {engine->outputChannels.unusedAtTheEnd140, "unusedAtTheEnd 140", "", 0}, + {engine->outputChannels.unusedAtTheEnd141, "unusedAtTheEnd 141", "", 0}, + {engine->outputChannels.unusedAtTheEnd142, "unusedAtTheEnd 142", "", 0}, + {engine->outputChannels.unusedAtTheEnd143, "unusedAtTheEnd 143", "", 0}, + {engine->outputChannels.unusedAtTheEnd144, "unusedAtTheEnd 144", "", 0}, + {engine->outputChannels.unusedAtTheEnd145, "unusedAtTheEnd 145", "", 0}, + {engine->outputChannels.unusedAtTheEnd146, "unusedAtTheEnd 146", "", 0}, + {engine->outputChannels.unusedAtTheEnd147, "unusedAtTheEnd 147", "", 0}, + {engine->outputChannels.unusedAtTheEnd148, "unusedAtTheEnd 148", "", 0}, + {engine->outputChannels.unusedAtTheEnd149, "unusedAtTheEnd 149", "", 0}, + {engine->outputChannels.unusedAtTheEnd150, "unusedAtTheEnd 150", "", 0}, + {engine->outputChannels.alignmentFill_at_754, "need 4 byte alignment", "units", 0}, +};