fome-fw/firmware/controllers/generated/engine_configuration_genera...

5039 lines
100 KiB
C
Raw Normal View History

2023-02-21 11:55:32 -08:00
// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Feb 21 11:55:31 PST 2023
2023-02-20 21:14:46 -08:00
// by class com.rusefi.output.CHeaderConsumer
// begin
#pragma once
#include "rusefi_types.h"
// start of stft_cell_cfg_s
struct stft_cell_cfg_s {
/**
%
* offset 0
*/
int8_t maxAdd;
/**
%
* offset 1
*/
int8_t maxRemove;
/**
* Time constant for correction while in this cell: this sets responsiveness of the closed loop correction. A value of 5.0 means it will try to make most of the correction within 5 seconds, and a value of 1.0 will try to correct within 1 second.
sec
* offset 2
*/
scaled_channel<uint16_t, 10, 1> timeConstant;
};
static_assert(sizeof(stft_cell_cfg_s) == 4);
// start of stft_s
struct stft_s {
/**
* Below this RPM, the idle region is active
RPM
* offset 0
*/
scaled_channel<uint8_t, 1, 50> maxIdleRegionRpm;
/**
* Below this engine load, the overrun region is active
load
* offset 1
*/
uint8_t maxOverrunLoad;
/**
* Above this engine load, the power region is active
load
* offset 2
*/
uint8_t minPowerLoad;
/**
* When close to correct AFR, pause correction. This can improve stability by not changing the adjustment if the error is extremely small, but is not required.
%
* offset 3
*/
scaled_channel<uint8_t, 10, 1> deadband;
/**
* Below this temperature, correction is disabled.
C
* offset 4
*/
int8_t minClt;
/**
* Below this AFR, correction is paused
afr
* offset 5
*/
scaled_channel<uint8_t, 10, 1> minAfr;
/**
* Above this AFR, correction is paused
afr
* offset 6
*/
scaled_channel<uint8_t, 10, 1> maxAfr;
/**
* Delay after starting the engine before beginning closed loop correction.
seconds
* offset 7
*/
uint8_t startupDelay;
/**
* offset 8
*/
stft_cell_cfg_s cellCfgs[STFT_CELL_COUNT];
};
static_assert(sizeof(stft_s) == 24);
// start of pid_s
struct pid_s {
/**
* offset 0
*/
float pFactor;
/**
* offset 4
*/
float iFactor;
/**
* offset 8
*/
float dFactor;
/**
* Linear addition to PID logic
* offset 12
*/
int16_t offset;
/**
* PID dTime
ms
* offset 14
*/
int16_t periodMs;
/**
* Output Min Duty Cycle
* offset 16
*/
int16_t minValue;
/**
* Output Max Duty Cycle
* offset 18
*/
int16_t maxValue;
};
static_assert(sizeof(pid_s) == 20);
// start of cranking_parameters_s
struct cranking_parameters_s {
/**
* Base mass of the per-cylinder fuel injected during cranking. This is then modified by the multipliers for CLT, IAT, TPS ect, to give the final cranking pulse width.
* A reasonable starting point is 60mg per liter per cylinder.
* ex: 2 liter 4 cyl = 500cc/cyl, so 30mg cranking fuel.
mg
* offset 0
*/
float baseFuel;
/**
2023-02-21 11:00:59 -08:00
* This sets the RPM limit below which the ECU will use cranking fuel and ignition logic, typically this is around 350-450rpm.
2023-02-20 21:14:46 -08:00
RPM
* offset 4
*/
int16_t rpm;
/**
* need 4 byte alignment
units
* offset 6
*/
uint8_t alignmentFill_at_6[2];
};
static_assert(sizeof(cranking_parameters_s) == 8);
// start of spi_pins
struct spi_pins {
/**
* offset 0
*/
Gpio mosiPin;
/**
* offset 2
*/
Gpio misoPin;
/**
* offset 4
*/
Gpio sckPin;
/**
* need 4 byte alignment
units
* offset 6
*/
uint8_t alignmentFill_at_6[2];
};
static_assert(sizeof(spi_pins) == 8);
// start of gppwm_channel
struct gppwm_channel {
/**
* Select a pin to use for PWM or on-off output.
* offset 0
*/
output_pin_e pin;
/**
* If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.
* This should be a safe value for whatever hardware is connected to prevent damage.
%
* offset 2
*/
uint8_t dutyIfError;
/**
* need 4 byte alignment
units
* offset 3
*/
uint8_t alignmentFill_at_3[1];
/**
* Select a frequency to run PWM at.
* Set this to 0hz to enable on-off mode.
hz
* offset 4
*/
uint16_t pwmFrequency;
/**
* Hysteresis: in on-off mode, turn the output on when the table value is above this duty.
%
* offset 6
*/
uint8_t onAboveDuty;
/**
* Hysteresis: in on-off mode, turn the output off when the table value is below this duty.
%
* offset 7
*/
uint8_t offBelowDuty;
/**
* Selects the Y axis to use for the table.
* offset 8
*/
gppwm_channel_e loadAxis;
/**
* Selects the X axis to use for the table.
* offset 9
*/
gppwm_channel_e rpmAxis;
/**
load
* offset 10
*/
scaled_channel<int16_t, 10, 1> loadBins[GPPWM_LOAD_COUNT];
/**
RPM
* offset 26
*/
scaled_channel<int16_t, 1, 1> rpmBins[GPPWM_RPM_COUNT];
/**
duty
* offset 42
*/
scaled_channel<uint8_t, 2, 1> table[GPPWM_RPM_COUNT][GPPWM_LOAD_COUNT];
/**
* need 4 byte alignment
units
* offset 106
*/
uint8_t alignmentFill_at_106[2];
};
static_assert(sizeof(gppwm_channel) == 108);
// start of air_pressure_sensor_config_s
struct air_pressure_sensor_config_s {
/**
* kPa value at low volts
kpa
* offset 0
*/
float lowValue;
/**
* kPa value at high volts
kpa
* offset 4
*/
float highValue;
/**
* offset 8
*/
air_pressure_sensor_type_e type;
/**
* offset 9
*/
adc_channel_e hwChannel;
/**
* need 4 byte alignment
units
* offset 10
*/
uint8_t alignmentFill_at_10[2];
};
static_assert(sizeof(air_pressure_sensor_config_s) == 12);
/**
* @brief MAP averaging configuration
*/
// start of MAP_sensor_config_s
struct MAP_sensor_config_s {
/**
* offset 0
*/
float samplingAngleBins[MAP_ANGLE_SIZE];
/**
* MAP averaging sampling start crank degree angle
deg
* offset 32
*/
float samplingAngle[MAP_ANGLE_SIZE];
/**
* offset 64
*/
float samplingWindowBins[MAP_WINDOW_SIZE];
/**
* MAP averaging angle crank degree duration
deg
* offset 96
*/
float samplingWindow[MAP_WINDOW_SIZE];
/**
* offset 128
*/
air_pressure_sensor_config_s sensor;
};
static_assert(sizeof(MAP_sensor_config_s) == 140);
/**
* @brief Thermistor known values
*/
// start of thermistor_conf_s
struct thermistor_conf_s {
/**
* these values are in Celcius
*C
* offset 0
*/
float tempC_1;
/**
*C
* offset 4
*/
float tempC_2;
/**
*C
* offset 8
*/
float tempC_3;
/**
Ohm
* offset 12
*/
float resistance_1;
/**
Ohm
* offset 16
*/
float resistance_2;
/**
Ohm
* offset 20
*/
float resistance_3;
/**
* Pull-up resistor value on your board
Ohm
* offset 24
*/
float bias_resistor;
};
static_assert(sizeof(thermistor_conf_s) == 28);
/**
* @brief Linear sensor interpolation
*/
// start of linear_sensor_s
struct linear_sensor_s {
/**
* offset 0
*/
adc_channel_e hwChannel;
/**
* need 4 byte alignment
units
* offset 1
*/
uint8_t alignmentFill_at_1[3];
/**
volts
* offset 4
*/
float v1;
/**
kPa
* offset 8
*/
float value1;
/**
volts
* offset 12
*/
float v2;
/**
kPa
* offset 16
*/
float value2;
};
static_assert(sizeof(linear_sensor_s) == 20);
/**
* @brief Thermistor curve parameters
*/
// start of ThermistorConf
struct ThermistorConf {
/**
* offset 0
*/
thermistor_conf_s config;
/**
* offset 28
*/
adc_channel_e adcChannel;
/**
* need 4 byte alignment
units
* offset 29
*/
uint8_t alignmentFill_at_29[3];
};
static_assert(sizeof(ThermistorConf) == 32);
// start of injector_s
struct injector_s {
/**
* This is your injector flow at the fuel pressure used in the vehicle. cc/min, cubic centimetre per minute
* By the way, g/s = 0.125997881 * (lb/hr)
* g/s = 0.125997881 * (cc/min)/10.5
* g/s = 0.0119997981 * cc/min
cm3/min
* offset 0
*/
float flow;
/**
volts
* offset 4
*/
float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE];
/**
* ms delay between injector open and close dead times
ms
* offset 36
*/
float battLagCorr[VBAT_INJECTOR_CURVE_SIZE];
};
static_assert(sizeof(injector_s) == 68);
// start of specs_s
struct specs_s {
/**
* Engine volume/capacity, in litres
* see also cylindersCount
L
* offset 0
*/
float displacement;
/**
* Number of cylinder the engine has.
* offset 4
*/
uint32_t cylindersCount;
/**
* offset 8
*/
firing_order_e firingOrder;
/**
* need 4 byte alignment
units
* offset 9
*/
uint8_t alignmentFill_at_9[3];
};
static_assert(sizeof(specs_s) == 12);
/**
* @brief Trigger wheel(s) configuration
*/
// start of trigger_config_s
struct trigger_config_s {
/**
* https://github.com/rusefi/rusefi/wiki/All-Supported-Triggers
* offset 0
*/
trigger_type_e type;
/**
number
* offset 4
*/
int customTotalToothCount;
/**
number
* offset 8
*/
int customSkippedToothCount;
};
static_assert(sizeof(trigger_config_s) == 12);
// start of afr_sensor_s
struct afr_sensor_s {
/**
* offset 0
*/
adc_channel_e hwChannel;
/**
* offset 1
*/
adc_channel_e hwChannel2;
/**
* need 4 byte alignment
units
* offset 2
*/
uint8_t alignmentFill_at_2[2];
/**
volts
* offset 4
*/
float v1;
/**
AFR
* offset 8
*/
float value1;
/**
volts
* offset 12
*/
float v2;
/**
AFR
* offset 16
*/
float value2;
};
static_assert(sizeof(afr_sensor_s) == 20);
// start of idle_hardware_s
struct idle_hardware_s {
/**
Hz
* offset 0
*/
int solenoidFrequency;
/**
* offset 4
*/
output_pin_e solenoidPin;
/**
* offset 6
*/
Gpio stepperDirectionPin;
/**
* offset 8
*/
Gpio stepperStepPin;
/**
* offset 10
*/
pin_output_mode_e solenoidPinMode;
/**
* need 4 byte alignment
units
* offset 11
*/
uint8_t alignmentFill_at_11[1];
};
static_assert(sizeof(idle_hardware_s) == 12);
// start of dc_io
struct dc_io {
/**
* offset 0
*/
Gpio directionPin1;
/**
* offset 2
*/
Gpio directionPin2;
/**
* Acts as EN pin in two-wire mode
* offset 4
*/
Gpio controlPin;
/**
* offset 6
*/
Gpio disablePin;
};
static_assert(sizeof(dc_io) == 8);
// start of vr_threshold_s
struct vr_threshold_s {
/**
rpm
* offset 0
*/
scaled_channel<uint8_t, 1, 50> rpmBins[6];
/**
volts
* offset 6
*/
scaled_channel<uint8_t, 100, 1> values[6];
/**
* offset 12
*/
Gpio pin;
/**
* need 4 byte alignment
units
* offset 14
*/
uint8_t alignmentFill_at_14[2];
};
static_assert(sizeof(vr_threshold_s) == 16);
// start of engine_configuration_s
struct engine_configuration_s {
/**
* http://rusefi.com/wiki/index.php?title=Manual:Engine_Type
* offset 0
*/
engine_type_e engineType;
/**
* Disable sensor sniffer above this rpm
RPM
* offset 4
*/
uint16_t sensorSnifferRpmThreshold;
/**
* A secondary Rev limit engaged by the driver to help launch the vehicle faster
rpm
* offset 6
*/
uint16_t launchRpm;
/**
rpm
* offset 8
*/
uint16_t rpmHardLimit;
/**
* Engine sniffer would be disabled above this rpm
RPM
* offset 10
*/
uint16_t engineSnifferRpmThreshold;
/**
* Disable multispark above this engine speed.
rpm
* offset 12
*/
scaled_channel<uint8_t, 1, 50> multisparkMaxRpm;
/**
* Above this RPM, disable AC. Set to 0 to disable check.
rpm
* offset 13
*/
scaled_channel<uint8_t, 1, 50> maxAcRpm;
/**
* Above this TPS, disable AC. Set to 0 to disable check.
%
* offset 14
*/
uint8_t maxAcTps;
/**
* Above this CLT, disable AC to prevent overheating the engine. Set to 0 to disable check.
deg C
* offset 15
*/
uint8_t maxAcClt;
/**
RPM
* offset 16
*/
uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE];
/**
* This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC.
deg
* offset 48
*/
uint8_t multisparkMaxSparkingAngle;
/**
* Configures the maximum number of extra sparks to fire (does not include main spark)
count
* offset 49
*/
uint8_t multisparkMaxExtraSparkCount;
/**
* need 4 byte alignment
units
* offset 50
*/
uint8_t alignmentFill_at_50[2];
/**
* offset 52
*/
injector_s injector;
/**
* Does the vehicle have a turbo or supercharger?
offset 120 bit 0 */
bool isForcedInduction : 1 {};
/**
* On some Ford and Toyota vehicles one of the throttle sensors is not linear on the full range, i.e. in the specific range of the positions we effectively have only one sensor.
offset 120 bit 1 */
bool useFordRedundantTps : 1 {};
/**
offset 120 bit 2 */
bool isVerboseAuxPid1 : 1 {};
/**
offset 120 bit 3 */
bool overrideTriggerGaps : 1 {};
/**
* Turn on this fan when AC is on.
offset 120 bit 4 */
bool enableFan1WithAc : 1 {};
/**
* Turn on this fan when AC is on.
offset 120 bit 5 */
bool enableFan2WithAc : 1 {};
/**
* Inhibit operation of this fan while the engine is not running.
offset 120 bit 6 */
bool disableFan1WhenStopped : 1 {};
/**
* Inhibit operation of this fan while the engine is not running.
offset 120 bit 7 */
bool disableFan2WhenStopped : 1 {};
/**
* Enable secondary spark outputs that fire after the primary (rotaries, twin plug engines).
offset 120 bit 8 */
bool enableTrailingSparks : 1 {};
/**
* TLE7209 uses two-wire mode. TLE9201 and VNH2SP30 do NOT use two wire mode.
2023-02-21 11:00:59 -08:00
offset 120 bit 9 */
2023-02-20 21:14:46 -08:00
bool etb_use_two_wires : 1 {};
/**
* Subaru/BMW style where default valve position is somewhere in the middle. First solenoid opens it more while second can close it more than default position.
2023-02-21 11:00:59 -08:00
offset 120 bit 10 */
2023-02-20 21:14:46 -08:00
bool isDoubleSolenoidIdle : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 120 bit 11 */
2023-02-20 21:14:46 -08:00
bool useEeprom : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 120 bit 12 */
2023-02-20 21:14:46 -08:00
bool useTLE8888_cranking_hack : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 120 bit 13 */
2023-02-20 21:14:46 -08:00
bool kickStartCranking : 1 {};
/**
* This uses separate ignition timing and VE tables not only for idle conditions, also during the postcranking-to-idle taper transition (See also afterCrankingIACtaperDuration).
2023-02-21 11:00:59 -08:00
offset 120 bit 14 */
2023-02-20 21:14:46 -08:00
bool useSeparateIdleTablesForCrankingTaper : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 120 bit 15 */
2023-02-20 21:14:46 -08:00
bool launchControlEnabled : 1 {};
/**
* "Detect double trigger edges"
2023-02-21 11:00:59 -08:00
offset 120 bit 16 */
2023-02-20 21:14:46 -08:00
bool doNotFilterTriggerEdgeNoise : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 120 bit 17 */
2023-02-20 21:14:46 -08:00
bool antiLagEnabled : 1 {};
/**
* For cranking either use the specified fixed base fuel mass, or use the normal running math (VE table).
2023-02-21 11:00:59 -08:00
offset 120 bit 18 */
2023-02-20 21:14:46 -08:00
bool useRunningMathForCranking : 1 {};
/**
* Shall we display real life signal or just the part consumed by trigger decoder.
* Applies to both trigger and cam/vvt input.
*
* enable logic_level_trigger
2023-02-21 11:00:59 -08:00
offset 120 bit 19 */
2023-02-20 21:14:46 -08:00
bool displayLogicLevelsInEngineSniffer : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 120 bit 20 */
2023-02-20 21:14:46 -08:00
bool useTLE8888_stepper : 1 {};
/**
* If enabled, the MAP estimate table will be used if the MAP sensor fails to estimate manifold pressure based on RPM and TPS.
2023-02-21 11:00:59 -08:00
offset 120 bit 21 */
2023-02-20 21:14:46 -08:00
bool enableMapEstimationTableFallback : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 120 bit 22 */
2023-02-20 21:14:46 -08:00
bool usescriptTableForCanSniffingFiltering : 1 {};
/**
* Print incoming and outgoing first bus CAN messages in rusEFI console
2023-02-21 11:00:59 -08:00
offset 120 bit 23 */
2023-02-20 21:14:46 -08:00
bool verboseCan : 1 {};
/**
* Experimental setting that will cause a misfire
* DO NOT ENABLE.
2023-02-21 11:00:59 -08:00
offset 120 bit 24 */
2023-02-20 21:14:46 -08:00
bool artificialTestMisfire : 1 {};
/**
* On some Ford and Toyota vehicles one of the pedal sensors is not linear on the full range, i.e. in the specific range of the positions we effectively have only one sensor.
2023-02-21 11:00:59 -08:00
offset 120 bit 25 */
2023-02-20 21:14:46 -08:00
bool useFordRedundantPps : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 120 bit 26 */
bool unusedBit_40_26 : 1 {};
/**
offset 120 bit 27 */
bool unusedBit_40_27 : 1 {};
/**
offset 120 bit 28 */
bool unusedBit_40_28 : 1 {};
/**
offset 120 bit 29 */
bool unusedBit_40_29 : 1 {};
/**
offset 120 bit 30 */
bool unusedBit_40_30 : 1 {};
/**
2023-02-20 21:14:46 -08:00
offset 120 bit 31 */
2023-02-21 11:00:59 -08:00
bool unusedBit_40_31 : 1 {};
2023-02-20 21:14:46 -08:00
/**
* Closed throttle, 1 volt = 200 units.
* See also tps1_1AdcChannel
ADC
* offset 124
*/
int16_t tpsMin;
/**
* Full throttle.
* See also tps1_1AdcChannel
ADC
* offset 126
*/
int16_t tpsMax;
/**
* TPS error detection: what throttle % is unrealistically low?
* Also used for accelerator pedal error detection if so equiped.
%
* offset 128
*/
int16_t tpsErrorDetectionTooLow;
/**
* TPS error detection: what throttle % is unrealistically high?
* Also used for accelerator pedal error detection if so equiped.
%
* offset 130
*/
int16_t tpsErrorDetectionTooHigh;
/**
* offset 132
*/
cranking_parameters_s cranking;
/**
* Dwell duration while cranking
ms
* offset 140
*/
float ignitionDwellForCrankingMs;
/**
* Once engine speed passes this value, start reducing ETB angle.
rpm
* offset 144
*/
uint16_t etbRevLimitStart;
/**
* This far above 'Soft limiter start', fully close the throttle. At the bottom of the range, throttle control is normal. At the top of the range, the throttle is fully closed.
rpm
* offset 146
*/
uint16_t etbRevLimitRange;
/**
* @see isMapAveragingEnabled
* offset 148
*/
MAP_sensor_config_s map;
/**
* todo: merge with channel settings, use full-scale Thermistor here!
* offset 288
*/
ThermistorConf clt;
/**
* offset 320
*/
ThermistorConf iat;
/**
deg
* offset 352
*/
int launchTimingRetard;
/**
* We calculate knock band based of cylinderBore
* Use this to override - kHz knock band override
kHz
2023-02-21 11:00:59 -08:00
* offset 356
2023-02-20 21:14:46 -08:00
*/
float knockBandCustom;
/**
2023-02-21 11:00:59 -08:00
* offset 360
2023-02-20 21:14:46 -08:00
*/
specs_s specs;
/**
* Cylinder diameter in mm.
mm
2023-02-21 11:00:59 -08:00
* offset 372
2023-02-20 21:14:46 -08:00
*/
float cylinderBore;
/**
* This setting controls which fuel quantity control algorithm is used.
* Alpha-N means drive by TPS commonly only used for NA engines
* Speed Density requires MAP sensor and is the default choice for may installs
* MAF air charge is a cylinder filling based method that uses a mass air flow sensor.
2023-02-21 11:00:59 -08:00
* offset 376
2023-02-20 21:14:46 -08:00
*/
engine_load_mode_e fuelAlgorithm;
/**
%
2023-02-21 11:00:59 -08:00
* offset 377
2023-02-20 21:14:46 -08:00
*/
uint8_t ALSMaxTPS;
/**
2023-02-21 11:00:59 -08:00
* offset 378
2023-02-20 21:14:46 -08:00
*/
Gpio criticalLedPin;
/**
* This is the injection strategy during engine start. See Fuel/Injection settings for more detail. It is suggested to use "Simultaneous".
2023-02-21 11:00:59 -08:00
* offset 380
2023-02-20 21:14:46 -08:00
*/
injection_mode_e crankingInjectionMode;
/**
2023-02-21 11:00:59 -08:00
* This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation".
* offset 381
2023-02-20 21:14:46 -08:00
*/
injection_mode_e injectionMode;
/**
* Minimum RPM to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases.
2023-02-21 11:00:59 -08:00
* offset 382
2023-02-20 21:14:46 -08:00
*/
uint16_t boostControlMinRpm;
/**
* Minimum TPS to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases.
2023-02-21 11:00:59 -08:00
* offset 384
2023-02-20 21:14:46 -08:00
*/
uint8_t boostControlMinTps;
/**
* Minimum MAP to enable boost control. Use this to avoid solenoid noise at idle, and help spool in some cases.
2023-02-21 11:00:59 -08:00
* offset 385
2023-02-20 21:14:46 -08:00
*/
uint8_t boostControlMinMap;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 386
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_386[2];
2023-02-20 21:14:46 -08:00
/**
* Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.
* There is tapering towards running timing advance
deg
2023-02-21 11:00:59 -08:00
* offset 388
2023-02-20 21:14:46 -08:00
*/
angle_t crankingTimingAngle;
/**
* Single coil = distributor
* Individual coils = one coil per cylinder (COP, coil-near-plug), requires sequential mode
* Wasted spark = Fires pairs of cylinders together, either one coil per pair of cylinders or one coil per cylinder
* Two distributors = A pair of distributors, found on some BMW, Toyota and other engines
2023-02-21 11:00:59 -08:00
* offset 392
2023-02-20 21:14:46 -08:00
*/
ignition_mode_e ignitionMode;
/**
* How many consecutive gap rations have to match expected ranges for sync to happen
count
2023-02-21 11:00:59 -08:00
* offset 393
2023-02-20 21:14:46 -08:00
*/
int8_t gapTrackingLengthOverride;
/**
* Above this speed, disable closed loop idle control. Set to 0 to disable (allow closed loop idle at any speed).
kph
2023-02-21 11:00:59 -08:00
* offset 394
2023-02-20 21:14:46 -08:00
*/
uint8_t maxIdleVss;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 395
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_395[1];
2023-02-20 21:14:46 -08:00
/**
* Expected oil pressure after starting the engine. If oil pressure does not reach this level within 5 seconds of engine start, fuel will be cut. Set to 0 to disable and always allow starting.
kPa
2023-02-21 11:00:59 -08:00
* offset 396
2023-02-20 21:14:46 -08:00
*/
uint16_t minOilPressureAfterStart;
/**
* Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing with a timing light).
2023-02-21 11:00:59 -08:00
* offset 398
2023-02-20 21:14:46 -08:00
*/
timing_mode_e timingMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 399
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_399[1];
2023-02-20 21:14:46 -08:00
/**
* This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing
* This mode is useful when adjusting distributor location.
RPM
2023-02-21 11:00:59 -08:00
* offset 400
2023-02-20 21:14:46 -08:00
*/
angle_t fixedModeTiming;
/**
* Angle between Top Dead Center (TDC) and the first trigger event.
* Positive value in case of synchnization point before TDC and negative in case of synchnization point after TDC
* .Knowing this angle allows us to control timing and other angles in reference to TDC.
deg btdc
2023-02-21 11:00:59 -08:00
* offset 404
2023-02-20 21:14:46 -08:00
*/
angle_t globalTriggerAngleOffset;
/**
* Ratio/coefficient of input voltage dividers on your PCB. For example, use '2' if your board divides 5v into 2.5v. Use '1.66' if your board divides 5v into 3v.
coef
2023-02-21 11:00:59 -08:00
* offset 408
2023-02-20 21:14:46 -08:00
*/
float analogInputDividerCoefficient;
/**
* This is the ratio of the resistors for the battery voltage, measure the voltage at the battery and then adjust this number until the gauge matches the reading.
coef
2023-02-21 11:00:59 -08:00
* offset 412
2023-02-20 21:14:46 -08:00
*/
float vbattDividerCoeff;
/**
* Cooling fan turn-on temperature threshold, in Celsius
deg C
2023-02-21 11:00:59 -08:00
* offset 416
2023-02-20 21:14:46 -08:00
*/
float fanOnTemperature;
/**
* Cooling fan turn-off temperature threshold, in Celsius
deg C
2023-02-21 11:00:59 -08:00
* offset 420
2023-02-20 21:14:46 -08:00
*/
float fanOffTemperature;
/**
* Number of revolutions per kilometer for the wheels your vehicle speed sensor is connected to. Use an online calculator to determine this based on your tire size.
revs/km
2023-02-21 11:00:59 -08:00
* offset 424
2023-02-20 21:14:46 -08:00
*/
float driveWheelRevPerKm;
/**
2023-02-21 11:00:59 -08:00
* offset 428
2023-02-20 21:14:46 -08:00
*/
can_nbc_e canNbcType;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 429
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_429[3];
2023-02-20 21:14:46 -08:00
/**
* CANbus thread period in ms
ms
2023-02-21 11:00:59 -08:00
* offset 432
2023-02-20 21:14:46 -08:00
*/
int canSleepPeriodMs;
/**
2023-02-21 11:00:59 -08:00
* offset 436
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t unused440;
2023-02-20 21:14:46 -08:00
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 437
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_437[3];
2023-02-20 21:14:46 -08:00
/**
index
2023-02-21 11:00:59 -08:00
* offset 440
2023-02-20 21:14:46 -08:00
*/
int byFirmwareVersion;
/**
2023-02-21 11:00:59 -08:00
* First throttle body, first sensor
* offset 444
2023-02-20 21:14:46 -08:00
*/
adc_channel_e tps1_1AdcChannel;
/**
* This is the processor input pin that the battery voltage circuit is connected to, if you are unsure of what pin to use, check the schematic that corresponds to your PCB.
2023-02-21 11:00:59 -08:00
* offset 445
2023-02-20 21:14:46 -08:00
*/
adc_channel_e vbattAdcChannel;
/**
* This is the processor pin that your fuel level sensor in connected to. This is a non standard input so will need to be user defined.
2023-02-21 11:00:59 -08:00
* offset 446
2023-02-20 21:14:46 -08:00
*/
adc_channel_e fuelLevelSensor;
/**
2023-02-21 11:00:59 -08:00
* Second throttle body, first sensor
* offset 447
2023-02-20 21:14:46 -08:00
*/
adc_channel_e tps2_1AdcChannel;
/**
* 0.1 is a good default value
x
2023-02-21 11:00:59 -08:00
* offset 448
2023-02-20 21:14:46 -08:00
*/
float idle_derivativeFilterLoss;
/**
* just a temporary solution
angle
2023-02-21 11:00:59 -08:00
* offset 452
2023-02-20 21:14:46 -08:00
*/
int trailingSparkAngle;
/**
2023-02-21 11:00:59 -08:00
* offset 456
2023-02-20 21:14:46 -08:00
*/
trigger_config_s trigger;
/**
* Extra air taper amount
%
2023-02-21 11:00:59 -08:00
* offset 468
2023-02-20 21:14:46 -08:00
*/
float airByRpmTaper;
/**
* Single value to be used in event of a failed MAP sensor
* This value is only used for speed density fueling calculations.
kPa
2023-02-21 11:00:59 -08:00
* offset 472
2023-02-20 21:14:46 -08:00
*/
uint8_t failedMapFallback;
/**
* Duty cycle to use in case of a sensor failure. This duty cycle should produce the minimum possible amount of boost. This duty is also used in case any of the minimum RPM/TPS/MAP conditions are not met.
%
2023-02-21 11:00:59 -08:00
* offset 473
2023-02-20 21:14:46 -08:00
*/
uint8_t boostControlSafeDutyCycle;
/**
2023-02-21 11:00:59 -08:00
* offset 474
2023-02-20 21:14:46 -08:00
*/
adc_channel_e mafAdcChannel;
/**
2023-02-21 11:00:59 -08:00
* need 4 byte alignment
units
* offset 475
*/
uint8_t alignmentFill_at_475[1];
/**
2023-02-20 21:14:46 -08:00
coef
2023-02-21 11:00:59 -08:00
* offset 476
2023-02-20 21:14:46 -08:00
*/
float globalFuelCorrection;
/**
volts
2023-02-21 11:00:59 -08:00
* offset 480
2023-02-20 21:14:46 -08:00
*/
float adcVcc;
/**
Deg
2023-02-21 11:00:59 -08:00
* offset 484
2023-02-20 21:14:46 -08:00
*/
float mapCamDetectionAnglePosition;
/**
* Camshaft input could be used either just for engine phase detection if your trigger shape does not include cam sensor as 'primary' channel, or it could be used for Variable Valve timing on one of the camshafts.
2023-02-21 11:00:59 -08:00
* offset 488
2023-02-20 21:14:46 -08:00
*/
brain_input_pin_e camInputs[CAM_INPUTS_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 496
2023-02-20 21:14:46 -08:00
*/
afr_sensor_s afr;
/**
2023-02-21 11:00:59 -08:00
* Throttle pedal position first channel
* offset 516
2023-02-20 21:14:46 -08:00
*/
adc_channel_e throttlePedalPositionAdcChannel;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 517
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_517[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 518
2023-02-20 21:14:46 -08:00
*/
Gpio tle6240_cs;
/**
2023-02-21 11:00:59 -08:00
* offset 520
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e tle6240_csPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 521
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_521[1];
2023-02-20 21:14:46 -08:00
/**
* Throttle Pedal not pressed switch - used on some older vehicles like early Mazda Miata
2023-02-21 11:00:59 -08:00
* offset 522
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e throttlePedalUpPin;
/**
* @see hasBaroSensor
2023-02-21 11:00:59 -08:00
* offset 524
2023-02-20 21:14:46 -08:00
*/
air_pressure_sensor_config_s baroSensor;
/**
2023-02-21 11:00:59 -08:00
* offset 536
2023-02-20 21:14:46 -08:00
*/
idle_hardware_s idle;
/**
* Value between 0 and 100 used in Manual mode
%
2023-02-21 11:00:59 -08:00
* offset 548
2023-02-20 21:14:46 -08:00
*/
float manIdlePosition;
/**
* Ignition timing to remove when a knock event occurs.
%
2023-02-21 11:00:59 -08:00
* offset 552
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> knockRetardAggression;
/**
* After a knock event, reapply timing at this rate.
deg/s
2023-02-21 11:00:59 -08:00
* offset 553
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> knockRetardReapplyRate;
/**
* Select which cam is used for engine sync. Other cams will be used only for VVT measurement, but not engine sync.
2023-02-21 11:00:59 -08:00
* offset 554
2023-02-20 21:14:46 -08:00
*/
engineSyncCam_e engineSyncCam;
/**
* Set this so your vehicle speed signal is responsive, but not noisy. Larger value give smoother but slower response.
2023-02-21 11:00:59 -08:00
* offset 555
2023-02-20 21:14:46 -08:00
*/
uint8_t vssFilterReciprocal;
/**
* Number of turns of your vehicle speed sensor per turn of the wheels. For example if your sensor is on the transmission output, enter your axle/differential ratio. If you are using a hub-mounted sensor, enter a value of 1.0.
ratio
2023-02-21 11:00:59 -08:00
* offset 556
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> vssGearRatio;
/**
* Number of pulses output per revolution of the shaft where your VSS is mounted. For example, GM applications of the T56 output 17 pulses per revolution of the transmission output shaft.
count
2023-02-21 11:00:59 -08:00
* offset 558
2023-02-20 21:14:46 -08:00
*/
uint8_t vssToothCount;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 559
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_559[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 560
2023-02-20 21:14:46 -08:00
*/
Gpio l9779_cs;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 562
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_562[2];
2023-02-20 21:14:46 -08:00
/**
* Same RPM is used for two ways of producing simulated RPM. See also triggerSimulatorPins (with wires)
* See also directSelfStimulation (no wires, bypassing input hardware)
* rpm X
* TODO: rename to triggerSimulatorRpm
Rpm
2023-02-21 11:00:59 -08:00
* offset 564
2023-02-20 21:14:46 -08:00
*/
int triggerSimulatorFrequency;
/**
2023-02-21 11:00:59 -08:00
* offset 568
2023-02-20 21:14:46 -08:00
*/
output_pin_e injectionPins[MAX_CYLINDER_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 592
2023-02-20 21:14:46 -08:00
*/
output_pin_e ignitionPins[MAX_CYLINDER_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 616
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e injectionPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 617
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e ignitionPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 618
2023-02-20 21:14:46 -08:00
*/
output_pin_e fuelPumpPin;
/**
2023-02-21 11:00:59 -08:00
* offset 620
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e fuelPumpPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 621
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_621[1];
2023-02-20 21:14:46 -08:00
/**
* Check engine light, also malfunction indicator light. Always blinks once on boot.
2023-02-21 11:00:59 -08:00
* offset 622
2023-02-20 21:14:46 -08:00
*/
output_pin_e malfunctionIndicatorPin;
/**
2023-02-21 11:00:59 -08:00
* offset 624
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e malfunctionIndicatorPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 625
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e fanPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 626
2023-02-20 21:14:46 -08:00
*/
output_pin_e fanPin;
/**
* Some cars have a switch to indicate that clutch pedal is all the way down
2023-02-21 11:00:59 -08:00
* offset 628
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e clutchDownPin;
/**
2023-02-21 11:00:59 -08:00
* offset 630
2023-02-20 21:14:46 -08:00
*/
output_pin_e alternatorControlPin;
/**
2023-02-21 11:00:59 -08:00
* offset 632
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e alternatorControlPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 633
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e clutchDownPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 634
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e electronicThrottlePin1Mode;
/**
2023-02-21 11:00:59 -08:00
* offset 635
2023-02-20 21:14:46 -08:00
*/
spi_device_e max31855spiDevice;
/**
2023-02-21 11:00:59 -08:00
* offset 636
2023-02-20 21:14:46 -08:00
*/
Gpio debugTriggerSync;
/**
2023-02-21 11:00:59 -08:00
* offset 638
2023-02-20 21:14:46 -08:00
*/
Gpio mc33972_cs;
/**
2023-02-21 11:00:59 -08:00
* offset 640
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e mc33972_csPinMode;
/**
* Useful in Research&Development phase
2023-02-21 11:00:59 -08:00
* offset 641
2023-02-20 21:14:46 -08:00
*/
adc_channel_e auxFastSensor1_adcChannel;
/**
* First throttle body, second sensor.
2023-02-21 11:00:59 -08:00
* offset 642
2023-02-20 21:14:46 -08:00
*/
adc_channel_e tps1_2AdcChannel;
/**
* Second throttle body, second sensor.
2023-02-21 11:00:59 -08:00
* offset 643
2023-02-20 21:14:46 -08:00
*/
adc_channel_e tps2_2AdcChannel;
/**
* Electronic throttle pedal position input
* Second channel
* See also tps1_1AdcChannel
* See throttlePedalSecondaryUpVoltage and throttlePedalSecondaryWOTVoltage
2023-02-21 11:00:59 -08:00
* offset 644
2023-02-20 21:14:46 -08:00
*/
adc_channel_e throttlePedalPositionSecondAdcChannel;
/**
%
2023-02-21 11:00:59 -08:00
* offset 645
2023-02-20 21:14:46 -08:00
*/
uint8_t fuelLevelValues[FUEL_LEVEL_TABLE_COUNT];
/**
* AFR, WBO, EGO - whatever you like to call it
2023-02-21 11:00:59 -08:00
* offset 653
2023-02-20 21:14:46 -08:00
*/
ego_sensor_e afr_type;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 654
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_654[2];
2023-02-20 21:14:46 -08:00
/**
* 0.1 is a good default value
x
2023-02-21 11:00:59 -08:00
* offset 656
2023-02-20 21:14:46 -08:00
*/
float idle_antiwindupFreq;
/**
2023-02-21 11:00:59 -08:00
* offset 660
2023-02-20 21:14:46 -08:00
*/
brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT];
/**
* Minimum allowed time for the boost phase. If the boost target current is reached before this time elapses, it is assumed that the injector has failed short circuit.
us
2023-02-21 11:00:59 -08:00
* offset 664
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_t_min_boost;
/**
2023-02-21 11:00:59 -08:00
* offset 666
2023-02-20 21:14:46 -08:00
*/
output_pin_e tachOutputPin;
/**
2023-02-21 11:00:59 -08:00
* offset 668
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e tachOutputPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 669
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_669[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 670
2023-02-20 21:14:46 -08:00
*/
output_pin_e mainRelayPin;
/**
2023-02-21 11:00:59 -08:00
* offset 672
2023-02-20 21:14:46 -08:00
*/
Gpio sdCardCsPin;
/**
* set_can_tx_pin X
2023-02-21 11:00:59 -08:00
* offset 674
2023-02-20 21:14:46 -08:00
*/
Gpio canTxPin;
/**
* set_can_rx_pin X
2023-02-21 11:00:59 -08:00
* offset 676
2023-02-20 21:14:46 -08:00
*/
Gpio canRxPin;
/**
2023-02-21 11:00:59 -08:00
* offset 678
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e throttlePedalUpPinMode;
/**
* Additional idle % while A/C is active
%
2023-02-21 11:00:59 -08:00
* offset 679
2023-02-20 21:14:46 -08:00
*/
uint8_t acIdleExtraOffset;
/**
* Ratio between the wheels and your transmission output.
ratio
2023-02-21 11:00:59 -08:00
* offset 680
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 100, 1> finalGearRatio;
/**
2023-02-21 11:00:59 -08:00
* offset 682
2023-02-20 21:14:46 -08:00
*/
brain_input_pin_e tcuInputSpeedSensorPin;
/**
2023-02-21 11:00:59 -08:00
* offset 684
2023-02-20 21:14:46 -08:00
*/
uint8_t tcuInputSpeedSensorTeeth;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 685
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_685[1];
2023-02-20 21:14:46 -08:00
/**
* Voltage when the wastegate is closed.
* You probably don't have one of these!
mv
2023-02-21 11:00:59 -08:00
* offset 686
2023-02-20 21:14:46 -08:00
*/
uint16_t wastegatePositionMin;
/**
* Voltage when the wastegate is fully open.
* You probably don't have one of these!
* 1 volt = 1000 units
mv
2023-02-21 11:00:59 -08:00
* offset 688
2023-02-20 21:14:46 -08:00
*/
uint16_t wastegatePositionMax;
/**
2023-02-21 11:00:59 -08:00
* need 4 byte alignment
units
* offset 690
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_690[2];
2023-02-20 21:14:46 -08:00
/**
* Secondary TTL channel baud rate
BPs
2023-02-21 11:00:59 -08:00
* offset 692
2023-02-20 21:14:46 -08:00
*/
uint32_t tunerStudioSerialSpeed;
/**
* Just for reference really, not taken into account by any logic at this point
CR
2023-02-21 11:00:59 -08:00
* offset 696
2023-02-20 21:14:46 -08:00
*/
float compressionRatio;
/**
* Each rusEFI piece can provide synthetic trigger signal for external ECU. Sometimes these wires are routed back into trigger inputs of the same rusEFI board.
* See also directSelfStimulation which is different.
2023-02-21 11:00:59 -08:00
* offset 700
2023-02-20 21:14:46 -08:00
*/
Gpio triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT];
/**
g/s
2023-02-21 11:00:59 -08:00
* offset 704
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> fordInjectorSmallPulseSlope;
/**
2023-02-21 11:00:59 -08:00
* offset 706
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 708
2023-02-20 21:14:46 -08:00
*/
adc_channel_e maf2AdcChannel;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 709
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_709[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* On-off O2 sensor heater control. 'ON' if engine is running, 'OFF' if stopped or cranking.
* offset 710
2023-02-20 21:14:46 -08:00
*/
output_pin_e o2heaterPin;
/**
2023-02-21 11:00:59 -08:00
* offset 712
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e o2heaterPinModeTodO;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 713
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_713[3];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 716 bit 0 */
2023-02-20 21:14:46 -08:00
bool is_enabled_spi_1 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 716 bit 1 */
2023-02-20 21:14:46 -08:00
bool is_enabled_spi_2 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 716 bit 2 */
2023-02-20 21:14:46 -08:00
bool is_enabled_spi_3 : 1 {};
/**
* enable sd/disable sd
2023-02-21 11:00:59 -08:00
offset 716 bit 3 */
2023-02-20 21:14:46 -08:00
bool isSdCardEnabled : 1 {};
/**
* Use 11 bit (standard) or 29 bit (extended) IDs for rusEFI verbose CAN format.
2023-02-21 11:00:59 -08:00
offset 716 bit 4 */
2023-02-20 21:14:46 -08:00
bool rusefiVerbose29b : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 716 bit 5 */
2023-02-20 21:14:46 -08:00
bool isVerboseAlternator : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 6 */
2023-02-20 21:14:46 -08:00
bool verboseQuad : 1 {};
/**
* This setting should only be used if you have a stepper motor idle valve and a stepper motor driver installed.
2023-02-21 11:55:32 -08:00
offset 716 bit 7 */
2023-02-20 21:14:46 -08:00
bool useStepperIdle : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 8 */
2023-02-20 21:14:46 -08:00
bool enabledStep1Limiter : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 9 */
2023-02-21 11:00:59 -08:00
bool unused760b12 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 10 */
2023-02-20 21:14:46 -08:00
bool verboseTLE8888 : 1 {};
/**
* CAN broadcast using custom rusEFI protocol
* enable can_broadcast/disable can_broadcast
2023-02-21 11:55:32 -08:00
offset 716 bit 11 */
2023-02-20 21:14:46 -08:00
bool enableVerboseCanTx : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 12 */
2023-02-20 21:14:46 -08:00
bool etb1configured : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 13 */
2023-02-20 21:14:46 -08:00
bool etb2configured : 1 {};
/**
* Useful for individual intakes
2023-02-21 11:55:32 -08:00
offset 716 bit 14 */
2023-02-20 21:14:46 -08:00
bool measureMapOnlyInOneCylinder : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 15 */
2023-02-20 21:14:46 -08:00
bool stepperForceParkingEveryRestart : 1 {};
/**
* If enabled, try to fire the engine before a full engine cycle has been completed using RPM estimated from the last 90 degrees of engine rotation. As soon as the trigger syncs plus 90 degrees rotation, fuel and ignition events will occur. If disabled, worst case may require up to 4 full crank rotations before any events are scheduled.
2023-02-21 11:55:32 -08:00
offset 716 bit 16 */
2023-02-20 21:14:46 -08:00
bool isFasterEngineSpinUpEnabled : 1 {};
/**
* This setting disables fuel injection while the engine is in overrun, this is useful as a fuel saving measure and to prevent back firing.
2023-02-21 11:55:32 -08:00
offset 716 bit 17 */
2023-02-20 21:14:46 -08:00
bool coastingFuelCutEnabled : 1 {};
/**
* Override the IAC position during overrun conditions to help reduce engine breaking, this can be helpful for large engines in light weight cars or engines that have trouble returning to idle.
2023-02-21 11:55:32 -08:00
offset 716 bit 18 */
2023-02-20 21:14:46 -08:00
bool useIacTableForCoasting : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 19 */
2023-02-20 21:14:46 -08:00
bool useNoiselessTriggerDecoder : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 20 */
2023-02-20 21:14:46 -08:00
bool useIdleTimingPidControl : 1 {};
/**
* Allows disabling the ETB when the engine is stopped. You may not like the power draw or PWM noise from the motor, so this lets you turn it off until it's necessary.
2023-02-21 11:55:32 -08:00
offset 716 bit 21 */
2023-02-20 21:14:46 -08:00
bool disableEtbWhenEngineStopped : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 22 */
2023-02-20 21:14:46 -08:00
bool is_enabled_spi_4 : 1 {};
/**
* Disable the electronic throttle motor and DC idle motor for testing.
* This mode is for testing ETB/DC idle position sensors, etc without actually driving the throttle.
2023-02-21 11:55:32 -08:00
offset 716 bit 23 */
2023-02-20 21:14:46 -08:00
bool pauseEtbControl : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 24 */
2023-02-20 21:14:46 -08:00
bool alignEngineSnifferAtTDC : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 25 */
2023-02-20 21:14:46 -08:00
bool unused764b29 : 1 {};
/**
* AEM X-Series or rusEFI Wideband
2023-02-21 11:55:32 -08:00
offset 716 bit 26 */
2023-02-20 21:14:46 -08:00
bool enableAemXSeries : 1 {};
/**
2023-02-21 11:55:32 -08:00
offset 716 bit 27 */
bool unusedBit_210_27 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 716 bit 28 */
2023-02-21 11:55:32 -08:00
bool unusedBit_210_28 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 716 bit 29 */
2023-02-21 11:55:32 -08:00
bool unusedBit_210_29 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 716 bit 30 */
2023-02-21 11:55:32 -08:00
bool unusedBit_210_30 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 716 bit 31 */
2023-02-21 11:55:32 -08:00
bool unusedBit_210_31 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 720
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 728
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
pin_output_mode_e mainRelayPinMode;
2023-02-20 21:14:46 -08:00
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 729
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_729[3];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 732
2023-02-20 21:14:46 -08:00
*/
uint32_t verboseCanBaseAddress;
/**
* Boost Voltage
v
2023-02-21 11:00:59 -08:00
* offset 736
2023-02-20 21:14:46 -08:00
*/
uint8_t mc33_hvolt;
/**
* Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost.
kPa
2023-02-21 11:00:59 -08:00
* offset 737
2023-02-20 21:14:46 -08:00
*/
uint8_t minimumBoostClosedLoopMap;
/**
* Optional Radiator Fan used with A/C
2023-02-21 11:00:59 -08:00
* offset 738
2023-02-20 21:14:46 -08:00
*/
output_pin_e acFanPin;
/**
2023-02-21 11:00:59 -08:00
* offset 740
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e acFanPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 741
2023-02-20 21:14:46 -08:00
*/
spi_device_e l9779spiDevice;
/**
volts
2023-02-21 11:00:59 -08:00
* offset 742
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 750
2023-02-20 21:14:46 -08:00
*/
imu_type_e imuType;
/**
multiplier
2023-02-21 11:00:59 -08:00
* offset 751
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 50, 1> dwellVoltageCorrValues[DWELL_CURVE_SIZE];
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 759
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_759[1];
2023-02-20 21:14:46 -08:00
/**
kg
2023-02-21 11:00:59 -08:00
* offset 760
2023-02-20 21:14:46 -08:00
*/
uint16_t vehicleWeight;
/**
* How far above idle speed do we consider idling?
* For example, if target = 800, this param = 200, then anything below 1000 RPM is considered idle.
RPM
2023-02-21 11:00:59 -08:00
* offset 762
2023-02-20 21:14:46 -08:00
*/
int16_t idlePidRpmUpperLimit;
/**
* Apply nonlinearity correction below a pulse of this duration. Pulses longer than this duration will receive no adjustment.
ms
2023-02-21 11:00:59 -08:00
* offset 764
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> applyNonlinearBelowPulse;
/**
2023-02-21 11:00:59 -08:00
* offset 766
2023-02-20 21:14:46 -08:00
*/
Gpio lps25BaroSensorScl;
/**
2023-02-21 11:00:59 -08:00
* offset 768
2023-02-20 21:14:46 -08:00
*/
Gpio lps25BaroSensorSda;
/**
2023-02-21 11:00:59 -08:00
* offset 770
2023-02-20 21:14:46 -08:00
*/
brain_input_pin_e vehicleSpeedSensorInputPin;
/**
* Some vehicles have a switch to indicate that clutch pedal is all the way up
2023-02-21 11:00:59 -08:00
* offset 772
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e clutchUpPin;
/**
2023-02-21 11:00:59 -08:00
* offset 774
2023-02-20 21:14:46 -08:00
*/
InjectorNonlinearMode injectorNonlinearMode;
/**
2023-02-21 11:00:59 -08:00
* offset 775
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e clutchUpPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 776
2023-02-20 21:14:46 -08:00
*/
Gpio max31855_cs[EGT_CHANNEL_COUNT];
/**
* Continental/GM flex fuel sensor, 50-150hz type
2023-02-21 11:00:59 -08:00
* offset 792
2023-02-20 21:14:46 -08:00
*/
brain_input_pin_e flexSensorPin;
/**
2023-02-21 11:00:59 -08:00
* offset 794
2023-02-20 21:14:46 -08:00
*/
Gpio test557pin;
/**
2023-02-21 11:00:59 -08:00
* offset 796
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e stepperDirectionPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 797
2023-02-20 21:14:46 -08:00
*/
spi_device_e mc33972spiDevice;
/**
* Stoichiometric ratio for your secondary fuel. This value is used when the Flex Fuel sensor indicates E100, typically 9.0
:1
2023-02-21 11:00:59 -08:00
* offset 798
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> stoichRatioSecondary;
/**
* Maximum allowed ETB position. Some throttles go past fully open, so this allows you to limit it to fully open.
%
2023-02-21 11:00:59 -08:00
* offset 799
2023-02-20 21:14:46 -08:00
*/
uint8_t etbMaximumPosition;
/**
* Rate the ECU will log to the SD card, in hz (log lines per second).
hz
2023-02-21 11:00:59 -08:00
* offset 800
2023-02-20 21:14:46 -08:00
*/
uint16_t sdCardLogFrequency;
/**
2023-02-21 11:00:59 -08:00
* offset 802
2023-02-20 21:14:46 -08:00
*/
Gpio debugMapAveraging;
/**
2023-02-21 11:00:59 -08:00
* offset 804
2023-02-20 21:14:46 -08:00
*/
output_pin_e starterRelayDisablePin;
/**
* On some vehicles we can disable starter once engine is already running
2023-02-21 11:00:59 -08:00
* offset 806
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e starterRelayDisablePinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 807
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_807[1];
2023-02-20 21:14:46 -08:00
/**
* Some Subaru and some Mazda use double-solenoid idle air valve
2023-02-21 11:00:59 -08:00
* offset 808
2023-02-20 21:14:46 -08:00
*/
output_pin_e secondSolenoidPin;
/**
* See also starterControlPin
2023-02-21 11:00:59 -08:00
* offset 810
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e startStopButtonPin;
/**
* This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies.
count
2023-02-21 11:00:59 -08:00
* offset 812
2023-02-20 21:14:46 -08:00
*/
int mapMinBufferLength;
/**
* Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%.
%
2023-02-21 11:00:59 -08:00
* offset 816
2023-02-20 21:14:46 -08:00
*/
int16_t idlePidDeactivationTpsThreshold;
/**
%
2023-02-21 11:00:59 -08:00
* offset 818
2023-02-20 21:14:46 -08:00
*/
int16_t stepperParkingExtraSteps;
/**
ADC
2023-02-21 11:00:59 -08:00
* offset 820
2023-02-20 21:14:46 -08:00
*/
uint16_t tps1SecondaryMin;
/**
ADC
2023-02-21 11:00:59 -08:00
* offset 822
2023-02-20 21:14:46 -08:00
*/
uint16_t tps1SecondaryMax;
/**
rpm
2023-02-21 11:00:59 -08:00
* offset 824
2023-02-20 21:14:46 -08:00
*/
int16_t antiLagRpmTreshold;
/**
* Maximum time to crank starter when start/stop button is pressed
Seconds
2023-02-21 11:00:59 -08:00
* offset 826
2023-02-20 21:14:46 -08:00
*/
uint16_t startCrankingDuration;
/**
* This pin is used for debugging - snap a logic analyzer on it and see if it's ever high
2023-02-21 11:00:59 -08:00
* offset 828
2023-02-20 21:14:46 -08:00
*/
Gpio triggerErrorPin;
/**
2023-02-21 11:00:59 -08:00
* offset 830
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e triggerErrorPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 831
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_831[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 832
2023-02-20 21:14:46 -08:00
*/
output_pin_e acRelayPin;
/**
2023-02-21 11:00:59 -08:00
* offset 834
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e acRelayPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 835
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_835[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 836
2023-02-20 21:14:46 -08:00
*/
script_setting_t scriptSetting[SCRIPT_SETTING_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 868
2023-02-20 21:14:46 -08:00
*/
Gpio spi1mosiPin;
/**
2023-02-21 11:00:59 -08:00
* offset 870
2023-02-20 21:14:46 -08:00
*/
Gpio spi1misoPin;
/**
2023-02-21 11:00:59 -08:00
* offset 872
2023-02-20 21:14:46 -08:00
*/
Gpio spi1sckPin;
/**
2023-02-21 11:00:59 -08:00
* offset 874
2023-02-20 21:14:46 -08:00
*/
Gpio spi2mosiPin;
/**
2023-02-21 11:00:59 -08:00
* offset 876
2023-02-20 21:14:46 -08:00
*/
Gpio spi2misoPin;
/**
2023-02-21 11:00:59 -08:00
* offset 878
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
Gpio spi2sckPin;
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 880
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
Gpio spi3mosiPin;
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 882
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
Gpio spi3misoPin;
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 884
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
Gpio spi3sckPin;
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 886
2023-02-20 21:14:46 -08:00
*/
uart_device_e consoleUartDevice;
/**
* rusEFI console Sensor Sniffer mode
2023-02-21 11:00:59 -08:00
* offset 887
2023-02-20 21:14:46 -08:00
*/
sensor_chart_e sensorChartMode;
/**
2023-02-21 11:00:59 -08:00
* offset 888
2023-02-20 21:14:46 -08:00
*/
maf_sensor_type_e mafSensorType;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 889
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_889[3];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 0 */
2023-02-20 21:14:46 -08:00
bool clutchUpPinInverted : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 1 */
2023-02-20 21:14:46 -08:00
bool clutchDownPinInverted : 1 {};
/**
* If enabled we use two H-bridges to drive stepper idle air valve
2023-02-21 11:00:59 -08:00
offset 892 bit 2 */
2023-02-20 21:14:46 -08:00
bool useHbridgesToDriveIdleStepper : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 3 */
2023-02-20 21:14:46 -08:00
bool multisparkEnable : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 4 */
2023-02-20 21:14:46 -08:00
bool enableLaunchRetard : 1 {};
/**
* Read VSS from OEM CAN bus according to selected CAN vehicle configuration.
2023-02-21 11:00:59 -08:00
offset 892 bit 5 */
2023-02-20 21:14:46 -08:00
bool enableCanVss : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 6 */
2023-02-20 21:14:46 -08:00
bool enableInnovateLC2 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 7 */
2023-02-20 21:14:46 -08:00
bool showHumanReadableWarning : 1 {};
/**
2023-02-21 11:00:59 -08:00
* If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise.
offset 892 bit 8 */
2023-02-20 21:14:46 -08:00
bool stftIgnoreErrorMagnitude : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 9 */
2023-02-20 21:14:46 -08:00
bool vvtBooleanForVerySpecialCases : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 10 */
2023-02-20 21:14:46 -08:00
bool enableSoftwareKnock : 1 {};
/**
* Verbose info in console below engineSnifferRpmThreshold
* enable vvt_details
2023-02-21 11:00:59 -08:00
offset 892 bit 11 */
2023-02-20 21:14:46 -08:00
bool verboseVVTDecoding : 1 {};
/**
* get invertCamVVTSignal
2023-02-21 11:00:59 -08:00
offset 892 bit 12 */
2023-02-20 21:14:46 -08:00
bool invertCamVVTSignal : 1 {};
/**
* This property is useful if using rusEFI as TCM or BCM only
* enable consumeObdSensors
2023-02-21 11:00:59 -08:00
offset 892 bit 13 */
2023-02-20 21:14:46 -08:00
bool consumeObdSensors : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 14 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl1 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 15 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl2 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 16 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl3 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 17 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl4 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 18 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl5 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 19 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl6 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 20 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl7 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 21 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl8 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 22 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl9 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 23 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl10 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 24 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl11 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 25 */
2023-02-20 21:14:46 -08:00
bool knockBankCyl12 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 26 */
2023-02-20 21:14:46 -08:00
bool tcuEnabled : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 27 */
2023-02-20 21:14:46 -08:00
bool canBroadcastUseChannelTwo : 1 {};
/**
* If enabled we use four Push-Pull outputs to directly drive stepper idle air valve coilss
2023-02-21 11:00:59 -08:00
offset 892 bit 28 */
2023-02-20 21:14:46 -08:00
bool useRawOutputToDriveIdleStepper : 1 {};
/**
* Print incoming and outgoing second bus CAN messages in rusEFI console
2023-02-21 11:00:59 -08:00
offset 892 bit 29 */
2023-02-20 21:14:46 -08:00
bool verboseCan2 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 892 bit 30 */
bool unusedBit_308_30 : 1 {};
/**
offset 892 bit 31 */
bool unusedBit_308_31 : 1 {};
/**
* offset 896
2023-02-20 21:14:46 -08:00
*/
dc_io etbIo[ETB_COUNT];
/**
* Wastegate control Solenoid
2023-02-21 11:00:59 -08:00
* offset 912
2023-02-20 21:14:46 -08:00
*/
output_pin_e boostControlPin;
/**
2023-02-21 11:00:59 -08:00
* offset 914
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e boostControlPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 915
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_915[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 916
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e ALSActivatePin;
/**
2023-02-21 11:00:59 -08:00
* offset 918
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e launchActivatePin;
/**
2023-02-21 11:00:59 -08:00
* offset 920
2023-02-20 21:14:46 -08:00
*/
pid_s boostPid;
/**
2023-02-21 11:00:59 -08:00
* offset 940
2023-02-20 21:14:46 -08:00
*/
boostType_e boostType;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 941
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_941[3];
2023-02-20 21:14:46 -08:00
/**
Hz
2023-02-21 11:00:59 -08:00
* offset 944
2023-02-20 21:14:46 -08:00
*/
int boostPwmFrequency;
/**
2023-02-21 11:00:59 -08:00
* offset 948
2023-02-20 21:14:46 -08:00
*/
launchActivationMode_e launchActivationMode;
/**
2023-02-21 11:00:59 -08:00
* offset 949
2023-02-20 21:14:46 -08:00
*/
antiLagActivationMode_e antiLagActivationMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 950
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_950[2];
2023-02-20 21:14:46 -08:00
/**
* Disabled above this speed
Kph
2023-02-21 11:00:59 -08:00
* offset 952
2023-02-20 21:14:46 -08:00
*/
int launchSpeedThreshold;
/**
* Range from Launch RPM for Timing Retard to activate
RPM
2023-02-21 11:00:59 -08:00
* offset 956
2023-02-20 21:14:46 -08:00
*/
int launchTimingRpmRange;
/**
* Extra Fuel Added
%
2023-02-21 11:00:59 -08:00
* offset 960
2023-02-20 21:14:46 -08:00
*/
int launchFuelAdded;
/**
* Duty Cycle for the Boost Solenoid
%
2023-02-21 11:00:59 -08:00
* offset 964
2023-02-20 21:14:46 -08:00
*/
int launchBoostDuty;
/**
* Range from Launch RPM to activate Hard Cut
RPM
2023-02-21 11:00:59 -08:00
* offset 968
2023-02-20 21:14:46 -08:00
*/
int hardCutRpmRange;
/**
2023-02-21 11:00:59 -08:00
* offset 972
2023-02-20 21:14:46 -08:00
*/
float turbochargerFilter;
/**
2023-02-21 11:00:59 -08:00
* offset 976
2023-02-20 21:14:46 -08:00
*/
int launchTpsThreshold;
/**
2023-02-21 11:00:59 -08:00
* offset 980
2023-02-20 21:14:46 -08:00
*/
float launchActivateDelay;
/**
2023-02-21 11:00:59 -08:00
* offset 984
2023-02-20 21:14:46 -08:00
*/
stft_s stft;
/**
2023-02-21 11:00:59 -08:00
* offset 1008
2023-02-20 21:14:46 -08:00
*/
dc_io stepperDcIo[DC_PER_STEPPER];
/**
* For example, BMW, GM or Chevrolet
* REQUIRED for rusEFI Online
2023-02-21 11:00:59 -08:00
* offset 1024
2023-02-20 21:14:46 -08:00
*/
vehicle_info_t engineMake;
/**
* For example, LS1 or NB2
* REQUIRED for rusEFI Online
2023-02-21 11:00:59 -08:00
* offset 1056
2023-02-20 21:14:46 -08:00
*/
vehicle_info_t engineCode;
/**
* For example, Hunchback or Orange Miata
* Vehicle name has to be unique between your vehicles.
* REQUIRED for rusEFI Online
2023-02-21 11:00:59 -08:00
* offset 1088
2023-02-20 21:14:46 -08:00
*/
vehicle_info_t vehicleName;
/**
2023-02-21 11:00:59 -08:00
* offset 1120
2023-02-20 21:14:46 -08:00
*/
output_pin_e tcu_solenoid[TCU_SOLENOID_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1132
2023-02-20 21:14:46 -08:00
*/
dc_function_e etbFunctions[ETB_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1134
2023-02-20 21:14:46 -08:00
*/
spi_device_e drv8860spiDevice;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1135
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1135[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 1136
2023-02-20 21:14:46 -08:00
*/
Gpio drv8860_cs;
/**
2023-02-21 11:00:59 -08:00
* offset 1138
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e drv8860_csPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1139
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1139[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 1140
2023-02-20 21:14:46 -08:00
*/
Gpio drv8860_miso;
/**
volt
2023-02-21 11:00:59 -08:00
* offset 1142
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> fuelLevelBins[FUEL_LEVEL_TABLE_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1158
2023-02-20 21:14:46 -08:00
*/
output_pin_e luaOutputPins[LUA_PWM_COUNT];
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1174
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1174[2];
2023-02-20 21:14:46 -08:00
/**
* Angle between cam sensor and VVT zero position
value
2023-02-21 11:00:59 -08:00
* offset 1176
2023-02-20 21:14:46 -08:00
*/
float vvtOffsets[CAM_INPUTS_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1192
2023-02-20 21:14:46 -08:00
*/
vr_threshold_s vrThreshold[VR_THRESHOLD_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1224
2023-02-20 21:14:46 -08:00
*/
gppwm_note_t gpPwmNote[GPPWM_CHANNELS];
/**
ADC
2023-02-21 11:00:59 -08:00
* offset 1288
2023-02-20 21:14:46 -08:00
*/
uint16_t tps2SecondaryMin;
/**
ADC
2023-02-21 11:00:59 -08:00
* offset 1290
2023-02-20 21:14:46 -08:00
*/
uint16_t tps2SecondaryMax;
/**
* Select which bus the wideband controller is attached to.
2023-02-21 11:00:59 -08:00
offset 1292 bit 0 */
2023-02-20 21:14:46 -08:00
bool widebandOnSecondBus : 1 {};
/**
* Enables lambda sensor closed loop feedback for fuelling.
2023-02-21 11:00:59 -08:00
offset 1292 bit 1 */
2023-02-20 21:14:46 -08:00
bool fuelClosedLoopCorrectionEnabled : 1 {};
/**
* Print details into rusEFI console
* enable verbose_idle
2023-02-21 11:00:59 -08:00
offset 1292 bit 2 */
2023-02-20 21:14:46 -08:00
bool isVerboseIAC : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 3 */
2023-02-20 21:14:46 -08:00
bool boardUseTachPullUp : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 4 */
2023-02-20 21:14:46 -08:00
bool boardUseTempPullUp : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 5 */
2023-02-20 21:14:46 -08:00
bool yesUnderstandLocking : 1 {};
/**
* Sometimes we have a performance issue while printing error
2023-02-21 11:00:59 -08:00
offset 1292 bit 6 */
2023-02-20 21:14:46 -08:00
bool silentTriggerError : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 7 */
2023-02-20 21:14:46 -08:00
bool useLinearCltSensor : 1 {};
/**
* enable can_read/disable can_read
2023-02-21 11:00:59 -08:00
offset 1292 bit 8 */
2023-02-20 21:14:46 -08:00
bool canReadEnabled : 1 {};
/**
* enable can_write/disable can_write
2023-02-21 11:00:59 -08:00
offset 1292 bit 9 */
2023-02-20 21:14:46 -08:00
bool canWriteEnabled : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 10 */
2023-02-20 21:14:46 -08:00
bool useLinearIatSensor : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 11 */
2023-02-20 21:14:46 -08:00
bool boardUse2stepPullDown : 1 {};
/**
* Treat milliseconds value as duty cycle value, i.e. 0.5ms would become 50%
2023-02-21 11:00:59 -08:00
offset 1292 bit 12 */
2023-02-20 21:14:46 -08:00
bool tachPulseDurationAsDutyCycle : 1 {};
/**
* This enables smart alternator control and activates the extra alternator settings.
2023-02-21 11:00:59 -08:00
offset 1292 bit 13 */
2023-02-20 21:14:46 -08:00
bool isAlternatorControlEnabled : 1 {};
/**
* https://wiki.rusefi.com/Trigger-Configuration-Guide
* This setting flips the signal from the primary engine speed sensor.
2023-02-21 11:00:59 -08:00
offset 1292 bit 14 */
2023-02-20 21:14:46 -08:00
bool invertPrimaryTriggerSignal : 1 {};
/**
* https://wiki.rusefi.com/Trigger-Configuration-Guide
* This setting flips the signal from the secondary engine speed sensor.
2023-02-21 11:00:59 -08:00
offset 1292 bit 15 */
2023-02-20 21:14:46 -08:00
bool invertSecondaryTriggerSignal : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 16 */
2023-02-20 21:14:46 -08:00
bool cutFuelOnHardLimit : 1 {};
/**
* Be careful enabling this: some engines are known to self-disassemble their valvetrain with a spark cut. Fuel cut is much safer.
2023-02-21 11:00:59 -08:00
offset 1292 bit 17 */
2023-02-20 21:14:46 -08:00
bool cutSparkOnHardLimit : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 18 */
2023-02-20 21:14:46 -08:00
bool launchFuelCutEnable : 1 {};
/**
* This is the Cut Mode normally used
2023-02-21 11:00:59 -08:00
offset 1292 bit 19 */
2023-02-20 21:14:46 -08:00
bool launchSparkCutEnable : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 20 */
2023-02-20 21:14:46 -08:00
bool boardUseCrankPullUp : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 21 */
2023-02-20 21:14:46 -08:00
bool boardUseCamPullDown : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 22 */
2023-02-20 21:14:46 -08:00
bool boardUseCamVrPullUp : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 23 */
2023-02-20 21:14:46 -08:00
bool boardUseD2PullDown : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 24 */
2023-02-20 21:14:46 -08:00
bool boardUseD3PullDown : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 25 */
2023-02-20 21:14:46 -08:00
bool boardUseD4PullDown : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 26 */
2023-02-20 21:14:46 -08:00
bool boardUseD5PullDown : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 27 */
2023-02-20 21:14:46 -08:00
bool verboseIsoTp : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 28 */
2023-02-20 21:14:46 -08:00
bool engineSnifferFocusOnInputs : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 29 */
2023-02-20 21:14:46 -08:00
bool launchActivateInverted : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1292 bit 30 */
2023-02-20 21:14:46 -08:00
bool twoStroke : 1 {};
/**
* Where is your primary skipped wheel located?
2023-02-21 11:00:59 -08:00
offset 1292 bit 31 */
2023-02-20 21:14:46 -08:00
bool skippedWheelOnCam : 1 {};
/**
2023-02-21 11:00:59 -08:00
* offset 1296
2023-02-20 21:14:46 -08:00
*/
adc_channel_e hipOutputChannel;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1297
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1297[1];
2023-02-20 21:14:46 -08:00
/**
* A/C button input
2023-02-21 11:00:59 -08:00
* offset 1298
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e acSwitch;
/**
2023-02-21 11:00:59 -08:00
* offset 1300
2023-02-20 21:14:46 -08:00
*/
adc_channel_e vRefAdcChannel;
/**
* Expected neutral position
%
2023-02-21 11:00:59 -08:00
* offset 1301
2023-02-20 21:14:46 -08:00
*/
uint8_t etbNeutralPosition;
/**
* See also idleRpmPid
2023-02-21 11:00:59 -08:00
* offset 1302
2023-02-20 21:14:46 -08:00
*/
idle_mode_e idleMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1303
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1303[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 0 */
2023-02-20 21:14:46 -08:00
bool isInjectionEnabled : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 1 */
2023-02-20 21:14:46 -08:00
bool isIgnitionEnabled : 1 {};
/**
* When enabled if TPS is held above 95% no fuel is injected while cranking to clear excess fuel from the cylinders.
2023-02-21 11:00:59 -08:00
offset 1304 bit 2 */
2023-02-20 21:14:46 -08:00
bool isCylinderCleanupEnabled : 1 {};
/**
* Should we use tables to vary tau/beta based on CLT/MAP, or just with fixed values?
2023-02-21 11:00:59 -08:00
offset 1304 bit 3 */
2023-02-20 21:14:46 -08:00
bool complexWallModel : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 4 */
2023-02-20 21:14:46 -08:00
bool alwaysInstantRpm : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 5 */
2023-02-20 21:14:46 -08:00
bool isMapAveragingEnabled : 1 {};
/**
* If enabled, use separate temperature multiplier table for cranking idle position.
* If disabled, use normal running multiplier table applied to the cranking base position.
2023-02-21 11:00:59 -08:00
offset 1304 bit 6 */
2023-02-20 21:14:46 -08:00
bool overrideCrankingIacSetting : 1 {};
/**
* This activates a separate ignition timing table for idle conditions, this can help idle stability by using ignition retard and advance either side of the desired idle speed. Extra retard at low idle speeds will prevent stalling and extra advance at high idle speeds can help reduce engine power and slow the idle speed.
2023-02-21 11:00:59 -08:00
offset 1304 bit 7 */
2023-02-20 21:14:46 -08:00
bool useSeparateAdvanceForIdle : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 8 */
2023-02-20 21:14:46 -08:00
bool isWaveAnalyzerEnabled : 1 {};
/**
* This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling.
2023-02-21 11:00:59 -08:00
offset 1304 bit 9 */
2023-02-20 21:14:46 -08:00
bool useSeparateVeForIdle : 1 {};
/**
* Verbose info in console below engineSnifferRpmThreshold
* enable trigger_details
2023-02-21 11:00:59 -08:00
offset 1304 bit 10 */
2023-02-20 21:14:46 -08:00
bool verboseTriggerSynchDetails : 1 {};
/**
* Usually if we have no trigger events that means engine is stopped
* Unless we are troubleshooting and spinning the engine by hand - this case a longer
* delay is needed
2023-02-21 11:00:59 -08:00
offset 1304 bit 11 */
2023-02-20 21:14:46 -08:00
bool isManualSpinningMode : 1 {};
/**
* This is needed if your coils are individually wired and you wish to use batch injection.
* enable two_wire_batch_injection
2023-02-21 11:00:59 -08:00
offset 1304 bit 12 */
2023-02-20 21:14:46 -08:00
bool twoWireBatchInjection : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 13 */
2023-02-20 21:14:46 -08:00
bool neverInstantRpm : 1 {};
/**
* This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark).
2023-02-21 11:00:59 -08:00
offset 1304 bit 14 */
2023-02-20 21:14:46 -08:00
bool twoWireBatchIgnition : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 15 */
2023-02-20 21:14:46 -08:00
bool useFixedBaroCorrFromMap : 1 {};
/**
* In Constant mode, timing is automatically tapered to running as RPM increases.
* In Table mode, the "Cranking ignition advance" table is used directly.
2023-02-21 11:00:59 -08:00
offset 1304 bit 16 */
2023-02-20 21:14:46 -08:00
bool useSeparateAdvanceForCranking : 1 {};
/**
* This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).
* You probably don't need this.
2023-02-21 11:00:59 -08:00
offset 1304 bit 17 */
2023-02-20 21:14:46 -08:00
bool useAdvanceCorrectionsForCranking : 1 {};
/**
* Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor.
2023-02-21 11:00:59 -08:00
offset 1304 bit 18 */
2023-02-20 21:14:46 -08:00
bool flexCranking : 1 {};
/**
* This flag allows to use a special 'PID Multiplier' table (0.0-1.0) to compensate for nonlinear nature of IAC-RPM controller
2023-02-21 11:00:59 -08:00
offset 1304 bit 19 */
2023-02-20 21:14:46 -08:00
bool useIacPidMultTable : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 20 */
2023-02-20 21:14:46 -08:00
bool isBoostControlEnabled : 1 {};
/**
* Interpolates the Ignition Retard from 0 to 100% within the RPM Range
2023-02-21 11:00:59 -08:00
offset 1304 bit 21 */
2023-02-20 21:14:46 -08:00
bool launchSmoothRetard : 1 {};
/**
* Some engines are OK running semi-random sequential while other engine require phase synchronization
2023-02-21 11:00:59 -08:00
offset 1304 bit 22 */
2023-02-20 21:14:46 -08:00
bool isPhaseSyncRequiredForIgnition : 1 {};
/**
* If enabled, use a curve for RPM limit (based on coolant temperature) instead of a constant value.
2023-02-21 11:00:59 -08:00
offset 1304 bit 23 */
2023-02-20 21:14:46 -08:00
bool useCltBasedRpmLimit : 1 {};
/**
* If enabled, don't wait for engine start to heat O2 sensors. WARNING: this will reduce the life of your sensor, as condensation in the exhaust from a cold start can crack the sensing element.
2023-02-21 11:00:59 -08:00
offset 1304 bit 24 */
2023-02-20 21:14:46 -08:00
bool forceO2Heating : 1 {};
/**
* If increased VVT duty cycle increases the indicated VVT angle, set this to 'advance'. If it decreases, set this to 'retard'. Most intake cams use 'advance', and most exhaust cams use 'retard'.
2023-02-21 11:00:59 -08:00
offset 1304 bit 25 */
2023-02-20 21:14:46 -08:00
bool invertVvtControlIntake : 1 {};
/**
* If increased VVT duty cycle increases the indicated VVT angle, set this to 'advance'. If it decreases, set this to 'retard'. Most intake cams use 'advance', and most exhaust cams use 'retard'.
2023-02-21 11:00:59 -08:00
offset 1304 bit 26 */
2023-02-20 21:14:46 -08:00
bool invertVvtControlExhaust : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 27 */
2023-02-20 21:14:46 -08:00
bool useBiQuadOnAuxSpeedSensors : 1 {};
/**
* 'Trigger' mode will write a high speed log of trigger events (warning: uses lots of space!). 'Normal' mode will write a standard MLG of sensors, engine function, etc. similar to the one captured in TunerStudio.
2023-02-21 11:00:59 -08:00
offset 1304 bit 28 */
2023-02-20 21:14:46 -08:00
bool sdTriggerLog : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 29 */
2023-02-20 21:14:46 -08:00
bool ALSActivateInverted : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 30 */
2023-02-20 21:14:46 -08:00
bool unused_1484_bit_30 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1304 bit 31 */
2023-02-20 21:14:46 -08:00
bool tempBooleanForVerySpecialLogic : 1 {};
/**
count
2023-02-21 11:00:59 -08:00
* offset 1308
2023-02-20 21:14:46 -08:00
*/
uint32_t engineChartSize;
/**
mult
2023-02-21 11:00:59 -08:00
* offset 1312
2023-02-20 21:14:46 -08:00
*/
float turboSpeedSensorMultiplier;
/**
2023-02-21 11:00:59 -08:00
* offset 1316
2023-02-20 21:14:46 -08:00
*/
Gpio camInputsDebug[CAM_INPUTS_COUNT];
/**
* Extra idle target speed when A/C is enabled. Some cars need the extra speed to keep the AC efficient while idling.
RPM
2023-02-21 11:00:59 -08:00
* offset 1324
2023-02-20 21:14:46 -08:00
*/
int16_t acIdleRpmBump;
/**
seconds
2023-02-21 11:00:59 -08:00
* offset 1326
2023-02-20 21:14:46 -08:00
*/
int16_t warningPeriod;
/**
angle
2023-02-21 11:00:59 -08:00
* offset 1328
2023-02-20 21:14:46 -08:00
*/
float knockDetectionWindowStart;
/**
angle
2023-02-21 11:00:59 -08:00
* offset 1332
2023-02-20 21:14:46 -08:00
*/
float knockDetectionWindowEnd;
/**
ms
2023-02-21 11:00:59 -08:00
* offset 1336
2023-02-20 21:14:46 -08:00
*/
float idleStepperReactionTime;
/**
count
2023-02-21 11:00:59 -08:00
* offset 1340
2023-02-20 21:14:46 -08:00
*/
int idleStepperTotalSteps;
/**
* TODO: finish this #413
sec
2023-02-21 11:00:59 -08:00
* offset 1344
2023-02-20 21:14:46 -08:00
*/
float noAccelAfterHardLimitPeriodSecs;
/**
* At what trigger index should some MAP-related math be executed? This is a performance trick to reduce load on synchronization trigger callback.
index
2023-02-21 11:00:59 -08:00
* offset 1348
2023-02-20 21:14:46 -08:00
*/
int mapAveragingSchedulingAtIndex;
/**
* Duration in ms or duty cycle depending on selected mode
2023-02-21 11:00:59 -08:00
* offset 1352
2023-02-20 21:14:46 -08:00
*/
float tachPulseDuractionMs;
/**
* Length of time the deposited wall fuel takes to dissipate after the start of acceleration.
Seconds
2023-02-21 11:00:59 -08:00
* offset 1356
2023-02-20 21:14:46 -08:00
*/
float wwaeTau;
/**
2023-02-21 11:00:59 -08:00
* offset 1360
2023-02-20 21:14:46 -08:00
*/
pid_s alternatorControl;
/**
2023-02-21 11:00:59 -08:00
* offset 1380
2023-02-20 21:14:46 -08:00
*/
pid_s etb;
/**
2023-02-21 11:00:59 -08:00
* offset 1400
2023-02-20 21:14:46 -08:00
*/
Gpio triggerInputDebugPins[TRIGGER_INPUT_PIN_COUNT];
/**
* RPM range above upper limit for extra air taper,"RPM", 1, 0, 0, 1500, 0
2023-02-21 11:00:59 -08:00
* offset 1404
2023-02-20 21:14:46 -08:00
*/
int16_t airTaperRpmRange;
/**
2023-02-21 11:00:59 -08:00
* offset 1406
2023-02-20 21:14:46 -08:00
*/
brain_input_pin_e turboSpeedSensorInputPin;
/**
* Closed throttle#2. todo: extract these two fields into a structure
* See also tps2_1AdcChannel
ADC
2023-02-21 11:00:59 -08:00
* offset 1408
2023-02-20 21:14:46 -08:00
*/
int16_t tps2Min;
/**
* Full throttle#2. tpsMax value as 10 bit ADC value. Not Voltage!
* See also tps1_1AdcChannel
ADC
2023-02-21 11:00:59 -08:00
* offset 1410
2023-02-20 21:14:46 -08:00
*/
int16_t tps2Max;
/**
* See also startStopButtonPin
2023-02-21 11:00:59 -08:00
* offset 1412
2023-02-20 21:14:46 -08:00
*/
output_pin_e starterControlPin;
/**
2023-02-21 11:00:59 -08:00
* offset 1414
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e startStopButtonMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1415
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1415[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 1416
2023-02-20 21:14:46 -08:00
*/
Gpio mc33816_flag0;
/**
Pulse
2023-02-21 11:00:59 -08:00
* offset 1418
2023-02-20 21:14:46 -08:00
*/
uint8_t tachPulsePerRev;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1419
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1419[1];
2023-02-20 21:14:46 -08:00
/**
* kPa value which is too low to be true
kPa
2023-02-21 11:00:59 -08:00
* offset 1420
2023-02-20 21:14:46 -08:00
*/
float mapErrorDetectionTooLow;
/**
* kPa value which is too high to be true
kPa
2023-02-21 11:00:59 -08:00
* offset 1424
2023-02-20 21:14:46 -08:00
*/
float mapErrorDetectionTooHigh;
/**
* How long to wait for the spark to fire before recharging the coil for another spark.
ms
2023-02-21 11:00:59 -08:00
* offset 1428
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> multisparkSparkDuration;
/**
* This sets the dwell time for subsequent sparks. The main spark's dwell is set by the dwell table.
ms
2023-02-21 11:00:59 -08:00
* offset 1430
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> multisparkDwell;
/**
* See cltIdleRpmBins
2023-02-21 11:00:59 -08:00
* offset 1432
2023-02-20 21:14:46 -08:00
*/
pid_s idleRpmPid;
/**
* 0 = No fuel settling on port walls 1 = All the fuel settling on port walls setting this to 0 disables the wall wetting enrichment.
Fraction
2023-02-21 11:00:59 -08:00
* offset 1452
2023-02-20 21:14:46 -08:00
*/
float wwaeBeta;
/**
* blue LED on many rusEFI boards.
* Blue Communication LED which is expected to blink at 50% duty cycle during normal board operation.
* If USB communication cable is connected Blue LED starts to blink faster.
2023-02-21 11:00:59 -08:00
* offset 1456
2023-02-20 21:14:46 -08:00
*/
Gpio communicationLedPin;
/**
* Green LED on many rusEFI boards.
* Off if engine is stopped, blinks if engine is cranking, solid if engine is running.
2023-02-21 11:00:59 -08:00
* offset 1458
2023-02-20 21:14:46 -08:00
*/
Gpio runningLedPin;
/**
* See also EFI_CONSOLE_RX_BRAIN_PIN
2023-02-21 11:00:59 -08:00
* offset 1460
2023-02-20 21:14:46 -08:00
*/
Gpio binarySerialTxPin;
/**
2023-02-21 11:00:59 -08:00
* offset 1462
2023-02-20 21:14:46 -08:00
*/
Gpio binarySerialRxPin;
/**
2023-02-21 11:00:59 -08:00
* offset 1464
2023-02-20 21:14:46 -08:00
*/
Gpio auxValves[AUX_DIGITAL_VALVE_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1468
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e tcuUpshiftButtonPin;
/**
2023-02-21 11:00:59 -08:00
* offset 1470
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e tcuDownshiftButtonPin;
/**
voltage
2023-02-21 11:00:59 -08:00
* offset 1472
2023-02-20 21:14:46 -08:00
*/
float throttlePedalUpVoltage;
/**
* Pedal in the floor
voltage
2023-02-21 11:00:59 -08:00
* offset 1476
2023-02-20 21:14:46 -08:00
*/
float throttlePedalWOTVoltage;
/**
* on IGN voltage detection turn fuel pump on to build fuel pressure
seconds
2023-02-21 11:00:59 -08:00
* offset 1480
2023-02-20 21:14:46 -08:00
*/
int16_t startUpFuelPumpDuration;
/**
* If the RPM closer to target than this value, disable closed loop idle correction to prevent oscillation
RPM
2023-02-21 11:00:59 -08:00
* offset 1482
2023-02-20 21:14:46 -08:00
*/
int16_t idlePidRpmDeadZone;
/**
* This is the target battery voltage the alternator PID control will attempt to maintain
Volts
2023-02-21 11:00:59 -08:00
* offset 1484
2023-02-20 21:14:46 -08:00
*/
float targetVBatt;
/**
* Turns off alternator output above specified TPS, enabling this reduced parasitic drag on the engine at full load.
%
2023-02-21 11:00:59 -08:00
* offset 1488
2023-02-20 21:14:46 -08:00
*/
float alternatorOffAboveTps;
/**
* This is the duration in cycles that the IAC will take to reach its normal idle position, it can be used to hold the idle higher for a few seconds after cranking to improve startup.
cycles
2023-02-21 11:00:59 -08:00
* offset 1492
2023-02-20 21:14:46 -08:00
*/
int16_t afterCrankingIACtaperDuration;
/**
* Extra IAC, in percent between 0 and 100, tapered between zero and idle deactivation TPS value
percent
2023-02-21 11:00:59 -08:00
* offset 1494
2023-02-20 21:14:46 -08:00
*/
int16_t iacByTpsTaper;
/**
* Auxiliary sensor serial, not to be confused with secondary calibration serial
2023-02-21 11:00:59 -08:00
* offset 1496
2023-02-20 21:14:46 -08:00
*/
Gpio auxSerialTxPin;
/**
2023-02-21 11:00:59 -08:00
* offset 1498
2023-02-20 21:14:46 -08:00
*/
Gpio warningLedPin;
/**
* Auxiliary sensor serial, not to be confused with secondary calibration serial
2023-02-21 11:00:59 -08:00
* offset 1500
2023-02-20 21:14:46 -08:00
*/
Gpio auxSerialRxPin;
/**
2023-02-21 11:00:59 -08:00
* offset 1502
2023-02-20 21:14:46 -08:00
*/
Gpio LIS302DLCsPin;
/**
* How long to look back for TPS-based acceleration enrichment. Increasing this time will trigger enrichment for longer when a throttle position change occurs.
sec
2023-02-21 11:00:59 -08:00
* offset 1504
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 20, 1> tpsAccelLookback;
/**
* Below this speed, disable DFCO. Use this to prevent jerkiness from fuel enable/disable in low gears.
kph
2023-02-21 11:00:59 -08:00
* offset 1505
2023-02-20 21:14:46 -08:00
*/
uint8_t coastingFuelCutVssLow;
/**
* Above this speed, allow DFCO. Use this to prevent jerkiness from fuel enable/disable in low gears.
kph
2023-02-21 11:00:59 -08:00
* offset 1506
2023-02-20 21:14:46 -08:00
*/
uint8_t coastingFuelCutVssHigh;
/**
* Pause closed loop fueling after deceleration fuel cut occurs. Set this to a little longer than however long is required for normal fueling behavior to resume after fuel cut.
sec
2023-02-21 11:00:59 -08:00
* offset 1507
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> noFuelTrimAfterDfcoTime;
/**
* Maximum change delta of TPS percentage over the 'length'. Actual TPS change has to be above this value in order for TPS/TPS acceleration to kick in.
roc
2023-02-21 11:00:59 -08:00
* offset 1508
2023-02-20 21:14:46 -08:00
*/
float tpsAccelEnrichmentThreshold;
/**
2023-02-21 11:00:59 -08:00
* offset 1512
2023-02-20 21:14:46 -08:00
*/
brain_input_pin_e auxSpeedSensorInputPin[2];
/**
2023-02-21 11:00:59 -08:00
* offset 1516
2023-02-20 21:14:46 -08:00
*/
uint8_t totalGearsCount;
/**
* Sets what part of injection's is controlled by the injection phase table.
2023-02-21 11:00:59 -08:00
* offset 1517
2023-02-20 21:14:46 -08:00
*/
InjectionTimingMode injectionTimingMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1518
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1518[2];
2023-02-20 21:14:46 -08:00
/**
* Band rate for primary TTL
BPs
2023-02-21 11:00:59 -08:00
* offset 1520
2023-02-20 21:14:46 -08:00
*/
uint32_t uartConsoleSerialSpeed;
/**
* For decel we simply multiply delta of TPS and tFor decel we do not use table?!
roc
2023-02-21 11:00:59 -08:00
* offset 1524
2023-02-20 21:14:46 -08:00
*/
float tpsDecelEnleanmentThreshold;
/**
* Magic multiplier, we multiply delta of TPS and get fuel squirt duration
coeff
2023-02-21 11:00:59 -08:00
* offset 1528
2023-02-20 21:14:46 -08:00
*/
float tpsDecelEnleanmentMultiplier;
/**
* ExpAverage alpha coefficient
coeff
2023-02-21 11:00:59 -08:00
* offset 1532
2023-02-20 21:14:46 -08:00
*/
float slowAdcAlpha;
/**
* See http://rusefi.com/s/debugmode
2023-02-21 11:00:59 -08:00
* offset 1536
2023-02-20 21:14:46 -08:00
*/
debug_mode_e debugMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1537
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1537[3];
2023-02-20 21:14:46 -08:00
/**
BPs
2023-02-21 11:00:59 -08:00
* offset 1540
2023-02-20 21:14:46 -08:00
*/
uint32_t auxSerialSpeed;
/**
voltage
2023-02-21 11:00:59 -08:00
* offset 1544
2023-02-20 21:14:46 -08:00
*/
float throttlePedalSecondaryUpVoltage;
/**
* Pedal in the floor
voltage
2023-02-21 11:00:59 -08:00
* offset 1548
2023-02-20 21:14:46 -08:00
*/
float throttlePedalSecondaryWOTVoltage;
/**
* set can_baudrate
2023-02-21 11:00:59 -08:00
* offset 1552
2023-02-20 21:14:46 -08:00
*/
can_baudrate_e canBaudRate;
/**
* Override the Y axis (load) value used for the VE table.
* Advanced users only: If you aren't sure you need this, you probably don't need this.
2023-02-21 11:00:59 -08:00
* offset 1553
2023-02-20 21:14:46 -08:00
*/
ve_override_e veOverrideMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1554
2023-02-20 21:14:46 -08:00
*/
can_baudrate_e can2BaudRate;
/**
* Override the Y axis (load) value used for the AFR table.
* Advanced users only: If you aren't sure you need this, you probably don't need this.
2023-02-21 11:00:59 -08:00
* offset 1555
2023-02-20 21:14:46 -08:00
*/
load_override_e afrOverrideMode;
/**
A
2023-02-21 11:00:59 -08:00
* offset 1556
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> mc33_hpfp_i_peak;
/**
A
2023-02-21 11:00:59 -08:00
* offset 1557
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> mc33_hpfp_i_hold;
/**
* How long to deactivate power when hold current is reached before applying power again
us
2023-02-21 11:00:59 -08:00
* offset 1558
2023-02-20 21:14:46 -08:00
*/
uint8_t mc33_hpfp_i_hold_off;
/**
* Maximum amount of time the solenoid can be active before assuming a programming error
ms
2023-02-21 11:00:59 -08:00
* offset 1559
2023-02-20 21:14:46 -08:00
*/
uint8_t mc33_hpfp_max_hold;
/**
* Enable if DC-motor driver (H-bridge) inverts the signals (eg. RZ7899 on Hellen boards)
2023-02-21 11:00:59 -08:00
offset 1560 bit 0 */
2023-02-20 21:14:46 -08:00
bool stepperDcInvertedPins : 1 {};
/**
* Allow OpenBLT on Primary CAN
2023-02-21 11:00:59 -08:00
offset 1560 bit 1 */
2023-02-20 21:14:46 -08:00
bool canOpenBLT : 1 {};
/**
* Allow OpenBLT on Secondary CAN
2023-02-21 11:00:59 -08:00
offset 1560 bit 2 */
2023-02-20 21:14:46 -08:00
bool can2OpenBLT : 1 {};
/**
* Select whether to configure injector flow in volumetric flow (defualt, cc/min) or mass flow (g/s).
2023-02-21 11:00:59 -08:00
offset 1560 bit 3 */
2023-02-20 21:14:46 -08:00
bool injectorFlowAsMassFlow : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 4 */
2023-02-20 21:14:46 -08:00
bool unused1127 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 5 */
2023-02-20 21:14:46 -08:00
bool unused1128 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 6 */
2023-02-20 21:14:46 -08:00
bool unused1129 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 7 */
2023-02-20 21:14:46 -08:00
bool unused1130 : 1 {};
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 8 */
bool unusedBit_508_8 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 9 */
bool unusedBit_508_9 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 10 */
bool unusedBit_508_10 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 11 */
bool unusedBit_508_11 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 12 */
bool unusedBit_508_12 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 13 */
bool unusedBit_508_13 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 14 */
bool unusedBit_508_14 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 15 */
bool unusedBit_508_15 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 16 */
bool unusedBit_508_16 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 17 */
bool unusedBit_508_17 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 18 */
bool unusedBit_508_18 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 19 */
bool unusedBit_508_19 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 20 */
bool unusedBit_508_20 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 21 */
bool unusedBit_508_21 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 22 */
bool unusedBit_508_22 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 23 */
bool unusedBit_508_23 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 24 */
bool unusedBit_508_24 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 25 */
bool unusedBit_508_25 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 26 */
bool unusedBit_508_26 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 27 */
bool unusedBit_508_27 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 28 */
bool unusedBit_508_28 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 29 */
bool unusedBit_508_29 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 30 */
bool unusedBit_508_30 : 1 {};
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
offset 1560 bit 31 */
bool unusedBit_508_31 : 1 {};
2023-02-20 21:14:46 -08:00
/**
* Time between bench test pulses
ms
2023-02-21 11:00:59 -08:00
* offset 1564
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 5> benchTestOffTime;
/**
* How many test bench pulses do you want
count
2023-02-21 11:00:59 -08:00
* offset 1565
2023-02-20 21:14:46 -08:00
*/
uint8_t benchTestCount;
/**
* Length of each of the test pulses
ms
2023-02-21 11:00:59 -08:00
* offset 1566
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 5> benchTestOnTime;
/**
2023-02-21 11:00:59 -08:00
* offset 1567
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e launchActivatePinMode;
/**
* set_can2_tx_pin X
2023-02-21 11:00:59 -08:00
* offset 1568
2023-02-20 21:14:46 -08:00
*/
Gpio can2TxPin;
/**
* set_can2_rx_pin X
2023-02-21 11:00:59 -08:00
* offset 1570
2023-02-20 21:14:46 -08:00
*/
Gpio can2RxPin;
/**
2023-02-21 11:00:59 -08:00
* offset 1572
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e starterControlPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1573
2023-02-20 21:14:46 -08:00
*/
adc_channel_e wastegatePositionSensor;
/**
* Override the Y axis (load) value used for the ignition table.
* Advanced users only: If you aren't sure you need this, you probably don't need this.
2023-02-21 11:00:59 -08:00
* offset 1574
2023-02-20 21:14:46 -08:00
*/
load_override_e ignOverrideMode;
/**
* Select which fuel pressure sensor measures the pressure of the fuel at your injectors.
2023-02-21 11:00:59 -08:00
* offset 1575
2023-02-20 21:14:46 -08:00
*/
injector_pressure_type_e injectorPressureType;
/**
2023-02-21 11:00:59 -08:00
* offset 1576
2023-02-20 21:14:46 -08:00
*/
output_pin_e hpfpValvePin;
/**
2023-02-21 11:00:59 -08:00
* offset 1578
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e hpfpValvePinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1579
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1579[1];
2023-02-20 21:14:46 -08:00
/**
* MAP value above which fuel is cut in case of overboost.
* Set to 0 to disable overboost cut.
kPa (absolute)
2023-02-21 11:00:59 -08:00
* offset 1580
2023-02-20 21:14:46 -08:00
*/
float boostCutPressure;
/**
kg/h
2023-02-21 11:00:59 -08:00
* offset 1584
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 5> tchargeBins[16];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 1600
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 100, 1> tchargeValues[16];
/**
* Fixed timing, useful for TDC testing
deg
2023-02-21 11:00:59 -08:00
* offset 1616
2023-02-20 21:14:46 -08:00
*/
float fixedTiming;
/**
* MAP voltage for low point
v
2023-02-21 11:00:59 -08:00
* offset 1620
2023-02-20 21:14:46 -08:00
*/
float mapLowValueVoltage;
/**
* MAP voltage for low point
v
2023-02-21 11:00:59 -08:00
* offset 1624
2023-02-20 21:14:46 -08:00
*/
float mapHighValueVoltage;
/**
* EGO value correction
value
2023-02-21 11:00:59 -08:00
* offset 1628
2023-02-20 21:14:46 -08:00
*/
float egoValueShift;
/**
* VVT output
* TODO: rename to vvtOutputs
2023-02-21 11:00:59 -08:00
* offset 1632
2023-02-20 21:14:46 -08:00
*/
output_pin_e vvtPins[CAM_INPUTS_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1640
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e sdCardCsPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1641
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1641[3];
2023-02-20 21:14:46 -08:00
/**
* This is the IAC position during cranking, some engines start better if given more air during cranking to improve cylinder filling.
percent
2023-02-21 11:00:59 -08:00
* offset 1644
2023-02-20 21:14:46 -08:00
*/
int crankingIACposition;
/**
2023-02-21 11:00:59 -08:00
* offset 1648
2023-02-20 21:14:46 -08:00
*/
float tChargeMinRpmMinTps;
/**
2023-02-21 11:00:59 -08:00
* offset 1652
2023-02-20 21:14:46 -08:00
*/
float tChargeMinRpmMaxTps;
/**
2023-02-21 11:00:59 -08:00
* offset 1656
2023-02-20 21:14:46 -08:00
*/
float tChargeMaxRpmMinTps;
/**
2023-02-21 11:00:59 -08:00
* offset 1660
2023-02-20 21:14:46 -08:00
*/
float tChargeMaxRpmMaxTps;
/**
2023-02-21 11:00:59 -08:00
* offset 1664
2023-02-20 21:14:46 -08:00
*/
pwm_freq_t vvtOutputFrequency[CAMS_PER_BANK];
/**
* Additional idle % when fan #1 is active
%
2023-02-21 11:00:59 -08:00
* offset 1668
2023-02-20 21:14:46 -08:00
*/
uint8_t fan1ExtraIdle;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1669
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1669[3];
2023-02-20 21:14:46 -08:00
/**
Hz
2023-02-21 11:00:59 -08:00
* offset 1672
2023-02-20 21:14:46 -08:00
*/
int alternatorPwmFrequency;
/**
2023-02-21 11:00:59 -08:00
* offset 1676
2023-02-20 21:14:46 -08:00
*/
vvt_mode_e vvtMode[CAMS_PER_BANK];
/**
* Additional idle % when fan #2 is active
%
2023-02-21 11:00:59 -08:00
* offset 1678
2023-02-20 21:14:46 -08:00
*/
uint8_t fan2ExtraIdle;
/**
* Delay to allow fuel pressure to build before firing the priming pulse.
sec
2023-02-21 11:00:59 -08:00
* offset 1679
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 100, 1> primingDelay;
/**
2023-02-21 11:00:59 -08:00
* offset 1680
2023-02-20 21:14:46 -08:00
*/
adc_channel_e auxAnalogInputs[LUA_ANALOG_INPUT_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1688
2023-02-20 21:14:46 -08:00
*/
output_pin_e trailingCoilPins[MAX_CYLINDER_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 1712
2023-02-20 21:14:46 -08:00
*/
tle8888_mode_e tle8888mode;
/**
2023-02-21 11:00:59 -08:00
* offset 1713
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e LIS302DLCsPinMode;
/**
* None = I have a MAP-referenced fuel pressure regulator
* Fixed rail pressure = I have an atmosphere-referenced fuel pressure regulator (returnless, typically)
* Sensed rail pressure = I have a fuel pressure sensor
2023-02-21 11:00:59 -08:00
* offset 1714
2023-02-20 21:14:46 -08:00
*/
injector_compensation_mode_e injectorCompensationMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1715
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e fan2PinMode;
/**
* This is the pressure at which your injector flow is known.
* For example if your injectors flow 400cc/min at 3.5 bar, enter 350kpa here.
kPa
2023-02-21 11:00:59 -08:00
* offset 1716
2023-02-20 21:14:46 -08:00
*/
float fuelReferencePressure;
/**
* Fuel multiplier (enrichment) immediately after engine start
mult
2023-02-21 11:00:59 -08:00
* offset 1720
2023-02-20 21:14:46 -08:00
*/
float postCrankingFactor;
/**
* Time over which to taper out after start enrichment
seconds
2023-02-21 11:00:59 -08:00
* offset 1724
2023-02-20 21:14:46 -08:00
*/
float postCrankingDurationSec;
/**
2023-02-21 11:00:59 -08:00
* offset 1728
2023-02-20 21:14:46 -08:00
*/
ThermistorConf auxTempSensor1;
/**
2023-02-21 11:00:59 -08:00
* offset 1760
2023-02-20 21:14:46 -08:00
*/
ThermistorConf auxTempSensor2;
/**
Deg
2023-02-21 11:00:59 -08:00
* offset 1792
2023-02-20 21:14:46 -08:00
*/
int16_t knockSamplingDuration;
/**
Hz
2023-02-21 11:00:59 -08:00
* offset 1794
2023-02-20 21:14:46 -08:00
*/
int16_t etbFreq;
/**
2023-02-21 11:00:59 -08:00
* offset 1796
2023-02-20 21:14:46 -08:00
*/
pid_s etbWastegatePid;
/**
* For micro-stepping, make sure that PWM frequency (etbFreq) is high enough
2023-02-21 11:00:59 -08:00
* offset 1816
2023-02-20 21:14:46 -08:00
*/
stepper_num_micro_steps_e stepperNumMicroSteps;
/**
* Use to limit the current when the stepper motor is idle, not moving (100% = no limit)
%
2023-02-21 11:00:59 -08:00
* offset 1817
2023-02-20 21:14:46 -08:00
*/
uint8_t stepperMinDutyCycle;
/**
* Use to limit the max.current through the stepper motor (100% = no limit)
%
2023-02-21 11:00:59 -08:00
* offset 1818
2023-02-20 21:14:46 -08:00
*/
uint8_t stepperMaxDutyCycle;
/**
2023-02-21 11:00:59 -08:00
* offset 1819
2023-02-20 21:14:46 -08:00
*/
spi_device_e sdCardSpiDevice;
/**
* per-cylinder timing correction
deg
2023-02-21 11:00:59 -08:00
* offset 1820
2023-02-20 21:14:46 -08:00
*/
angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT];
/**
seconds
2023-02-21 11:00:59 -08:00
* offset 1868
2023-02-20 21:14:46 -08:00
*/
float idlePidActivationTime;
/**
2023-02-21 11:00:59 -08:00
* offset 1872
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi1SckMode;
/**
* Modes count be used for 3v<>5v integration using pull-ups/pull-downs etc.
2023-02-21 11:00:59 -08:00
* offset 1873
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi1MosiMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1874
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi1MisoMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1875
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi2SckMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1876
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi2MosiMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1877
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi2MisoMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1878
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi3SckMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1879
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi3MosiMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1880
2023-02-20 21:14:46 -08:00
*/
pin_mode_e spi3MisoMode;
/**
2023-02-21 11:00:59 -08:00
* offset 1881
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e stepperEnablePinMode;
/**
* ResetB
2023-02-21 11:00:59 -08:00
* offset 1882
2023-02-20 21:14:46 -08:00
*/
Gpio mc33816_rstb;
/**
2023-02-21 11:00:59 -08:00
* offset 1884
2023-02-20 21:14:46 -08:00
*/
Gpio mc33816_driven;
/**
* Brake pedal switch
2023-02-21 11:00:59 -08:00
* offset 1886
2023-02-20 21:14:46 -08:00
*/
switch_input_pin_e brakePedalPin;
/**
2023-02-21 11:00:59 -08:00
* offset 1888
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e brakePedalPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1889
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1889[3];
2023-02-20 21:14:46 -08:00
/**
* VVT output PID
* TODO: rename to vvtPid
2023-02-21 11:00:59 -08:00
* offset 1892
2023-02-20 21:14:46 -08:00
*/
pid_s auxPid[CAMS_PER_BANK];
/**
2023-02-21 11:00:59 -08:00
* offset 1932
2023-02-20 21:14:46 -08:00
*/
float injectorCorrectionPolynomial[8];
/**
C
2023-02-21 11:00:59 -08:00
* offset 1964
2023-02-20 21:14:46 -08:00
*/
int8_t primeBins[8];
/**
2023-02-21 11:00:59 -08:00
* offset 1972
2023-02-20 21:14:46 -08:00
*/
linear_sensor_s oilPressure;
/**
2023-02-21 11:00:59 -08:00
* offset 1992
2023-02-20 21:14:46 -08:00
*/
spi_device_e accelerometerSpiDevice;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 1993
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_1993[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 1994
2023-02-20 21:14:46 -08:00
*/
output_pin_e fan2Pin;
/**
* Cooling fan turn-on temperature threshold, in Celsius
deg C
2023-02-21 11:00:59 -08:00
* offset 1996
2023-02-20 21:14:46 -08:00
*/
uint8_t fan2OnTemperature;
/**
* Cooling fan turn-off temperature threshold, in Celsius
deg C
2023-02-21 11:00:59 -08:00
* offset 1997
2023-02-20 21:14:46 -08:00
*/
uint8_t fan2OffTemperature;
/**
2023-02-21 11:00:59 -08:00
* offset 1998
2023-02-20 21:14:46 -08:00
*/
Gpio stepperEnablePin;
/**
2023-02-21 11:00:59 -08:00
* offset 2000
2023-02-20 21:14:46 -08:00
*/
Gpio tle8888_cs;
/**
2023-02-21 11:00:59 -08:00
* offset 2002
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e tle8888_csPinMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 2003
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_2003[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 2004
2023-02-20 21:14:46 -08:00
*/
Gpio mc33816_cs;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 2006
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_2006[2];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 2008
2023-02-20 21:14:46 -08:00
*/
float auxFrequencyFilter;
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 2012
2023-02-20 21:14:46 -08:00
*/
int16_t vvtControlMinRpm;
/**
2023-02-21 11:00:59 -08:00
* offset 2014
2023-02-20 21:14:46 -08:00
*/
brain_input_pin_e sentInputPins[SENT_INPUT_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 2016
2023-02-20 21:14:46 -08:00
*/
int8_t launchFuelAdderPercent;
/**
* Time required to detect a stuck throttle.
sec
2023-02-21 11:00:59 -08:00
* offset 2017
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 50, 1> etbJamTimeout;
/**
* By the way ETB PID runs at 500hz, length in 1/500 of second here.
2023-02-21 11:00:59 -08:00
* offset 2018
2023-02-20 21:14:46 -08:00
*/
uint16_t etbExpAverageLength;
/**
2023-02-21 11:00:59 -08:00
* offset 2020
2023-02-20 21:14:46 -08:00
*/
float etbDutyThreshold;
/**
* This sets the RPM above which fuel cut is active.
rpm
2023-02-21 11:00:59 -08:00
* offset 2024
2023-02-20 21:14:46 -08:00
*/
int16_t coastingFuelCutRpmHigh;
/**
* This sets the RPM below which fuel cut is deactivated, this prevents jerking or issues transitioning to idle
rpm
2023-02-21 11:00:59 -08:00
* offset 2026
2023-02-20 21:14:46 -08:00
*/
int16_t coastingFuelCutRpmLow;
/**
* Throttle position below which fuel cut is active. With an electronic throttle enabled, this checks against pedal position.
%
2023-02-21 11:00:59 -08:00
* offset 2028
2023-02-20 21:14:46 -08:00
*/
int16_t coastingFuelCutTps;
/**
* Fuel cutoff is disabled when the engine is cold.
C
2023-02-21 11:00:59 -08:00
* offset 2030
2023-02-20 21:14:46 -08:00
*/
int16_t coastingFuelCutClt;
/**
* Increases PID reaction for RPM<target by adding extra percent to PID-error
%
2023-02-21 11:00:59 -08:00
* offset 2032
2023-02-20 21:14:46 -08:00
*/
int16_t pidExtraForLowRpm;
/**
* MAP value above which fuel injection is re-enabled.
kPa
2023-02-21 11:00:59 -08:00
* offset 2034
2023-02-20 21:14:46 -08:00
*/
int16_t coastingFuelCutMap;
/**
2023-02-21 11:00:59 -08:00
* offset 2036
2023-02-20 21:14:46 -08:00
*/
linear_sensor_s highPressureFuel;
/**
2023-02-21 11:00:59 -08:00
* offset 2056
2023-02-20 21:14:46 -08:00
*/
linear_sensor_s lowPressureFuel;
/**
C
2023-02-21 11:00:59 -08:00
* offset 2076
2023-02-20 21:14:46 -08:00
*/
int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 2080
2023-02-20 21:14:46 -08:00
*/
uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 2088
2023-02-20 21:14:46 -08:00
*/
gppwm_note_t scriptCurveName[SCRIPT_CURVE_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 2184
2023-02-20 21:14:46 -08:00
*/
gppwm_note_t scriptTableName[SCRIPT_TABLE_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 2248
2023-02-20 21:14:46 -08:00
*/
gppwm_note_t scriptSettingName[SCRIPT_SETTING_COUNT];
/**
* Heat transfer coefficient at zero flow.
* 0 means the air charge is fully heated to the same temperature as CLT.
* 1 means the air charge gains no heat, and enters the cylinder at the temperature measured by IAT.
2023-02-21 11:00:59 -08:00
* offset 2376
2023-02-20 21:14:46 -08:00
*/
float tChargeAirCoefMin;
/**
* Heat transfer coefficient at high flow, as defined by "max air flow".
* 0 means the air charge is fully heated to the same temperature as CLT.
* 1 means the air charge gains no heat, and enters the cylinder at the temperature measured by IAT.
2023-02-21 11:00:59 -08:00
* offset 2380
2023-02-20 21:14:46 -08:00
*/
float tChargeAirCoefMax;
/**
* High flow point for heat transfer estimation.
* Set this to perhaps 50-75% of your maximum airflow at wide open throttle.
kg/h
2023-02-21 11:00:59 -08:00
* offset 2384
2023-02-20 21:14:46 -08:00
*/
float tChargeAirFlowMax;
/**
* Maximum allowed rate of increase allowed for the estimated charge temperature
deg/sec
2023-02-21 11:00:59 -08:00
* offset 2388
2023-02-20 21:14:46 -08:00
*/
float tChargeAirIncrLimit;
/**
* Maximum allowed rate of decrease allowed for the estimated charge temperature
deg/sec
2023-02-21 11:00:59 -08:00
* offset 2392
2023-02-20 21:14:46 -08:00
*/
float tChargeAirDecrLimit;
/**
2023-02-21 11:00:59 -08:00
* offset 2396
2023-02-20 21:14:46 -08:00
*/
tChargeMode_e tChargeMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 2397
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_2397[1];
2023-02-20 21:14:46 -08:00
/**
* iTerm min value
2023-02-21 11:00:59 -08:00
* offset 2398
2023-02-20 21:14:46 -08:00
*/
int16_t etb_iTermMin;
/**
* iTerm max value
2023-02-21 11:00:59 -08:00
* offset 2400
2023-02-20 21:14:46 -08:00
*/
int16_t etb_iTermMax;
2023-02-21 11:00:59 -08:00
/**
* need 4 byte alignment
units
* offset 2402
*/
uint8_t alignmentFill_at_2402[2];
2023-02-20 21:14:46 -08:00
/**
* See useIdleTimingPidControl
2023-02-21 11:00:59 -08:00
* offset 2404
2023-02-20 21:14:46 -08:00
*/
pid_s idleTimingPid;
/**
* By the way ETB PID runs at 500hz, length in 1/500 of second here.
2023-02-21 11:00:59 -08:00
* offset 2424
2023-02-20 21:14:46 -08:00
*/
int16_t etbRocExpAverageLength;
/**
* A delay in cycles between fuel-enrich. portions
cycles
2023-02-21 11:00:59 -08:00
* offset 2426
2023-02-20 21:14:46 -08:00
*/
int16_t tpsAccelFractionPeriod;
/**
* A fraction divisor: 1 or less = entire portion at once, or split into diminishing fractions
coef
2023-02-21 11:00:59 -08:00
* offset 2428
2023-02-20 21:14:46 -08:00
*/
float tpsAccelFractionDivisor;
/**
2023-02-21 11:00:59 -08:00
* offset 2432
2023-02-20 21:14:46 -08:00
*/
spi_device_e tle8888spiDevice;
/**
2023-02-21 11:00:59 -08:00
* offset 2433
2023-02-20 21:14:46 -08:00
*/
spi_device_e mc33816spiDevice;
/**
* iTerm min value
2023-02-21 11:00:59 -08:00
* offset 2434
2023-02-20 21:14:46 -08:00
*/
int16_t idlerpmpid_iTermMin;
/**
2023-02-21 11:00:59 -08:00
* offset 2436
2023-02-20 21:14:46 -08:00
*/
spi_device_e tle6240spiDevice;
/**
* Stoichiometric ratio for your primary fuel. When Flex Fuel is enabled, this value is used when the Flex Fuel sensor indicates E0.
* E0 = 14.7
* E10 = 14.1
* E85 = 9.9
* E100 = 9.0
:1
2023-02-21 11:00:59 -08:00
* offset 2437
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> stoichRatioPrimary;
/**
* iTerm max value
2023-02-21 11:00:59 -08:00
* offset 2438
2023-02-20 21:14:46 -08:00
*/
int16_t idlerpmpid_iTermMax;
/**
* This sets the range of the idle control on the ETB. At 100% idle position, the value specified here sets the base ETB position.
%
2023-02-21 11:00:59 -08:00
* offset 2440
2023-02-20 21:14:46 -08:00
*/
float etbIdleThrottleRange;
/**
* Select which fuel correction bank this cylinder belongs to. Group cylinders that share the same O2 sensor
2023-02-21 11:00:59 -08:00
* offset 2444
2023-02-20 21:14:46 -08:00
*/
uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT];
/**
mg
2023-02-21 11:00:59 -08:00
* offset 2456
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 5> primeValues[8];
/**
* Trigger comparator center point voltage
V
2023-02-21 11:00:59 -08:00
* offset 2464
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 50, 1> triggerCompCenterVolt;
/**
* Trigger comparator hysteresis voltage (Min)
V
2023-02-21 11:00:59 -08:00
* offset 2465
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 50, 1> triggerCompHystMin;
/**
* Trigger comparator hysteresis voltage (Max)
V
2023-02-21 11:00:59 -08:00
* offset 2466
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 50, 1> triggerCompHystMax;
/**
* VR-sensor saturation RPM
RPM
2023-02-21 11:00:59 -08:00
* offset 2467
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 50> triggerCompSensorSatRpm;
/**
2023-02-21 11:00:59 -08:00
* offset 2468
2023-02-20 21:14:46 -08:00
*/
pid_s idleRpmPid2;
/**
2023-02-21 11:00:59 -08:00
* offset 2488
2023-02-20 21:14:46 -08:00
*/
can_vss_nbc_e canVssNbcType;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 2489
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_2489[3];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 2492
2023-02-20 21:14:46 -08:00
*/
gppwm_channel gppwm[GPPWM_CHANNELS];
/**
* Boost Current
mA
2023-02-21 11:00:59 -08:00
* offset 2924
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_i_boost;
/**
* Peak Current
mA
2023-02-21 11:00:59 -08:00
* offset 2926
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_i_peak;
/**
* Hold Current
mA
2023-02-21 11:00:59 -08:00
* offset 2928
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_i_hold;
/**
* Maximum allowed boost phase time. If the injector current doesn't reach the threshold before this time elapses, it is assumed that the injector is missing or has failed open circuit.
us
2023-02-21 11:00:59 -08:00
* offset 2930
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_t_max_boost;
/**
us
2023-02-21 11:00:59 -08:00
* offset 2932
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_t_peak_off;
/**
* Peak phase duration
us
2023-02-21 11:00:59 -08:00
* offset 2934
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_t_peak_tot;
/**
us
2023-02-21 11:00:59 -08:00
* offset 2936
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_t_bypass;
/**
us
2023-02-21 11:00:59 -08:00
* offset 2938
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_t_hold_off;
/**
* Hold phase duration
us
2023-02-21 11:00:59 -08:00
* offset 2940
2023-02-20 21:14:46 -08:00
*/
uint16_t mc33_t_hold_tot;
/**
2023-02-21 11:00:59 -08:00
* offset 2942
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e tcuUpshiftButtonPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 2943
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e tcuDownshiftButtonPinMode;
/**
2023-02-21 11:00:59 -08:00
* offset 2944
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e acSwitchMode;
/**
2023-02-21 11:00:59 -08:00
* offset 2945
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e tcu_solenoid_mode[TCU_SOLENOID_COUNT];
/**
* Knock sensor output knock detection threshold depending on current RPM.
dB
2023-02-21 11:00:59 -08:00
* offset 2951
2023-02-20 21:14:46 -08:00
*/
scaled_channel<int8_t, 2, 1> knockBaseNoise[ENGINE_NOISE_CURVE_SIZE];
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 2967
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_2967[1];
2023-02-20 21:14:46 -08:00
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 2968
2023-02-20 21:14:46 -08:00
*/
float triggerGapOverrideFrom[GAP_TRACKING_LENGTH];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 3040
2023-02-20 21:14:46 -08:00
*/
float triggerGapOverrideTo[GAP_TRACKING_LENGTH];
/**
* Below this RPM, use camshaft information to synchronize the crank's position for full sequential operation. Use this if your cam sensor does weird things at high RPM. Set to 0 to disable, and always use cam to help sync crank.
rpm
2023-02-21 11:00:59 -08:00
* offset 3112
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 50> maxCamPhaseResolveRpm;
/**
* Delay before cutting fuel. Set to 0 to cut immediately with no delay. May cause rumbles and pops out of your exhaust...
sec
2023-02-21 11:00:59 -08:00
* offset 3113
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> dfcoDelay;
/**
* Delay before engaging the AC compressor. Set to 0 to engage immediately with no delay. Use this to prevent bogging at idle when AC engages.
sec
2023-02-21 11:00:59 -08:00
* offset 3114
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 10, 1> acDelay;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3115
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3115[1];
2023-02-20 21:14:46 -08:00
/**
mg
2023-02-21 11:00:59 -08:00
* offset 3116
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> fordInjectorSmallPulseBreakPoint;
/**
multiplier
2023-02-21 11:00:59 -08:00
* offset 3118
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 50, 1> tpsTspCorrValues[TPS_TPS_ACCEL_CLT_CORR_TABLE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 3122
2023-02-20 21:14:46 -08:00
*/
uint8_t etbJamIntegratorLimit;
/**
lobes/cam
2023-02-21 11:00:59 -08:00
* offset 3123
2023-02-20 21:14:46 -08:00
*/
uint8_t hpfpCamLobes;
/**
2023-02-21 11:00:59 -08:00
* offset 3124
2023-02-20 21:14:46 -08:00
*/
hpfp_cam_e hpfpCam;
/**
* Crank angle ATDC of first lobe peak
deg
2023-02-21 11:00:59 -08:00
* offset 3125
2023-02-20 21:14:46 -08:00
*/
uint8_t hpfpPeakPos;
/**
* If the requested activation time is below this angle, don't bother running the pump
deg
2023-02-21 11:00:59 -08:00
* offset 3126
2023-02-20 21:14:46 -08:00
*/
uint8_t hpfpMinAngle;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3127
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3127[1];
2023-02-20 21:14:46 -08:00
/**
* Size of the pump chamber in cc. Typical Bosch HDP5 has a 9.0mm diameter, typical BMW N* stroke is 4.4mm.
cc
2023-02-21 11:00:59 -08:00
* offset 3128
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> hpfpPumpVolume;
/**
* How long to keep the valve activated (in order to allow the pump to build pressure and keep the valve open on its own)
deg
2023-02-21 11:00:59 -08:00
* offset 3130
2023-02-20 21:14:46 -08:00
*/
uint8_t hpfpActivationAngle;
/**
2023-02-21 11:00:59 -08:00
* offset 3131
2023-02-20 21:14:46 -08:00
*/
uint8_t issFilterReciprocal;
/**
%/kPa
2023-02-21 11:00:59 -08:00
* offset 3132
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> hpfpPidP;
/**
%/kPa/lobe
2023-02-21 11:00:59 -08:00
* offset 3134
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 100000, 1> hpfpPidI;
/**
* The fastest rate the target pressure can be reduced by. This is because HPFP have no way to bleed off pressure other than injecting fuel.
kPa/s
2023-02-21 11:00:59 -08:00
* offset 3136
2023-02-20 21:14:46 -08:00
*/
uint16_t hpfpTargetDecay;
/**
%
2023-02-21 11:00:59 -08:00
* offset 3138
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 2, 1> hpfpLobeProfileQuantityBins[HPFP_LOBE_PROFILE_SIZE];
/**
deg
2023-02-21 11:00:59 -08:00
* offset 3154
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 2, 1> hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE];
/**
volts
2023-02-21 11:00:59 -08:00
* offset 3170
2023-02-20 21:14:46 -08:00
*/
uint8_t hpfpDeadtimeVoltsBins[HPFP_DEADTIME_SIZE];
/**
ms
2023-02-21 11:00:59 -08:00
* offset 3178
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> hpfpDeadtimeMS[HPFP_DEADTIME_SIZE];
/**
kPa
2023-02-21 11:00:59 -08:00
* offset 3194
2023-02-20 21:14:46 -08:00
*/
uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE];
/**
load
2023-02-21 11:00:59 -08:00
* offset 3394
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 10, 1> hpfpTargetLoadBins[HPFP_TARGET_SIZE];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 3414
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 50> hpfpTargetRpmBins[HPFP_TARGET_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 3424
2023-02-20 21:14:46 -08:00
*/
int8_t hpfpCompensation[HPFP_COMPENSATION_SIZE][HPFP_COMPENSATION_SIZE];
/**
cc/lobe
2023-02-21 11:00:59 -08:00
* offset 3524
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 1000, 1> hpfpCompensationLoadBins[HPFP_COMPENSATION_SIZE];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 3544
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 50> hpfpCompensationRpmBins[HPFP_COMPENSATION_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 3554
2023-02-20 21:14:46 -08:00
*/
output_pin_e stepper_raw_output[4];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 3562
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 100, 1> gearRatio[GEARS_COUNT];
/**
* We need to give engine time to build oil pressure without diverting it to VVT
ms
2023-02-21 11:00:59 -08:00
* offset 3578
2023-02-20 21:14:46 -08:00
*/
uint16_t vvtActivationDelayMs;
/**
deg C
2023-02-21 11:00:59 -08:00
* offset 3580
2023-02-20 21:14:46 -08:00
*/
int8_t wwCltBins[WWAE_TABLE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 3588
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 100, 1> wwTauCltValues[WWAE_TABLE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 3596
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 100, 1> wwBetaCltValues[WWAE_TABLE_SIZE];
/**
kPa
2023-02-21 11:00:59 -08:00
* offset 3604
2023-02-20 21:14:46 -08:00
*/
int8_t wwMapBins[WWAE_TABLE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 3612
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 100, 1> wwTauMapValues[WWAE_TABLE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 3620
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 100, 1> wwBetaMapValues[WWAE_TABLE_SIZE];
/**
Nm
2023-02-21 11:00:59 -08:00
* offset 3628
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 10> torqueTable[TORQUE_CURVE_SIZE][TORQUE_CURVE_SIZE];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 3664
2023-02-20 21:14:46 -08:00
*/
uint16_t torqueRpmBins[TORQUE_CURVE_SIZE];
/**
Load
2023-02-21 11:00:59 -08:00
* offset 3676
2023-02-20 21:14:46 -08:00
*/
uint16_t torqueLoadBins[TORQUE_CURVE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 3688
2023-02-20 21:14:46 -08:00
*/
GearControllerMode gearControllerMode;
/**
2023-02-21 11:00:59 -08:00
* offset 3689
2023-02-20 21:14:46 -08:00
*/
TransmissionControllerMode transmissionControllerMode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3690
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3690[2];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 3692
2023-02-20 21:14:46 -08:00
*/
linear_sensor_s auxLinear1;
/**
2023-02-21 11:00:59 -08:00
* offset 3712
2023-02-20 21:14:46 -08:00
*/
linear_sensor_s auxLinear2;
/**
2023-02-21 11:00:59 -08:00
* offset 3732
2023-02-20 21:14:46 -08:00
*/
output_pin_e tcu_tcc_onoff_solenoid;
/**
2023-02-21 11:00:59 -08:00
* offset 3734
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e tcu_tcc_onoff_solenoid_mode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3735
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3735[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 3736
2023-02-20 21:14:46 -08:00
*/
output_pin_e tcu_tcc_pwm_solenoid;
/**
2023-02-21 11:00:59 -08:00
* offset 3738
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e tcu_tcc_pwm_solenoid_mode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3739
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3739[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 3740
2023-02-20 21:14:46 -08:00
*/
pwm_freq_t tcu_tcc_pwm_solenoid_freq;
/**
2023-02-21 11:00:59 -08:00
* offset 3742
2023-02-20 21:14:46 -08:00
*/
output_pin_e tcu_pc_solenoid_pin;
/**
2023-02-21 11:00:59 -08:00
* offset 3744
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e tcu_pc_solenoid_pin_mode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3745
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3745[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 3746
2023-02-20 21:14:46 -08:00
*/
pwm_freq_t tcu_pc_solenoid_freq;
/**
2023-02-21 11:00:59 -08:00
* offset 3748
2023-02-20 21:14:46 -08:00
*/
output_pin_e tcu_32_solenoid_pin;
/**
2023-02-21 11:00:59 -08:00
* offset 3750
2023-02-20 21:14:46 -08:00
*/
pin_output_mode_e tcu_32_solenoid_pin_mode;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3751
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3751[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 3752
2023-02-20 21:14:46 -08:00
*/
pwm_freq_t tcu_32_solenoid_freq;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3754
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3754[2];
2023-02-20 21:14:46 -08:00
/**
%
2023-02-21 11:00:59 -08:00
* offset 3756
2023-02-20 21:14:46 -08:00
*/
float etbMinimumPosition;
/**
2023-02-21 11:00:59 -08:00
* offset 3760
2023-02-20 21:14:46 -08:00
*/
uint16_t tuneHidingKey;
/**
2023-02-21 11:00:59 -08:00
* offset 3762
2023-02-20 21:14:46 -08:00
*/
vin_number_t vinNumber;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3779
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3779[1];
2023-02-20 21:14:46 -08:00
/**
2023-02-21 11:00:59 -08:00
* offset 3780
2023-02-20 21:14:46 -08:00
*/
uint16_t highSpeedOffsets[HIGH_SPEED_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 3844
2023-02-20 21:14:46 -08:00
*/
float etbDutyShutdownThreshold;
/**
2023-02-21 11:00:59 -08:00
* offset 3848
2023-02-20 21:14:46 -08:00
*/
Gpio luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 3864
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 50> tpsTspCorrValuesBins[TPS_TPS_ACCEL_CLT_CORR_TABLE];
/**
rpm
2023-02-21 11:00:59 -08:00
* offset 3868
2023-02-20 21:14:46 -08:00
*/
int16_t ALSMinRPM;
/**
rpm
2023-02-21 11:00:59 -08:00
* offset 3870
2023-02-20 21:14:46 -08:00
*/
int16_t ALSMaxRPM;
/**
sec
2023-02-21 11:00:59 -08:00
* offset 3872
2023-02-20 21:14:46 -08:00
*/
int16_t ALSMaxDuration;
/**
C
2023-02-21 11:00:59 -08:00
* offset 3874
2023-02-20 21:14:46 -08:00
*/
int8_t ALSMinCLT;
/**
C
2023-02-21 11:00:59 -08:00
* offset 3875
2023-02-20 21:14:46 -08:00
*/
int8_t ALSMaxCLT;
/**
2023-02-21 11:00:59 -08:00
* offset 3876
2023-02-20 21:14:46 -08:00
*/
uint8_t alsMinTimeBetween;
/**
2023-02-21 11:00:59 -08:00
* offset 3877
2023-02-20 21:14:46 -08:00
*/
uint8_t alsEtbPosition;
/**
2023-02-21 11:00:59 -08:00
* offset 3878
2023-02-20 21:14:46 -08:00
*/
uint8_t acRelayAlternatorDutyAdder;
/**
deg
2023-02-21 11:00:59 -08:00
* offset 3879
2023-02-20 21:14:46 -08:00
*/
uint8_t instantRpmRange;
/**
2023-02-21 11:00:59 -08:00
* offset 3880
2023-02-20 21:14:46 -08:00
*/
uint8_t unusedA11lignmentFill_at_33;
/**
2023-02-21 11:00:59 -08:00
* offset 3881
2023-02-20 21:14:46 -08:00
*/
SentEtbType sentEtbType;
/**
* need 4 byte alignment
units
2023-02-21 11:00:59 -08:00
* offset 3882
2023-02-20 21:14:46 -08:00
*/
2023-02-21 11:00:59 -08:00
uint8_t alignmentFill_at_3882[2];
2023-02-20 21:14:46 -08:00
/**
%
2023-02-21 11:00:59 -08:00
* offset 3884
2023-02-20 21:14:46 -08:00
*/
int ALSIdleAdd;
/**
%
2023-02-21 11:00:59 -08:00
* offset 3888
2023-02-20 21:14:46 -08:00
*/
int ALSEtbAdd;
/**
2023-02-21 11:00:59 -08:00
* offset 3892
2023-02-20 21:14:46 -08:00
*/
int ALSSkipRatio;
/**
%
2023-02-21 11:00:59 -08:00
* offset 3896
2023-02-20 21:14:46 -08:00
*/
uint8_t ALSMaxDriverThrottleIntent;
/**
2023-02-21 11:00:59 -08:00
* offset 3897
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e ALSActivatePinMode;
/**
* For Ford TPS, use 53%. For Toyota ETCS-i, use ~65%
%
2023-02-21 11:00:59 -08:00
* offset 3898
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 2, 1> tpsSecondaryMaximum;
/**
* For Toyota ETCS-i, use ~69%
%
2023-02-21 11:00:59 -08:00
* offset 3899
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 2, 1> ppsSecondaryMaximum;
/**
2023-02-21 11:00:59 -08:00
* offset 3900
2023-02-20 21:14:46 -08:00
*/
pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT];
/**
units
2023-02-21 11:00:59 -08:00
* offset 3908
2023-02-20 21:14:46 -08:00
*/
uint8_t mainUnusedEnd[96];
};
2023-02-21 11:00:59 -08:00
static_assert(sizeof(engine_configuration_s) == 4004);
2023-02-20 21:14:46 -08:00
// start of cyl_trim_s
struct cyl_trim_s {
/**
* offset 0
*/
scaled_channel<int8_t, 5, 1> table[TRIM_SIZE][TRIM_SIZE];
};
static_assert(sizeof(cyl_trim_s) == 16);
// start of blend_table_s
struct blend_table_s {
/**
* offset 0
*/
scaled_channel<int16_t, 10, 1> table[8][8];
/**
Load
* offset 128
*/
uint16_t loadBins[8];
/**
RPM
* offset 144
*/
uint16_t rpmBins[8];
/**
* offset 160
*/
gppwm_channel_e blendParameter;
/**
* need 4 byte alignment
units
* offset 161
*/
uint8_t alignmentFill_at_161[1];
/**
* offset 162
*/
scaled_channel<int16_t, 10, 1> blendBins[8];
/**
%
* offset 178
*/
scaled_channel<uint8_t, 2, 1> blendValues[8];
/**
* need 4 byte alignment
units
* offset 186
*/
uint8_t alignmentFill_at_186[2];
};
static_assert(sizeof(blend_table_s) == 188);
// start of persistent_config_s
struct persistent_config_s {
/**
* offset 0
*/
engine_configuration_s engineConfiguration;
/**
* target TPS value, 0 to 100%
* TODO: use int8 data date once we template interpolation method
target TPS position
2023-02-21 11:00:59 -08:00
* offset 4004
2023-02-20 21:14:46 -08:00
*/
float etbBiasBins[ETB_BIAS_CURVE_LENGTH];
/**
* PWM bias, 0 to 100%
ETB duty cycle bias
2023-02-21 11:00:59 -08:00
* offset 4036
2023-02-20 21:14:46 -08:00
*/
float etbBiasValues[ETB_BIAS_CURVE_LENGTH];
/**
%
2023-02-21 11:00:59 -08:00
* offset 4068
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 20, 1> iacPidMultTable[IAC_PID_MULT_SIZE][IAC_PID_MULT_SIZE];
/**
Load
2023-02-21 11:00:59 -08:00
* offset 4132
2023-02-20 21:14:46 -08:00
*/
uint8_t iacPidMultLoadBins[IAC_PID_MULT_SIZE];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 4140
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 10> iacPidMultRpmBins[IAC_PID_MULT_SIZE];
/**
* On Single Coil or Wasted Spark setups you have to lower dwell at high RPM
RPM
2023-02-21 11:00:59 -08:00
* offset 4148
2023-02-20 21:14:46 -08:00
*/
uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE];
/**
ms
2023-02-21 11:00:59 -08:00
* offset 4164
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 100, 1> sparkDwellValues[DWELL_CURVE_SIZE];
/**
* CLT-based target RPM for automatic idle controller
C
2023-02-21 11:00:59 -08:00
* offset 4180
2023-02-20 21:14:46 -08:00
*/
scaled_channel<int8_t, 1, 2> cltIdleRpmBins[CLT_CURVE_SIZE];
/**
* See idleRpmPid
RPM
2023-02-21 11:00:59 -08:00
* offset 4196
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 20> cltIdleRpm[CLT_CURVE_SIZE];
/**
* CLT-based timing correction
C
2023-02-21 11:00:59 -08:00
* offset 4212
2023-02-20 21:14:46 -08:00
*/
float cltTimingBins[CLT_TIMING_CURVE_SIZE];
/**
degree
2023-02-21 11:00:59 -08:00
* offset 4244
2023-02-20 21:14:46 -08:00
*/
float cltTimingExtra[CLT_TIMING_CURVE_SIZE];
/**
x
2023-02-21 11:00:59 -08:00
* offset 4276
2023-02-20 21:14:46 -08:00
*/
float scriptCurve1Bins[SCRIPT_CURVE_16];
/**
y
2023-02-21 11:00:59 -08:00
* offset 4340
2023-02-20 21:14:46 -08:00
*/
float scriptCurve1[SCRIPT_CURVE_16];
/**
x
2023-02-21 11:00:59 -08:00
* offset 4404
2023-02-20 21:14:46 -08:00
*/
float scriptCurve2Bins[SCRIPT_CURVE_16];
/**
y
2023-02-21 11:00:59 -08:00
* offset 4468
2023-02-20 21:14:46 -08:00
*/
float scriptCurve2[SCRIPT_CURVE_16];
/**
x
2023-02-21 11:00:59 -08:00
* offset 4532
2023-02-20 21:14:46 -08:00
*/
float scriptCurve3Bins[SCRIPT_CURVE_8];
/**
y
2023-02-21 11:00:59 -08:00
* offset 4564
2023-02-20 21:14:46 -08:00
*/
float scriptCurve3[SCRIPT_CURVE_8];
/**
x
2023-02-21 11:00:59 -08:00
* offset 4596
2023-02-20 21:14:46 -08:00
*/
float scriptCurve4Bins[SCRIPT_CURVE_8];
/**
y
2023-02-21 11:00:59 -08:00
* offset 4628
2023-02-20 21:14:46 -08:00
*/
float scriptCurve4[SCRIPT_CURVE_8];
/**
x
2023-02-21 11:00:59 -08:00
* offset 4660
2023-02-20 21:14:46 -08:00
*/
float scriptCurve5Bins[SCRIPT_CURVE_8];
/**
y
2023-02-21 11:00:59 -08:00
* offset 4692
2023-02-20 21:14:46 -08:00
*/
float scriptCurve5[SCRIPT_CURVE_8];
/**
x
2023-02-21 11:00:59 -08:00
* offset 4724
2023-02-20 21:14:46 -08:00
*/
float scriptCurve6Bins[SCRIPT_CURVE_8];
/**
y
2023-02-21 11:00:59 -08:00
* offset 4756
2023-02-20 21:14:46 -08:00
*/
float scriptCurve6[SCRIPT_CURVE_8];
/**
kPa
2023-02-21 11:00:59 -08:00
* offset 4788
2023-02-20 21:14:46 -08:00
*/
float baroCorrPressureBins[BARO_CORR_SIZE];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 4804
2023-02-20 21:14:46 -08:00
*/
float baroCorrRpmBins[BARO_CORR_SIZE];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 4820
2023-02-20 21:14:46 -08:00
*/
float baroCorrTable[BARO_CORR_SIZE][BARO_CORR_SIZE];
/**
* Cranking fuel correction coefficient based on TPS
Ratio
2023-02-21 11:00:59 -08:00
* offset 4884
2023-02-20 21:14:46 -08:00
*/
float crankingTpsCoef[CRANKING_CURVE_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 4916
2023-02-20 21:14:46 -08:00
*/
float crankingTpsBins[CRANKING_CURVE_SIZE];
/**
* Optional timing advance table for Cranking (see useSeparateAdvanceForCranking)
RPM
2023-02-21 11:00:59 -08:00
* offset 4948
2023-02-20 21:14:46 -08:00
*/
uint16_t crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE];
/**
* Optional timing advance table for Cranking (see useSeparateAdvanceForCranking)
deg
2023-02-21 11:00:59 -08:00
* offset 4956
2023-02-20 21:14:46 -08:00
*/
scaled_channel<int16_t, 100, 1> crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE];
/**
* RPM-based idle position for coasting
RPM
2023-02-21 11:00:59 -08:00
* offset 4964
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 100> iacCoastingRpmBins[CLT_CURVE_SIZE];
/**
* RPM-based idle position for coasting
%
2023-02-21 11:00:59 -08:00
* offset 4980
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 2, 1> iacCoasting[CLT_CURVE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 4996
2023-02-20 21:14:46 -08:00
*/
error_message_t warning_message;
/**
C
2023-02-21 11:00:59 -08:00
* offset 5116
2023-02-20 21:14:46 -08:00
*/
float afterstartCoolantBins[AFTERSTART_HOLD_CURVE_SIZE];
/**
Seconds
2023-02-21 11:00:59 -08:00
* offset 5148
2023-02-20 21:14:46 -08:00
*/
float afterstartHoldTime[AFTERSTART_HOLD_CURVE_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 5180
2023-02-20 21:14:46 -08:00
*/
float afterstartEnrich[AFTERSTART_ENRICH_CURVE_SIZE];
/**
Seconds
2023-02-21 11:00:59 -08:00
* offset 5212
2023-02-20 21:14:46 -08:00
*/
float afterstartDecayTime[AFTERSTART_DECAY_CURVE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 5244
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 2, 1> boostTableOpenLoop[BOOST_RPM_COUNT][BOOST_LOAD_COUNT];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 5308
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 100> boostRpmBins[BOOST_RPM_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 5316
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 2> boostTableClosedLoop[BOOST_RPM_COUNT][BOOST_LOAD_COUNT];
/**
%
2023-02-21 11:00:59 -08:00
* offset 5380
2023-02-20 21:14:46 -08:00
*/
uint8_t boostTpsBins[BOOST_LOAD_COUNT];
/**
%
2023-02-21 11:00:59 -08:00
* offset 5388
2023-02-20 21:14:46 -08:00
*/
uint8_t pedalToTpsTable[PEDAL_TO_TPS_SIZE][PEDAL_TO_TPS_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 5452
2023-02-20 21:14:46 -08:00
*/
uint8_t pedalToTpsPedalBins[PEDAL_TO_TPS_SIZE];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 5460
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 100> pedalToTpsRpmBins[PEDAL_TO_TPS_SIZE];
/**
* CLT-based cranking position multiplier for simple manual idle controller
C
2023-02-21 11:00:59 -08:00
* offset 5468
2023-02-20 21:14:46 -08:00
*/
float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE];
/**
* CLT-based cranking position multiplier for simple manual idle controller
%
2023-02-21 11:00:59 -08:00
* offset 5500
2023-02-20 21:14:46 -08:00
*/
float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE];
/**
* Optional timing advance table for Idle (see useSeparateAdvanceForIdle)
RPM
2023-02-21 11:00:59 -08:00
* offset 5532
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 50> idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE];
/**
* Optional timing advance table for Idle (see useSeparateAdvanceForIdle)
deg
2023-02-21 11:00:59 -08:00
* offset 5540
2023-02-20 21:14:46 -08:00
*/
float idleAdvance[IDLE_ADVANCE_CURVE_SIZE];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 5572
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 10> idleVeRpmBins[IDLE_VE_SIZE];
/**
load
2023-02-21 11:00:59 -08:00
* offset 5576
2023-02-20 21:14:46 -08:00
*/
uint8_t idleVeLoadBins[IDLE_VE_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 5580
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 10, 1> idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 5612
2023-02-20 21:14:46 -08:00
*/
lua_script_t luaScript;
/**
C
2023-02-21 11:00:59 -08:00
* offset 13612
2023-02-20 21:14:46 -08:00
*/
float cltFuelCorrBins[CLT_CURVE_SIZE];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 13676
2023-02-20 21:14:46 -08:00
*/
float cltFuelCorr[CLT_CURVE_SIZE];
/**
C
2023-02-21 11:00:59 -08:00
* offset 13740
2023-02-20 21:14:46 -08:00
*/
float iatFuelCorrBins[IAT_CURVE_SIZE];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 13804
2023-02-20 21:14:46 -08:00
*/
float iatFuelCorr[IAT_CURVE_SIZE];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 13868
2023-02-20 21:14:46 -08:00
*/
float crankingFuelCoef[CRANKING_CURVE_SIZE];
/**
C
2023-02-21 11:00:59 -08:00
* offset 13900
2023-02-20 21:14:46 -08:00
*/
float crankingFuelBins[CRANKING_CURVE_SIZE];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 13932
2023-02-20 21:14:46 -08:00
*/
float crankingCycleCoef[CRANKING_CURVE_SIZE];
/**
counter
2023-02-21 11:00:59 -08:00
* offset 13964
2023-02-20 21:14:46 -08:00
*/
float crankingCycleBins[CRANKING_CURVE_SIZE];
/**
* CLT-based idle position multiplier for simple manual idle controller
C
2023-02-21 11:00:59 -08:00
* offset 13996
2023-02-20 21:14:46 -08:00
*/
float cltIdleCorrBins[CLT_CURVE_SIZE];
/**
* CLT-based idle position multiplier for simple manual idle controller
ratio
2023-02-21 11:00:59 -08:00
* offset 14060
2023-02-20 21:14:46 -08:00
*/
float cltIdleCorr[CLT_CURVE_SIZE];
/**
* Also known as MAF transfer function.
* kg/hour value.
* By the way 2.081989116 kg/h = 1 ft3/m
kg/hour
2023-02-21 11:00:59 -08:00
* offset 14124
2023-02-20 21:14:46 -08:00
*/
float mafDecoding[MAF_DECODING_COUNT];
/**
V
2023-02-21 11:00:59 -08:00
* offset 15148
2023-02-20 21:14:46 -08:00
*/
float mafDecodingBins[MAF_DECODING_COUNT];
/**
deg
2023-02-21 11:00:59 -08:00
* offset 16172
2023-02-20 21:14:46 -08:00
*/
scaled_channel<int8_t, 10, 1> ignitionIatCorrTable[8][8];
/**
C
2023-02-21 11:00:59 -08:00
* offset 16236
2023-02-20 21:14:46 -08:00
*/
int8_t ignitionIatCorrTempBins[8];
/**
Load
2023-02-21 11:00:59 -08:00
* offset 16244
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 5> ignitionIatCorrLoadBins[8];
/**
deg
2023-02-21 11:00:59 -08:00
* offset 16252
2023-02-20 21:14:46 -08:00
*/
int16_t injectionPhase[IGN_RPM_COUNT][IGN_LOAD_COUNT];
/**
Load
2023-02-21 11:00:59 -08:00
* offset 16764
2023-02-20 21:14:46 -08:00
*/
uint16_t injPhaseLoadBins[FUEL_LOAD_COUNT];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 16796
2023-02-20 21:14:46 -08:00
*/
uint16_t injPhaseRpmBins[FUEL_RPM_COUNT];
/**
onoff
2023-02-21 11:00:59 -08:00
* offset 16828
2023-02-20 21:14:46 -08:00
*/
uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT];
/**
kPa
2023-02-21 11:00:59 -08:00
* offset 16888
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 100, 1> mapEstimateTable[FUEL_RPM_COUNT][FUEL_LOAD_COUNT];
/**
% TPS
2023-02-21 11:00:59 -08:00
* offset 17400
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 100, 1> mapEstimateTpsBins[FUEL_LOAD_COUNT];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 17432
2023-02-20 21:14:46 -08:00
*/
uint16_t mapEstimateRpmBins[FUEL_RPM_COUNT];
/**
value
2023-02-21 11:00:59 -08:00
* offset 17464
2023-02-20 21:14:46 -08:00
*/
int8_t vvtTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8];
/**
L
2023-02-21 11:00:59 -08:00
* offset 17528
2023-02-20 21:14:46 -08:00
*/
uint16_t vvtTable1LoadBins[SCRIPT_TABLE_8];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 17544
2023-02-20 21:14:46 -08:00
*/
uint16_t vvtTable1RpmBins[SCRIPT_TABLE_8];
/**
value
2023-02-21 11:00:59 -08:00
* offset 17560
2023-02-20 21:14:46 -08:00
*/
int8_t vvtTable2[SCRIPT_TABLE_8][SCRIPT_TABLE_8];
/**
L
2023-02-21 11:00:59 -08:00
* offset 17624
2023-02-20 21:14:46 -08:00
*/
uint16_t vvtTable2LoadBins[SCRIPT_TABLE_8];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 17640
2023-02-20 21:14:46 -08:00
*/
uint16_t vvtTable2RpmBins[SCRIPT_TABLE_8];
/**
deg
2023-02-21 11:00:59 -08:00
* offset 17656
2023-02-20 21:14:46 -08:00
*/
scaled_channel<int16_t, 10, 1> ignitionTable[IGN_RPM_COUNT][IGN_LOAD_COUNT];
/**
Load
2023-02-21 11:00:59 -08:00
* offset 18168
2023-02-20 21:14:46 -08:00
*/
uint16_t ignitionLoadBins[IGN_LOAD_COUNT];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 18200
2023-02-20 21:14:46 -08:00
*/
uint16_t ignitionRpmBins[IGN_RPM_COUNT];
/**
%
2023-02-21 11:00:59 -08:00
* offset 18232
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 10, 1> veTable[FUEL_RPM_COUNT][FUEL_LOAD_COUNT];
/**
kPa
2023-02-21 11:00:59 -08:00
* offset 18744
2023-02-20 21:14:46 -08:00
*/
uint16_t veLoadBins[FUEL_LOAD_COUNT];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 18776
2023-02-20 21:14:46 -08:00
*/
uint16_t veRpmBins[FUEL_RPM_COUNT];
/**
lambda
2023-02-21 11:00:59 -08:00
* offset 18808
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 147, 1> lambdaTable[FUEL_RPM_COUNT][FUEL_LOAD_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 19064
2023-02-20 21:14:46 -08:00
*/
uint16_t lambdaLoadBins[FUEL_LOAD_COUNT];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 19096
2023-02-20 21:14:46 -08:00
*/
uint16_t lambdaRpmBins[FUEL_RPM_COUNT];
/**
value
2023-02-21 11:00:59 -08:00
* offset 19128
2023-02-20 21:14:46 -08:00
*/
float tpsTpsAccelTable[TPS_TPS_ACCEL_TABLE][TPS_TPS_ACCEL_TABLE];
/**
from
2023-02-21 11:00:59 -08:00
* offset 19384
2023-02-20 21:14:46 -08:00
*/
float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE];
/**
to
2023-02-21 11:00:59 -08:00
* offset 19416
2023-02-20 21:14:46 -08:00
*/
float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE];
/**
value
2023-02-21 11:00:59 -08:00
* offset 19448
2023-02-20 21:14:46 -08:00
*/
float scriptTable1[SCRIPT_TABLE_8][SCRIPT_TABLE_8];
/**
L
2023-02-21 11:00:59 -08:00
* offset 19704
2023-02-20 21:14:46 -08:00
*/
int16_t scriptTable1LoadBins[SCRIPT_TABLE_8];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 19720
2023-02-20 21:14:46 -08:00
*/
int16_t scriptTable1RpmBins[SCRIPT_TABLE_8];
/**
value
2023-02-21 11:00:59 -08:00
* offset 19736
2023-02-20 21:14:46 -08:00
*/
uint8_t scriptTable2[SCRIPT_TABLE_8][SCRIPT_TABLE_8];
/**
L
2023-02-21 11:00:59 -08:00
* offset 19800
2023-02-20 21:14:46 -08:00
*/
int16_t scriptTable2LoadBins[SCRIPT_TABLE_8];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 19816
2023-02-20 21:14:46 -08:00
*/
int16_t scriptTable2RpmBins[SCRIPT_TABLE_8];
/**
value
2023-02-21 11:00:59 -08:00
* offset 19832
2023-02-20 21:14:46 -08:00
*/
uint8_t scriptTable3[SCRIPT_TABLE_8][SCRIPT_TABLE_8];
/**
L
2023-02-21 11:00:59 -08:00
* offset 19896
2023-02-20 21:14:46 -08:00
*/
int16_t scriptTable3LoadBins[SCRIPT_TABLE_8];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 19912
2023-02-20 21:14:46 -08:00
*/
int16_t scriptTable3RpmBins[SCRIPT_TABLE_8];
/**
value
2023-02-21 11:00:59 -08:00
* offset 19928
2023-02-20 21:14:46 -08:00
*/
uint8_t scriptTable4[SCRIPT_TABLE_8][SCRIPT_TABLE_8];
/**
L
2023-02-21 11:00:59 -08:00
* offset 19992
2023-02-20 21:14:46 -08:00
*/
int16_t scriptTable4LoadBins[SCRIPT_TABLE_8];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 20008
2023-02-20 21:14:46 -08:00
*/
int16_t scriptTable4RpmBins[SCRIPT_TABLE_8];
/**
2023-02-21 11:00:59 -08:00
* offset 20024
2023-02-20 21:14:46 -08:00
*/
uint16_t ignTrimLoadBins[TRIM_SIZE];
/**
rpm
2023-02-21 11:00:59 -08:00
* offset 20032
2023-02-20 21:14:46 -08:00
*/
uint16_t ignTrimRpmBins[TRIM_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 20040
2023-02-20 21:14:46 -08:00
*/
cyl_trim_s ignTrims[12];
/**
2023-02-21 11:00:59 -08:00
* offset 20232
2023-02-20 21:14:46 -08:00
*/
uint16_t fuelTrimLoadBins[TRIM_SIZE];
/**
rpm
2023-02-21 11:00:59 -08:00
* offset 20240
2023-02-20 21:14:46 -08:00
*/
uint16_t fuelTrimRpmBins[TRIM_SIZE];
/**
2023-02-21 11:00:59 -08:00
* offset 20248
2023-02-20 21:14:46 -08:00
*/
cyl_trim_s fuelTrims[12];
/**
ratio
2023-02-21 11:00:59 -08:00
* offset 20440
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint16_t, 100, 1> crankingFuelCoefE100[CRANKING_CURVE_SIZE];
/**
Airmass
2023-02-21 11:00:59 -08:00
* offset 20456
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 50, 1> tcu_pcAirmassBins[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20464
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcValsR[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20472
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcValsN[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20480
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals1[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20488
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals2[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20496
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals3[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20504
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals4[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20512
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals12[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20520
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals23[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20528
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals34[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20536
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals21[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20544
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals32[TCU_MAGIC_SIZE];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20552
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_pcVals43[TCU_MAGIC_SIZE];
/**
TPS
2023-02-21 11:00:59 -08:00
* offset 20560
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_tccTpsBins[8];
/**
MPH
2023-02-21 11:00:59 -08:00
* offset 20568
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_tccLockSpeed[8];
/**
MPH
2023-02-21 11:00:59 -08:00
* offset 20576
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_tccUnlockSpeed[8];
/**
KPH
2023-02-21 11:00:59 -08:00
* offset 20584
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_32SpeedBins[8];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20592
2023-02-20 21:14:46 -08:00
*/
uint8_t tcu_32Vals[8];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20600
2023-02-20 21:14:46 -08:00
*/
scaled_channel<int8_t, 10, 1> throttle2TrimTable[6][6];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20636
2023-02-20 21:14:46 -08:00
*/
uint8_t throttle2TrimTpsBins[6];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 20642
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 100> throttle2TrimRpmBins[6];
/**
deg
2023-02-21 11:00:59 -08:00
* offset 20648
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 4, 1> maxKnockRetardTable[6][6];
/**
%
2023-02-21 11:00:59 -08:00
* offset 20684
2023-02-20 21:14:46 -08:00
*/
uint8_t maxKnockRetardLoadBins[6];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 20690
2023-02-20 21:14:46 -08:00
*/
scaled_channel<uint8_t, 1, 100> maxKnockRetardRpmBins[6];
/**
deg
2023-02-21 11:00:59 -08:00
* offset 20696
2023-02-20 21:14:46 -08:00
*/
scaled_channel<int16_t, 10, 1> ALSTimingRetardTable[4][4];
/**
TPS
2023-02-21 11:00:59 -08:00
* offset 20728
2023-02-20 21:14:46 -08:00
*/
uint16_t alsIgnRetardLoadBins[4];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 20736
2023-02-20 21:14:46 -08:00
*/
uint16_t alsIgnRetardrpmBins[4];
/**
percent
2023-02-21 11:00:59 -08:00
* offset 20744
2023-02-20 21:14:46 -08:00
*/
scaled_channel<int16_t, 10, 1> ALSFuelAdjustment[4][4];
/**
TPS
2023-02-21 11:00:59 -08:00
* offset 20776
2023-02-20 21:14:46 -08:00
*/
uint16_t alsFuelAdjustmentLoadBins[4];
/**
RPM
2023-02-21 11:00:59 -08:00
* offset 20784
2023-02-20 21:14:46 -08:00
*/
uint16_t alsFuelAdjustmentrpmBins[4];
/**
2023-02-21 11:00:59 -08:00
* offset 20792
2023-02-20 21:14:46 -08:00
*/
blend_table_s ignBlends[IGN_BLEND_COUNT];
/**
2023-02-21 11:00:59 -08:00
* offset 21544
2023-02-20 21:14:46 -08:00
*/
blend_table_s veBlends[VE_BLEND_COUNT];
};
2023-02-21 11:00:59 -08:00
static_assert(sizeof(persistent_config_s) == 22296);
2023-02-20 21:14:46 -08:00
// end
2023-02-21 11:55:32 -08:00
// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Feb 21 11:55:31 PST 2023