! this file defines the format of rusEfi persistent configuration structure ! this file is processed by ../java_tools/config_definition.jar tool ! ! comments start with '#' ! ! each field is declared as ! type name;comment ! 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 #define FUEL_RPM_COUNT 16 #define FUEL_LOAD_COUNT 16 struct cranking_parameters_s 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 end_struct bits air_pressure_sensor_type_e U32 [0:1] "Custom", "DENSO183", "MPX4250", "INVALID" bits adc_channel_e U32 [0:3] "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5" struct air_pressure_sensor_config_s 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; adc_channel_e hwChannel; end_struct #define MAP_ANGLE_SIZE 8 #define MAP_WINDOW_SIZE 8 struct MAP_sensor_config_s @brief MAP averaging configuration 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 air_pressure_sensor_config_s sensor end_struct struct ThermistorConf @brief Thermistor curve parameters 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 float bias_resistor;;"Ohm", 1, 0, 0, 200000, 1 float s_h_a; float s_h_b; float s_h_c; end_struct bits engine_type_e S32 [0:2], "AUDI_AAN", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "FORD_FIESTA", "NISSAN_PRIMERA", "HONDA_ACCORD", "FORD_INLINE_6_1995", "GY6_139QMB" engine_type_e engineType;http://rusefi.com/wiki/index.php?title=Manual:Engine_Type int headerMagicValue;this magic number is used to make sure that what we read from Flash is in fact some configuration #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 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 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 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 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 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 uint16_t unused334; 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 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 cranking_parameters_s cranking MAP_sensor_config_s map;@see hasMapSensor\n@see isMapAveragingEnabled ThermistorConf clt;todo: merge with channel settings, use full-scale Thermistor here! ThermistorConf iat; #define DWELL_COUNT 8 #define CRANKING_CURVE_SIZE 8 #define IGN_LOAD_COUNT 16 #define IGN_RPM_COUNT 16 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 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 float ignitionBaseAngle;this value could be used to offset the whole ignition timing table by a constant;"RPM", 1, 0, 0, 3000.0, 0 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 bits timing_mode_e U32 [0:0], "dynamic", "fixed" timing_mode_e timingMode; 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 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 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 injection_mode_e crankingInjectionMode; injection_mode_e injectionMode; 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 bits engine_load_mode_e U32 [0:1], "MAF", "Alpha-N", "MAP", "SPEED DENSITY" 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 !bits analog_chart_e S32 [0:1], "none", "trigger", "MAP", "INVALID" !analog_chart_e analogChartMode; end_struct