512 lines
22 KiB
INI
512 lines
22 KiB
INI
|
||
! 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 MAP_ANGLE_SIZE 8
|
||
#define MAP_WINDOW_SIZE 8
|
||
#define CLT_CURVE_SIZE 16
|
||
#define IAT_CURVE_SIZE 16
|
||
#define VBAT_INJECTOR_CURVE_SIZE 8
|
||
#define DWELL_COUNT 8
|
||
#define CRANKING_CURVE_SIZE 8
|
||
#define IGN_LOAD_COUNT 16
|
||
#define IGN_RPM_COUNT 16
|
||
#define INJECTION_PIN_COUNT 12
|
||
#define IGNITION_PIN_COUNT 12
|
||
#define EGT_CHANNEL_COUNT 8
|
||
#define JOYSTICK_PIN_COUNT 5
|
||
#define DIGIPOT_COUNT 4
|
||
#define HW_MAX_ADC_INDEX 16
|
||
#define TRIGGER_SIMULATOR_PIN_COUNT 3
|
||
#define LOGIC_ANALYZER_CHANNEL_COUNT 4
|
||
#define LE_COMMAND_COUNT 16
|
||
|
||
#define FUEL_RPM_COUNT 16
|
||
#define FUEL_LOAD_COUNT 16
|
||
#define IGN_LOAD_COUNT 16
|
||
#define IGN_RPM_COUNT 16
|
||
|
||
#define MAF_DECODING_COUNT 256
|
||
|
||
! please note that 1024 here is 4 * FUEL_RPM_COUNT * FUEL_LOAD_COUNT
|
||
custom fuel_table_t 1024 array, F32, @OFFSET@, [16x16],"ms", 1, 0, 0.0, 300.0, 2
|
||
custom ve_table_t 1024 array, F32, @OFFSET@, [16x16],"%", 100, 0, 0, 100.0, 2
|
||
custom afr_table_t 1024 array, F32, @OFFSET@, [16x16],"deg", 1, 0, 0, 25.0, 2
|
||
|
||
! please note that 1024 here is 4 * IGN_LOAD_COUNT * IGN_RPM_COUNT
|
||
custom ignition_table_t 1024 array, F32, @OFFSET@, [16x16],"deg", 1, 0, -360, 360, 2
|
||
|
||
|
||
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
|
||
|
||
custom brain_input_pin_e 4 bits, U32, @OFFSET@, [0:6], "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "GPIOA_5", "INVALID", "INVALID", "GPIOA_8", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "GPIOC_6", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "GPIOE_5", "INVALID", "GPIOE_7", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
|
||
|
||
custom brain_pin_e 4 bits, U32, @OFFSET@, [0:6], "GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4", "GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9", "GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14", "GPIOA_15", "GPIOB_0", "GPIOB_1", "GPIOB_2", "GPIOB_3", "GPIOB_4", "GPIOB_5", "GPIOB_6", "GPIOB_7", "GPIOB_8", "GPIOB_9", "GPIOB_10", "GPIOB_11", "GPIOB_12", "GPIOB_13", "GPIOB_14", "GPIOB_15", "GPIOC_0", "GPIOC_1", "GPIOC_2", "GPIOC_3", "GPIOC_4", "GPIOC_5", "GPIOC_6", "GPIOC_7", "GPIOC_8", "GPIOC_9", "GPIOC_10", "GPIOC_11", "GPIOC_12", "GPIOC_13", "GPIOC_14", "GPIOC_15", "GPIOD_0", "GPIOD_1", "GPIOD_2", "GPIOD_3", "GPIOD_4", "GPIOD_5", "GPIOD_6", "GPIOD_7", "GPIOD_8", "GPIOD_9", "GPIOD_10", "GPIOD_11", "GPIOD_12", "GPIOD_13", "GPIOD_14", "GPIOD_15", "GPIOE_0", "GPIOE_1", "GPIOE_2", "GPIOE_3", "GPIOE_4", "GPIOE_5", "GPIOE_6", "GPIOE_7", "GPIOE_8", "GPIOE_9", "GPIOE_10", "GPIOE_11", "GPIOE_12", "GPIOE_13", "GPIOE_14", "GPIOE_15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
|
||
custom pin_output_mode_e 4 bits, U32, @OFFSET@, [0:1], "default", "default inverted", "open", "open inverted"
|
||
|
||
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"
|
||
|
||
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
|
||
|
||
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
|
||
|
||
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"
|
||
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
|
||
|
||
struct injector_s
|
||
float flow;cc/min, cubic centimeter per minute\nBy the way, g/s = 0.125997881 * (lb/hr)\ng/s = 0.125997881 * (cc/min)/10.5\ng/s = 0.0119997981 * cc/min;"cm3/min", 1, 0, 0, 1000, 2
|
||
float lag;;"msec", 1, 0, -10, 25.50, 2
|
||
|
||
float[VBAT_INJECTOR_CURVE_SIZE] battLagCorrBins;;"V", 1, 0, 0.0, 20.0, 2
|
||
float[VBAT_INJECTOR_CURVE_SIZE] battLagCorr;;"ms/V", 1, 0, 0.0, 50.0, 2
|
||
|
||
end_struct
|
||
|
||
injector_s injector
|
||
|
||
|
||
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;
|
||
|
||
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 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
|
||
|
||
custom timing_mode_e 4 bits, U32, @OFFSET@ [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
|
||
|
||
struct_no_prefix specs_s
|
||
float displacement;Engine displacement, in liters\nsee also cylindersCount;"L", 1, 0, 0, 1000.0, 2
|
||
|
||
custom cylinders_count_t 4 bits, U32, @OFFSET@, [0:3], "INVALID", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, "INVALID", "INVALID", "INVALID"
|
||
cylinders_count_t cylindersCount;
|
||
|
||
custom firing_order_e 4 bits, U32, @OFFSET@, [0:3], "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", "1-5-3-6-2-4", "1-4-2-5-3-6", "1-2", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
|
||
firing_order_e firingOrder;
|
||
end_struct
|
||
|
||
specs_s specs
|
||
|
||
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
|
||
|
||
custom engine_load_mode_e 4 bits, U32, @OFFSET@, [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
|
||
|
||
brain_pin_e vehicleSpeedSensorInputPin;
|
||
float vehicleSpeedCoef;This coefficient translates vehicle speed input frequency (in Hz) into vehicle speed, km/h
|
||
|
||
custom can_nbc_e 4 bits, U32, @OFFSET@, [0:1], "BMW", "FIAT", "VAG" , "INVALID"
|
||
can_nbc_e canNbcType;
|
||
|
||
int canSleepPeriod;;"ms", 1, 0, 0, 1000.0, 2
|
||
|
||
custom ignition_mode_e 4 bits, U32, @OFFSET@, [0:1], "One coil", "Individual Coils", "Wasted", "INVALID"
|
||
ignition_mode_e ignitionMode;
|
||
|
||
float rpmMultiplier;todo: refactor this, see operation_mode_e
|
||
|
||
custom display_mode_e 4 bits, U32, @OFFSET@, [0:1], "none", "hd44780", "hd44780 over pcf8574", "INVALID"
|
||
display_mode_e displayMode;
|
||
|
||
custom log_format_e 4 bits, U32, @OFFSET@, [0:0], "native", "Mega Log Viewer"
|
||
log_format_e logFormat;
|
||
int firmwareVersion;;"index", 1, 0, 0, 300, 0
|
||
int HD44780width;;"index", 1, 0, 0, 300, 0
|
||
int HD44780height;;"index", 1, 0, 0, 300, 0
|
||
|
||
adc_channel_e tpsAdcChannel;
|
||
int overrideCrankingIgnition;
|
||
int analogChartFrequency;;"index", 1, 0, 0, 300, 0 ; size 4
|
||
|
||
struct trigger_config_s @brief Trigger wheel(s) configuration
|
||
|
||
|
||
custom bool32_t 4 bits, U32, @OFFSET@, [0:0], "false", "true"
|
||
|
||
custom trigger_type_e 4 bits, U32, @OFFSET@, [0:4], "custom toothed wheel", "ford aspire", "dodge neon", "Miata NA", "Miata NB", "GM_7X", "Cooper", "Mazda SOHC 4", "60/2", "36/1", "Accord CD", "MITSU", "ACCORD 2", "ACCORD DIP", "Neon 2003", "MAZDA D 1+4", "1+1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
|
||
trigger_type_e type;
|
||
|
||
bit customIsSynchronizationNeeded;
|
||
bit customNeedSecondTriggerInput;
|
||
|
||
int customTotalToothCount;;"number", 1, 0.0, 0, 1000.0, 2
|
||
int customSkippedToothCount;;"number", 1, 0.0, 0, 1000.0, 2
|
||
|
||
float customSyncRatioFrom;;"number", 1, 0.0, 0, 1000.0, 2
|
||
float customSyncRatioTo;;"number", 1, 0.0, 0, 1000.0, 2
|
||
|
||
bool32_t customUseRiseEdge;
|
||
end_struct
|
||
|
||
trigger_config_s trigger;
|
||
|
||
custom spi_device_e 4 bits,U32, @OFFSET@, [0:1], "Off", "SPI1", "SPI2", "SPI3"
|
||
spi_device_e hip9011SpiDevice;
|
||
adc_channel_e vbattAdcChannel;
|
||
|
||
|
||
float globalFuelCorrection;;"coef", 1, 0.0, 0, 1000.0, 2
|
||
|
||
|
||
adc_channel_e cltAdcChannel;todo: merge with channel settings, use full-scale Thermistor!
|
||
adc_channel_e iatAdcChannel;
|
||
adc_channel_e mafAdcChannel;
|
||
|
||
struct afr_sensor_s
|
||
adc_channel_e hwChannel;
|
||
float v1;; "volts", 1, 0.0, 0, 10.0, 2
|
||
float value1;; "AFR", 1, 0.0, 0, 1000.0, 2
|
||
float v2;; "volts", 1, 0.0, 0, 10.0, 2
|
||
float value2;; "AFR", 1, 0.0, 0, 1000.0, 2
|
||
|
||
end_struct
|
||
|
||
afr_sensor_s afr;@see hasAfrSensor
|
||
float injectionAngle;this is about deciding when the injector starts it's squirt;"deg", 1, 0.0, 0, 1000.0, 2
|
||
float crankingTimingAngle;; "deg", 1, 0.0, -360, 360, 2
|
||
|
||
float diffLoadEnrichmentCoef;
|
||
|
||
air_pressure_sensor_config_s baroSensor;@see hasBaroSensor
|
||
|
||
struct_no_prefix 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 iterate] injectionPins;
|
||
pin_output_mode_e injectionPinMode;
|
||
|
||
brain_pin_e[IGNITION_PIN_COUNT iterate] 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;;"Hz", 1, 0, 0, 3000, 0
|
||
|
||
int triggerSimulatorFrequency;;"Rpm", 1, 0, 0,30000, 0
|
||
|
||
spi_device_e digitalPotentiometerSpiDevice;Digital Potentiometer is used by stock ECU stimulation code
|
||
brain_pin_e[DIGIPOT_COUNT iterate] digitalPotentiometerChipSelect;
|
||
|
||
custom adc_channel_mode_e 4 bits, U32, @OFFSET@, [0:1], "Off", "Slow", "Fast", "INVALID"
|
||
adc_channel_mode_e[HW_MAX_ADC_INDEX iterate] adcHwChannelEnabled;
|
||
|
||
|
||
brain_input_pin_e[3 iterate] triggerInputPins;
|
||
brain_pin_e mainRelayPin;
|
||
|
||
int idleThreadPeriod;
|
||
int consoleLoopPeriod;
|
||
int lcdThreadPeriod;
|
||
int tunerStudioThreadPeriod;
|
||
int generalPeriodicThreadPeriod;
|
||
|
||
|
||
uint32_t tunerStudioSerialSpeed;;"BPs", 1, 0, 0,1000000, 0
|
||
|
||
brain_pin_e boardTestModeJumperPin;
|
||
|
||
can_device_mode_e canDeviceMode;
|
||
brain_pin_e canTxPin;
|
||
brain_pin_e canRxPin;
|
||
|
||
brain_pin_e[TRIGGER_SIMULATOR_PIN_COUNT iterate] triggerSimulatorPins;
|
||
pin_output_mode_e[TRIGGER_SIMULATOR_PIN_COUNT iterate] 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
|
||
|
||
brain_input_pin_e[LOGIC_ANALYZER_CHANNEL_COUNT iterate] logicAnalyzerPins;
|
||
uint8_t[LOGIC_ANALYZER_CHANNEL_COUNT] logicAnalyzerMode;default or inverted input
|
||
|
||
int unrealisticRpmThreashold;
|
||
|
||
pin_output_mode_e mainRelayPinMode;
|
||
|
||
brain_pin_e[EGT_CHANNEL_COUNT iterate] max31855_cs;
|
||
|
||
spi_device_e max31855spiDevice;
|
||
|
||
brain_pin_e[LE_COMMAND_COUNT iterate] fsioPins;
|
||
pin_output_mode_e[LE_COMMAND_COUNT iterate] gpioPinModes;
|
||
|
||
brain_pin_e[JOYSTICK_PIN_COUNT iterate] joystickPins;
|
||
|
||
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;
|
||
|
||
custom fsio_pwm_freq_t 2 scalar, U16, @OFFSET@, "Hz", 1, 0, 0, 3000, 0
|
||
fsio_pwm_freq_t[LE_COMMAND_COUNT iterate] fsioFrequency;
|
||
|
||
brain_pin_e hip9011CsPin;
|
||
brain_pin_e hip9011IntHoldPin;
|
||
brain_pin_e hip9011OutPin;
|
||
|
||
custom fsio_setting_t 4 scalar, F32, @OFFSET@, "Val", 1, 0, 0, 18000, 0
|
||
fsio_setting_t[LE_COMMAND_COUNT iterate] 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;
|
||
maf_sensor_type_e mafSensorType;
|
||
int[5] unusedbs;
|
||
|
||
custom le_formula_t 200 array, U08, @OFFSET@, [200],"char", 1, 0, 0.0, 3.0, 2
|
||
le_formula_t[LE_COMMAND_COUNT iterate] le_formulas;
|
||
|
||
end_struct
|
||
|
||
board_configuration_s bc;
|
||
bit hasMapSensor;@see isMapAveragingEnabled
|
||
bit hasIatSensor
|
||
bit hasBaroSensor
|
||
bit hasAfrSensor
|
||
bit useConstantDwellDuringCranking
|
||
bit isDigitalChartEnabled
|
||
bit isCanEnabled
|
||
bit hasCltSensor
|
||
bit canReadEnabled
|
||
bit canWriteEnabled
|
||
bit hasVehicleSpeedSensor
|
||
bit isJoystickEnabled
|
||
bit isGpsEnabled
|
||
bit hasMafSensor
|
||
bit hasTpsSensor
|
||
|
||
|
||
adc_channel_e hipOutputChannel;
|
||
|
||
idle_mode_e idleMode;
|
||
|
||
bit isInjectionEnabled
|
||
bit isIgnitionEnabled
|
||
bit isCylinderCleanupEnabled
|
||
bit secondTriggerChannelEnabled
|
||
bit needSecondTriggerInputDeprecated
|
||
bit isMapAveragingEnabled
|
||
bit isMilEnabled
|
||
bit isFuelPumpEnabled
|
||
bit isTunerStudioEnabled
|
||
bit isWaveAnalyzerEnabled
|
||
bit isIdleThreadEnabled
|
||
bit isPrintTriggerSynchDetails
|
||
bit isManualSpinningMode;Usually if we have no trigger events that means engine is stopped\nUnless we are troubleshooting and spinning the engine by hand - this case a longer\ndelay is needed
|
||
bit twoWireBatch
|
||
|
||
|
||
uint32_t digitalChartSize;;"count", 1, 0, 0, 300, 0
|
||
|
||
|
||
float[CRANKING_CURVE_SIZE] crankingFuelCoef;;"%", 100, 0, 0.0, 700.0, 2
|
||
float[CRANKING_CURVE_SIZE] crankingFuelBins;;"C", 1, 0, -80.0, 170.0, 2
|
||
|
||
float[CRANKING_CURVE_SIZE] crankingCycleCoef;;"%", 100, 0, 0.0, 500.0, 2
|
||
float[CRANKING_CURVE_SIZE] crankingCycleBins;;"C", 1, 0, -80.0, 170.0, 2
|
||
|
||
float ignitionDwellForCrankingMs;;"ms", 1, 0, 0, 200, 1
|
||
|
||
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 iterate] fsioInputs;
|
||
|
||
custom pin_input_mode_e 4 scalar, F32, @OFFSET@, "ms", 1, 0, 0, 200, 1
|
||
pin_input_mode_e[LE_COMMAND_COUNT iterate] fsioInputModes;
|
||
|
||
int[144] unused3;
|
||
|
||
int accelLength;;"len", 1, 0, 0, 200, 3
|
||
|
||
float deaccelEnrichmentThreshold;;"roc", 1, 0, 0, 200, 3
|
||
float deaccelEnrichmentMultiplier;;"coeff", 1, 0, 0, 200, 3
|
||
float accelEnrichmentThreshold;;"roc", 1, 0, 0, 200, 3
|
||
float accelEnrichmentMultiplier;;"coeff", 1, 0, 0, 200, 3
|
||
|
||
le_formula_t timingMultiplier;
|
||
le_formula_t timingAdditive;
|
||
|
||
float[MAF_DECODING_COUNT] mafDecoding;kg/hour value.\nBy the way 2.081989116 kg/h = 1 ft<66>/m;"kg/hour", 1, 0, -500.0, 4000.0, 2
|
||
float[MAF_DECODING_COUNT] mafDecodingBins;; "V", 1, 0, -5.0, 150.0, 2
|
||
|
||
|
||
fuel_table_t fuelTable;
|
||
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
|
||
|
||
ignition_table_t ignitionTable;
|
||
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
|
||
|
||
ve_table_t veTable;
|
||
float[FUEL_LOAD_COUNT] veLoadBins;;"%", 1, 0.0, 0, 300.0, 2
|
||
float[FUEL_RPM_COUNT] veRpmBins;;"RPM", 1, 0.0, 0, 18000.0, 2
|
||
|
||
afr_table_t afrTable;
|
||
float[FUEL_LOAD_COUNT] afrLoadBins;;"%", 1, 0.0, 0, 300.0, 2
|
||
float[FUEL_RPM_COUNT] afrRpmBins;;"RPM", 1, 0.0, 0, 18000.0, 2
|
||
|
||
fuel_table_t injectionPhase;
|
||
float[FUEL_LOAD_COUNT] injPhaseLoadBins;;"Load", 1, 0.0, 0, 300.0, 2
|
||
float[FUEL_RPM_COUNT] injPhaseRpmBins;;"RPM", 1, 0.0, 0, 18000.0, 2
|
||
|
||
ve_table_t ve2Table;
|
||
float[FUEL_LOAD_COUNT] ve2LoadBins;;"%", 1, 0.0, 0, 300.0, 2
|
||
float[FUEL_RPM_COUNT] ve2RpmBins;;"RPM", 1, 0.0, 0, 18000.0, 2
|
||
|
||
end_struct |