rusefi-1/firmware/controllers/algo/engine_configuration_genera...

2206 lines
38 KiB
C
Raw Blame History

// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Nov 24 15:40:28 EST 2017
// begin
#ifndef ENGINE_CONFIGURATION_GENERATED_H_
#define ENGINE_CONFIGURATION_GENERATED_H_
#include "rusefi_types.h"
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;
/**
* offset 16
*/
int16_t minValue;
/**
* offset 18
*/
int16_t maxValue;
/** total size 20*/
} pid_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;
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
*/
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
*/
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
*/
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
*/
typedef struct {
/**
* offset 0
*/
thermistor_conf_s config;
/**
* offset 28
*/
adc_channel_e adcChannel;
/** total size 32*/
} ThermistorConf;
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;
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;
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
*/
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;
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;
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;
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;
/**
* 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[3];
/**
* 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];
/**
* 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;
/**
* 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 idleStepperPulseDuration;
/**
* 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;
/**
* offset 752
*/
float hip9011Gain;
/**
* 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;
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 issue_294_10 : 1;
/**
offset 76 bit 11 */
bool issue_294_11 : 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
* offset 80
*/
int16_t tpsMin;
/**
* Full throtle. tpsMax value as 10 bit ADC value. Not Voltage!
* offset 82
*/
int16_t tpsMax;
/**
* TPS error detection, what TPS % value is unrealistically low
* offset 84
*/
int16_t tpsErrorDetectionTooLow;
/**
* 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;
/**
* 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
* 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;
/**
* 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;
/**
* offset 588
*/
adc_channel_e pedalPositionChannel;
/**
* @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;
/**
offset 1472 bit 2 */
bool isVerboseIAC : 1;
/**
* enable verbose_etb
offset 1472 bit 3 */
bool isVerboseETB : 1;
/**
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 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 anotherUnusedBit1 : 1;
/**
offset 1484 bit 7 */
bool anotherUnusedBit2 : 1;
/**
offset 1484 bit 8 */
bool isTunerStudioEnabled : 1;
/**
offset 1484 bit 9 */
bool isWaveAnalyzerEnabled : 1;
/**
offset 1484 bit 10 */
bool anotherUnusedBit212 : 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 1488
*/
uint32_t engineChartSize;
/**
* set idle_rpm X
* See also cltIdleCorr
* offset 1492
*/
int targetIdleRpm;
/**
* 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 suckedOffCoef;
/**
* 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;
/**
* offset 1884
*/
pid_s idleRpmPid;
/**
* offset 1904
*/
float addedToWallCoef;
/**
* blue LED on discovery by default
* offset 1908
*/
brain_pin_e communicationPin;
/**
* green LED on discovery by default
* offset 1912
*/
brain_pin_e runningPin;
/**
* 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;
/**
* offset 2008
*/
int16_t startUpFuelPumpDuration;
/**
* If RPM is close enough let's leave IAC alone
* offset 2010
*/
int16_t iacRPMErrorThreshold;
/**
* CLT-based target RPM for automatic idle controller
* offset 2012
*/
float cltIdleRpmBins[CLT_CURVE_SIZE];
/**
* 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;
/**
* 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;
/**
* 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 warninigPin;
/**
* 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;
/**
* offset 2376
*/
brain_input_pin_e camInput;
/**
* IAC cranking position
* 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;
/**
* offset 2612
*/
float 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;
/**
* lampda input
* offset 2720
*/
adc_channel_e cj125ua;
/**
* heater input
* offset 2724
*/
adc_channel_e cj125ur;
/**
* 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
*/
int unusedEnd[842];
/** total size 6672*/
} engine_configuration_s;
typedef struct {
/**
* offset 0
*/
engine_configuration_s engineConfiguration;
/**
* 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, or target RPM multiplier for PID-based idle
* offset 10656
*/
float cltIdleCorrBins[CLT_CURVE_SIZE];
/**
* CLT-based idle position multiplier for simple manual idle controller, or target RPM multiplier for PID-based idle
* 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 Fri Nov 24 15:40:28 EST 2017