rusefi-1/firmware/rusefi_config.ini

450 lines
15 KiB
INI
Raw Normal View History

2015-01-12 13:03:38 -08:00
! this file defines the format of rusEfi persistent configuration structure
! this file is processed by ../java_tools/config_definition.jar tool
!
2015-01-23 14:04:11 -08:00
! comments start with '!'
2015-01-12 13:03:38 -08:00
!
! each field is declared as
2015-01-21 16:03:58 -08:00
! type name;comment
2015-01-12 11:03:37 -08:00
2015-01-15 14:03:57 -08:00
2015-01-22 12:06:00 -08:00
! all the sub-structures are going to be nested withint the primary structure, that's
! needed to get a proper TunerStudio file
struct engine_configuration_s
2015-01-22 18:04:47 -08:00
#define FUEL_RPM_COUNT 16
#define FUEL_LOAD_COUNT 16
2015-01-22 12:06:00 -08:00
2015-01-15 14:03:57 -08:00
struct cranking_parameters_s
2015-01-22 18:04:47 -08:00
float baseFuel;;"ms", 1, 0, 0, 200, 1
int16_t rpm;This value controls what RPM values we consider 'cranking' (any RPM below 'crankingRpm')\nAnything above 'crankingRpm' would be 'running';"RPM", 1, 0, 0, 3000, 0
2015-01-21 14:04:08 -08:00
end_struct
2015-01-23 13:05:07 -08:00
custom air_pressure_sensor_type_e 4 bits, U32, @OFFSET@, [0:1] "Custom", "DENSO183", "MPX4250", "INVALID"
custom adc_channel_e 4 bits, U32, @OFFSET@, [0:3] "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5"
2015-01-15 14:03:57 -08:00
2015-01-21 14:04:08 -08:00
struct air_pressure_sensor_config_s
2015-01-22 18:04:47 -08:00
float valueAt0;kPa value at zero volts;"kpa", 1, 0, 0, 450, 2
float valueAt5;kPa value at 5 volts;"kpa", 1, 0, 0, 450, 2
air_pressure_sensor_type_e type;
2015-01-21 16:03:58 -08:00
adc_channel_e hwChannel;
2015-01-15 14:03:57 -08:00
end_struct
2015-01-21 14:04:08 -08:00
#define MAP_ANGLE_SIZE 8
#define MAP_WINDOW_SIZE 8
2015-01-21 16:03:58 -08:00
struct MAP_sensor_config_s @brief MAP averaging configuration
2015-01-22 18:04:47 -08:00
float[MAP_ANGLE_SIZE] samplingAngleBins;;"RPM", 1, 0, 0.0, 18000, 2
float[MAP_ANGLE_SIZE] samplingAngle;@brief MAP averaging sampling start angle, by RPM;"deg", 1, 0, 0.0, 90, 2
float[MAP_WINDOW_SIZE] samplingWindowBins;;"RPM", 1, 0, 0.0, 18000, 2
float[MAP_WINDOW_SIZE] samplingWindow;@brief MAP averaging angle duration, by RPM;"deg", 1, 0, 0.0, 90, 2
2015-01-21 16:03:58 -08:00
air_pressure_sensor_config_s sensor
2015-01-21 14:04:08 -08:00
end_struct
struct ThermistorConf @brief Thermistor curve parameters
2015-01-22 18:04:47 -08:00
float tempC_1;these values are in Celcuus;"*C", 1, 0, -40, 200, 1
float tempC_2;;"*C", 1, 0, -40, 200, 1
float tempC_3;;"*C", 1, 0, -40, 200, 1
float resistance_1;;"Ohm", 1, 0, 0, 200000, 1
float resistance_2;;"Ohm", 1, 0, 0, 200000, 1
float resistance_3;;"Ohm", 1, 0, 0, 200000, 1
2015-01-21 14:04:08 -08:00
2015-01-22 18:04:47 -08:00
float bias_resistor;;"Ohm", 1, 0, 0, 200000, 1
2015-01-21 14:04:08 -08:00
2015-01-21 16:03:58 -08:00
float s_h_a;
float s_h_b;
float s_h_c;
2015-01-15 14:03:57 -08:00
2015-01-21 14:04:08 -08:00
end_struct
2015-01-15 14:03:57 -08:00
2015-01-23 13:05:07 -08:00
custom engine_type_e 4 bits, S32, @OFFSET@, [0:2], "AUDI_AAN", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "FORD_FIESTA", "NISSAN_PRIMERA", "HONDA_ACCORD", "FORD_INLINE_6_1995", "GY6_139QMB"
2015-01-21 16:03:58 -08:00
engine_type_e engineType;http://rusefi.com/wiki/index.php?title=Manual:Engine_Type
2015-01-12 11:03:37 -08:00
2015-01-21 16:03:58 -08:00
int headerMagicValue;this magic number is used to make sure that what we read from Flash is in fact some configuration
2015-01-12 13:03:38 -08:00
#define CLT_CURVE_SIZE 16
#define IAT_CURVE_SIZE 16
#define VBAT_INJECTOR_CURVE_SIZE 8
#define IGN_LOAD_COUNT 16
#define IGN_RPM_COUNT 16
2015-01-21 21:04:03 -08:00
float[VBAT_INJECTOR_CURVE_SIZE] battInjectorLagCorrBins;;"V", 1, 0, 0.0, 20.0, 2
float[VBAT_INJECTOR_CURVE_SIZE] battInjectorLagCorr;;"ms/V", 1, 0, 0.0, 50.0, 2
2015-01-12 13:03:38 -08:00
2015-01-21 21:04:03 -08:00
float[CLT_CURVE_SIZE] cltFuelCorrBins;;"C", 1, 0, -100.0, 250.0, 2
float[CLT_CURVE_SIZE] cltFuelCorr;;"%", 100, 0, 0.0, 500.0, 2
2015-01-12 13:03:38 -08:00
2015-01-21 21:04:03 -08:00
float[IAT_CURVE_SIZE] iatFuelCorrBins;;"C", 1, 0, -100.0, 250.0, 2
float[IAT_CURVE_SIZE] iatFuelCorr;;"%", 100, 0, 0.0, 500.0, 2
2015-01-12 13:03:38 -08:00
2015-01-21 16:03:58 -08:00
int16_t directSelfStimulation;Should the trigger emulator push data right into trigger input, eliminating the need for physical jumper wires?\nPS: Funny name, right? :)\ntodo: make this a bit on some bit field
2015-01-12 13:03:38 -08:00
2015-01-21 21:04:03 -08:00
int16_t tpsMin;todo: extract these two fields into a structure\ntodo: we need two sets of TPS parameters - modern ETBs have to sensors;"ADC", 1, 0, 0, 1023, 0
int16_t tpsMax;tpsMax value as 10 bit ADC value. Not Voltage!;"ADC", 1, 0, 0, 1023, 0
2015-01-15 14:03:57 -08:00
2015-01-22 12:06:00 -08:00
uint16_t unused334;
2015-01-12 13:03:38 -08:00
2015-01-22 16:04:13 -08:00
int16_t tpsErrorLowValue;todo: finish implementation. These values are used for TPS disconnect detection;"*C", 1, 0, -40, 200, 1
int16_t tpsErrorHighValue;;"*C", 1, 0, -40, 200, 1
2015-01-12 13:03:38 -08:00
2015-01-22 16:04:13 -08:00
float primingSquirtDurationMs;;"*C", 1, 0, -40, 200, 1
int engineCycle;360 for two-stroke\n720 for four-stroke;"engine cycle", 1, 0, 0, 1000, 0
2015-01-21 14:04:08 -08:00
2015-01-22 18:04:47 -08:00
cranking_parameters_s cranking
2015-01-21 16:03:58 -08:00
MAP_sensor_config_s map;@see hasMapSensor\n@see isMapAveragingEnabled
2015-01-21 14:04:08 -08:00
2015-01-22 18:04:47 -08:00
ThermistorConf clt;todo: merge with channel settings, use full-scale Thermistor here!
ThermistorConf iat;
2015-01-21 16:03:58 -08:00
#define DWELL_COUNT 8
#define CRANKING_CURVE_SIZE 8
#define IGN_LOAD_COUNT 16
#define IGN_RPM_COUNT 16
2015-01-22 18:04:47 -08:00
float[DWELL_COUNT] sparkDwellBins;;"RPM", 1, 0.0, 0.0, 18000, 2
float[DWELL_COUNT] sparkDwell;;"ms", 1, 0.0, 0.0, 30.0, 2
2015-01-21 16:03:58 -08:00
2015-01-22 18:04:47 -08:00
float[IGN_LOAD_COUNT] ignitionLoadBins;;"Load", 1, 0.0, 0, 300.0, 2
float[IGN_RPM_COUNT] ignitionRpmBins;;"RPM", 1, 0.0, 0, 18000.0, 2
2015-01-21 16:03:58 -08:00
2015-01-22 18:04:47 -08:00
float ignitionBaseAngle;this value could be used to offset the whole ignition timing table by a constant;"RPM", 1, 0, 0, 3000.0, 0
2015-01-21 16:03:58 -08:00
2015-01-22 18:04:47 -08:00
float crankingChargeAngle;While cranking (which causes battery voltage to drop) we can calculate dwell time in shaft\ndegrees, not in absolute time as in running mode.;"deg", 1, 0, 0, 3000.0, 0
2015-01-21 16:03:58 -08:00
2015-01-23 13:05:07 -08:00
custom timing_mode_e 4 bits, U32, @OFFSET@ [0:0], "dynamic", "fixed"
2015-01-21 16:03:58 -08:00
2015-01-22 18:04:47 -08:00
timing_mode_e timingMode;
2015-01-22 12:06:00 -08:00
2015-01-22 18:04:47 -08:00
float fixedModeTiming;This value is used in 'fixed timing' mode, i.e. constant timing\nThis mode is useful for instance while adjusting distributor location;"RPM", 1, 0, 0, 3000.0, 0
float injectorLag;;"msec", 1, 0, -10, 25.50, 2
2015-01-22 12:06:00 -08:00
2015-01-22 18:04:47 -08:00
float[FUEL_LOAD_COUNT] fuelLoadBins;;"V", 1, 0, 0.0, 300.0, 2
float[FUEL_RPM_COUNT] fuelRpmBins;RPM is float and not integer in order to use unified methods for interpolation;"RPM", 1, 0, 0.0, 25500.0, 2
2015-01-22 12:06:00 -08:00
2015-01-22 18:04:47 -08:00
float displacement;Engine displacement, in liters\nsee also cylindersCount;"L", 1, 0, 0, 1000.0, 2
int rpmHardLimit;;"rpm", 1, 0, 0, 10000.0, 2
2015-01-22 12:06:00 -08:00
2015-01-22 18:04:47 -08:00
injection_mode_e crankingInjectionMode;
injection_mode_e injectionMode;
2015-01-22 12:06:00 -08:00
2015-01-23 07:04:00 -08:00
float globalTriggerAngleOffset;This field is the angle between Top Dead Center (TDC) and the first trigger event.\nKnowing this angle allows us to control timing and other angles in reference to TDC.;"deg", 1, 0, 0, 720, 0
float analogInputDividerCoefficient;This parameter holds the coefficient of input voltage dividers;"coef", 1, 0, 0.01, 10.0, 2
2015-01-22 12:06:00 -08:00
2015-01-23 13:05:07 -08:00
custom engine_load_mode_e 4 bits, U32, @OFFSET@, [0:1], "MAF", "Alpha-N", "MAP", "SPEED DENSITY"
2015-01-23 07:04:00 -08:00
engine_load_mode_e algorithm;This setting controls which algorithm is used for ENGINE LOAD
float vbattDividerCoeff;;"coef", 1, 0, 0.01, 20.0, 2
float fanOnTemperature;Cooling fan turn-on temperature threshold, in Celsuis;"*C", 1, 0, 0, 1000.0, 2
float fanOffTemperature;Cooling fan turn-off temperature threshold, in Celsuis;"*C", 1, 0, 0, 1000.0, 2
2015-01-23 09:04:28 -08:00
brain_pin_e vehicleSpeedSensorInputPin;
float vehicleSpeedCoef;This coefficient translates vehicle speed input frequency (in Hz) into vehicle speed, km/h
2015-01-23 13:05:07 -08:00
custom canNbcType 4 bits, U32, @OFFSET@, [0:1], "BMW", "FIAT", "VAG" , "INVALID"
2015-01-23 09:04:28 -08:00
can_nbc_e canNbcType;
2015-01-24 15:04:20 -08:00
int canSleepPeriod;;"ms", 1, 0, 0, 1000.0, 2
2015-01-23 09:04:28 -08:00
int cylindersCount;
2015-01-24 15:04:20 -08:00
custom ignition_mode_e 4 bits, U32, %OFFSET%, [0:1], "One coil", "Individual Coils", "Wasted", "INVALID"
2015-01-23 09:04:28 -08:00
ignition_mode_e ignitionMode;
2015-01-24 15:04:20 -08:00
custom firing_order_e 4 bits, U32, %OFFSET%, [0:2], "One Cylinder", "1-3-4-2", "1-2-4-3", "1-3-2-4", "1-5-3-6-2-4", "1-8-4-3-6-5-7-2", "INVALID", "INVALID"
2015-01-23 09:04:28 -08:00
firing_order_e firingOrder;
2015-01-24 15:04:20 -08:00
2015-01-23 09:04:28 -08:00
float rpmMultiplier;todo: refactor this, see operation_mode_e
2015-01-24 15:04:20 -08:00
custom display_mode_e 4 bits, U32, %OFFSET%, [0:1], "none", "hd44780", "hd44780 over pcf8574", "INVALID"
2015-01-23 09:04:28 -08:00
display_mode_e displayMode;
2015-01-24 15:04:20 -08:00
custom log_format_e 4 bits, U32, %OFFSET%, [0:0], "native", "Mega Log Viewer"
2015-01-23 09:04:28 -08:00
log_format_e logFormat;
2015-01-24 15:04:20 -08:00
int firmwareVersion;"index", 1, 0, 0, 300, 0
int HD44780width;"index", 1, 0, 0, 300, 0
int HD44780height;"index", 1, 0, 0, 300, 0
2015-01-23 09:04:28 -08:00
adc_channel_e tpsAdcChannel;
int overrideCrankingIgnition;
int analogChartFrequency;
struct trigger_config_s @brief Trigger wheel(s) configuration
2015-01-24 15:04:20 -08:00
custom trigger_type_e 4 bits, U32, %OFFSET%, [0:3], "custom toothed wheel", "ford aspire", "dodge neon", "Miata NA", "Miata NB", "GM_7X", "Cooper", "Escort GT", "60/2", "36/1", "Accord CD", "MITSU", "INVALID", "INVALID", "INVALID", "INVALID"
2015-01-23 10:06:12 -08:00
trigger_type_e type;
int customIsSynchronizationNeeded;
2015-01-24 15:04:20 -08:00
int customTotalToothCount;;"number", 1, 0.0, 0, 1000.0, 2
int customSkippedToothCount;;"number", 1, 0.0, 0, 1000.0, 2
2015-01-23 10:06:12 -08:00
2015-01-24 15:04:20 -08:00
float customSyncRatioFrom;;"number", 1, 0.0, 0, 1000.0, 2
float customSyncRatioTo;;"number", 1, 0.0, 0, 1000.0, 2
2015-01-23 10:06:12 -08:00
int customUseRiseEdge;
2015-01-23 09:04:28 -08:00
end_struct
2015-01-23 07:04:00 -08:00
2015-01-23 10:06:12 -08:00
trigger_config_s trigger;
2015-01-23 13:05:07 -08:00
!custom spi_device_e
2015-01-23 10:06:12 -08:00
spi_device_e hip9011SpiDevice;
adc_channel_e vbattAdcChannel;
float globalFuelCorrection;
adc_channel_e cltAdcChannel;todo: merge with channel settings, use full-scale Thermistor!
adc_channel_e iatAdcChannel;
adc_channel_e mafAdcChannel;
2015-01-23 11:07:33 -08:00
struct afr_sensor_s
adc_channel_e afrAdcChannel;
float v1;
float value1;
float v2;
float value2;
end_struct
afr_sensor_s afrSensor;@see hasAfrSensor
float injectionAngle;this is about deciding when the injector starts it's squirt
float crankingTimingAngle;
float diffLoadEnrichmentCoef;
air_pressure_sensor_config_s baroSensor;@see hasBaroSensor
float[FUEL_LOAD_COUNT] veLoadBins;
float[FUEL_RPM_COUNT] veRpmBins;
float[FUEL_LOAD_COUNT] afrLoadBins;
float[FUEL_RPM_COUNT] afrRpmBins;
2015-01-23 13:05:07 -08:00
custom fuel_table_t 1024 TODO
custom ignition_table_t 1024 TODO
2015-01-23 11:07:33 -08:00
2015-01-23 13:05:07 -08:00
fuel_table_t fuelTable;
ignition_table_t ignitionTable;
fuel_table_t veTable;
fuel_table_t afrTable;
#define INJECTION_PIN_COUNT 12
#define IGNITION_PIN_COUNT 12
#define MAX31855_CS_COUNT 8
#define JOYSTICK_PIN_COUNT 5
struct board_configuration_s
brain_pin_e idleValvePin;
pin_output_mode_e idleValvePinMode;
brain_pin_e fuelPumpPin;
pin_output_mode_e fuelPumpPinMode;
brain_pin_e[INJECTION_PIN_COUNT] injectionPins;
pin_output_mode_e injectionPinMode;
brain_pin_e[IGNITION_PIN_COUNT] ignitionPins;
pin_output_mode_e ignitionPinMode;
brain_pin_e malfunctionIndicatorPin;
pin_output_mode_e malfunctionIndicatorPinMode;
brain_pin_e fanPin;
pin_output_mode_e fanPinMode;
brain_pin_e electronicThrottlePin1;
pin_output_mode_e electronicThrottlePin1Mode;
brain_pin_e clutchDownPin;some cars have a switch to indicate that clutch pedal is all the way down
pin_input_mode_e clutchDownPinMode;
brain_pin_e alternatorControlPin;
pin_output_mode_e alternatorControlPinMode;
brain_pin_e HD44780_rs;
brain_pin_e HD44780_e;
brain_pin_e HD44780_db4;
brain_pin_e HD44780_db5;
brain_pin_e HD44780_db6;
brain_pin_e HD44780_db7;
brain_pin_e gps_rx_pin;
brain_pin_e gps_tx_pin;
int idleSolenoidFrequency;
int triggerSimulatorFrequency;
spi_device_e digitalPotentiometerSpiDevice;Digital Potentiometer is used by stock ECU stimulation code
#define DIGIPOT_COUNT 4
brain_pin_e[DIGIPOT_COUNT] digitalPotentiometerChipSelect;
#define HW_MAX_ADC_INDEX 16
adc_channel_mode_e[HW_MAX_ADC_INDEX] adcHwChannelEnabled;
brain_pin_e[3] triggerInputPins;
brain_pin_e mainRelayPin;
int idleThreadPeriod;
int consoleLoopPeriod;
int lcdThreadPeriod;
int tunerStudioThreadPeriod;
int generalPeriodicThreadPeriod;
uint32_t tunerStudioSerialSpeed;
brain_pin_e boardTestModeJumperPin;
can_device_mode_e canDeviceMode;
brain_pin_e canTxPin;
brain_pin_e canRxPin;
2015-01-23 14:04:11 -08:00
#define TRIGGER_SIMULATOR_PIN_COUNT 3
brain_pin_e[TRIGGER_SIMULATOR_PIN_COUNT] triggerSimulatorPins;
pin_output_mode_e[TRIGGER_SIMULATOR_PIN_COUNT] triggerSimulatorPinModes;
brain_pin_e o2heaterPin;
pin_output_mode_e o2heaterPinModeTodO;
bit is_enabled_spi_1
bit is_enabled_spi_2
bit is_enabled_spi_3
bit isSdCardEnabled
bit isFastAdcEnabled
bit isEngineControlEnabled
bit isHip9011Enabled
#define LOGIC_ANALYZER_CHANNEL_COUNT 4
brain_pin_e[LOGIC_ANALYZER_CHANNEL_COUNT] logicAnalyzerPins;
uint8_t[LOGIC_ANALYZER_CHANNEL_COUNT] logicAnalyzerMode;default or inverted input
int unrealisticRpmThreashold;
pin_output_mode_e mainRelayPinMode;
2015-01-24 15:04:20 -08:00
custom egt_cs_array_t 32 todo array? type?
2015-01-23 14:04:11 -08:00
egt_cs_array_t max31855_cs;
spi_device_e max31855spiDevice;
#define LE_COMMAND_COUNT 16
brain_pin_e[LE_COMMAND_COUNT] fsioPins;
pin_output_mode_e[LE_COMMAND_COUNT] gpioPinModes;
brain_pin_e[JOYSTICK_PIN_COUNT] joystickPins;
2015-01-24 15:04:20 -08:00
brain_pin_e triggerErrorPin;This pin is used for debugging - snap a logic analyzer on it and see if it's ever high
pin_output_mode_e triggerErrorPinMode;
float idleSolenoidPwm;value between 0 and 1
brain_pin_e acRelayPin;
pin_output_mode_e acRelayPinMode;
int16_t[LE_COMMAND_COUNT] fsioFrequency;
brain_pin_e hip9011CsPin;
brain_pin_e hip9011IntHoldPin;
brain_pin_e hip9011OutPin;
float[LE_COMMAND_COUNT] fsio_setting;
brain_pin_e spi1mosiPin;
brain_pin_e spi1misoPin;
brain_pin_e spi1sckPin;
brain_pin_e spi2mosiPin;
brain_pin_e spi2misoPin;
brain_pin_e spi2sckPin;
brain_pin_e spi3mosiPin;
brain_pin_e spi3misoPin;
brain_pin_e spi3sckPin;
float hip9011Gain;
brain_pin_e joystickCenterPin;
brain_pin_e joystickAPin;
brain_pin_e joystickBPin;
brain_pin_e joystickCPin;
brain_pin_e joystickDPin;
custom analog_chart_e 4 bits, S32, @OFFSET@, [0:1], "none", "trigger", "MAP", "INVALID"
analog_chart_e analogChartMode;
int[6] unusedbs;
custom le_formula_t 200 todo
le_formula_t[LE_COMMAND_COUNT] le_formulas;
2015-01-23 13:05:07 -08:00
end_struct
2015-01-24 15:04:20 -08:00
board_configuration_s bc;
bit hasMapSensor
adc_channel_e hipOutputChannel;
idle_mode_e idleMode;
bit isInjectionEnabled
uint32_t digitalChartSize;
float injectorFlow;
float[CRANKING_CURVE_SIZE] crankingFuelCoef;
float[CRANKING_CURVE_SIZE] crankingFuelBins;
float[CRANKING_CURVE_SIZE] crankingCycleCoef;
float[CRANKING_CURVE_SIZE] crankingCycleBins;
float ignitionDwellForCrankingMs;
int targetIdleRpm;
adc_channel_e acSwitchAdc;A/C button input handled as analog input
int ignMathCalculateAtIndex;
int16_t acCutoffLowRpm;
int16_t acCutoffHighRpm;
int16_t acIdleRpmBump;
int16_t unusedShort;
adc_channel_e vRefAdcChannel;
float knockDetectionWindowStart;
float knockDetectionWindowEnd;
float cylinderBore;Cylinder diameter, in mm.
brain_pin_e clutchUpPin;Some vehicles have a switch to indicate that clutch pedal is all the way up
pin_input_mode_e clutchUpPinMode;
float hipThreshold;
brain_pin_e[LE_COMMAND_COUNT] fsioInputs;
pin_input_mode_e[LE_COMMAND_COUNT] fsioInputModes;
int[149] unused3;
le_formula_t timingMultiplier;
le_formula_t timingAdditive;
fuel_table_t injectionPhase;
2015-01-23 10:06:12 -08:00
2015-01-22 12:06:00 -08:00
2015-01-21 14:04:08 -08:00
end_struct