mirror of https://github.com/FOME-Tech/fome-fw.git
758 lines
19 KiB
C
758 lines
19 KiB
C
#pragma once
|
|
#include "rusefi_types.h"
|
|
struct pid_status_s {
|
|
// offset 0
|
|
float pTerm = (float)0;
|
|
// offset 4
|
|
scaled_channel<int16_t, 100, 1> iTerm = (int16_t)0;
|
|
// offset 6
|
|
scaled_channel<int16_t, 100, 1> dTerm = (int16_t)0;
|
|
// offset 8
|
|
scaled_channel<int16_t, 100, 1> output = (int16_t)0;
|
|
// offset 10
|
|
scaled_channel<int16_t, 100, 1> error = (int16_t)0;
|
|
// offset 12
|
|
uint32_t resetCounter = (uint32_t)0;
|
|
};
|
|
static_assert(sizeof(pid_status_s) == 16);
|
|
|
|
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 {};
|
|
// Radiator Fan
|
|
// offset 0 bit 4
|
|
bool isFanOn : 1 {};
|
|
// offset 0 bit 5
|
|
bool isO2HeaterOn : 1 {};
|
|
// offset 0 bit 6
|
|
bool checkEngine : 1 {};
|
|
// offset 0 bit 7
|
|
bool needBurn : 1 {};
|
|
// SD: MSD
|
|
// offset 0 bit 8
|
|
bool sd_msd : 1 {};
|
|
// Radiator Fan 2
|
|
// offset 0 bit 9
|
|
bool isFan2On : 1 {};
|
|
// Harley ACR: Active
|
|
// offset 0 bit 10
|
|
bool acrActive : 1 {};
|
|
// Tooth Logger Ready
|
|
// offset 0 bit 11
|
|
bool toothLogReady : 1 {};
|
|
// Error: TPS
|
|
// offset 0 bit 12
|
|
bool isTpsError : 1 {};
|
|
// Error: CLT
|
|
// offset 0 bit 13
|
|
bool isCltError : 1 {};
|
|
// Error: MAP
|
|
// offset 0 bit 14
|
|
bool isMapError : 1 {};
|
|
// Error: IAT
|
|
// offset 0 bit 15
|
|
bool isIatError : 1 {};
|
|
// Error: Trigger
|
|
// offset 0 bit 16
|
|
bool isTriggerError : 1 {};
|
|
// Error: Active
|
|
// offset 0 bit 17
|
|
bool hasCriticalError : 1 {};
|
|
// Warning: Active
|
|
// offset 0 bit 18
|
|
bool isWarnNow : 1 {};
|
|
// Error: Pedal
|
|
// offset 0 bit 19
|
|
bool isPedalError : 1 {};
|
|
// Launch Control Triggered
|
|
// offset 0 bit 20
|
|
bool launchTriggered : 1 {};
|
|
// Error: TPS2
|
|
// offset 0 bit 21
|
|
bool isTps2Error : 1 {};
|
|
// Injector Fault
|
|
// offset 0 bit 22
|
|
bool injectorFault : 1 {};
|
|
// Ignition Fault
|
|
// offset 0 bit 23
|
|
bool ignitionFault : 1 {};
|
|
// offset 0 bit 24
|
|
bool isMainRelayOn : 1 {};
|
|
// isUsbConnected
|
|
// Original reason for this is to check if USB is connected from Lua
|
|
// offset 0 bit 25
|
|
bool isUsbConnected : 1 {};
|
|
// offset 0 bit 26
|
|
bool dfcoActive : 1 {};
|
|
// offset 0 bit 27
|
|
bool unusedBit_27_27 : 1 {};
|
|
// offset 0 bit 28
|
|
bool unusedBit_27_28 : 1 {};
|
|
// offset 0 bit 29
|
|
bool unusedBit_27_29 : 1 {};
|
|
// offset 0 bit 30
|
|
bool unusedBit_27_30 : 1 {};
|
|
// offset 0 bit 31
|
|
bool unusedBit_27_31 : 1 {};
|
|
// @@GAUGE_NAME_RPM@@
|
|
// RPM
|
|
// offset 4
|
|
uint16_t RPMValue = (uint16_t)0;
|
|
// dRPM
|
|
// RPM acceleration
|
|
// offset 6
|
|
uint16_t rpmAcceleration = (uint16_t)0;
|
|
// @@GAUGE_NAME_GEAR_RATIO@@
|
|
// value
|
|
// offset 8
|
|
scaled_channel<uint16_t, 100, 1> speedToRpmRatio = (uint16_t)0;
|
|
// @@GAUGE_NAME_VVS@@
|
|
// kph
|
|
// offset 10
|
|
uint8_t vehicleSpeedKph = (uint8_t)0;
|
|
// @@GAUGE_NAME_ECU_TEMPERATURE@@
|
|
// deg C
|
|
// offset 11
|
|
int8_t internalMcuTemperature = (int8_t)0;
|
|
// @@GAUGE_NAME_CLT@@
|
|
// deg C
|
|
// offset 12
|
|
scaled_channel<int16_t, 100, 1> coolant = (int16_t)0;
|
|
// @@GAUGE_NAME_IAT@@
|
|
// deg C
|
|
// offset 14
|
|
scaled_channel<int16_t, 100, 1> intake = (int16_t)0;
|
|
// deg C
|
|
// offset 16
|
|
scaled_channel<int16_t, 100, 1> auxTemp1 = (int16_t)0;
|
|
// deg C
|
|
// offset 18
|
|
scaled_channel<int16_t, 100, 1> auxTemp2 = (int16_t)0;
|
|
// @@GAUGE_NAME_TPS@@
|
|
// %
|
|
// offset 20
|
|
scaled_channel<int16_t, 100, 1> TPSValue = (int16_t)0;
|
|
// @@GAUGE_NAME_THROTTLE_PEDAL@@
|
|
// %
|
|
// offset 22
|
|
scaled_channel<int16_t, 100, 1> throttlePedalPosition = (int16_t)0;
|
|
// ADC
|
|
// offset 24
|
|
uint16_t tpsADC = (uint16_t)0;
|
|
// V
|
|
// offset 26
|
|
scaled_channel<uint16_t, 1000, 1> rawMaf = (uint16_t)0;
|
|
// @@GAUGE_NAME_AIR_FLOW_MEASURED@@
|
|
// kg/h
|
|
// offset 28
|
|
scaled_channel<uint16_t, 10, 1> mafMeasured = (uint16_t)0;
|
|
// @@GAUGE_NAME_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;
|
|
// @@GAUGE_NAME_LAMBDA@@
|
|
// offset 34
|
|
scaled_channel<uint16_t, 10000, 1> lambdaValue = (uint16_t)0;
|
|
// @@GAUGE_NAME_KNOCK_RETARD@@
|
|
// deg
|
|
// offset 36
|
|
scaled_channel<uint8_t, 10, 1> knockRetard = (uint8_t)0;
|
|
// offset 37
|
|
uint8_t alignmentFill_at_37[1];
|
|
// @@GAUGE_NAME_VBAT@@
|
|
// V
|
|
// offset 38
|
|
scaled_channel<uint16_t, 1000, 1> VBatt = (uint16_t)0;
|
|
// @@GAUGE_NAME_OIL_PRESSURE@@
|
|
// kPa
|
|
// offset 40
|
|
scaled_channel<uint16_t, 30, 1> oilPressure = (uint16_t)0;
|
|
// @@GAUGE_NAME_VVT_B1I@@
|
|
// deg
|
|
// offset 42
|
|
scaled_channel<int16_t, 50, 1> vvtPositionB1I = (int16_t)0;
|
|
// @@GAUGE_NAME_FUEL_LAST_INJECTION@@
|
|
// Actual last injection time - including all compensation and injection mode
|
|
// ms
|
|
// offset 44
|
|
scaled_channel<uint16_t, 300, 1> actualLastInjection = (uint16_t)0;
|
|
// @@GAUGE_NAME_FUEL_INJ_DUTY@@
|
|
// %
|
|
// offset 46
|
|
scaled_channel<uint8_t, 2, 1> injectorDutyCycle = (uint8_t)0;
|
|
// @@GAUGE_NAME_FUEL_VE@@
|
|
// ratio
|
|
// offset 47
|
|
scaled_channel<uint8_t, 2, 1> veValue = (uint8_t)0;
|
|
// @@GAUGE_NAME_FUEL_INJECTION_TIMING@@
|
|
// deg
|
|
// offset 48
|
|
int16_t injectionOffset = (int16_t)0;
|
|
// @@GAUGE_NAME_ENGINE_CRC16@@
|
|
// crc16
|
|
// offset 50
|
|
uint16_t engineMakeCodeNameCrc16 = (uint16_t)0;
|
|
// @@GAUGE_NAME_FUEL_WALL_AMOUNT@@
|
|
// mg
|
|
// offset 52
|
|
scaled_channel<uint16_t, 100, 1> wallFuelAmount = (uint16_t)0;
|
|
// @@GAUGE_NAME_FUEL_WALL_CORRECTION@@
|
|
// mg
|
|
// offset 54
|
|
scaled_channel<int16_t, 100, 1> wallFuelCorrectionValue = (int16_t)0;
|
|
// offset 56
|
|
uint16_t revolutionCounterSinceStart = (uint16_t)0;
|
|
// CAN: Rx
|
|
// offset 58
|
|
uint16_t canReadCounter = (uint16_t)0;
|
|
// @@GAUGE_NAME_FUEL_TPS_EXTRA@@
|
|
// ms
|
|
// offset 60
|
|
scaled_channel<int16_t, 300, 1> tpsAccelFuel = (int16_t)0;
|
|
// @@GAUGE_NAME_TIMING_ADVANCE@@
|
|
// deg
|
|
// offset 62
|
|
scaled_channel<int16_t, 50, 1> ignitionAdvance = (int16_t)0;
|
|
// @@GAUGE_NAME_IGNITION_MODE@@
|
|
// offset 64
|
|
uint8_t currentIgnitionMode = (uint8_t)0;
|
|
// @@GAUGE_NAME_INJECTION_MODE@@
|
|
// offset 65
|
|
uint8_t currentInjectionMode = (uint8_t)0;
|
|
// @@GAUGE_NAME_DWELL_DUTY@@
|
|
// %
|
|
// offset 66
|
|
scaled_channel<uint16_t, 100, 1> coilDutyCycle = (uint16_t)0;
|
|
// ETB Target
|
|
// %
|
|
// offset 68
|
|
scaled_channel<int16_t, 100, 1> etbTarget = (int16_t)0;
|
|
// @@GAUGE_NAME_ETB_DUTY@@
|
|
// %
|
|
// offset 70
|
|
scaled_channel<int16_t, 100, 1> etb1DutyCycle = (int16_t)0;
|
|
// Fuel level
|
|
// %
|
|
// offset 72
|
|
scaled_channel<int16_t, 100, 1> fuelTankLevel = (int16_t)0;
|
|
// @@GAUGE_NAME_FUEL_CONSUMPTION@@
|
|
// grams
|
|
// offset 74
|
|
uint16_t totalFuelConsumption = (uint16_t)0;
|
|
// @@GAUGE_NAME_FUEL_FLOW@@
|
|
// gram/s
|
|
// offset 76
|
|
scaled_channel<uint16_t, 200, 1> fuelFlowRate = (uint16_t)0;
|
|
// @@GAUGE_NAME_TPS2@@
|
|
// %
|
|
// offset 78
|
|
scaled_channel<int16_t, 100, 1> TPS2Value = (int16_t)0;
|
|
// @@GAUGE_NAME_TUNE_CRC16@@
|
|
// crc16
|
|
// offset 80
|
|
uint16_t tuneCrc16 = (uint16_t)0;
|
|
// offset 82
|
|
uint8_t alignmentFill_at_82[2];
|
|
// @@GAUGE_NAME_KNOCK_LEVEL@@
|
|
// Volts
|
|
// offset 84
|
|
float knockLevel = (float)0;
|
|
// @@GAUGE_NAME_UPTIME@@
|
|
// sec
|
|
// offset 88
|
|
uint32_t seconds = (uint32_t)0;
|
|
// Engine Mode
|
|
// em
|
|
// offset 92
|
|
uint32_t engineMode = (uint32_t)0;
|
|
// @@GAUGE_NAME_VERSION@@
|
|
// version_f
|
|
// offset 96
|
|
uint32_t firmwareVersion = (uint32_t)0;
|
|
// V
|
|
// offset 100
|
|
scaled_channel<int16_t, 1000, 1> rawWastegatePosition = (int16_t)0;
|
|
// @@GAUGE_NAME_ACCEL_X@@
|
|
// G
|
|
// offset 102
|
|
scaled_channel<int16_t, 100, 1> accelerationX = (int16_t)0;
|
|
// @@GAUGE_NAME_ACCEL_Y@@
|
|
// G
|
|
// offset 104
|
|
scaled_channel<int16_t, 100, 1> accelerationY = (int16_t)0;
|
|
// @@GAUGE_NAME_DETECTED_GEAR@@
|
|
// offset 106
|
|
uint8_t detectedGear = (uint8_t)0;
|
|
// offset 107
|
|
uint8_t maxTriggerReentrant = (uint8_t)0;
|
|
// V
|
|
// offset 108
|
|
scaled_channel<int16_t, 1000, 1> rawLowFuelPressure = (int16_t)0;
|
|
// V
|
|
// offset 110
|
|
scaled_channel<int16_t, 1000, 1> rawHighFuelPressure = (int16_t)0;
|
|
// @@GAUGE_NAME_FUEL_PRESSURE_LOW@@
|
|
// kpa
|
|
// offset 112
|
|
scaled_channel<int16_t, 30, 1> lowFuelPressure = (int16_t)0;
|
|
// @@GAUGE_NAME_FUEL_PRESSURE_HIGH@@
|
|
// bar
|
|
// offset 114
|
|
scaled_channel<int16_t, 10, 1> highFuelPressure = (int16_t)0;
|
|
// V
|
|
// offset 116
|
|
scaled_channel<int16_t, 1000, 1> rawPpsSecondary = (int16_t)0;
|
|
// @@GAUGE_NAME_DESIRED_GEAR@@
|
|
// gear
|
|
// offset 118
|
|
int8_t tcuDesiredGear = (int8_t)0;
|
|
// @@GAUGE_NAME_FLEX@@
|
|
// %
|
|
// offset 119
|
|
scaled_channel<uint8_t, 2, 1> flexPercent = (uint8_t)0;
|
|
// @@GAUGE_NAME_WG_POSITION@@
|
|
// %
|
|
// offset 120
|
|
scaled_channel<int16_t, 100, 1> wastegatePositionSensor = (int16_t)0;
|
|
// offset 122
|
|
uint8_t alignmentFill_at_122[2];
|
|
// offset 124
|
|
uint32_t tsConfigVersion = (uint32_t)0;
|
|
// offset 128
|
|
float calibrationValue = (float)0;
|
|
// offset 132
|
|
uint8_t calibrationMode = (uint8_t)0;
|
|
// Idle: Stepper target position
|
|
// offset 133
|
|
uint8_t idleTargetPosition = (uint8_t)0;
|
|
// offset 134
|
|
uint8_t alignmentFill_at_134[2];
|
|
// @@GAUGE_NAME_TRG_ERR@@
|
|
// counter
|
|
// offset 136
|
|
uint32_t totalTriggerErrorCounter = (uint32_t)0;
|
|
// offset 140
|
|
uint32_t orderingErrorCounter = (uint32_t)0;
|
|
// @@GAUGE_NAME_WARNING_COUNTER@@
|
|
// count
|
|
// offset 144
|
|
uint16_t warningCounter = (uint16_t)0;
|
|
// @@GAUGE_NAME_WARNING_LAST@@
|
|
// error
|
|
// offset 146
|
|
uint16_t lastErrorCode = (uint16_t)0;
|
|
// error
|
|
// offset 148
|
|
uint16_t recentErrorCode[8];
|
|
// val
|
|
// offset 164
|
|
float debugFloatField1 = (float)0;
|
|
// val
|
|
// offset 168
|
|
float debugFloatField2 = (float)0;
|
|
// val
|
|
// offset 172
|
|
float debugFloatField3 = (float)0;
|
|
// val
|
|
// offset 176
|
|
float debugFloatField4 = (float)0;
|
|
// val
|
|
// offset 180
|
|
float debugFloatField5 = (float)0;
|
|
// val
|
|
// offset 184
|
|
float debugFloatField6 = (float)0;
|
|
// val
|
|
// offset 188
|
|
float debugFloatField7 = (float)0;
|
|
// val
|
|
// offset 192
|
|
uint32_t debugIntField1 = (uint32_t)0;
|
|
// val
|
|
// offset 196
|
|
uint32_t debugIntField2 = (uint32_t)0;
|
|
// val
|
|
// offset 200
|
|
uint32_t debugIntField3 = (uint32_t)0;
|
|
// val
|
|
// offset 204
|
|
int16_t debugIntField4 = (int16_t)0;
|
|
// val
|
|
// offset 206
|
|
int16_t debugIntField5 = (int16_t)0;
|
|
// EGT
|
|
// deg C
|
|
// offset 208
|
|
uint16_t egt[EGT_CHANNEL_COUNT];
|
|
// V
|
|
// offset 224
|
|
scaled_channel<int16_t, 1000, 1> rawTps1Primary = (int16_t)0;
|
|
// V
|
|
// offset 226
|
|
scaled_channel<int16_t, 1000, 1> rawPpsPrimary = (int16_t)0;
|
|
// V
|
|
// offset 228
|
|
scaled_channel<int16_t, 1000, 1> rawClt = (int16_t)0;
|
|
// V
|
|
// offset 230
|
|
scaled_channel<int16_t, 1000, 1> rawIat = (int16_t)0;
|
|
// V
|
|
// offset 232
|
|
scaled_channel<int16_t, 1000, 1> rawOilPressure = (int16_t)0;
|
|
// offset 234
|
|
uint8_t fuelClosedLoopBinIdx = (uint8_t)0;
|
|
// @@GAUGE_NAME_CURRENT_GEAR@@
|
|
// gear
|
|
// offset 235
|
|
int8_t tcuCurrentGear = (int8_t)0;
|
|
// Knock: Cyl
|
|
// dBv
|
|
// offset 236
|
|
int8_t knock[12];
|
|
// @@GAUGE_NAME_AFR@@
|
|
// AFR
|
|
// offset 248
|
|
scaled_channel<uint16_t, 1000, 1> AFRValue = (uint16_t)0;
|
|
// Vss Accel
|
|
// m/s2
|
|
// offset 250
|
|
scaled_channel<uint16_t, 300, 1> VssAcceleration = (uint16_t)0;
|
|
// @@GAUGE_NAME_LAMBDA2@@
|
|
// offset 252
|
|
scaled_channel<uint16_t, 10000, 1> lambdaValue2 = (uint16_t)0;
|
|
// @@GAUGE_NAME_AFR2@@
|
|
// AFR
|
|
// offset 254
|
|
scaled_channel<uint16_t, 1000, 1> AFRValue2 = (uint16_t)0;
|
|
// @@GAUGE_NAME_VVT_B1E@@
|
|
// deg
|
|
// offset 256
|
|
scaled_channel<int16_t, 50, 1> vvtPositionB1E = (int16_t)0;
|
|
// @@GAUGE_NAME_VVT_B2I@@
|
|
// deg
|
|
// offset 258
|
|
scaled_channel<int16_t, 50, 1> vvtPositionB2I = (int16_t)0;
|
|
// @@GAUGE_NAME_VVT_B2E@@
|
|
// deg
|
|
// offset 260
|
|
scaled_channel<int16_t, 50, 1> vvtPositionB2E = (int16_t)0;
|
|
// Fuel: Trim bank
|
|
// %
|
|
// offset 262
|
|
scaled_channel<int16_t, 100, 1> fuelPidCorrection[2];
|
|
// V
|
|
// offset 266
|
|
scaled_channel<int16_t, 1000, 1> rawTps1Secondary = (int16_t)0;
|
|
// V
|
|
// offset 268
|
|
scaled_channel<int16_t, 1000, 1> rawTps2Primary = (int16_t)0;
|
|
// V
|
|
// offset 270
|
|
scaled_channel<int16_t, 1000, 1> rawTps2Secondary = (int16_t)0;
|
|
// @@GAUGE_NAME_KNOCK_COUNTER@@
|
|
// offset 272
|
|
uint16_t knockCount = (uint16_t)0;
|
|
// @@GAUGE_NAME_ACCEL_Z@@
|
|
// G
|
|
// offset 274
|
|
scaled_channel<int16_t, 100, 1> accelerationZ = (int16_t)0;
|
|
// @@GAUGE_NAME_ACCEL_ROLL@@
|
|
// G
|
|
// offset 276
|
|
scaled_channel<int16_t, 100, 1> accelerationRoll = (int16_t)0;
|
|
// @@GAUGE_NAME_ACCEL_YAW@@
|
|
// G
|
|
// offset 278
|
|
scaled_channel<int16_t, 100, 1> accelerationYaw = (int16_t)0;
|
|
// deg
|
|
// offset 280
|
|
int8_t vvtTargets[4];
|
|
// @@GAUGE_NAME_TURBO_SPEED@@
|
|
// hz
|
|
// offset 284
|
|
uint16_t turboSpeed = (uint16_t)0;
|
|
// Ign: Timing Cyl
|
|
// deg
|
|
// offset 286
|
|
scaled_channel<int16_t, 50, 1> ignitionAdvanceCyl[12];
|
|
// %
|
|
// offset 310
|
|
scaled_channel<int16_t, 100, 1> tps1Split = (int16_t)0;
|
|
// %
|
|
// offset 312
|
|
scaled_channel<int16_t, 100, 1> tps2Split = (int16_t)0;
|
|
// %
|
|
// offset 314
|
|
scaled_channel<int16_t, 100, 1> tps12Split = (int16_t)0;
|
|
// %
|
|
// offset 316
|
|
scaled_channel<int16_t, 100, 1> accPedalSplit = (int16_t)0;
|
|
// Ign: Cut Code
|
|
// code
|
|
// offset 318
|
|
int8_t sparkCutReason = (int8_t)0;
|
|
// Fuel: Cut Code
|
|
// code
|
|
// offset 319
|
|
int8_t fuelCutReason = (int8_t)0;
|
|
// @@GAUGE_NAME_AIR_FLOW_ESTIMATE@@
|
|
// kg/h
|
|
// offset 320
|
|
scaled_channel<uint16_t, 10, 1> mafEstimate = (uint16_t)0;
|
|
// rpm
|
|
// offset 322
|
|
uint16_t instantRpm = (uint16_t)0;
|
|
// V
|
|
// offset 324
|
|
scaled_channel<uint16_t, 1000, 1> rawMap = (uint16_t)0;
|
|
// V
|
|
// offset 326
|
|
scaled_channel<uint16_t, 1000, 1> rawAfr = (uint16_t)0;
|
|
// offset 328
|
|
float calibrationValue2 = (float)0;
|
|
// Lua: Tick counter
|
|
// count
|
|
// offset 332
|
|
uint32_t luaInvocationCounter = (uint32_t)0;
|
|
// Lua: Last tick duration
|
|
// nt
|
|
// offset 336
|
|
uint32_t luaLastCycleDuration = (uint32_t)0;
|
|
// "TCU: Current Range"
|
|
// offset 340
|
|
uint8_t tcu_currentRange = (uint8_t)0;
|
|
// offset 341
|
|
uint8_t alignmentFill_at_341[1];
|
|
// @@GAUGE_NAME_TC_RATIO@@
|
|
// value
|
|
// offset 342
|
|
scaled_channel<uint16_t, 100, 1> tcRatio = (uint16_t)0;
|
|
// offset 344
|
|
float lastShiftTime = (float)0;
|
|
// offset 348
|
|
uint32_t vssEdgeCounter = (uint32_t)0;
|
|
// offset 352
|
|
uint32_t issEdgeCounter = (uint32_t)0;
|
|
// @@GAUGE_NAME_AUX_LINEAR_1@@
|
|
// offset 356
|
|
scaled_channel<int16_t, 100, 1> auxLinear1 = (int16_t)0;
|
|
// @@GAUGE_NAME_AUX_LINEAR_2@@
|
|
// offset 358
|
|
scaled_channel<int16_t, 100, 1> auxLinear2 = (int16_t)0;
|
|
// kPa
|
|
// offset 360
|
|
scaled_channel<uint16_t, 10, 1> fallbackMap = (uint16_t)0;
|
|
// Instant MAP
|
|
// kPa
|
|
// offset 362
|
|
scaled_channel<uint16_t, 30, 1> instantMAPValue = (uint16_t)0;
|
|
// us
|
|
// offset 364
|
|
uint16_t maxLockedDuration = (uint16_t)0;
|
|
// CAN: Tx OK
|
|
// offset 366
|
|
uint16_t canWriteOk = (uint16_t)0;
|
|
// CAN: Tx err
|
|
// offset 368
|
|
uint16_t canWriteNotOk = (uint16_t)0;
|
|
// offset 370
|
|
uint8_t alignmentFill_at_370[2];
|
|
// offset 372
|
|
uint32_t triggerPrimaryFall = (uint32_t)0;
|
|
// offset 376
|
|
uint32_t triggerPrimaryRise = (uint32_t)0;
|
|
// offset 380
|
|
uint32_t triggerSecondaryFall = (uint32_t)0;
|
|
// offset 384
|
|
uint32_t triggerSecondaryRise = (uint32_t)0;
|
|
// offset 388
|
|
uint32_t triggerVvtFall = (uint32_t)0;
|
|
// offset 392
|
|
uint32_t triggerVvtRise = (uint32_t)0;
|
|
// offset 396
|
|
uint8_t starterState = (uint8_t)0;
|
|
// offset 397
|
|
uint8_t starterRelayDisable = (uint8_t)0;
|
|
// Ign: Multispark count
|
|
// offset 398
|
|
uint8_t multiSparkCounter = (uint8_t)0;
|
|
// offset 399
|
|
uint8_t extiOverflowCount = (uint8_t)0;
|
|
// offset 400
|
|
pid_status_s alternatorStatus;
|
|
// offset 416
|
|
pid_status_s idleStatus;
|
|
// offset 432
|
|
pid_status_s etbStatus;
|
|
// offset 448
|
|
pid_status_s boostStatus;
|
|
// offset 464
|
|
pid_status_s wastegateDcStatus;
|
|
// offset 480
|
|
pid_status_s vvtStatus[CAM_INPUTS_COUNT];
|
|
// Aux speed 1
|
|
// s
|
|
// offset 544
|
|
uint16_t auxSpeed1 = (uint16_t)0;
|
|
// Aux speed 2
|
|
// s
|
|
// offset 546
|
|
uint16_t auxSpeed2 = (uint16_t)0;
|
|
// @@GAUGE_NAME_ISS@@
|
|
// RPM
|
|
// offset 548
|
|
uint16_t ISSValue = (uint16_t)0;
|
|
// V
|
|
// offset 550
|
|
scaled_channel<int16_t, 1000, 1> rawAnalogInput[LUA_ANALOG_INPUT_COUNT];
|
|
// GPPWM Output
|
|
// %
|
|
// offset 566
|
|
scaled_channel<uint8_t, 2, 1> gppwmOutput[4];
|
|
// offset 570
|
|
int16_t gppwmXAxis[4];
|
|
// offset 578
|
|
scaled_channel<int16_t, 10, 1> gppwmYAxis[4];
|
|
// V
|
|
// offset 586
|
|
scaled_channel<int16_t, 1000, 1> rawBattery = (int16_t)0;
|
|
// offset 588
|
|
scaled_channel<int16_t, 10, 1> ignBlendParameter[IGN_BLEND_COUNT];
|
|
// %
|
|
// offset 596
|
|
scaled_channel<uint8_t, 2, 1> ignBlendBias[IGN_BLEND_COUNT];
|
|
// deg
|
|
// offset 600
|
|
scaled_channel<int16_t, 100, 1> ignBlendOutput[IGN_BLEND_COUNT];
|
|
// offset 608
|
|
scaled_channel<int16_t, 10, 1> veBlendParameter[VE_BLEND_COUNT];
|
|
// %
|
|
// offset 616
|
|
scaled_channel<uint8_t, 2, 1> veBlendBias[VE_BLEND_COUNT];
|
|
// %
|
|
// offset 620
|
|
scaled_channel<int16_t, 100, 1> veBlendOutput[VE_BLEND_COUNT];
|
|
// offset 628
|
|
scaled_channel<int16_t, 10, 1> boostOpenLoopBlendParameter[BOOST_BLEND_COUNT];
|
|
// %
|
|
// offset 632
|
|
scaled_channel<uint8_t, 2, 1> boostOpenLoopBlendBias[BOOST_BLEND_COUNT];
|
|
// %
|
|
// offset 634
|
|
int8_t boostOpenLoopBlendOutput[BOOST_BLEND_COUNT];
|
|
// offset 636
|
|
scaled_channel<int16_t, 10, 1> boostClosedLoopBlendParameter[BOOST_BLEND_COUNT];
|
|
// %
|
|
// offset 640
|
|
scaled_channel<uint8_t, 2, 1> boostClosedLoopBlendBias[BOOST_BLEND_COUNT];
|
|
// %
|
|
// offset 642
|
|
scaled_channel<int16_t, 10, 1> boostClosedLoopBlendOutput[BOOST_BLEND_COUNT];
|
|
// offset 646
|
|
uint8_t alignmentFill_at_646[2];
|
|
// offset 648 bit 0
|
|
bool coilState1 : 1 {};
|
|
// offset 648 bit 1
|
|
bool coilState2 : 1 {};
|
|
// offset 648 bit 2
|
|
bool coilState3 : 1 {};
|
|
// offset 648 bit 3
|
|
bool coilState4 : 1 {};
|
|
// offset 648 bit 4
|
|
bool coilState5 : 1 {};
|
|
// offset 648 bit 5
|
|
bool coilState6 : 1 {};
|
|
// offset 648 bit 6
|
|
bool coilState7 : 1 {};
|
|
// offset 648 bit 7
|
|
bool coilState8 : 1 {};
|
|
// offset 648 bit 8
|
|
bool coilState9 : 1 {};
|
|
// offset 648 bit 9
|
|
bool coilState10 : 1 {};
|
|
// offset 648 bit 10
|
|
bool coilState11 : 1 {};
|
|
// offset 648 bit 11
|
|
bool coilState12 : 1 {};
|
|
// offset 648 bit 12
|
|
bool injectorState1 : 1 {};
|
|
// offset 648 bit 13
|
|
bool injectorState2 : 1 {};
|
|
// offset 648 bit 14
|
|
bool injectorState3 : 1 {};
|
|
// offset 648 bit 15
|
|
bool injectorState4 : 1 {};
|
|
// offset 648 bit 16
|
|
bool injectorState5 : 1 {};
|
|
// offset 648 bit 17
|
|
bool injectorState6 : 1 {};
|
|
// offset 648 bit 18
|
|
bool injectorState7 : 1 {};
|
|
// offset 648 bit 19
|
|
bool injectorState8 : 1 {};
|
|
// offset 648 bit 20
|
|
bool injectorState9 : 1 {};
|
|
// offset 648 bit 21
|
|
bool injectorState10 : 1 {};
|
|
// offset 648 bit 22
|
|
bool injectorState11 : 1 {};
|
|
// offset 648 bit 23
|
|
bool injectorState12 : 1 {};
|
|
// offset 648 bit 24
|
|
bool unusedBit_231_24 : 1 {};
|
|
// offset 648 bit 25
|
|
bool unusedBit_231_25 : 1 {};
|
|
// offset 648 bit 26
|
|
bool unusedBit_231_26 : 1 {};
|
|
// offset 648 bit 27
|
|
bool unusedBit_231_27 : 1 {};
|
|
// offset 648 bit 28
|
|
bool unusedBit_231_28 : 1 {};
|
|
// offset 648 bit 29
|
|
bool unusedBit_231_29 : 1 {};
|
|
// offset 648 bit 30
|
|
bool unusedBit_231_30 : 1 {};
|
|
// offset 648 bit 31
|
|
bool unusedBit_231_31 : 1 {};
|
|
// offset 652
|
|
uint32_t outputRequestPeriod = (uint32_t)0;
|
|
// offset 656
|
|
float mapFast = (float)0;
|
|
// Lua: Gauge
|
|
// value
|
|
// offset 660
|
|
float luaGauges[LUA_GAUGE_COUNT];
|
|
// V
|
|
// offset 668
|
|
scaled_channel<uint16_t, 1000, 1> rawMaf2 = (uint16_t)0;
|
|
// @@GAUGE_NAME_AIR_FLOW_MEASURED_2@@
|
|
// kg/h
|
|
// offset 670
|
|
scaled_channel<uint16_t, 10, 1> mafMeasured2 = (uint16_t)0;
|
|
// offset 672
|
|
uint16_t schedulingUsedCount = (uint16_t)0;
|
|
// %
|
|
// offset 674
|
|
scaled_channel<uint16_t, 100, 1> Gego = (uint16_t)0;
|
|
// count
|
|
// offset 676
|
|
uint16_t testBenchIter = (uint16_t)0;
|
|
// offset 678
|
|
uint8_t unusedAtTheEnd[140];
|
|
// offset 818
|
|
uint8_t alignmentFill_at_818[2];
|
|
};
|
|
static_assert(sizeof(output_channels_s) == 820);
|
|
|