rusefi/firmware/controllers/algo/engine_configuration_genera...

2484 lines
44 KiB
C
Raw Blame History

// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Jan 26 23:18:47 EST 2019
// begin
#ifndef ENGINE_CONFIGURATION_GENERATED_H_
#define ENGINE_CONFIGURATION_GENERATED_H_
#include "rusefi_types.h"
// start of pid_s
typedef struct {
/**
* offset 0
*/
float pFactor;
/**
* offset 4
*/
float iFactor;
/**
* offset 8
*/
float dFactor;
/**
* Linear addition to PID logic
* offset 12
*/
int16_t offset;
/**
* PID dTime
* offset 14
*/
int16_t period;
/**
* Output min value
* offset 16
*/
int16_t minValue;
/**
* Output max value
* offset 18
*/
int16_t maxValue;
/** total size 20*/
} pid_s;
// start of cranking_parameters_s
typedef struct {
/**
* Fuel squirt duration while cranking
* A number of curves adjust this value according to CLT/IAT/TPS etc
* offset 0
*/
float baseFuel;
/**
* Cranking mode threshold. Special cranking logic controls fuel and spark while RPM is below this threshold
* set cranking_rpm X
* offset 4
*/
int16_t rpm;
/**
* need 4 byte alignment
* offset 6
*/
uint8_t alignmentFill[2];
/** total size 8*/
} cranking_parameters_s;
// start of air_pressure_sensor_config_s
typedef struct {
/**
* kPa value at low volts
* offset 0
*/
float lowValue;
/**
* kPa value at high volts
* offset 4
*/
float highValue;
/**
* offset 8
*/
air_pressure_sensor_type_e type;
/**
* offset 12
*/
adc_channel_e hwChannel;
/** total size 16*/
} air_pressure_sensor_config_s;
/**
* @brief MAP averaging configuration
*/
// start of MAP_sensor_config_s
typedef struct {
/**
* offset 0
*/
float samplingAngleBins[MAP_ANGLE_SIZE];
/**
* @brief MAP averaging sampling start angle, by RPM
* offset 32
*/
float samplingAngle[MAP_ANGLE_SIZE];
/**
* offset 64
*/
float samplingWindowBins[MAP_WINDOW_SIZE];
/**
* @brief MAP averaging angle duration, by RPM
* offset 96
*/
float samplingWindow[MAP_WINDOW_SIZE];
/**
* offset 128
*/
air_pressure_sensor_config_s sensor;
/** total size 144*/
} MAP_sensor_config_s;
/**
* @brief Thermistor known values
*/
// start of thermistor_conf_s
typedef struct {
/**
* these values are in Celcuus
* offset 0
*/
float tempC_1;
/**
* offset 4
*/
float tempC_2;
/**
* offset 8
*/
float tempC_3;
/**
* offset 12
*/
float resistance_1;
/**
* offset 16
*/
float resistance_2;
/**
* offset 20
*/
float resistance_3;
/**
* offset 24
*/
float bias_resistor;
/** total size 28*/
} thermistor_conf_s;
/**
* @brief Oil pressure sensor interpolation
*/
// start of oil_pressure_config_s
typedef struct {
/**
* offset 0
*/
adc_channel_e hwChannel;
/**
* offset 4
*/
float v1;
/**
* offset 8
*/
float value1;
/**
* offset 12
*/
float v2;
/**
* offset 16
*/
float value2;
/** total size 20*/
} oil_pressure_config_s;
/**
* @brief Thermistor curve parameters
*/
// start of ThermistorConf
typedef struct {
/**
* offset 0
*/
thermistor_conf_s config;
/**
* offset 28
*/
adc_channel_e adcChannel;
/** total size 32*/
} ThermistorConf;
// start of injector_s
typedef struct {
/**
* cc/min, cubic centimeter 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
* offset 0
*/
float flow;
/**
* set_flat_injector_lag LAG
* set_injector_lag VOLTAGE LAG
* offset 4
*/
float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE];
/**
* ms delay between injector open and close dead times
* offset 36
*/
float battLagCorr[VBAT_INJECTOR_CURVE_SIZE];
/** total size 68*/
} injector_s;
// start of bi_quard_s
typedef struct {
/**
* offset 0
*/
float a0;
/**
* offset 4
*/
float a1;
/**
* offset 8
*/
float a2;
/**
* offset 12
*/
float b1;
/**
* offset 16
*/
float b2;
/** total size 20*/
} bi_quard_s;
// start of specs_s
typedef struct {
/**
* Engine displacement, in liters
* see also cylindersCount
* offset 0
*/
float displacement;
/**
* offset 4
*/
cylinders_count_t cylindersCount;
/**
* offset 8
*/
firing_order_e firingOrder;
/** total size 12*/
} specs_s;
/**
* @brief Trigger wheel(s) configuration
*/
// start of trigger_config_s
typedef struct {
/**
* set trigger_type X
* offset 0
*/
trigger_type_e type;
/**
offset 4 bit 0 */
bool unusedCustomIsSynchronizationNeeded : 1;
/**
offset 4 bit 1 */
bool unusedCustomNeedSecondTriggerInput : 1;
/**
* This option could be used if your second trigger channel is broken
offset 4 bit 2 */
bool useOnlyFirstChannel : 1;
/**
* offset 8
*/
int customTotalToothCount;
/**
* offset 12
*/
int customSkippedToothCount;
/** total size 16*/
} trigger_config_s;
// start of afr_sensor_s
typedef struct {
/**
* offset 0
*/
adc_channel_e hwChannel;
/**
* offset 4
*/
float v1;
/**
* offset 8
*/
float value1;
/**
* offset 12
*/
float v2;
/**
* offset 16
*/
float value2;
/** total size 20*/
} afr_sensor_s;
// start of idle_hardware_s
typedef struct {
/**
* offset 0
*/
brain_pin_e solenoidPin;
/**
* offset 4
*/
pin_output_mode_e solenoidPinMode;
/**
* offset 8
*/
int solenoidFrequency;
/**
* offset 12
*/
brain_pin_e stepperDirectionPin;
/**
* offset 16
*/
brain_pin_e stepperStepPin;
/** total size 20*/
} idle_hardware_s;
// start of board_configuration_s
typedef struct {
/**
* offset 0
*/
idle_hardware_s idle;
/**
* value between 0 and 100 used in Manual mode
* offset 20
*/
float manIdlePosition;
/**
* offset 24
*/
brain_pin_e fuelPumpPin;
/**
* offset 28
*/
pin_output_mode_e fuelPumpPinMode;
/**
* offset 32
*/
brain_pin_e injectionPins[INJECTION_PIN_COUNT];
/**
* offset 80
*/
pin_output_mode_e injectionPinMode;
/**
* offset 84
*/
brain_pin_e ignitionPins[IGNITION_PIN_COUNT];
/**
* offset 132
*/
pin_output_mode_e ignitionPinMode;
/**
* offset 136
*/
brain_pin_e malfunctionIndicatorPin;
/**
* offset 140
*/
pin_output_mode_e malfunctionIndicatorPinMode;
/**
* offset 144
*/
brain_pin_e fanPin;
/**
* offset 148
*/
pin_output_mode_e fanPinMode;
/**
* offset 152
*/
float mapFrequency0Kpa;
/**
* offset 156
*/
float mapFrequency100Kpa;
/**
* some cars have a switch to indicate that clutch pedal is all the way down
* offset 160
*/
brain_pin_e clutchDownPin;
/**
* offset 164
*/
pin_input_mode_e clutchDownPinMode;
/**
* offset 168
*/
brain_pin_e alternatorControlPin;
/**
* offset 172
*/
pin_output_mode_e alternatorControlPinMode;
/**
* offset 176
*/
brain_pin_e HD44780_rs;
/**
* offset 180
*/
brain_pin_e HD44780_e;
/**
* offset 184
*/
brain_pin_e HD44780_db4;
/**
* offset 188
*/
brain_pin_e HD44780_db5;
/**
* offset 192
*/
brain_pin_e HD44780_db6;
/**
* offset 196
*/
brain_pin_e HD44780_db7;
/**
* offset 200
*/
brain_pin_e gps_rx_pin;
/**
* offset 204
*/
brain_pin_e gps_tx_pin;
/**
* rpm X
* offset 208
*/
int triggerSimulatorFrequency;
/**
* Digital Potentiometer is used by stock ECU stimulation code
* offset 212
*/
spi_device_e digitalPotentiometerSpiDevice;
/**
* offset 216
*/
brain_pin_e digitalPotentiometerChipSelect[DIGIPOT_COUNT];
/**
* offset 232
*/
brain_pin_e etbDirectionPin1;
/**
* offset 236
*/
brain_pin_e etbDirectionPin2;
/**
* offset 240
*/
brain_pin_e etbControlPin1;
/**
* offset 244
*/
brain_pin_e etbControlPin2;
/**
* offset 248
*/
pin_output_mode_e electronicThrottlePin1Mode;
/**
* offset 252
*/
brain_pin_e wboHeaterPin;
/**
* offset 256
*/
brain_pin_e cj125CsPin;
/**
* offset 260
*/
float fuelLevelEmptyTankVoltage;
/**
* offset 264
*/
float fuelLevelFullTankVoltage;
/**
* AFR, WBO, EGO - whatever you like to call it
* offset 268
*/
ego_sensor_e afr_type;
/**
* offset 272
*/
float fuelClosedLoopAfrLowThreshold;
/**
* offset 276
*/
pin_output_mode_e hip9011CsPinMode;
/**
* This implementation produces one pulse per engine cycle. See also dizzySparkOutputPin.
* offset 280
*/
brain_pin_e tachOutputPin;
/**
* offset 284
*/
pin_output_mode_e tachOutputPinMode;
/**
* offset 288
*/
brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT];
/**
* offset 300
*/
brain_pin_e mainRelayPin;
/**
* offset 304
*/
int idleThreadPeriod;
/**
* offset 308
*/
int consoleLoopPeriod;
/**
* offset 312
*/
int lcdThreadPeriod;
/**
* offset 316
*/
brain_pin_e sdCardCsPin;
/**
* offset 320
*/
int generalPeriodicThreadPeriod;
/**
* offset 324
*/
uint32_t tunerStudioSerialSpeed;
/**
* offset 328
*/
brain_pin_e boardTestModeJumperPin;
/**
* offset 332
*/
can_device_mode_e canDeviceMode;
/**
* offset 336
*/
brain_pin_e canTxPin;
/**
* offset 340
*/
brain_pin_e canRxPin;
/**
* offset 344
*/
brain_pin_e triggerSimulatorPins[TRIGGER_SIMULATOR_PIN_COUNT];
/**
* offset 356
*/
pin_output_mode_e triggerSimulatorPinModes[TRIGGER_SIMULATOR_PIN_COUNT];
/**
* Narrow band o2 heater, not used for CJ125. See wboHeaterPin
* offset 368
*/
brain_pin_e o2heaterPin;
/**
* offset 372
*/
pin_output_mode_e o2heaterPinModeTodO;
/**
offset 376 bit 0 */
bool is_enabled_spi_1 : 1;
/**
offset 376 bit 1 */
bool is_enabled_spi_2 : 1;
/**
offset 376 bit 2 */
bool is_enabled_spi_3 : 1;
/**
offset 376 bit 3 */
bool isSdCardEnabled : 1;
/**
offset 376 bit 4 */
bool isFastAdcEnabled : 1;
/**
offset 376 bit 5 */
bool isEngineControlEnabled : 1;
/**
offset 376 bit 6 */
bool isHip9011Enabled : 1;
/**
offset 376 bit 7 */
bool isVerboseAlternator : 1;
/**
offset 376 bit 8 */
bool useSerialPort : 1;
/**
offset 376 bit 9 */
bool useStepperIdle : 1;
/**
offset 376 bit 10 */
bool enabledStep1Limiter : 1;
/**
offset 376 bit 11 */
bool useTpicAdvancedMode : 1;
/**
offset 376 bit 12 */
bool useLcdScreen : 1;
/**
offset 376 bit 13 */
bool startConsoleInBinaryMode : 1;
/**
offset 376 bit 14 */
bool useWarmupPidAfr : 1;
/**
offset 376 bit 15 */
bool onOffAlternatorLogic : 1;
/**
offset 376 bit 16 */
bool isCJ125Enabled : 1;
/**
* Use rise or fall signal front
offset 376 bit 17 */
bool vvtCamSensorUseRise : 1;
/**
* Useful for individual intakes
offset 376 bit 18 */
bool measureMapOnlyInOneCylinder : 1;
/**
offset 376 bit 19 */
bool stepperForceParkingEveryRestart : 1;
/**
* Smarter cranking logic.
* See also startOfCrankingPrimingPulse
offset 376 bit 20 */
bool isFasterEngineSpinUpEnabled : 1;
/**
offset 376 bit 21 */
bool coastingFuelCutEnabled : 1;
/**
offset 376 bit 22 */
bool useIacTableForCoasting : 1;
/**
offset 376 bit 23 */
bool useNoiselessTriggerDecoder : 1;
/**
offset 376 bit 24 */
bool unused_board_984_24 : 1;
/**
offset 376 bit 25 */
bool unused_board_984_25 : 1;
/**
offset 376 bit 26 */
bool unused_board_984_26 : 1;
/**
offset 376 bit 27 */
bool unused_board_984_27 : 1;
/**
offset 376 bit 28 */
bool unused_board_984_28 : 1;
/**
offset 376 bit 29 */
bool unused_board_984_29 : 1;
/**
offset 376 bit 30 */
bool unused_board_984_30 : 1;
/**
* offset 380
*/
brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT];
/**
* default or inverted input
* offset 396
*/
uint8_t logicAnalyzerMode[LOGIC_ANALYZER_CHANNEL_COUNT];
/**
* offset 400
*/
int unrealisticRpmThreashold;
/**
* offset 404
*/
pin_output_mode_e mainRelayPinMode;
/**
* offset 408
*/
brain_pin_e max31855_cs[EGT_CHANNEL_COUNT];
/**
* offset 440
*/
spi_device_e max31855spiDevice;
/**
* todo: more comments
* offset 444
*/
brain_pin_e fsioOutputPins[FSIO_COMMAND_COUNT];
/**
* offset 508
*/
pin_output_mode_e gpioPinModes[FSIO_COMMAND_COUNT];
/**
* offset 572
*/
uart_device_e consoleUartDevice;
/**
* offset 576
*/
int mapMinBufferLength;
/**
* offset 580
*/
int16_t idlePidDeactivationTpsThreshold;
/**
* offset 582
*/
int16_t stepperParkingExtraSteps;
/**
* offset 584
*/
float nb2ratioFrom;
/**
* offset 588
*/
float nb2ratioTo;
/**
* This pin is used for debugging - snap a logic analyzer on it and see if it's ever high
* offset 592
*/
brain_pin_e triggerErrorPin;
/**
* offset 596
*/
pin_output_mode_e triggerErrorPinMode;
/**
* offset 600
*/
brain_pin_e acRelayPin;
/**
* offset 604
*/
pin_output_mode_e acRelayPinMode;
/**
* offset 608
*/
fsio_pwm_freq_t fsioFrequency[FSIO_COMMAND_COUNT];
/**
* offset 640
*/
brain_pin_e hip9011CsPin;
/**
* offset 644
*/
brain_pin_e hip9011IntHoldPin;
/**
* offset 648
*/
pin_output_mode_e hip9011IntHoldPinMode;
/**
* offset 652
*/
fsio_setting_t fsio_setting[FSIO_COMMAND_COUNT];
/**
* offset 716
*/
brain_pin_e spi1mosiPin;
/**
* offset 720
*/
brain_pin_e spi1misoPin;
/**
* offset 724
*/
brain_pin_e spi1sckPin;
/**
* offset 728
*/
brain_pin_e spi2mosiPin;
/**
* offset 732
*/
brain_pin_e spi2misoPin;
/**
* offset 736
*/
brain_pin_e spi2sckPin;
/**
* offset 740
*/
brain_pin_e spi3mosiPin;
/**
* offset 744
*/
brain_pin_e spi3misoPin;
/**
* offset 748
*/
brain_pin_e spi3sckPin;
/**
* Saab Combustion Detection Module knock signal input pin
* offset 752
*/
brain_pin_e cdmInputPin;
/**
* offset 756
*/
brain_pin_e joystickCenterPin;
/**
* offset 760
*/
brain_pin_e joystickAPin;
/**
* offset 764
*/
brain_pin_e joystickBPin;
/**
* offset 768
*/
brain_pin_e joystickCPin;
/**
* offset 772
*/
brain_pin_e joystickDPin;
/**
* rusEfi console Sensor Sniffer mode
* offset 776
*/
sensor_chart_e sensorChartMode;
/**
* offset 780
*/
maf_sensor_type_e mafSensorType;
/**
* offset 784
*/
brain_input_pin_e vehicleSpeedSensorInputPin;
/**
* Some vehicles have a switch to indicate that clutch pedal is all the way up
* offset 788
*/
brain_pin_e clutchUpPin;
/**
* offset 792
*/
pin_input_mode_e clutchUpPinMode;
/**
* todo:not finshed
* These input pins allow us to pull toggle buttons state
* offset 796
*/
brain_pin_e fsioDigitalInputs[FSIO_COMMAND_COUNT];
/**
* offset 860
*/
brain_input_pin_e frequencyReportingMapInputPin;
/** total size 864*/
} board_configuration_s;
// start of engine_configuration_s
typedef struct {
/**
* http://rusefi.com/wiki/index.php?title=Manual:Engine_Type
* set engine_type X
* offset 0
*/
engine_type_e engineType;
/**
* Engine sniffer would be disabled above this rpm
* set engineSnifferRpmThreshold X
* offset 4
*/
int engineSnifferRpmThreshold;
/**
* offset 8
*/
injector_s injector;
/**
* Should trigger emulator push data right into trigger handling logic, eliminating the need for physical jumper wires?
* PS: Funny name, right? :)
offset 76 bit 0 */
bool directSelfStimulation : 1;
/**
offset 76 bit 1 */
bool activateAuxPid1 : 1;
/**
offset 76 bit 2 */
bool isVerboseAuxPid1 : 1;
/**
offset 76 bit 3 */
bool activateAuxPid2 : 1;
/**
offset 76 bit 4 */
bool isVerboseAuxPid2 : 1;
/**
offset 76 bit 5 */
bool activateAuxPid3 : 1;
/**
offset 76 bit 6 */
bool isVerboseAuxPid3 : 1;
/**
offset 76 bit 7 */
bool activateAuxPid4 : 1;
/**
offset 76 bit 8 */
bool isVerboseAuxPid4 : 1;
/**
offset 76 bit 9 */
bool useBiQuadAnalogFiltering : 1;
/**
offset 76 bit 10 */
bool cj125isUaDivided : 1;
/**
offset 76 bit 11 */
bool cj125isLsu49 : 1;
/**
offset 76 bit 12 */
bool issue_294_12 : 1;
/**
offset 76 bit 13 */
bool issue_294_13 : 1;
/**
offset 76 bit 14 */
bool issue_294_14 : 1;
/**
offset 76 bit 15 */
bool issue_294_15 : 1;
/**
offset 76 bit 16 */
bool issue_294_16 : 1;
/**
offset 76 bit 17 */
bool issue_294_17 : 1;
/**
offset 76 bit 18 */
bool issue_294_18 : 1;
/**
offset 76 bit 19 */
bool issue_294_19 : 1;
/**
offset 76 bit 20 */
bool issue_294_21 : 1;
/**
offset 76 bit 21 */
bool issue_294_22 : 1;
/**
offset 76 bit 22 */
bool issue_294_23 : 1;
/**
offset 76 bit 23 */
bool issue_294_24 : 1;
/**
offset 76 bit 24 */
bool issue_294_25 : 1;
/**
offset 76 bit 25 */
bool issue_294_26 : 1;
/**
offset 76 bit 26 */
bool issue_294_27 : 1;
/**
offset 76 bit 27 */
bool issue_294_28 : 1;
/**
offset 76 bit 28 */
bool issue_294_29 : 1;
/**
* Closed throttle. todo: extract these two fields into a structure
* todo: we need two sets of TPS parameters - modern ETBs have two sensors
* See also tpsAdcChannel
* offset 80
*/
int16_t tpsMin;
/**
* Full throtle. tpsMax value as 10 bit ADC value. Not Voltage!
* See also tpsAdcChannel
* offset 82
*/
int16_t tpsMax;
/**
* TPS error detection, what TPS % value is unrealistically low
* offset 84
*/
int16_t tpsErrorDetectionTooLow;
/**
* TPS error detection, what TPS % value is unrealistically high
* offset 86
*/
int16_t tpsErrorDetectionTooHigh;
/**
* offset 88
*/
cranking_parameters_s cranking;
/**
* offset 96
*/
float primingSquirtDurationMs;
/**
* offset 100
*/
float ignitionDwellForCrankingMs;
/**
* While cranking (which causes battery voltage to drop) we can calculate dwell time in shaft
* degrees, not in absolute time as in running mode.
* set cranking_charge_angle X
* offset 104
*/
float crankingChargeAngle;
/**
* @see hasMapSensor
* @see isMapAveragingEnabled
* offset 108
*/
MAP_sensor_config_s map;
/**
* todo: merge with channel settings, use full-scale Thermistor here!
* offset 252
*/
ThermistorConf clt;
/**
* offset 284
*/
ThermistorConf iat;
/**
* A secondary Rev limit engaged by the driver to help launch the vehicle faster
* offset 316
*/
int step1rpm;
/**
* offset 320
*/
int step1timing;
/**
* 6=8MHz todo solit two bit fields
* offset 324
*/
int hip9011PrescalerAndSDO;
/**
* We calculate knock band based of cylinderBore
* Use this to override - kHz knock band override
* offset 328
*/
float knockBandCustom;
/**
* On single-coil or wasted spark setups you have to lower dwell at high RPM
* offset 332
*/
float sparkDwellRpmBins[DWELL_CURVE_SIZE];
/**
* offset 364
*/
float sparkDwellValues[DWELL_CURVE_SIZE];
/**
* offset 396
*/
specs_s specs;
/**
* Cylinder diameter, in mm.
* offset 408
*/
float cylinderBore;
/**
* Disable sensor sniffer above this rpm
* offset 412
*/
int sensorSnifferRpmThreshold;
/**
* set rpm_hard_limit X
* offset 416
*/
int rpmHardLimit;
/**
* This setting controls which fuel quantity control algorithm is used.
* set algorithm X
* offset 420
*/
engine_load_mode_e fuelAlgorithm;
/**
* offset 424
*/
injection_mode_e crankingInjectionMode;
/**
* 'batched' means two injectors are wired together
* set injection_mode X
* See also twoWireBatchInjection
* offset 428
*/
injection_mode_e injectionMode;
/**
* this is about deciding when the injector starts it's squirt
* See also injectionPhase map
* todo: do we need even need this since we have the map anyway?
* offset 432
*/
angle_t extraInjectionOffset;
/**
* Timing advance while engine cranking
* set cranking_timing_angle X
* offset 436
*/
angle_t crankingTimingAngle;
/**
* 'wasted' means one coil is driving two spark plugs in two cylinders, with one of the aparks not doing anything since it's happening on the exhaust cycle
* set ignition_mode X
* offset 440
*/
ignition_mode_e ignitionMode;
/**
* this value could be used to offset the whole ignition timing table by a constant
* offset 444
*/
angle_t ignitionOffset;
/**
* offset 448
*/
timing_mode_e timingMode;
/**
* This value is used in 'fixed timing' mode, i.e. constant timing
* This mode is useful for instance while adjusting distributor location
* offset 452
*/
angle_t fixedModeTiming;
/**
* Angle between Top Dead Center (TDC) and the first trigger event.
* Knowing this angle allows us to control timing and other angles in reference to TDC.
* set global_trigger_offset_angle X
* offset 456
*/
angle_t globalTriggerAngleOffset;
/**
* Coefficient of input voltage dividers on your PCB
* offset 460
*/
float analogInputDividerCoefficient;
/**
* Battery Voltage input resistor divider coefficient
* offset 464
*/
float vbattDividerCoeff;
/**
* offset 468
*/
adc_channel_e vbattAdcChannel;
/**
* Cooling fan turn-on temperature threshold, in Celsuis
* offset 472
*/
float fanOnTemperature;
/**
* Cooling fan turn-off temperature threshold, in Celsuis
* offset 476
*/
float fanOffTemperature;
/**
* offset 480
*/
adc_channel_e fuelLevelSensor;
/**
* This coefficient translates vehicle speed input frequency (in Hz) into vehicle speed, km/h
* offset 484
*/
float vehicleSpeedCoef;
/**
* set can_mode X
* offset 488
*/
can_nbc_e canNbcType;
/**
* CANbus thread period, ms
* offset 492
*/
int canSleepPeriod;
/**
* See engineCycle
* set operation_mode X
* offset 496
*/
operation_mode_e operationMode;
/**
* offset 500
*/
display_mode_e displayMode;
/**
* offset 504
*/
log_format_e logFormat;
/**
* offset 508
*/
int byFirmwareVersion;
/**
* offset 512
*/
int HD44780width;
/**
* offset 516
*/
int HD44780height;
/**
* See aslo pedalPositionAdcChannel
* offset 520
*/
adc_channel_e tpsAdcChannel;
/**
* offset 524
*/
int overrideCrankingIgnition;
/**
* offset 528
*/
int sensorChartFrequency;
/**
* offset 532
*/
trigger_config_s trigger;
/**
* offset 548
*/
spi_device_e hip9011SpiDevice;
/**
* set global_fuel_correction X
* offset 552
*/
float globalFuelCorrection;
/**
* offset 556
*/
float adcVcc;
/**
* maximum total number of degrees to subtract from ignition advance
* when knocking
* offset 560
*/
float maxKnockSubDeg;
/**
* See hasMafSensor
* offset 564
*/
adc_channel_e mafAdcChannel;
/**
* offset 568
*/
afr_sensor_s afr;
/**
* Electronic throttle pedal position input
* See also tpsAdcChannel
* offset 588
*/
adc_channel_e throttlePedalPositionAdcChannel;
/**
* @see hasBaroSensor
* offset 592
*/
air_pressure_sensor_config_s baroSensor;
/**
* offset 608
*/
board_configuration_s bc;
/**
offset 1472 bit 0 */
bool vvtDisplayInverted : 1;
/**
offset 1472 bit 1 */
bool fuelClosedLoopCorrectionEnabled : 1;
/**
* Print details into rusEfi console
offset 1472 bit 2 */
bool isVerboseIAC : 1;
/**
* enable verbose_etb
offset 1472 bit 3 */
bool isVerboseETB : 1;
/**
* Use angle-based duration or fixed absolute time dwell duration?
offset 1472 bit 4 */
bool useConstantDwellDuringCranking : 1;
/**
* This options enables data for 'engine sniffer' tab in console, which comes at some CPU price
offset 1472 bit 5 */
bool isEngineChartEnabled : 1;
/**
offset 1472 bit 6 */
bool silentTriggerError : 1;
/**
offset 1472 bit 7 */
bool useLinearCltSensor : 1;
/**
offset 1472 bit 8 */
bool canReadEnabled : 1;
/**
offset 1472 bit 9 */
bool canWriteEnabled : 1;
/**
offset 1472 bit 10 */
bool useLinearIatSensor : 1;
/**
* See fsioTimingAdjustment
offset 1472 bit 11 */
bool useFSIO16ForTimingAdjustment : 1;
/**
offset 1472 bit 12 */
bool tachPulseDurationAsDutyCycle : 1;
/**
offset 1472 bit 13 */
bool isAlternatorControlEnabled : 1;
/**
offset 1472 bit 14 */
bool invertPrimaryTriggerSignal : 1;
/**
offset 1472 bit 15 */
bool invertSecondaryTriggerSignal : 1;
/**
offset 1472 bit 16 */
bool cutFuelOnHardLimit : 1;
/**
offset 1472 bit 17 */
bool cutSparkOnHardLimit : 1;
/**
offset 1472 bit 18 */
bool step1fuelCutEnable : 1;
/**
offset 1472 bit 19 */
bool step1SparkCutEnable : 1;
/**
offset 1472 bit 20 */
bool hasFrequencyReportingMapSensor : 1;
/**
offset 1472 bit 21 */
bool useFSIO8ForServo1 : 1;
/**
offset 1472 bit 22 */
bool useFSIO9ForServo2 : 1;
/**
offset 1472 bit 23 */
bool useFSIO10ForServo3 : 1;
/**
offset 1472 bit 24 */
bool useFSIO11ForServo4 : 1;
/**
offset 1472 bit 25 */
bool useFSIO12ForServo5 : 1;
/**
offset 1472 bit 26 */
bool useFSIO15ForIdleRpmAdjustment : 1;
/**
* Sometimes we just have to shut the engine down. Use carefully!
offset 1472 bit 27 */
bool useFSIO5ForCriticalIssueEngineStop : 1;
/**
* Sometimes we have to miss injection on purpose to attract driver's attention
offset 1472 bit 28 */
bool useFSIO4ForSeriousEngineWarning : 1;
/**
offset 1472 bit 29 */
bool unused_bit_1472_29 : 1;
/**
offset 1472 bit 30 */
bool unused_bit_1472_30 : 1;
/**
* offset 1476
*/
adc_channel_e hipOutputChannel;
/**
* offset 1480
*/
idle_mode_e idleMode;
/**
* enable injection
offset 1484 bit 0 */
bool isInjectionEnabled : 1;
/**
* enable ignition
offset 1484 bit 1 */
bool isIgnitionEnabled : 1;
/**
* If TPS above 95% no fuel would be injected during cranking
* enable cylinder_cleanup
offset 1484 bit 2 */
bool isCylinderCleanupEnabled : 1;
/**
offset 1484 bit 3 */
bool secondTriggerChannelEnabled : 1;
/**
offset 1484 bit 4 */
bool needSecondTriggerInputDeprecated : 1;
/**
offset 1484 bit 5 */
bool isMapAveragingEnabled : 1;
/**
offset 1484 bit 6 */
bool overrideCrankingIacSetting : 1;
/**
offset 1484 bit 7 */
bool useSeparateAdvanceForIdle : 1;
/**
offset 1484 bit 8 */
bool isTunerStudioEnabled : 1;
/**
offset 1484 bit 9 */
bool isWaveAnalyzerEnabled : 1;
/**
offset 1484 bit 10 */
bool useSeparateVeForIdle : 1;
/**
* enable trigger_details
offset 1484 bit 11 */
bool isPrintTriggerSynchDetails : 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
offset 1484 bit 12 */
bool isManualSpinningMode : 1;
/**
* This is needed if batched injection and individual injector wiring
* enable two_wire_batch_injection
offset 1484 bit 13 */
bool twoWireBatchInjection : 1;
/**
* VR sensors are only precise on rising front
* enable trigger_only_front
offset 1484 bit 14 */
bool useOnlyRisingEdgeForTrigger : 1;
/**
* This is needed if batched igniton (waster spark) and individual coil wiring
offset 1484 bit 15 */
bool twoWireBatchIgnition : 1;
/**
offset 1484 bit 16 */
bool useFixedBaroCorrFromMap : 1;
/**
offset 1484 bit 17 */
bool useSeparateAdvanceForCranking : 1;
/**
offset 1484 bit 18 */
bool useAdvanceCorrectionsForCranking : 1;
/**
offset 1484 bit 19 */
bool useTPSAdvanceTable : 1;
/**
offset 1484 bit 20 */
bool unused_1484_bit_20 : 1;
/**
offset 1484 bit 21 */
bool unused_1484_bit_21 : 1;
/**
* offset 1488
*/
uint32_t engineChartSize;
/**
* Relative to the target idle RPM
* offset 1492
*/
int16_t idlePidRpmUpperLimit;
/**
* Prime injection pulse falloff temperature threshold, in Celsuis
* offset 1494
*/
int16_t primeInjFalloffTemperature;
/**
* A/C button input handled as analog input
* offset 1496
*/
adc_channel_e acSwitchAdc;
/**
* At what trigger index should some ignition-related math be executed? This is a performance trick to reduce load on synchronization trigger callback.
* offset 1500
*/
int ignMathCalculateAtIndex;
/**
* offset 1504
*/
int16_t acCutoffLowRpm;
/**
* offset 1506
*/
int16_t acCutoffHighRpm;
/**
* offset 1508
*/
int16_t acIdleRpmBump;
/**
* set warningPeriod X
* offset 1510
*/
int16_t warningPeriod;
/**
* offset 1512
*/
adc_channel_e vRefAdcChannel;
/**
* offset 1516
*/
float knockDetectionWindowStart;
/**
* offset 1520
*/
float knockDetectionWindowEnd;
/**
* offset 1524
*/
float idleStepperReactionTime;
/**
* offset 1528
*/
float knockVThreshold;
/**
* offset 1532
*/
pin_input_mode_e fsioInputModes[FSIO_COMMAND_COUNT];
/**
* offset 1596
*/
adc_channel_e externalKnockSenseAdc;
/**
* offset 1600
*/
int unsed2342342[3];
/**
* offset 1612
*/
int idleStepperTotalSteps;
/**
* offset 1616
*/
brain_pin_e stepperEnablePin;
/**
* TODO: finish this #413
* offset 1620
*/
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.
* offset 1624
*/
int mapAveragingSchedulingAtIndex;
/**
* offset 1628
*/
float baroCorrPressureBins[BARO_CORR_SIZE];
/**
* offset 1644
*/
float baroCorrRpmBins[BARO_CORR_SIZE];
/**
* offset 1660
*/
baro_corr_table_t baroCorrTable;
/**
* offset 1724
*/
pin_mode_e spi2SckMode;
/**
* offset 1728
*/
pin_mode_e spi2MosiMode;
/**
* offset 1732
*/
pin_mode_e spi2MisoMode;
/**
* Cranking fuel correction coefficient based on TPS
* offset 1736
*/
float crankingTpsCoef[CRANKING_CURVE_SIZE];
/**
* offset 1768
*/
float crankingTpsBins[CRANKING_CURVE_SIZE];
/**
* offset 1800
*/
float tachPulseDuractionMs;
/**
* Trigger cycle index at which we start tach pulse (performance consideration)
* offset 1804
*/
int tachPulseTriggerIndex;
/**
* offset 1808
*/
float wwaeTau;
/**
* offset 1812
*/
pid_s alternatorControl;
/**
* offset 1832
*/
pid_s etb;
/**
* offset 1852
*/
pid_s warmupAfrPid;
/**
* kPa value which is too low to be true
* offset 1872
*/
float mapErrorDetectionTooLow;
/**
* kPa value which is too high to be true
* offset 1876
*/
float mapErrorDetectionTooHigh;
/**
* RPMs prior to step1rpm point where ignition advance is retarded
* offset 1880
*/
int step1RpmWindow;
/**
* See cltIdleRpmBins
* offset 1884
*/
pid_s idleRpmPid;
/**
* Wall wetting/evaporation factor/Tau factor/fuel film
* offset 1904
*/
float wwaeBeta;
/**
* blue LED on discovery by default
* offset 1908
*/
brain_pin_e communicationLedPin;
/**
* green LED on discovery by default
* offset 1912
*/
brain_pin_e runningLedPin;
/**
* offset 1916
*/
brain_pin_e binarySerialTxPin;
/**
* offset 1920
*/
brain_pin_e binarySerialRxPin;
/**
* todo: finish pin migration from hard-coded to configurable?
* offset 1924
*/
brain_pin_e consoleSerialTxPin;
/**
* todo: finish pin migration from hard-coded to configurable?
* offset 1928
*/
brain_pin_e consoleSerialRxPin;
/**
* Knock sensor output knock detection threshold depending on current RPM
* offset 1932
*/
float knockNoise[ENGINE_NOISE_CURVE_SIZE];
/**
* offset 1964
*/
float knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE];
/**
* offset 1996
*/
float throttlePedalUpVoltage;
/**
* Pedal in the floor
* offset 2000
*/
float throttlePedalWOTVoltage;
/**
* offset 2004
*/
pin_output_mode_e stepperDirectionPinMode;
/**
* on ECU start turn fuel pump on to build fuel pressure
* offset 2008
*/
int16_t startUpFuelPumpDuration;
/**
* If RPM is close enough let's leave IAC alone
* offset 2010
*/
int16_t idlePidRpmDeadZone;
/**
* CLT-based target RPM for automatic idle controller
* offset 2012
*/
float cltIdleRpmBins[CLT_CURVE_SIZE];
/**
* See idleRpmPid
* offset 2076
*/
float cltIdleRpm[CLT_CURVE_SIZE];
/**
* set targetvbatt VOLTS
* offset 2140
*/
float targetVBatt;
/**
* Turn off alternator output above specified TPS
* offset 2144
*/
float alternatorOffAboveTps;
/**
* Prime pulse duration in ms
* See also isFasterEngineSpinUpEnabled
* set cranking_priming_pulse X
* offset 2148
*/
float startOfCrankingPrimingPulse;
/**
* offset 2152
*/
int16_t afterCrankingIACtaperDuration;
/**
* Extra IAC, in percent between 0 and 100, tapered between zero and idle deactivation TPS value
* offset 2154
*/
int16_t iacByTpsTaper;
/**
* offset 2156
*/
brain_pin_e LIS302DLCsPin;
/**
* offset 2160
*/
int tpsAccelLength;
/**
* offset 2164
*/
float tpsAccelEnrichmentThreshold;
/**
* angle between cam sensor and VVT zero position
* set vvt_offset X
* offset 2168
*/
float vvtOffset;
/**
* offset 2172
*/
int engineLoadAccelLength;
/**
* offset 2176
*/
float engineLoadDecelEnleanmentThreshold;
/**
* offset 2180
*/
float engineLoadDecelEnleanmentMultiplier;
/**
* offset 2184
*/
float engineLoadAccelEnrichmentThreshold;
/**
* offset 2188
*/
float engineLoadAccelEnrichmentMultiplier;
/**
* RED led on Discovery by default. TODO: start using this property
* offset 2192
*/
brain_pin_e fatalErrorPin;
/**
* TODO: start using this property
* offset 2196
*/
brain_pin_e warninigLedPin;
/**
* offset 2200
*/
brain_pin_e configResetPin;
/**
* offset 2204
*/
uint32_t uartConsoleSerialSpeed;
/**
* offset 2208
*/
float tpsDecelEnleanmentThreshold;
/**
* offset 2212
*/
float tpsDecelEnleanmentMultiplier;
/**
* ExpAverage alpha coefficient
* offset 2216
*/
float slowAdcAlpha;
/**
* set debug_mode X
* offset 2220
*/
debug_mode_e debugMode;
/**
* offset 2224
*/
brain_pin_e auxValves[AUX_DIGITAL_VALVE_COUNT];
/**
* CLT-based target AFR for PID-based control
* offset 2232
*/
float warmupTargetAfrBins[WARMUP_TARGET_AFR_SIZE];
/**
* offset 2248
*/
float warmupTargetAfr[WARMUP_TARGET_AFR_SIZE];
/**
* offset 2264
*/
float warmupAfrThreshold;
/**
* kPa value at which we need to cut fuel and spark, 0 if not enabled
* offset 2268
*/
float boostCutPressure;
/**
* offset 2272
*/
float mapAccelTaperBins[MAP_ACCEL_TAPER];
/**
* offset 2304
*/
float mapAccelTaperMult[MAP_ACCEL_TAPER];
/**
* This implementation makes a pulse every time one of the coils is charged, using coil dwell for pulse width. See also tachOutputPin
* offset 2336
*/
brain_pin_e dizzySparkOutputPin;
/**
* offset 2340
*/
pin_output_mode_e dizzySparkOutputPinMode;
/**
* todo: rename to fsioAnalogInputs
* offset 2344
*/
adc_channel_e fsioAdc[FSIO_ANALOG_INPUT_COUNT];
/**
* Fixed timing, useful for TDC testing
* offset 2360
*/
float fixedTiming;
/**
* MAP voltage for low point
* offset 2364
*/
float mapLowValueVoltage;
/**
* MAP voltage for low point
* offset 2368
*/
float mapHighValueVoltage;
/**
* EGO value correction
* offset 2372
*/
float egoValueShift;
/**
* 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.
* TODO #660
* offset 2376
*/
brain_input_pin_e camInput;
/**
* IAC position during cranking
* offset 2380
*/
int crankingIACposition;
/**
* offset 2384
*/
float tChargeMinRpmMinTps;
/**
* offset 2388
*/
float tChargeMinRpmMaxTps;
/**
* offset 2392
*/
float tChargeMaxRpmMinTps;
/**
* offset 2396
*/
float tChargeMaxRpmMaxTps;
/**
* offset 2400
*/
brain_pin_e auxPidPins[AUX_PID_COUNT];
/**
* offset 2416
*/
fsio_pwm_freq_t auxPidFrequency[AUX_PID_COUNT];
/**
* offset 2424
*/
int alternatorPwmFrequency;
/**
* offset 2428
*/
mass_storage_e storageMode;
/**
* offset 2432
*/
spi_device_e cj125SpiDevice;
/**
* offset 2436
*/
pin_output_mode_e cj125CsPinMode;
/**
* Narrow Band WBO Approximation
* offset 2440
*/
float narrowToWideOxygenBins[NARROW_BAND_WIDE_BAND_CONVERSION_SIZE];
/**
* offset 2472
*/
float narrowToWideOxygen[NARROW_BAND_WIDE_BAND_CONVERSION_SIZE];
/**
* set vvt_mode X
* offset 2504
*/
vvt_mode_e vvtMode;
/**
* offset 2508
*/
bi_quard_s biQuad;
/**
* CLT-based timing correction
* offset 2528
*/
float cltTimingBins[CLT_TIMING_CURVE_SIZE];
/**
* offset 2560
*/
float cltTimingExtra[CLT_TIMING_CURVE_SIZE];
/**
* offset 2592
*/
int nbVvtIndex;
/**
* offset 2596
*/
float autoTuneCltThreshold;
/**
* offset 2600
*/
float autoTuneTpsRocThreshold;
/**
* offset 2604
*/
float autoTuneTpsQuietPeriod;
/**
* offset 2608
*/
float postCrankingTargetClt;
/**
* Fuel multiplier taper, see also postCrankingDurationSec
* offset 2612
*/
float postCrankingFactor;
/**
* See also postCrankingFactor
* offset 2616
*/
float postCrankingDurationSec;
/**
* todo: finish implementation #332
* offset 2620
*/
ThermistorConf auxTempSensor1;
/**
* todo: finish implementation #332
* offset 2652
*/
ThermistorConf auxTempSensor2;
/**
* offset 2684
*/
int16_t fuelClosedLoopCltThreshold;
/**
* offset 2686
*/
int16_t fuelClosedLoopTpsThreshold;
/**
* offset 2688
*/
int16_t fuelClosedLoopRpmThreshold;
/**
* offset 2690
*/
int16_t etbFreq;
/**
* offset 2692
*/
pid_s fuelClosedLoopPid;
/**
* offset 2712
*/
float fuelClosedLoopAfrHighThreshold;
/**
* offset 2716
*/
pin_mode_e stepperEnablePinMode;
/**
* lambda input
* offset 2720
*/
adc_channel_e cj125ua;
/**
* heater input
* offset 2724
*/
adc_channel_e cj125ur;
/**
* per-cylinder timing correction
* offset 2728
*/
cfg_float_t_1f timing_offset_cylinder[IGNITION_PIN_COUNT];
/**
* offset 2776
*/
pin_input_mode_e brakePedalPinMode;
/**
* offset 2780
*/
float idlePidActivationTime;
/**
* offset 2784
*/
spi_device_e sdCardSpiDevice;
/**
* offset 2788
*/
pin_mode_e spi3SckMode;
/**
* offset 2792
*/
pin_mode_e spi3MosiMode;
/**
* offset 2796
*/
pin_mode_e spi3MisoMode;
/**
* offset 2800
*/
pin_mode_e spi1SckMode;
/**
* offset 2804
*/
pin_mode_e spi1MosiMode;
/**
* offset 2808
*/
pin_mode_e spi1MisoMode;
/**
* offset 2812
*/
brain_pin_e brakePedalPin;
/**
* offset 2816
*/
pid_s auxPid[AUX_PID_COUNT];
/**
* offset 2896
*/
oil_pressure_config_s oilPressure;
/**
* offset 2916
*/
spi_device_e accelerometerSpiDevice;
/**
* offset 2920
*/
float fsioCurve1Bins[FSIO_CURVE_16];
/**
* offset 2984
*/
float fsioCurve1[FSIO_CURVE_16];
/**
* offset 3048
*/
float fsioCurve2Bins[FSIO_CURVE_16];
/**
* offset 3112
*/
float fsioCurve2[FSIO_CURVE_16];
/**
* offset 3176
*/
float fsioCurve3Bins[FSIO_CURVE_8];
/**
* offset 3208
*/
float fsioCurve3[FSIO_CURVE_8];
/**
* offset 3240
*/
float fsioCurve4Bins[FSIO_CURVE_8];
/**
* offset 3272
*/
float fsioCurve4[FSIO_CURVE_8];
/**
* offset 3304
*/
brain_input_pin_e flexFuelSensor;
/**
* offset 3308
*/
brain_pin_e test557pin;
/**
* Optional timing advance table for Cranking (see useSeparateAdvanceForCranking)
* offset 3312
*/
float crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE];
/**
* Optional timing advance table for Cranking (see useSeparateAdvanceForCranking)
* offset 3328
*/
float crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE];
/**
* todo: more comments
* offset 3344
*/
brain_pin_e servoOutputPins[SERVO_COUNT];
/**
* offset 3376
*/
int16_t coastingFuelCutRpmHigh;
/**
* offset 3378
*/
int16_t coastingFuelCutRpmLow;
/**
* percent between 0 and 100
* offset 3380
*/
int16_t coastingFuelCutTps;
/**
* Fuel cutoff is deactivated if CLT<threshold
* offset 3382
*/
int16_t coastingFuelCutClt;
/**
* Increases PID reaction for RPM<target by adding extra percent to PID-error
* offset 3384
*/
int16_t pidExtraForLowRpm;
/**
* maximum manifold pressure for fuel cut
* offset 3386
*/
int16_t coastingFuelCutMap;
/**
* CLT-based idle position for coasting (used in Auto-PID Idle mode)
* offset 3388
*/
float iacCoastingBins[CLT_CURVE_SIZE];
/**
* CLT-based idle position for coasting (used in Auto-PID Idle mode)
* offset 3452
*/
float iacCoasting[CLT_CURVE_SIZE];
/**
* offset 3516
*/
ignition_tps_table_t ignitionTpsTable;
/**
* offset 4028
*/
float ignitionTpsBins[IGN_TPS_COUNT];
/**
* offset 4092
*/
float tChargeAirCoefMin;
/**
* offset 4096
*/
float tChargeAirCoefMax;
/**
* offset 4100
*/
float tChargeAirFlowMax;
/**
* offset 4104
*/
float tChargeAirIncrLimit;
/**
* offset 4108
*/
float tChargeAirDecrLimit;
/**
* offset 4112
*/
tChargeMode_e tChargeMode;
/**
* target TPS value, 0 to 100%
* TOOD: use int8 data date once we template interpolation method
* offset 4116
*/
float etbBiasBins[ETB_BIAS_CURVE_LENGTH];
/**
* PWM bias, 0 to 100%
* offset 4148
*/
float etbBiasValues[ETB_BIAS_CURVE_LENGTH];
/**
* offset 4180
*/
float hip9011Gain;
/**
* offset 4184
*/
int unusedEnd[574];
/** total size 6480*/
} engine_configuration_s;
// start of persistent_config_s
typedef struct {
/**
* offset 0
*/
engine_configuration_s engineConfiguration;
/**
* CLT-based cranking position multiplier for simple manual idle controller
* offset 6480
*/
float cltCrankingCorrBins[CLT_CRANKING_CURVE_SIZE];
/**
* CLT-based cranking position multiplier for simple manual idle controller
* offset 6512
*/
float cltCrankingCorr[CLT_CRANKING_CURVE_SIZE];
/**
* Optional timing advance table for Idle (see useSeparateAdvanceForIdle)
* offset 6544
*/
float idleAdvanceBins[IDLE_ADVANCE_CURVE_SIZE];
/**
* Optional timing advance table for Idle (see useSeparateAdvanceForIdle)
* offset 6576
*/
float idleAdvance[IDLE_ADVANCE_CURVE_SIZE];
/**
* Optional VE table for Idle (see useSeparateVEForIdle)
* offset 6608
*/
float idleVeBins[IDLE_VE_CURVE_SIZE];
/**
* Optional VE table for Idle (see useSeparateVEForIdle)
* offset 6640
*/
float idleVe[IDLE_VE_CURVE_SIZE];
/**
* offset 6672
*/
le_formula_t fsioFormulas[FSIO_COMMAND_COUNT];
/**
* offset 9872
*/
le_formula_t timingMultiplier;
/**
* offset 10072
*/
le_formula_t timingAdditive;
/**
* offset 10272
*/
float cltFuelCorrBins[CLT_CURVE_SIZE];
/**
* offset 10336
*/
float cltFuelCorr[CLT_CURVE_SIZE];
/**
* offset 10400
*/
float iatFuelCorrBins[IAT_CURVE_SIZE];
/**
* offset 10464
*/
float iatFuelCorr[IAT_CURVE_SIZE];
/**
* offset 10528
*/
float crankingFuelCoef[CRANKING_CURVE_SIZE];
/**
* offset 10560
*/
float crankingFuelBins[CRANKING_CURVE_SIZE];
/**
* offset 10592
*/
float crankingCycleCoef[CRANKING_CURVE_SIZE];
/**
* offset 10624
*/
float crankingCycleBins[CRANKING_CURVE_SIZE];
/**
* CLT-based idle position multiplier for simple manual idle controller
* offset 10656
*/
float cltIdleCorrBins[CLT_CURVE_SIZE];
/**
* CLT-based idle position multiplier for simple manual idle controller
* offset 10720
*/
float cltIdleCorr[CLT_CURVE_SIZE];
/**
* kg/hour value.
* By the way 2.081989116 kg/h = 1 ft<66>/m
* offset 10784
*/
float mafDecoding[MAF_DECODING_COUNT];
/**
* offset 11808
*/
float mafDecodingBins[MAF_DECODING_COUNT];
/**
* offset 12832
*/
angle_table_t ignitionIatCorrTable;
/**
* offset 13856
*/
float ignitionIatCorrLoadBins[IGN_LOAD_COUNT];
/**
* offset 13920
*/
float ignitionIatCorrRpmBins[IGN_RPM_COUNT];
/**
* offset 13984
*/
angle_table_t injectionPhase;
/**
* offset 15008
*/
float injPhaseLoadBins[FUEL_LOAD_COUNT];
/**
* offset 15072
*/
float injPhaseRpmBins[FUEL_RPM_COUNT];
/**
* offset 15136
*/
fuel_table_t fuelTable;
/**
* offset 16160
*/
float fuelLoadBins[FUEL_LOAD_COUNT];
/**
* RPM is float and not integer in order to use unified methods for interpolation
* offset 16224
*/
float fuelRpmBins[FUEL_RPM_COUNT];
/**
* offset 16288
*/
ignition_table_t ignitionTable;
/**
* offset 17312
*/
float ignitionLoadBins[IGN_LOAD_COUNT];
/**
* offset 17376
*/
float ignitionRpmBins[IGN_RPM_COUNT];
/**
* offset 17440
*/
ve_table_t veTable;
/**
* offset 18464
*/
float veLoadBins[FUEL_LOAD_COUNT];
/**
* offset 18528
*/
float veRpmBins[FUEL_RPM_COUNT];
/**
* offset 18592
*/
afr_table_t afrTable;
/**
* offset 18848
*/
float afrLoadBins[FUEL_LOAD_COUNT];
/**
* offset 18912
*/
float afrRpmBins[FUEL_RPM_COUNT];
/**
* offset 18976
*/
tps_tps_table_t tpsTpsAccelTable;
/**
* offset 19232
*/
float tpsTpsAccelFromRpmBins[TPS_TPS_ACCEL_TABLE];
/**
* RPM is float and not integer in order to use unified methods for interpolation
* offset 19264
*/
float tpsTpsAccelToRpmBins[TPS_TPS_ACCEL_TABLE];
/**
* offset 19296
*/
fsio_table_8x8_f32t fsioTable1;
/**
* offset 19552
*/
float fsioTable1LoadBins[FSIO_TABLE_8];
/**
* RPM is float and not integer in order to use unified methods for interpolation
* offset 19584
*/
float fsioTable1RpmBins[FSIO_TABLE_8];
/**
* offset 19616
*/
fsio_table_8x8_u8t fsioTable2;
/**
* offset 19680
*/
float fsioTable2LoadBins[FSIO_TABLE_8];
/**
* RPM is float and not integer in order to use unified methods for interpolation
* offset 19712
*/
float fsioTable2RpmBins[FSIO_TABLE_8];
/**
* offset 19744
*/
fsio_table_8x8_u8t fsioTable3;
/**
* offset 19808
*/
float fsioTable3LoadBins[FSIO_TABLE_8];
/**
* RPM is float and not integer in order to use unified methods for interpolation
* offset 19840
*/
float fsioTable3RpmBins[FSIO_TABLE_8];
/**
* offset 19872
*/
fsio_table_8x8_u8t fsioTable4;
/**
* offset 19936
*/
float fsioTable4LoadBins[FSIO_TABLE_8];
/**
* RPM is float and not integer in order to use unified methods for interpolation
* offset 19968
*/
float fsioTable4RpmBins[FSIO_TABLE_8];
/** total size 20000*/
} persistent_config_s;
#endif
// end
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Jan 26 23:18:47 EST 2019