! 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 struct cranking_parameters_s float baseCrankingFuel; int16_t crankingRpm;This value controls what RPM values we consider 'cranking' (any RPM below 'crankingRpm')\nAnything above 'crankingRpm' would be 'running' end_struct struct air_pressure_sensor_config_s float customValueAt0;kPa value at zero volts float customValueAt5;kPa value at 5 volts air_pressure_sensor_type_e sensorType; 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 float[MAP_ANGLE_SIZE] samplingAngle;@brief MAP averaging sampling start angle, by RPM float[MAP_WINDOW_SIZE] samplingWindowBins; float[MAP_WINDOW_SIZE] samplingWindow;@brief MAP averaging angle duration, by RPM air_pressure_sensor_config_s sensor end_struct struct ThermistorConf @brief Thermistor curve parameters float tempC_1;these values are in Celcuus float tempC_2 float tempC_3 float resistance_1 float resistance_2 float resistance_3 float bias_resistor; 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 crankingSettings MAP_sensor_config_s map;@see hasMapSensor\n@see isMapAveragingEnabled ThermistorConf cltThermistorConf;todo: merge with channel settings, use full-scale Thermistor here! ThermistorConf iatThermistorConf; #define DWELL_COUNT 8 #define CRANKING_CURVE_SIZE 8 #define IGN_LOAD_COUNT 16 #define IGN_RPM_COUNT 16 float[DWELL_COUNT] sparkDwellBins; float[DWELL_COUNT] sparkDwell; float[IGN_LOAD_COUNT] ignitionLoadBins; float[IGN_RPM_COUNT] ignitionRpmBins; float ignitionBaseAngle;this value could be used to offset the whole ignition timing table by a constant 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. timing_mode_e timingMode; bits analog_chart_e S32 [0:1], "none", "trigger", "MAP", "INVALID" analog_chart_e analogChartMode; end_struct