mirror of https://github.com/FOME-Tech/fome-fw.git
928 lines
30 KiB
C
928 lines
30 KiB
C
#pragma once
|
|
#include "rusefi_types.h"
|
|
struct pid_status_s {
|
|
// offset 0
|
|
int16_t pTerm = (int16_t)0;
|
|
// offset 2
|
|
scaled_channel<int16_t, 100, 1> iTerm = (int16_t)0;
|
|
// offset 4
|
|
scaled_channel<int16_t, 100, 1> dTerm = (int16_t)0;
|
|
// offset 6
|
|
scaled_channel<int16_t, 100, 1> output = (int16_t)0;
|
|
// offset 8
|
|
scaled_channel<int16_t, 100, 1> error = (int16_t)0;
|
|
// offset 10
|
|
uint16_t resetCounter = (uint16_t)0;
|
|
};
|
|
static_assert(sizeof(pid_status_s) == 12);
|
|
static_assert(offsetof(pid_status_s, pTerm) == 0);
|
|
static_assert(offsetof(pid_status_s, iTerm) == 2);
|
|
static_assert(offsetof(pid_status_s, dTerm) == 4);
|
|
static_assert(offsetof(pid_status_s, output) == 6);
|
|
static_assert(offsetof(pid_status_s, error) == 8);
|
|
static_assert(offsetof(pid_status_s, resetCounter) == 10);
|
|
|
|
struct output_channels_s {
|
|
// SD: Present
|
|
// offset 0 bit 0
|
|
bool sd_present : 1 {};
|
|
// SD: Logging
|
|
// offset 0 bit 1
|
|
bool sd_logging_internal : 1 {};
|
|
// offset 0 bit 2
|
|
bool triggerScopeReady : 1 {};
|
|
// offset 0 bit 3
|
|
bool antilagTriggered : 1 {};
|
|
// offset 0 bit 4
|
|
bool isO2HeaterOn : 1 {};
|
|
// offset 0 bit 5
|
|
bool checkEngine : 1 {};
|
|
// offset 0 bit 6
|
|
bool needBurn : 1 {};
|
|
// SD: MSD
|
|
// offset 0 bit 7
|
|
bool sd_msd : 1 {};
|
|
// Harley ACR: Active
|
|
// offset 0 bit 8
|
|
bool acrActive : 1 {};
|
|
// Tooth Logger Ready
|
|
// offset 0 bit 9
|
|
bool toothLogReady : 1 {};
|
|
// Error: TPS1
|
|
// offset 0 bit 10
|
|
bool isTpsError : 1 {};
|
|
// Error: CLT
|
|
// offset 0 bit 11
|
|
bool isCltError : 1 {};
|
|
// Error: MAP
|
|
// offset 0 bit 12
|
|
bool isMapError : 1 {};
|
|
// Error: IAT
|
|
// offset 0 bit 13
|
|
bool isIatError : 1 {};
|
|
// Error: Trigger
|
|
// offset 0 bit 14
|
|
bool isTriggerError : 1 {};
|
|
// Error: Active
|
|
// offset 0 bit 15
|
|
bool hasCriticalError : 1 {};
|
|
// Warning: Active
|
|
// offset 0 bit 16
|
|
bool isWarnNow : 1 {};
|
|
// Error: Pedal
|
|
// offset 0 bit 17
|
|
bool isPedalError : 1 {};
|
|
// Launch control: Triggered
|
|
// offset 0 bit 18
|
|
bool launchTriggered : 1 {};
|
|
// Error: TPS2
|
|
// offset 0 bit 19
|
|
bool isTps2Error : 1 {};
|
|
// Error: Injector Fault
|
|
// offset 0 bit 20
|
|
bool injectorFault : 1 {};
|
|
// Error: Ignition Fault
|
|
// offset 0 bit 21
|
|
bool ignitionFault : 1 {};
|
|
// isUsbConnected
|
|
// Original reason for this is to check if USB is connected from Lua
|
|
// offset 0 bit 22
|
|
bool isUsbConnected : 1 {};
|
|
// DFCO: Active
|
|
// offset 0 bit 23
|
|
bool dfcoActive : 1 {};
|
|
// offset 0 bit 24
|
|
bool unusedBit_0_24 : 1 {};
|
|
// offset 0 bit 25
|
|
bool unusedBit_0_25 : 1 {};
|
|
// offset 0 bit 26
|
|
bool unusedBit_0_26 : 1 {};
|
|
// offset 0 bit 27
|
|
bool unusedBit_0_27 : 1 {};
|
|
// offset 0 bit 28
|
|
bool unusedBit_0_28 : 1 {};
|
|
// offset 0 bit 29
|
|
bool unusedBit_0_29 : 1 {};
|
|
// offset 0 bit 30
|
|
bool unusedBit_0_30 : 1 {};
|
|
// offset 0 bit 31
|
|
bool unusedBit_0_31 : 1 {};
|
|
// RPM
|
|
// RPM
|
|
// offset 4
|
|
uint16_t RPMValue = (uint16_t)0;
|
|
// dRPM
|
|
// RPM acceleration
|
|
// offset 6
|
|
int16_t rpmAcceleration = (int16_t)0;
|
|
// Gearbox Ratio
|
|
// value
|
|
// offset 8
|
|
scaled_channel<uint16_t, 100, 1> speedToRpmRatio = (uint16_t)0;
|
|
// Vehicle Speed
|
|
// kph
|
|
// offset 10
|
|
uint8_t vehicleSpeedKph = (uint8_t)0;
|
|
// ECU temperature
|
|
// deg C
|
|
// offset 11
|
|
int8_t internalMcuTemperature = (int8_t)0;
|
|
// CLT
|
|
// deg C
|
|
// offset 12
|
|
scaled_channel<int16_t, 100, 1> coolant = (int16_t)0;
|
|
// IAT
|
|
// deg C
|
|
// offset 14
|
|
scaled_channel<int16_t, 100, 1> intake = (int16_t)0;
|
|
// Aux temp 1
|
|
// deg C
|
|
// offset 16
|
|
scaled_channel<int16_t, 100, 1> auxTemp1 = (int16_t)0;
|
|
// Aux temp 2
|
|
// deg C
|
|
// offset 18
|
|
scaled_channel<int16_t, 100, 1> auxTemp2 = (int16_t)0;
|
|
// TPS
|
|
// %
|
|
// offset 20
|
|
scaled_channel<int16_t, 100, 1> TPSValue = (int16_t)0;
|
|
// Throttle pedal position
|
|
// %
|
|
// offset 22
|
|
scaled_channel<int16_t, 100, 1> throttlePedalPosition = (int16_t)0;
|
|
// ADC
|
|
// offset 24
|
|
uint16_t tpsADC = (uint16_t)0;
|
|
// Raw: MAF
|
|
// V
|
|
// offset 26
|
|
scaled_channel<uint16_t, 1000, 1> rawMaf = (uint16_t)0;
|
|
// MAF
|
|
// kg/h
|
|
// offset 28
|
|
scaled_channel<uint16_t, 10, 1> mafMeasured = (uint16_t)0;
|
|
// MAP
|
|
// kPa
|
|
// offset 30
|
|
scaled_channel<uint16_t, 30, 1> MAPValue = (uint16_t)0;
|
|
// kPa
|
|
// offset 32
|
|
scaled_channel<uint16_t, 30, 1> baroPressure = (uint16_t)0;
|
|
// offset 34
|
|
uint16_t unused34 = (uint16_t)0;
|
|
// VBatt
|
|
// V
|
|
// offset 36
|
|
scaled_channel<uint16_t, 1000, 1> VBatt = (uint16_t)0;
|
|
// Oil Pressure
|
|
// kPa
|
|
// offset 38
|
|
scaled_channel<uint16_t, 30, 1> oilPressure = (uint16_t)0;
|
|
// VVT: bank 1 intake
|
|
// deg
|
|
// offset 40
|
|
scaled_channel<int16_t, 50, 1> vvtPositionB1I = (int16_t)0;
|
|
// Fuel: Last inj pulse width
|
|
// ms
|
|
// offset 42
|
|
scaled_channel<uint16_t, 300, 1> actualLastInjection = (uint16_t)0;
|
|
// Fuel: injector duty cycle
|
|
// %
|
|
// offset 44
|
|
scaled_channel<uint8_t, 2, 1> injectorDutyCycle = (uint8_t)0;
|
|
// Fuel: VE
|
|
// ratio
|
|
// offset 45
|
|
scaled_channel<uint8_t, 2, 1> veValue = (uint8_t)0;
|
|
// Fuel: Injection timing SOI
|
|
// deg
|
|
// offset 46
|
|
int16_t injectionOffset = (int16_t)0;
|
|
// Engine CRC16
|
|
// crc16
|
|
// offset 48
|
|
uint16_t engineMakeCodeNameCrc16 = (uint16_t)0;
|
|
// Fuel: Wall amount
|
|
// mg
|
|
// offset 50
|
|
scaled_channel<uint16_t, 100, 1> wallFuelAmount = (uint16_t)0;
|
|
// Fuel: Wall correction
|
|
// mg
|
|
// offset 52
|
|
scaled_channel<int16_t, 100, 1> wallFuelCorrectionValue = (int16_t)0;
|
|
// Trg: Revolution counter
|
|
// offset 54
|
|
uint16_t revolutionCounterSinceStart = (uint16_t)0;
|
|
// CAN: Rx
|
|
// offset 56
|
|
uint16_t canReadCounter = (uint16_t)0;
|
|
// Fuel: TPS AE add fuel ms
|
|
// ms
|
|
// offset 58
|
|
scaled_channel<int16_t, 300, 1> tpsAccelFuel = (int16_t)0;
|
|
// Ign: Timing Base
|
|
// deg
|
|
// offset 60
|
|
scaled_channel<int16_t, 50, 1> ignitionAdvance = (int16_t)0;
|
|
// Ign: Mode
|
|
// offset 62
|
|
uint8_t currentIgnitionMode = (uint8_t)0;
|
|
// Fuel: Injection mode
|
|
// offset 63
|
|
uint8_t currentInjectionMode = (uint8_t)0;
|
|
// Ign: Coil duty cycle
|
|
// %
|
|
// offset 64
|
|
scaled_channel<uint16_t, 100, 1> coilDutyCycle = (uint16_t)0;
|
|
// offset 66
|
|
uint16_t unused66 = (uint16_t)0;
|
|
// offset 68
|
|
uint16_t unused68 = (uint16_t)0;
|
|
// Fuel level
|
|
// %
|
|
// offset 70
|
|
scaled_channel<int16_t, 100, 1> fuelTankLevel = (int16_t)0;
|
|
// Fuel: Total consumed
|
|
// grams
|
|
// offset 72
|
|
uint16_t totalFuelConsumption = (uint16_t)0;
|
|
// Fuel: Flow rate
|
|
// gram/s
|
|
// offset 74
|
|
scaled_channel<uint16_t, 200, 1> fuelFlowRate = (uint16_t)0;
|
|
// TPS2
|
|
// %
|
|
// offset 76
|
|
scaled_channel<int16_t, 100, 1> TPS2Value = (int16_t)0;
|
|
// Tune CRC16
|
|
// crc16
|
|
// offset 78
|
|
uint16_t tuneCrc16 = (uint16_t)0;
|
|
// Uptime
|
|
// sec
|
|
// offset 80
|
|
uint32_t seconds = (uint32_t)0;
|
|
// Engine Mode
|
|
// em
|
|
// offset 84
|
|
uint32_t engineMode = (uint32_t)0;
|
|
// firmware
|
|
// version_f
|
|
// offset 88
|
|
uint32_t firmwareVersion = (uint32_t)0;
|
|
// Raw: Wastegate position
|
|
// V
|
|
// offset 92
|
|
scaled_channel<int16_t, 1000, 1> rawWastegatePosition = (int16_t)0;
|
|
// Accel: Lateral
|
|
// G
|
|
// offset 94
|
|
scaled_channel<int16_t, 1000, 1> accelerationLat = (int16_t)0;
|
|
// Accel: Longitudinal
|
|
// G
|
|
// offset 96
|
|
scaled_channel<int16_t, 1000, 1> accelerationLon = (int16_t)0;
|
|
// Detected Gear
|
|
// offset 98
|
|
uint8_t detectedGear = (uint8_t)0;
|
|
// offset 99
|
|
uint8_t maxTriggerReentrant = (uint8_t)0;
|
|
// Raw: Fuel press low
|
|
// V
|
|
// offset 100
|
|
scaled_channel<int16_t, 1000, 1> rawLowFuelPressure = (int16_t)0;
|
|
// Raw: Fuel press high
|
|
// V
|
|
// offset 102
|
|
scaled_channel<int16_t, 1000, 1> rawHighFuelPressure = (int16_t)0;
|
|
// Fuel pressure (low)
|
|
// kpa
|
|
// offset 104
|
|
scaled_channel<int16_t, 30, 1> lowFuelPressure = (int16_t)0;
|
|
// Fuel pressure (high)
|
|
// bar
|
|
// offset 106
|
|
scaled_channel<int16_t, 10, 1> highFuelPressure = (int16_t)0;
|
|
// Raw: Pedal secondary
|
|
// V
|
|
// offset 108
|
|
scaled_channel<int16_t, 1000, 1> rawPpsSecondary = (int16_t)0;
|
|
// TCU: Desired Gear
|
|
// gear
|
|
// offset 110
|
|
int8_t tcuDesiredGear = (int8_t)0;
|
|
// Flex Ethanol %
|
|
// %
|
|
// offset 111
|
|
scaled_channel<uint8_t, 2, 1> flexPercent = (uint8_t)0;
|
|
// Wastegate position sensor
|
|
// %
|
|
// offset 112
|
|
scaled_channel<int16_t, 100, 1> wastegatePositionSensor = (int16_t)0;
|
|
// Wheel speed: LF
|
|
// offset 114
|
|
uint8_t wheelSpeedLf = (uint8_t)0;
|
|
// Wheel speed: RF
|
|
// offset 115
|
|
uint8_t wheelSpeedRf = (uint8_t)0;
|
|
// offset 116
|
|
float calibrationValue = (float)0;
|
|
// offset 120
|
|
uint8_t calibrationMode = (uint8_t)0;
|
|
// Idle: Stepper target position
|
|
// offset 121
|
|
uint8_t idleStepperTargetPosition = (uint8_t)0;
|
|
// Wheel speed: LR
|
|
// offset 122
|
|
uint8_t wheelSpeedLr = (uint8_t)0;
|
|
// Wheel speed: RR
|
|
// offset 123
|
|
uint8_t wheelSpeedRr = (uint8_t)0;
|
|
// offset 124
|
|
uint32_t tsConfigVersion = (uint32_t)0;
|
|
// offset 128
|
|
uint32_t orderingErrorCounter = (uint32_t)0;
|
|
// Warning: counter
|
|
// count
|
|
// offset 132
|
|
uint16_t warningCounter = (uint16_t)0;
|
|
// Warning: last
|
|
// error
|
|
// offset 134
|
|
uint16_t lastErrorCode = (uint16_t)0;
|
|
// error
|
|
// offset 136
|
|
uint16_t recentErrorCode[8];
|
|
// val
|
|
// offset 152
|
|
float debugFloatField1 = (float)0;
|
|
// val
|
|
// offset 156
|
|
float debugFloatField2 = (float)0;
|
|
// val
|
|
// offset 160
|
|
float debugFloatField3 = (float)0;
|
|
// val
|
|
// offset 164
|
|
float debugFloatField4 = (float)0;
|
|
// val
|
|
// offset 168
|
|
float debugFloatField5 = (float)0;
|
|
// val
|
|
// offset 172
|
|
float debugFloatField6 = (float)0;
|
|
// val
|
|
// offset 176
|
|
float debugFloatField7 = (float)0;
|
|
// val
|
|
// offset 180
|
|
uint32_t debugIntField1 = (uint32_t)0;
|
|
// val
|
|
// offset 184
|
|
uint32_t debugIntField2 = (uint32_t)0;
|
|
// val
|
|
// offset 188
|
|
uint32_t debugIntField3 = (uint32_t)0;
|
|
// val
|
|
// offset 192
|
|
int16_t debugIntField4 = (int16_t)0;
|
|
// val
|
|
// offset 194
|
|
int16_t debugIntField5 = (int16_t)0;
|
|
// EGT
|
|
// deg C
|
|
// offset 196
|
|
uint16_t egt[8];
|
|
// Raw: TPS 1 primary
|
|
// V
|
|
// offset 212
|
|
scaled_channel<int16_t, 1000, 1> rawTps1Primary = (int16_t)0;
|
|
// Raw: Pedal primary
|
|
// V
|
|
// offset 214
|
|
scaled_channel<int16_t, 1000, 1> rawPpsPrimary = (int16_t)0;
|
|
// Raw: CLT
|
|
// V
|
|
// offset 216
|
|
scaled_channel<int16_t, 1000, 1> rawClt = (int16_t)0;
|
|
// Raw: IAT
|
|
// V
|
|
// offset 218
|
|
scaled_channel<int16_t, 1000, 1> rawIat = (int16_t)0;
|
|
// Raw: OilP
|
|
// V
|
|
// offset 220
|
|
scaled_channel<int16_t, 1000, 1> rawOilPressure = (int16_t)0;
|
|
// offset 222
|
|
uint8_t fuelClosedLoopBinIdx = (uint8_t)0;
|
|
// Current Gear
|
|
// gear
|
|
// offset 223
|
|
int8_t tcuCurrentGear = (int8_t)0;
|
|
// Air/Fuel Ratio
|
|
// AFR
|
|
// offset 224
|
|
scaled_channel<uint16_t, 1000, 1> AFRValue = (uint16_t)0;
|
|
// Vss Accel
|
|
// m/s2
|
|
// offset 226
|
|
scaled_channel<uint16_t, 300, 1> VssAcceleration = (uint16_t)0;
|
|
// Lambda
|
|
// offset 228
|
|
scaled_channel<uint16_t, 10000, 1> lambdaValues[4];
|
|
// Air/Fuel Ratio 2
|
|
// AFR
|
|
// offset 236
|
|
scaled_channel<uint16_t, 1000, 1> AFRValue2 = (uint16_t)0;
|
|
// VVT: bank 1 exhaust
|
|
// deg
|
|
// offset 238
|
|
scaled_channel<int16_t, 50, 1> vvtPositionB1E = (int16_t)0;
|
|
// VVT: bank 2 intake
|
|
// deg
|
|
// offset 240
|
|
scaled_channel<int16_t, 50, 1> vvtPositionB2I = (int16_t)0;
|
|
// VVT: bank 2 exhaust
|
|
// deg
|
|
// offset 242
|
|
scaled_channel<int16_t, 50, 1> vvtPositionB2E = (int16_t)0;
|
|
// Fuel: Trim bank
|
|
// %
|
|
// offset 244
|
|
scaled_channel<int16_t, 100, 1> fuelPidCorrection[4];
|
|
// Raw: TPS 1 secondary
|
|
// V
|
|
// offset 252
|
|
scaled_channel<int16_t, 1000, 1> rawTps1Secondary = (int16_t)0;
|
|
// Raw: TPS 2 primary
|
|
// V
|
|
// offset 254
|
|
scaled_channel<int16_t, 1000, 1> rawTps2Primary = (int16_t)0;
|
|
// Raw: TPS 2 secondary
|
|
// V
|
|
// offset 256
|
|
scaled_channel<int16_t, 1000, 1> rawTps2Secondary = (int16_t)0;
|
|
// Accel: Vertical
|
|
// G
|
|
// offset 258
|
|
scaled_channel<int16_t, 1000, 1> accelerationVert = (int16_t)0;
|
|
// Gyro: Yaw rate
|
|
// deg/sec
|
|
// offset 260
|
|
scaled_channel<int16_t, 1000, 1> gyroYaw = (int16_t)0;
|
|
// Turbocharger Speed
|
|
// hz
|
|
// offset 262
|
|
uint16_t turboSpeed = (uint16_t)0;
|
|
// Ign: Timing Cyl
|
|
// deg
|
|
// offset 264
|
|
scaled_channel<int16_t, 50, 1> ignitionAdvanceCyl[12];
|
|
// %
|
|
// offset 288
|
|
scaled_channel<int16_t, 100, 1> tps1Split = (int16_t)0;
|
|
// %
|
|
// offset 290
|
|
scaled_channel<int16_t, 100, 1> tps2Split = (int16_t)0;
|
|
// %
|
|
// offset 292
|
|
scaled_channel<int16_t, 100, 1> tps12Split = (int16_t)0;
|
|
// %
|
|
// offset 294
|
|
scaled_channel<int16_t, 100, 1> accPedalSplit = (int16_t)0;
|
|
// Ign: Cut Code
|
|
// code
|
|
// offset 296
|
|
int8_t sparkCutReason = (int8_t)0;
|
|
// Fuel: Cut Code
|
|
// code
|
|
// offset 297
|
|
int8_t fuelCutReason = (int8_t)0;
|
|
// Air: Flow estimate
|
|
// kg/h
|
|
// offset 298
|
|
scaled_channel<uint16_t, 10, 1> mafEstimate = (uint16_t)0;
|
|
// rpm
|
|
// offset 300
|
|
uint16_t instantRpm = (uint16_t)0;
|
|
// Raw: MAP
|
|
// V
|
|
// offset 302
|
|
scaled_channel<uint16_t, 1000, 1> rawMap = (uint16_t)0;
|
|
// Raw: AFR
|
|
// V
|
|
// offset 304
|
|
scaled_channel<uint16_t, 1000, 1> rawAfr = (uint16_t)0;
|
|
// Raw: Fuel level
|
|
// V
|
|
// offset 306
|
|
scaled_channel<uint16_t, 1000, 1> rawFuelTankLevel = (uint16_t)0;
|
|
// offset 308
|
|
float calibrationValue2 = (float)0;
|
|
// Lua: Tick counter
|
|
// count
|
|
// offset 312
|
|
uint32_t luaInvocationCounter = (uint32_t)0;
|
|
// Lua: Last tick duration
|
|
// nt
|
|
// offset 316
|
|
uint32_t luaLastCycleDuration = (uint32_t)0;
|
|
// TCU: Current Range
|
|
// offset 320
|
|
uint8_t tcu_currentRange = (uint8_t)0;
|
|
// offset 321
|
|
uint8_t alignmentFill_at_321[1];
|
|
// TCU: Torque Converter Ratio
|
|
// value
|
|
// offset 322
|
|
scaled_channel<uint16_t, 100, 1> tcRatio = (uint16_t)0;
|
|
// offset 324
|
|
float lastShiftTime = (float)0;
|
|
// offset 328
|
|
uint32_t vssEdgeCounter = (uint32_t)0;
|
|
// offset 332
|
|
uint32_t issEdgeCounter = (uint32_t)0;
|
|
// Aux linear 1
|
|
// offset 336
|
|
float auxLinear1 = (float)0;
|
|
// Aux linear 2
|
|
// offset 340
|
|
float auxLinear2 = (float)0;
|
|
// Aux linear 3
|
|
// offset 344
|
|
float auxLinear3 = (float)0;
|
|
// Aux linear 4
|
|
// offset 348
|
|
float auxLinear4 = (float)0;
|
|
// kPa
|
|
// offset 352
|
|
scaled_channel<uint16_t, 10, 1> fallbackMap = (uint16_t)0;
|
|
// Instant MAP
|
|
// kPa
|
|
// offset 354
|
|
scaled_channel<uint16_t, 30, 1> instantMAPValue = (uint16_t)0;
|
|
// us
|
|
// offset 356
|
|
uint16_t maxLockedDuration = (uint16_t)0;
|
|
// CAN: Tx OK
|
|
// offset 358
|
|
uint16_t canWriteOk = (uint16_t)0;
|
|
// CAN: Tx err
|
|
// offset 360
|
|
uint16_t canWriteNotOk = (uint16_t)0;
|
|
// offset 362
|
|
uint8_t starterState = (uint8_t)0;
|
|
// offset 363
|
|
uint8_t starterRelayDisable = (uint8_t)0;
|
|
// Ign: Multispark count
|
|
// offset 364
|
|
uint8_t multiSparkCounter = (uint8_t)0;
|
|
// offset 365
|
|
uint8_t extiOverflowCount = (uint8_t)0;
|
|
// offset 366
|
|
uint8_t alignmentFill_at_366[2];
|
|
// offset 368
|
|
pid_status_s alternatorStatus;
|
|
// offset 380
|
|
pid_status_s idleStatus;
|
|
// offset 392
|
|
pid_status_s etbStatus;
|
|
// offset 404
|
|
pid_status_s boostStatus;
|
|
// offset 416
|
|
pid_status_s wastegateDcStatus;
|
|
// Aux speed 1
|
|
// s
|
|
// offset 428
|
|
uint16_t auxSpeed1 = (uint16_t)0;
|
|
// Aux speed 2
|
|
// s
|
|
// offset 430
|
|
uint16_t auxSpeed2 = (uint16_t)0;
|
|
// TCU: Input Shaft Speed
|
|
// RPM
|
|
// offset 432
|
|
uint16_t ISSValue = (uint16_t)0;
|
|
// V
|
|
// offset 434
|
|
scaled_channel<int16_t, 1000, 1> rawAnalogInput[8];
|
|
// GPPWM Output
|
|
// %
|
|
// offset 450
|
|
scaled_channel<uint8_t, 2, 1> gppwmOutput[4];
|
|
// offset 454
|
|
int16_t gppwmXAxis[4];
|
|
// offset 462
|
|
scaled_channel<int16_t, 10, 1> gppwmYAxis[4];
|
|
// Raw: Vbatt
|
|
// V
|
|
// offset 470
|
|
scaled_channel<int16_t, 1000, 1> rawBattery = (int16_t)0;
|
|
// offset 472
|
|
scaled_channel<int16_t, 10, 1> ignBlendParameter[4];
|
|
// %
|
|
// offset 480
|
|
scaled_channel<uint8_t, 2, 1> ignBlendBias[4];
|
|
// deg
|
|
// offset 484
|
|
scaled_channel<int16_t, 100, 1> ignBlendOutput[4];
|
|
// offset 492
|
|
scaled_channel<int16_t, 10, 1> ignBlendYAxis[4];
|
|
// offset 500
|
|
scaled_channel<int16_t, 10, 1> veBlendParameter[4];
|
|
// %
|
|
// offset 508
|
|
scaled_channel<uint8_t, 2, 1> veBlendBias[4];
|
|
// %
|
|
// offset 512
|
|
scaled_channel<int16_t, 100, 1> veBlendOutput[4];
|
|
// offset 520
|
|
scaled_channel<int16_t, 10, 1> veBlendYAxis[4];
|
|
// offset 528
|
|
scaled_channel<int16_t, 10, 1> boostOpenLoopBlendParameter[2];
|
|
// %
|
|
// offset 532
|
|
scaled_channel<uint8_t, 2, 1> boostOpenLoopBlendBias[2];
|
|
// %
|
|
// offset 534
|
|
int8_t boostOpenLoopBlendOutput[2];
|
|
// offset 536
|
|
scaled_channel<int16_t, 10, 1> boostOpenLoopBlendYAxis[2];
|
|
// offset 540
|
|
scaled_channel<int16_t, 10, 1> boostClosedLoopBlendParameter[2];
|
|
// %
|
|
// offset 544
|
|
scaled_channel<uint8_t, 2, 1> boostClosedLoopBlendBias[2];
|
|
// %
|
|
// offset 546
|
|
scaled_channel<int16_t, 10, 1> boostClosedLoopBlendOutput[2];
|
|
// offset 550
|
|
scaled_channel<int16_t, 10, 1> boostClosedLoopBlendYAxis[2];
|
|
// kPa
|
|
// offset 554
|
|
scaled_channel<uint16_t, 30, 1> mapFast = (uint16_t)0;
|
|
// offset 556
|
|
uint32_t outputRequestPeriod = (uint32_t)0;
|
|
// Lua: Gauge
|
|
// value
|
|
// offset 560
|
|
float luaGauges[2];
|
|
// Raw: MAF 2
|
|
// V
|
|
// offset 568
|
|
scaled_channel<uint16_t, 1000, 1> rawMaf2 = (uint16_t)0;
|
|
// MAF #2
|
|
// kg/h
|
|
// offset 570
|
|
scaled_channel<uint16_t, 10, 1> mafMeasured2 = (uint16_t)0;
|
|
// offset 572
|
|
uint16_t schedulingUsedCount = (uint16_t)0;
|
|
// %
|
|
// offset 574
|
|
scaled_channel<uint16_t, 100, 1> Gego = (uint16_t)0;
|
|
// count
|
|
// offset 576
|
|
uint16_t testBenchIter = (uint16_t)0;
|
|
// deg C
|
|
// offset 578
|
|
scaled_channel<int16_t, 100, 1> oilTemp = (int16_t)0;
|
|
// deg C
|
|
// offset 580
|
|
scaled_channel<int16_t, 100, 1> fuelTemp = (int16_t)0;
|
|
// deg C
|
|
// offset 582
|
|
scaled_channel<int16_t, 100, 1> ambientTemp = (int16_t)0;
|
|
// deg C
|
|
// offset 584
|
|
scaled_channel<int16_t, 100, 1> compressorDischargeTemp = (int16_t)0;
|
|
// kPa
|
|
// offset 586
|
|
scaled_channel<uint16_t, 30, 1> compressorDischargePressure = (uint16_t)0;
|
|
// kPa
|
|
// offset 588
|
|
scaled_channel<uint16_t, 30, 1> throttleInletPressure = (uint16_t)0;
|
|
// sec
|
|
// offset 590
|
|
uint16_t ignitionOnTime = (uint16_t)0;
|
|
// sec
|
|
// offset 592
|
|
uint16_t engineRunTime = (uint16_t)0;
|
|
// km
|
|
// offset 594
|
|
scaled_channel<uint16_t, 10, 1> distanceTraveled = (uint16_t)0;
|
|
// Air/Fuel Ratio (Gas Scale)
|
|
// AFR
|
|
// offset 596
|
|
scaled_channel<uint16_t, 1000, 1> afrGasolineScale = (uint16_t)0;
|
|
// Air/Fuel Ratio 2 (Gas Scale)
|
|
// AFR
|
|
// offset 598
|
|
scaled_channel<uint16_t, 1000, 1> afr2GasolineScale = (uint16_t)0;
|
|
// Fuel: Last inj pulse width stg 2
|
|
// ms
|
|
// offset 600
|
|
scaled_channel<uint16_t, 300, 1> actualLastInjectionStage2 = (uint16_t)0;
|
|
// Fuel: injector duty cycle stage 2
|
|
// %
|
|
// offset 602
|
|
scaled_channel<uint8_t, 2, 1> injectorDutyCycleStage2 = (uint8_t)0;
|
|
// offset 603
|
|
uint8_t pad = (uint8_t)0;
|
|
// offset 604
|
|
uint16_t mapAveragingSamples = (uint16_t)0;
|
|
// kPa
|
|
// offset 606
|
|
uint8_t mapPerCylinder[12];
|
|
// ratio
|
|
// offset 618
|
|
scaled_channel<uint16_t, 1000, 1> dwellAccuracyRatio = (uint16_t)0;
|
|
};
|
|
static_assert(sizeof(output_channels_s) == 620);
|
|
static_assert(offsetof(output_channels_s, RPMValue) == 4);
|
|
static_assert(offsetof(output_channels_s, rpmAcceleration) == 6);
|
|
static_assert(offsetof(output_channels_s, speedToRpmRatio) == 8);
|
|
static_assert(offsetof(output_channels_s, vehicleSpeedKph) == 10);
|
|
static_assert(offsetof(output_channels_s, internalMcuTemperature) == 11);
|
|
static_assert(offsetof(output_channels_s, coolant) == 12);
|
|
static_assert(offsetof(output_channels_s, intake) == 14);
|
|
static_assert(offsetof(output_channels_s, auxTemp1) == 16);
|
|
static_assert(offsetof(output_channels_s, auxTemp2) == 18);
|
|
static_assert(offsetof(output_channels_s, TPSValue) == 20);
|
|
static_assert(offsetof(output_channels_s, throttlePedalPosition) == 22);
|
|
static_assert(offsetof(output_channels_s, tpsADC) == 24);
|
|
static_assert(offsetof(output_channels_s, rawMaf) == 26);
|
|
static_assert(offsetof(output_channels_s, mafMeasured) == 28);
|
|
static_assert(offsetof(output_channels_s, MAPValue) == 30);
|
|
static_assert(offsetof(output_channels_s, baroPressure) == 32);
|
|
static_assert(offsetof(output_channels_s, unused34) == 34);
|
|
static_assert(offsetof(output_channels_s, VBatt) == 36);
|
|
static_assert(offsetof(output_channels_s, oilPressure) == 38);
|
|
static_assert(offsetof(output_channels_s, vvtPositionB1I) == 40);
|
|
static_assert(offsetof(output_channels_s, actualLastInjection) == 42);
|
|
static_assert(offsetof(output_channels_s, injectorDutyCycle) == 44);
|
|
static_assert(offsetof(output_channels_s, veValue) == 45);
|
|
static_assert(offsetof(output_channels_s, injectionOffset) == 46);
|
|
static_assert(offsetof(output_channels_s, engineMakeCodeNameCrc16) == 48);
|
|
static_assert(offsetof(output_channels_s, wallFuelAmount) == 50);
|
|
static_assert(offsetof(output_channels_s, wallFuelCorrectionValue) == 52);
|
|
static_assert(offsetof(output_channels_s, revolutionCounterSinceStart) == 54);
|
|
static_assert(offsetof(output_channels_s, canReadCounter) == 56);
|
|
static_assert(offsetof(output_channels_s, tpsAccelFuel) == 58);
|
|
static_assert(offsetof(output_channels_s, ignitionAdvance) == 60);
|
|
static_assert(offsetof(output_channels_s, currentIgnitionMode) == 62);
|
|
static_assert(offsetof(output_channels_s, currentInjectionMode) == 63);
|
|
static_assert(offsetof(output_channels_s, coilDutyCycle) == 64);
|
|
static_assert(offsetof(output_channels_s, unused66) == 66);
|
|
static_assert(offsetof(output_channels_s, unused68) == 68);
|
|
static_assert(offsetof(output_channels_s, fuelTankLevel) == 70);
|
|
static_assert(offsetof(output_channels_s, totalFuelConsumption) == 72);
|
|
static_assert(offsetof(output_channels_s, fuelFlowRate) == 74);
|
|
static_assert(offsetof(output_channels_s, TPS2Value) == 76);
|
|
static_assert(offsetof(output_channels_s, tuneCrc16) == 78);
|
|
static_assert(offsetof(output_channels_s, seconds) == 80);
|
|
static_assert(offsetof(output_channels_s, engineMode) == 84);
|
|
static_assert(offsetof(output_channels_s, firmwareVersion) == 88);
|
|
static_assert(offsetof(output_channels_s, rawWastegatePosition) == 92);
|
|
static_assert(offsetof(output_channels_s, accelerationLat) == 94);
|
|
static_assert(offsetof(output_channels_s, accelerationLon) == 96);
|
|
static_assert(offsetof(output_channels_s, detectedGear) == 98);
|
|
static_assert(offsetof(output_channels_s, maxTriggerReentrant) == 99);
|
|
static_assert(offsetof(output_channels_s, rawLowFuelPressure) == 100);
|
|
static_assert(offsetof(output_channels_s, rawHighFuelPressure) == 102);
|
|
static_assert(offsetof(output_channels_s, lowFuelPressure) == 104);
|
|
static_assert(offsetof(output_channels_s, highFuelPressure) == 106);
|
|
static_assert(offsetof(output_channels_s, rawPpsSecondary) == 108);
|
|
static_assert(offsetof(output_channels_s, tcuDesiredGear) == 110);
|
|
static_assert(offsetof(output_channels_s, flexPercent) == 111);
|
|
static_assert(offsetof(output_channels_s, wastegatePositionSensor) == 112);
|
|
static_assert(offsetof(output_channels_s, wheelSpeedLf) == 114);
|
|
static_assert(offsetof(output_channels_s, wheelSpeedRf) == 115);
|
|
static_assert(offsetof(output_channels_s, calibrationValue) == 116);
|
|
static_assert(offsetof(output_channels_s, calibrationMode) == 120);
|
|
static_assert(offsetof(output_channels_s, idleStepperTargetPosition) == 121);
|
|
static_assert(offsetof(output_channels_s, wheelSpeedLr) == 122);
|
|
static_assert(offsetof(output_channels_s, wheelSpeedRr) == 123);
|
|
static_assert(offsetof(output_channels_s, tsConfigVersion) == 124);
|
|
static_assert(offsetof(output_channels_s, orderingErrorCounter) == 128);
|
|
static_assert(offsetof(output_channels_s, warningCounter) == 132);
|
|
static_assert(offsetof(output_channels_s, lastErrorCode) == 134);
|
|
static_assert(offsetof(output_channels_s, recentErrorCode) == 136);
|
|
static_assert(offsetof(output_channels_s, debugFloatField1) == 152);
|
|
static_assert(offsetof(output_channels_s, debugFloatField2) == 156);
|
|
static_assert(offsetof(output_channels_s, debugFloatField3) == 160);
|
|
static_assert(offsetof(output_channels_s, debugFloatField4) == 164);
|
|
static_assert(offsetof(output_channels_s, debugFloatField5) == 168);
|
|
static_assert(offsetof(output_channels_s, debugFloatField6) == 172);
|
|
static_assert(offsetof(output_channels_s, debugFloatField7) == 176);
|
|
static_assert(offsetof(output_channels_s, debugIntField1) == 180);
|
|
static_assert(offsetof(output_channels_s, debugIntField2) == 184);
|
|
static_assert(offsetof(output_channels_s, debugIntField3) == 188);
|
|
static_assert(offsetof(output_channels_s, debugIntField4) == 192);
|
|
static_assert(offsetof(output_channels_s, debugIntField5) == 194);
|
|
static_assert(offsetof(output_channels_s, egt) == 196);
|
|
static_assert(offsetof(output_channels_s, rawTps1Primary) == 212);
|
|
static_assert(offsetof(output_channels_s, rawPpsPrimary) == 214);
|
|
static_assert(offsetof(output_channels_s, rawClt) == 216);
|
|
static_assert(offsetof(output_channels_s, rawIat) == 218);
|
|
static_assert(offsetof(output_channels_s, rawOilPressure) == 220);
|
|
static_assert(offsetof(output_channels_s, fuelClosedLoopBinIdx) == 222);
|
|
static_assert(offsetof(output_channels_s, tcuCurrentGear) == 223);
|
|
static_assert(offsetof(output_channels_s, AFRValue) == 224);
|
|
static_assert(offsetof(output_channels_s, VssAcceleration) == 226);
|
|
static_assert(offsetof(output_channels_s, lambdaValues) == 228);
|
|
static_assert(offsetof(output_channels_s, AFRValue2) == 236);
|
|
static_assert(offsetof(output_channels_s, vvtPositionB1E) == 238);
|
|
static_assert(offsetof(output_channels_s, vvtPositionB2I) == 240);
|
|
static_assert(offsetof(output_channels_s, vvtPositionB2E) == 242);
|
|
static_assert(offsetof(output_channels_s, fuelPidCorrection) == 244);
|
|
static_assert(offsetof(output_channels_s, rawTps1Secondary) == 252);
|
|
static_assert(offsetof(output_channels_s, rawTps2Primary) == 254);
|
|
static_assert(offsetof(output_channels_s, rawTps2Secondary) == 256);
|
|
static_assert(offsetof(output_channels_s, accelerationVert) == 258);
|
|
static_assert(offsetof(output_channels_s, gyroYaw) == 260);
|
|
static_assert(offsetof(output_channels_s, turboSpeed) == 262);
|
|
static_assert(offsetof(output_channels_s, ignitionAdvanceCyl) == 264);
|
|
static_assert(offsetof(output_channels_s, tps1Split) == 288);
|
|
static_assert(offsetof(output_channels_s, tps2Split) == 290);
|
|
static_assert(offsetof(output_channels_s, tps12Split) == 292);
|
|
static_assert(offsetof(output_channels_s, accPedalSplit) == 294);
|
|
static_assert(offsetof(output_channels_s, sparkCutReason) == 296);
|
|
static_assert(offsetof(output_channels_s, fuelCutReason) == 297);
|
|
static_assert(offsetof(output_channels_s, mafEstimate) == 298);
|
|
static_assert(offsetof(output_channels_s, instantRpm) == 300);
|
|
static_assert(offsetof(output_channels_s, rawMap) == 302);
|
|
static_assert(offsetof(output_channels_s, rawAfr) == 304);
|
|
static_assert(offsetof(output_channels_s, rawFuelTankLevel) == 306);
|
|
static_assert(offsetof(output_channels_s, calibrationValue2) == 308);
|
|
static_assert(offsetof(output_channels_s, luaInvocationCounter) == 312);
|
|
static_assert(offsetof(output_channels_s, luaLastCycleDuration) == 316);
|
|
static_assert(offsetof(output_channels_s, tcu_currentRange) == 320);
|
|
static_assert(offsetof(output_channels_s, tcRatio) == 322);
|
|
static_assert(offsetof(output_channels_s, lastShiftTime) == 324);
|
|
static_assert(offsetof(output_channels_s, vssEdgeCounter) == 328);
|
|
static_assert(offsetof(output_channels_s, issEdgeCounter) == 332);
|
|
static_assert(offsetof(output_channels_s, auxLinear1) == 336);
|
|
static_assert(offsetof(output_channels_s, auxLinear2) == 340);
|
|
static_assert(offsetof(output_channels_s, auxLinear3) == 344);
|
|
static_assert(offsetof(output_channels_s, auxLinear4) == 348);
|
|
static_assert(offsetof(output_channels_s, fallbackMap) == 352);
|
|
static_assert(offsetof(output_channels_s, instantMAPValue) == 354);
|
|
static_assert(offsetof(output_channels_s, maxLockedDuration) == 356);
|
|
static_assert(offsetof(output_channels_s, canWriteOk) == 358);
|
|
static_assert(offsetof(output_channels_s, canWriteNotOk) == 360);
|
|
static_assert(offsetof(output_channels_s, starterState) == 362);
|
|
static_assert(offsetof(output_channels_s, starterRelayDisable) == 363);
|
|
static_assert(offsetof(output_channels_s, multiSparkCounter) == 364);
|
|
static_assert(offsetof(output_channels_s, extiOverflowCount) == 365);
|
|
static_assert(offsetof(output_channels_s, auxSpeed1) == 428);
|
|
static_assert(offsetof(output_channels_s, auxSpeed2) == 430);
|
|
static_assert(offsetof(output_channels_s, ISSValue) == 432);
|
|
static_assert(offsetof(output_channels_s, rawAnalogInput) == 434);
|
|
static_assert(offsetof(output_channels_s, gppwmOutput) == 450);
|
|
static_assert(offsetof(output_channels_s, gppwmXAxis) == 454);
|
|
static_assert(offsetof(output_channels_s, gppwmYAxis) == 462);
|
|
static_assert(offsetof(output_channels_s, rawBattery) == 470);
|
|
static_assert(offsetof(output_channels_s, ignBlendParameter) == 472);
|
|
static_assert(offsetof(output_channels_s, ignBlendBias) == 480);
|
|
static_assert(offsetof(output_channels_s, ignBlendOutput) == 484);
|
|
static_assert(offsetof(output_channels_s, ignBlendYAxis) == 492);
|
|
static_assert(offsetof(output_channels_s, veBlendParameter) == 500);
|
|
static_assert(offsetof(output_channels_s, veBlendBias) == 508);
|
|
static_assert(offsetof(output_channels_s, veBlendOutput) == 512);
|
|
static_assert(offsetof(output_channels_s, veBlendYAxis) == 520);
|
|
static_assert(offsetof(output_channels_s, boostOpenLoopBlendParameter) == 528);
|
|
static_assert(offsetof(output_channels_s, boostOpenLoopBlendBias) == 532);
|
|
static_assert(offsetof(output_channels_s, boostOpenLoopBlendOutput) == 534);
|
|
static_assert(offsetof(output_channels_s, boostOpenLoopBlendYAxis) == 536);
|
|
static_assert(offsetof(output_channels_s, boostClosedLoopBlendParameter) == 540);
|
|
static_assert(offsetof(output_channels_s, boostClosedLoopBlendBias) == 544);
|
|
static_assert(offsetof(output_channels_s, boostClosedLoopBlendOutput) == 546);
|
|
static_assert(offsetof(output_channels_s, boostClosedLoopBlendYAxis) == 550);
|
|
static_assert(offsetof(output_channels_s, mapFast) == 554);
|
|
static_assert(offsetof(output_channels_s, outputRequestPeriod) == 556);
|
|
static_assert(offsetof(output_channels_s, luaGauges) == 560);
|
|
static_assert(offsetof(output_channels_s, rawMaf2) == 568);
|
|
static_assert(offsetof(output_channels_s, mafMeasured2) == 570);
|
|
static_assert(offsetof(output_channels_s, schedulingUsedCount) == 572);
|
|
static_assert(offsetof(output_channels_s, Gego) == 574);
|
|
static_assert(offsetof(output_channels_s, testBenchIter) == 576);
|
|
static_assert(offsetof(output_channels_s, oilTemp) == 578);
|
|
static_assert(offsetof(output_channels_s, fuelTemp) == 580);
|
|
static_assert(offsetof(output_channels_s, ambientTemp) == 582);
|
|
static_assert(offsetof(output_channels_s, compressorDischargeTemp) == 584);
|
|
static_assert(offsetof(output_channels_s, compressorDischargePressure) == 586);
|
|
static_assert(offsetof(output_channels_s, throttleInletPressure) == 588);
|
|
static_assert(offsetof(output_channels_s, ignitionOnTime) == 590);
|
|
static_assert(offsetof(output_channels_s, engineRunTime) == 592);
|
|
static_assert(offsetof(output_channels_s, distanceTraveled) == 594);
|
|
static_assert(offsetof(output_channels_s, afrGasolineScale) == 596);
|
|
static_assert(offsetof(output_channels_s, afr2GasolineScale) == 598);
|
|
static_assert(offsetof(output_channels_s, actualLastInjectionStage2) == 600);
|
|
static_assert(offsetof(output_channels_s, injectorDutyCycleStage2) == 602);
|
|
static_assert(offsetof(output_channels_s, pad) == 603);
|
|
static_assert(offsetof(output_channels_s, mapAveragingSamples) == 604);
|
|
static_assert(offsetof(output_channels_s, mapPerCylinder) == 606);
|
|
static_assert(offsetof(output_channels_s, dwellAccuracyRatio) == 618);
|
|
|