diff --git a/firmware/CHANGELOG.md b/firmware/CHANGELOG.md index 5b034d88f8..7d5d5f61ae 100644 --- a/firmware/CHANGELOG.md +++ b/firmware/CHANGELOG.md @@ -35,6 +35,8 @@ Release template (copy/paste this for new release): ### Fixed - Improved bench test resolution (more usable for testing injectors, dwell, etc) - Maximum knock retard table displays correct Y axis values in TunerStudio + - Make errors about fuel pressure sensors less aggressive #111 #117 + - Always operate in "two wire" mode for batch fuel, fixing batch firing order #23 ## May 2023 Release diff --git a/firmware/config/boards/proteus/proteus-base.mk b/firmware/config/boards/proteus/proteus-base.mk index 1c34af8deb..14b6951283 100644 --- a/firmware/config/boards/proteus/proteus-base.mk +++ b/firmware/config/boards/proteus/proteus-base.mk @@ -23,7 +23,7 @@ ifneq ($(PROJECT_CPU),ARCH_STM32H7) DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE endif -# disable hardware serial ports on H7 +# serial ports only on F4 ifeq ($(PROJECT_CPU),ARCH_STM32F4) # Hardware serial port on UART 2 -> PD5/PD6 DDEFS += -DSTM32_UART_USE_USART2=TRUE diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h index 10abe66fae..a5c795f6e5 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h @@ -520,7 +520,7 @@ struct engine_configuration_s { bool useFordRedundantTps : 1 {}; // offset 88 bit 2 - bool unused88b2 : 1 {}; + bool lambdaProtectionEnable : 1 {}; // offset 88 bit 3 bool overrideTriggerGaps : 1 {}; @@ -1131,8 +1131,13 @@ struct engine_configuration_s { // offset 640 scaled_channel fordInjectorSmallPulseSlope; + // RPM // offset 642 - uint8_t unused638[2]; + scaled_channel lambdaProtectionMinRpm; + + // % + // offset 643 + scaled_channel lambdaProtectionMinLoad; // offset 644 bit 0 bool is_enabled_spi_1 : 1 {}; @@ -1217,31 +1222,31 @@ struct engine_configuration_s { bool enableAemXSeries : 1 {}; // offset 644 bit 23 - bool unusedBit_195_23 : 1 {}; + bool unusedBit_196_23 : 1 {}; // offset 644 bit 24 - bool unusedBit_195_24 : 1 {}; + bool unusedBit_196_24 : 1 {}; // offset 644 bit 25 - bool unusedBit_195_25 : 1 {}; + bool unusedBit_196_25 : 1 {}; // offset 644 bit 26 - bool unusedBit_195_26 : 1 {}; + bool unusedBit_196_26 : 1 {}; // offset 644 bit 27 - bool unusedBit_195_27 : 1 {}; + bool unusedBit_196_27 : 1 {}; // offset 644 bit 28 - bool unusedBit_195_28 : 1 {}; + bool unusedBit_196_28 : 1 {}; // offset 644 bit 29 - bool unusedBit_195_29 : 1 {}; + bool unusedBit_196_29 : 1 {}; // offset 644 bit 30 - bool unusedBit_195_30 : 1 {}; + bool unusedBit_196_30 : 1 {}; // offset 644 bit 31 - bool unusedBit_195_31 : 1 {}; + bool unusedBit_196_31 : 1 {}; // offset 648 brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; @@ -1389,8 +1394,18 @@ struct engine_configuration_s { // offset 746 uint16_t startCrankingDuration; + // % // offset 748 - uint8_t unused748[3]; + scaled_channel lambdaProtectionMinTps; + + // Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed + // s + // offset 749 + scaled_channel lambdaProtectionTimeout; + + // RPM + // offset 750 + scaled_channel lambdaProtectionRestoreRpm; // offset 751 pin_output_mode_e acRelayPinMode; @@ -1537,13 +1552,13 @@ struct engine_configuration_s { bool verboseCan2 : 1 {}; // offset 808 bit 29 - bool unusedBit_288_29 : 1 {}; + bool unusedBit_291_29 : 1 {}; // offset 808 bit 30 - bool unusedBit_288_30 : 1 {}; + bool unusedBit_291_30 : 1 {}; // offset 808 bit 31 - bool unusedBit_288_31 : 1 {}; + bool unusedBit_291_31 : 1 {}; // offset 812 dc_io etbIo[ETB_COUNT]; @@ -1851,10 +1866,8 @@ struct engine_configuration_s { // offset 1200 bit 11 bool isManualSpinningMode : 1 {}; - // This is needed if your coils are individually wired and you wish to use batch injection. - // enable two_wire_batch_injection // offset 1200 bit 12 - bool twoWireBatchInjection : 1 {}; + bool unused1200b12 : 1 {}; // offset 1200 bit 13 bool neverInstantRpm : 1 {}; @@ -1921,10 +1934,10 @@ struct engine_configuration_s { bool ALSActivateInverted : 1 {}; // offset 1200 bit 30 - bool unusedBit_393_30 : 1 {}; + bool unusedBit_396_30 : 1 {}; // offset 1200 bit 31 - bool unusedBit_393_31 : 1 {}; + bool unusedBit_396_31 : 1 {}; // count // offset 1204 @@ -2231,96 +2244,101 @@ struct engine_configuration_s { bool injectorFlowAsMassFlow : 1 {}; // offset 1436 bit 4 - bool unusedBit_467_4 : 1 {}; + bool unusedBit_470_4 : 1 {}; // offset 1436 bit 5 - bool unusedBit_467_5 : 1 {}; + bool unusedBit_470_5 : 1 {}; // offset 1436 bit 6 - bool unusedBit_467_6 : 1 {}; + bool unusedBit_470_6 : 1 {}; // offset 1436 bit 7 - bool unusedBit_467_7 : 1 {}; + bool unusedBit_470_7 : 1 {}; // offset 1436 bit 8 - bool unusedBit_467_8 : 1 {}; + bool unusedBit_470_8 : 1 {}; // offset 1436 bit 9 - bool unusedBit_467_9 : 1 {}; + bool unusedBit_470_9 : 1 {}; // offset 1436 bit 10 - bool unusedBit_467_10 : 1 {}; + bool unusedBit_470_10 : 1 {}; // offset 1436 bit 11 - bool unusedBit_467_11 : 1 {}; + bool unusedBit_470_11 : 1 {}; // offset 1436 bit 12 - bool unusedBit_467_12 : 1 {}; + bool unusedBit_470_12 : 1 {}; // offset 1436 bit 13 - bool unusedBit_467_13 : 1 {}; + bool unusedBit_470_13 : 1 {}; // offset 1436 bit 14 - bool unusedBit_467_14 : 1 {}; + bool unusedBit_470_14 : 1 {}; // offset 1436 bit 15 - bool unusedBit_467_15 : 1 {}; + bool unusedBit_470_15 : 1 {}; // offset 1436 bit 16 - bool unusedBit_467_16 : 1 {}; + bool unusedBit_470_16 : 1 {}; // offset 1436 bit 17 - bool unusedBit_467_17 : 1 {}; + bool unusedBit_470_17 : 1 {}; // offset 1436 bit 18 - bool unusedBit_467_18 : 1 {}; + bool unusedBit_470_18 : 1 {}; // offset 1436 bit 19 - bool unusedBit_467_19 : 1 {}; + bool unusedBit_470_19 : 1 {}; // offset 1436 bit 20 - bool unusedBit_467_20 : 1 {}; + bool unusedBit_470_20 : 1 {}; // offset 1436 bit 21 - bool unusedBit_467_21 : 1 {}; + bool unusedBit_470_21 : 1 {}; // offset 1436 bit 22 - bool unusedBit_467_22 : 1 {}; + bool unusedBit_470_22 : 1 {}; // offset 1436 bit 23 - bool unusedBit_467_23 : 1 {}; + bool unusedBit_470_23 : 1 {}; // offset 1436 bit 24 - bool unusedBit_467_24 : 1 {}; + bool unusedBit_470_24 : 1 {}; // offset 1436 bit 25 - bool unusedBit_467_25 : 1 {}; + bool unusedBit_470_25 : 1 {}; // offset 1436 bit 26 - bool unusedBit_467_26 : 1 {}; + bool unusedBit_470_26 : 1 {}; // offset 1436 bit 27 - bool unusedBit_467_27 : 1 {}; + bool unusedBit_470_27 : 1 {}; // offset 1436 bit 28 - bool unusedBit_467_28 : 1 {}; + bool unusedBit_470_28 : 1 {}; // offset 1436 bit 29 - bool unusedBit_467_29 : 1 {}; + bool unusedBit_470_29 : 1 {}; // offset 1436 bit 30 - bool unusedBit_467_30 : 1 {}; + bool unusedBit_470_30 : 1 {}; // offset 1436 bit 31 - bool unusedBit_467_31 : 1 {}; + bool unusedBit_470_31 : 1 {}; // Time between bench test pulses // ms // offset 1440 scaled_channel benchTestOffTime; + // % // offset 1441 - uint8_t unused1445[2]; + scaled_channel lambdaProtectionRestoreTps; + + // % + // offset 1442 + scaled_channel lambdaProtectionRestoreLoad; // offset 1443 pin_input_mode_e launchActivatePinMode; @@ -3800,6 +3818,17 @@ struct persistent_config_s { // offset 22476 blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + // lambda + // offset 22852 + scaled_channel lambdaMaxDeviationTable[4][4]; + + // offset 22868 + uint16_t lambdaMaxDeviationLoadBins[4]; + + // RPM + // offset 22876 + uint16_t lambdaMaxDeviationRpmBins[4]; + }; -static_assert(sizeof(persistent_config_s) == 22852); +static_assert(sizeof(persistent_config_s) == 22884); diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h index 12c0c4bd11..e664fdc41c 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h @@ -894,7 +894,7 @@ #define PACK_PERCENT_BYTE_MULT 100.0 #define PEDAL_TO_TPS_SIZE 8 #define PERCENT_TRIM_BYTE_PACKING_DIV 0.02 -#define persistent_config_s_size 22852 +#define persistent_config_s_size 22884 #define pid_s_size 20 #define PidAutoTune_AutoTunerState_AUTOTUNER_OFF 0 #define PidAutoTune_AutoTunerState_CONVERGED 16 @@ -981,7 +981,7 @@ #define show_Frankenso_presets false #define show_Proteus_presets false #define show_test_presets false -#define SIGNATURE_HASH 1684310330 +#define SIGNATURE_HASH 583617090 #define spi_device_e_auto_enum 0="SPI_NONE",1="SPI_DEVICE_1",2="SPI_DEVICE_2",3="SPI_DEVICE_3",4="SPI_DEVICE_4" #define spi_device_e_SPI_DEVICE_1 1 #define spi_device_e_SPI_DEVICE_2 2 @@ -1027,7 +1027,7 @@ #define TOOTH_PACKET_SIZE 2 #define TOP_DEAD_CENTER_MESSAGE "r" #define TORQUE_CURVE_SIZE 6 -#define TOTAL_CONFIG_SIZE 22852 +#define TOTAL_CONFIG_SIZE 22884 #define TPS_2_BYTE_PACKING_MULT 100 #define TPS_TPS_ACCEL_CLT_CORR_TABLE 4 #define TPS_TPS_ACCEL_TABLE 8 @@ -1248,12 +1248,12 @@ #define ts_show_vbatt true #define ts_show_vr_threshold_2 true #define ts_show_vr_threshold_all true -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.subaru_eg33_f7.1684310330" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.subaru_eg33_f7.583617090" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' #define TS_TEST_COMMAND_char t -#define TS_TOTAL_OUTPUT_SIZE 1372 +#define TS_TOTAL_OUTPUT_SIZE 1376 #define TS_TRIGGER_SCOPE_CHANNEL_1_NAME "Channel 1" #define TS_TRIGGER_SCOPE_CHANNEL_2_NAME "Channel 2" #define TS_TRIGGER_SCOPE_DISABLE 5 diff --git a/firmware/config/engines/chevrolet_camaro_4.cpp b/firmware/config/engines/chevrolet_camaro_4.cpp index 893cafb461..7ab2ccb359 100644 --- a/firmware/config/engines/chevrolet_camaro_4.cpp +++ b/firmware/config/engines/chevrolet_camaro_4.cpp @@ -28,7 +28,7 @@ void setCamaro4() { engineConfiguration->triggerInputPins[1] = Gpio::C6; engineConfiguration->injectionMode = IM_BATCH; - engineConfiguration->twoWireBatchInjection = true; + // set ignition_mode 2 engineConfiguration->ignitionMode = IM_WASTED_SPARK; diff --git a/firmware/config/engines/dodge_neon.cpp b/firmware/config/engines/dodge_neon.cpp index ce29899846..6930e9199b 100644 --- a/firmware/config/engines/dodge_neon.cpp +++ b/firmware/config/engines/dodge_neon.cpp @@ -46,10 +46,6 @@ void setDodgeNeon1995EngineConfiguration() { // set injection_mode 1 engineConfiguration->injectionMode = IM_SEQUENTIAL; - // this is needed for injector lag auto-tune research if switching to batch - // enable two_wire_batch_injection - engineConfiguration->twoWireBatchInjection = true; - // set ignition_mode 2 engineConfiguration->ignitionMode = IM_WASTED_SPARK; // set_firing_order 2 diff --git a/firmware/config/engines/ford_1995_inline_6.cpp b/firmware/config/engines/ford_1995_inline_6.cpp index ef04626ec9..024314446b 100644 --- a/firmware/config/engines/ford_1995_inline_6.cpp +++ b/firmware/config/engines/ford_1995_inline_6.cpp @@ -27,8 +27,6 @@ void setFordInline6() { engineConfiguration->firingOrder = FO_1_5_3_6_2_4; engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS; engineConfiguration->injectionMode = IM_BATCH; - engineConfiguration->twoWireBatchInjection = true; - /** * 0.5ms dwell time just to be sure it would fit within camshaft revolution, dwell is not controlled by us anyway diff --git a/firmware/config/engines/gm_ls_4.cpp b/firmware/config/engines/gm_ls_4.cpp index 54173dc542..d058c4f363 100644 --- a/firmware/config/engines/gm_ls_4.cpp +++ b/firmware/config/engines/gm_ls_4.cpp @@ -11,10 +11,6 @@ void setGmLs4() { engineConfiguration->globalTriggerAngleOffset = 86; - // would not hurt just in case no cam - engineConfiguration->twoWireBatchInjection = true; - - engineConfiguration->fuelReferencePressure = 400; // 400 kPa, 58 psi engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure; engineConfiguration->injector.flow = 440; diff --git a/firmware/config/engines/mazda_miata_1_6.cpp b/firmware/config/engines/mazda_miata_1_6.cpp index 1dab3b5c37..cca5a1846b 100644 --- a/firmware/config/engines/mazda_miata_1_6.cpp +++ b/firmware/config/engines/mazda_miata_1_6.cpp @@ -264,9 +264,6 @@ void setMiataNA6_MAP_MRE() { engineConfiguration->fuelPumpPin = Gpio::Unassigned; - - engineConfiguration->twoWireBatchInjection = true; - engineConfiguration->useIacTableForCoasting = true; engineConfiguration->idlePidDeactivationTpsThreshold = 90; diff --git a/firmware/config/engines/mazda_miata_vvt.cpp b/firmware/config/engines/mazda_miata_vvt.cpp index ffa407c5f8..23553d1525 100644 --- a/firmware/config/engines/mazda_miata_vvt.cpp +++ b/firmware/config/engines/mazda_miata_vvt.cpp @@ -416,8 +416,6 @@ void setMazdaMiata2003EngineConfiguration() { // engineConfiguration->is_enabled_spi_1 = true; - engineConfiguration->twoWireBatchInjection = true; // this is needed for #492 testing - engineConfiguration->alternatorControlPin = Gpio::E10; engineConfiguration->alternatorControlPinMode = OM_OPENDRAIN; diff --git a/firmware/config/engines/toyota_jzs147.cpp b/firmware/config/engines/toyota_jzs147.cpp index f2df7cb6fd..ca62e53544 100644 --- a/firmware/config/engines/toyota_jzs147.cpp +++ b/firmware/config/engines/toyota_jzs147.cpp @@ -86,7 +86,6 @@ void setToyota_2jz_vics() { engineConfiguration->ignitionMode = IM_WASTED_SPARK; // just for now engineConfiguration->injectionMode = IM_BATCH; // just for now - engineConfiguration->twoWireBatchInjection = true; strcpy(engineConfiguration->engineMake, ENGINE_MAKE_TOYOTA); strcpy(engineConfiguration->engineCode, "2JZ"); diff --git a/firmware/console/binary/generated/data_logs.ini b/firmware/console/binary/generated/data_logs.ini index fbb601f651..83372f9c69 100644 --- a/firmware/console/binary/generated/data_logs.ini +++ b/firmware/console/binary/generated/data_logs.ini @@ -47,7 +47,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -357,9 +356,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -368,9 +364,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -561,3 +557,8 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" diff --git a/firmware/console/binary/generated/fancy_content.ini b/firmware/console/binary/generated/fancy_content.ini index 0c3734e44a..47eb50e888 100644 --- a/firmware/console/binary/generated/fancy_content.ini +++ b/firmware/console/binary/generated/fancy_content.ini @@ -41,15 +41,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -373,3 +364,18 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + diff --git a/firmware/console/binary/generated/fancy_menu.ini b/firmware/console/binary/generated/fancy_menu.ini index 9f43729785..41b3807e10 100644 --- a/firmware/console/binary/generated/fancy_menu.ini +++ b/firmware/console/binary/generated/fancy_menu.ini @@ -1,7 +1,6 @@ subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -22,3 +21,5 @@ subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" diff --git a/firmware/console/binary/generated/live_data_fragments.h b/firmware/console/binary/generated/live_data_fragments.h index 953f4400d0..c3c4ca825d 100644 --- a/firmware/console/binary/generated/live_data_fragments.h +++ b/firmware/console/binary/generated/live_data_fragments.h @@ -3,7 +3,6 @@ decl_frag{}, decl_frag{}, decl_frag{}, decl_frag{}, -decl_frag{}, decl_frag{}, decl_frag{}, decl_frag{}, @@ -31,3 +30,5 @@ decl_frag{}, // wb1 // decl_frag{}, // wb2 decl_frag{}, decl_frag{}, +decl_frag{}, +decl_frag{}, diff --git a/firmware/console/binary/generated/live_data_ids.h b/firmware/console/binary/generated/live_data_ids.h index 7522d0f9d0..a412ec063d 100644 --- a/firmware/console/binary/generated/live_data_ids.h +++ b/firmware/console/binary/generated/live_data_ids.h @@ -6,7 +6,6 @@ LDS_output_channels, LDS_fuel_computer, LDS_ignition_state, LDS_knock_controller, -LDS_throttle_model, LDS_high_pressure_fuel_pump, LDS_injector_model, LDS_launch_control_state, @@ -27,29 +26,32 @@ LDS_electronic_throttle, LDS_wideband_state, LDS_dc_motors, LDS_sent_state, +LDS_throttle_model, +LDS_vvt, } live_data_e; #define OUTPUT_CHANNELS_BASE_ADDRESS 0 #define FUEL_COMPUTER_BASE_ADDRESS 820 #define IGNITION_STATE_BASE_ADDRESS 860 #define KNOCK_CONTROLLER_BASE_ADDRESS 892 -#define THROTTLE_MODEL_BASE_ADDRESS 908 -#define HIGH_PRESSURE_FUEL_PUMP_BASE_ADDRESS 920 -#define INJECTOR_MODEL_BASE_ADDRESS 944 -#define LAUNCH_CONTROL_STATE_BASE_ADDRESS 956 -#define ANTILAG_SYSTEM_STATE_BASE_ADDRESS 964 -#define BOOST_CONTROL_BASE_ADDRESS 976 -#define AC_CONTROL_BASE_ADDRESS 1000 -#define FAN_CONTROL_BASE_ADDRESS 1012 -#define FUEL_PUMP_CONTROL_BASE_ADDRESS 1016 -#define MAIN_RELAY_BASE_ADDRESS 1020 -#define ENGINE_STATE_BASE_ADDRESS 1024 -#define TPS_ACCEL_STATE_BASE_ADDRESS 1108 -#define TRIGGER_CENTRAL_BASE_ADDRESS 1156 -#define TRIGGER_STATE_BASE_ADDRESS 1208 -#define TRIGGER_STATE_PRIMARY_BASE_ADDRESS 1228 -#define WALL_FUEL_STATE_BASE_ADDRESS 1232 -#define IDLE_STATE_BASE_ADDRESS 1240 -#define ELECTRONIC_THROTTLE_BASE_ADDRESS 1288 -#define WIDEBAND_STATE_BASE_ADDRESS 1340 -#define DC_MOTORS_BASE_ADDRESS 1352 -#define SENT_STATE_BASE_ADDRESS 1364 +#define HIGH_PRESSURE_FUEL_PUMP_BASE_ADDRESS 908 +#define INJECTOR_MODEL_BASE_ADDRESS 932 +#define LAUNCH_CONTROL_STATE_BASE_ADDRESS 944 +#define ANTILAG_SYSTEM_STATE_BASE_ADDRESS 952 +#define BOOST_CONTROL_BASE_ADDRESS 964 +#define AC_CONTROL_BASE_ADDRESS 988 +#define FAN_CONTROL_BASE_ADDRESS 1000 +#define FUEL_PUMP_CONTROL_BASE_ADDRESS 1004 +#define MAIN_RELAY_BASE_ADDRESS 1008 +#define ENGINE_STATE_BASE_ADDRESS 1012 +#define TPS_ACCEL_STATE_BASE_ADDRESS 1096 +#define TRIGGER_CENTRAL_BASE_ADDRESS 1144 +#define TRIGGER_STATE_BASE_ADDRESS 1196 +#define TRIGGER_STATE_PRIMARY_BASE_ADDRESS 1216 +#define WALL_FUEL_STATE_BASE_ADDRESS 1220 +#define IDLE_STATE_BASE_ADDRESS 1228 +#define ELECTRONIC_THROTTLE_BASE_ADDRESS 1276 +#define WIDEBAND_STATE_BASE_ADDRESS 1328 +#define DC_MOTORS_BASE_ADDRESS 1340 +#define SENT_STATE_BASE_ADDRESS 1352 +#define THROTTLE_MODEL_BASE_ADDRESS 1360 +#define VVT_BASE_ADDRESS 1372 diff --git a/firmware/console/binary/generated/output_channels.ini b/firmware/console/binary/generated/output_channels.ini index 655af6881d..140a950c84 100644 --- a/firmware/console/binary/generated/output_channels.ini +++ b/firmware/console/binary/generated/output_channels.ini @@ -47,24 +47,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -519,228 +518,231 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 diff --git a/firmware/console/binary/generated/total_live_data_generated.h b/firmware/console/binary/generated/total_live_data_generated.h index 98957ba755..d86bb81d0a 100644 --- a/firmware/console/binary/generated/total_live_data_generated.h +++ b/firmware/console/binary/generated/total_live_data_generated.h @@ -1,2 +1,2 @@ // generated by gen_live_documentation.sh / LiveDataProcessor.java -#define TS_TOTAL_OUTPUT_SIZE 1372 \ No newline at end of file +#define TS_TOTAL_OUTPUT_SIZE 1376 \ No newline at end of file diff --git a/firmware/console/binary/live_data.cpp b/firmware/console/binary/live_data.cpp index cdf0db973e..ec5e25cbdd 100644 --- a/firmware/console/binary/live_data.cpp +++ b/firmware/console/binary/live_data.cpp @@ -8,6 +8,7 @@ #include "knock_controller_generated.h" #include "fuel_computer.h" #include "antilag_system_state_generated.h" +#include "vvt_generated.h" template<> const output_channels_s* getLiveData(size_t) { diff --git a/firmware/console/binary/output_channels.txt b/firmware/console/binary/output_channels.txt index d9bccf7219..5897a3c423 100644 --- a/firmware/console/binary/output_channels.txt +++ b/firmware/console/binary/output_channels.txt @@ -76,9 +76,6 @@ uint16_t rpmAcceleration;dRPM;"RPM acceleration",1, 0, 0, 5, 2 int16_t injectionOffset;@@GAUGE_NAME_FUEL_INJECTION_TIMING@@;"deg", 1, 0, 0, 0, 0 ! Corrections -! todo: inline this further to injectorModel deadTime - uint16_t autoscale injectorLagMs;@@GAUGE_NAME_INJECTOR_LAG@@;"ms",{1/@@PACK_MULT_MS@@}, 0, 0, 0, 3 - ! we want a hash of engineMake+engineCode+vehicleName in the log file in order to match TS logs to rusEFI Online tune uint16_t engineMakeCodeNameCrc16;@@GAUGE_NAME_ENGINE_CRC16@@;"crc16",1, 0, 0, 0, 0 ! Wall model AE diff --git a/firmware/console/binary/output_channels_generated.h b/firmware/console/binary/output_channels_generated.h index 6bbcf06999..b046a59331 100644 --- a/firmware/console/binary/output_channels_generated.h +++ b/firmware/console/binary/output_channels_generated.h @@ -263,91 +263,91 @@ struct output_channels_s { // offset 48 int16_t injectionOffset = (int16_t)0; - // @@GAUGE_NAME_INJECTOR_LAG@@ - // ms - // offset 50 - scaled_channel injectorLagMs = (uint16_t)0; - // @@GAUGE_NAME_ENGINE_CRC16@@ // crc16 - // offset 52 + // offset 50 uint16_t engineMakeCodeNameCrc16 = (uint16_t)0; // @@GAUGE_NAME_FUEL_WALL_AMOUNT@@ // mg - // offset 54 + // offset 52 scaled_channel wallFuelAmount = (uint16_t)0; // @@GAUGE_NAME_FUEL_WALL_CORRECTION@@ // mg - // offset 56 + // offset 54 scaled_channel wallFuelCorrectionValue = (int16_t)0; - // offset 58 + // offset 56 uint16_t revolutionCounterSinceStart = (uint16_t)0; // CAN: Rx - // offset 60 + // offset 58 uint16_t canReadCounter = (uint16_t)0; // @@GAUGE_NAME_FUEL_TPS_EXTRA@@ // ms - // offset 62 + // offset 60 scaled_channel tpsAccelFuel = (int16_t)0; // @@GAUGE_NAME_TIMING_ADVANCE@@ // deg - // offset 64 + // offset 62 scaled_channel ignitionAdvance = (int16_t)0; // @@GAUGE_NAME_IGNITION_MODE@@ - // offset 66 + // offset 64 uint8_t currentIgnitionMode = (uint8_t)0; // @@GAUGE_NAME_INJECTION_MODE@@ - // offset 67 + // offset 65 uint8_t currentInjectionMode = (uint8_t)0; // @@GAUGE_NAME_DWELL_DUTY@@ // % - // offset 68 + // offset 66 scaled_channel coilDutyCycle = (uint16_t)0; // ETB Target // % - // offset 70 + // offset 68 scaled_channel etbTarget = (int16_t)0; // @@GAUGE_NAME_ETB_DUTY@@ // % - // offset 72 + // offset 70 scaled_channel etb1DutyCycle = (int16_t)0; // Fuel level // % - // offset 74 + // offset 72 scaled_channel fuelTankLevel = (int16_t)0; // @@GAUGE_NAME_FUEL_CONSUMPTION@@ // grams - // offset 76 + // offset 74 uint16_t totalFuelConsumption = (uint16_t)0; // @@GAUGE_NAME_FUEL_FLOW@@ // gram/s - // offset 78 + // offset 76 scaled_channel fuelFlowRate = (uint16_t)0; // @@GAUGE_NAME_TPS2@@ // % - // offset 80 + // offset 78 scaled_channel TPS2Value = (int16_t)0; // @@GAUGE_NAME_TUNE_CRC16@@ // crc16 - // offset 82 + // offset 80 uint16_t tuneCrc16 = (uint16_t)0; + // need 4 byte alignment + // units + // offset 82 + uint8_t alignmentFill_at_82[2]; + // @@GAUGE_NAME_KNOCK_LEVEL@@ // Volts // offset 84 diff --git a/firmware/console/binary_log/log_fields_generated.h b/firmware/console/binary_log/log_fields_generated.h index e190db3eb3..077d77b669 100644 --- a/firmware/console/binary_log/log_fields_generated.h +++ b/firmware/console/binary_log/log_fields_generated.h @@ -25,7 +25,6 @@ static constexpr LogField fields[] = { {engine->outputChannels.injectorDutyCycle, "Fuel: injector duty cycle", "%", 0}, {engine->outputChannels.veValue, "Fuel: VE", "ratio", 1}, {engine->outputChannels.injectionOffset, "Fuel: Injection timing SOI", "deg", 0}, - {engine->outputChannels.injectorLagMs, "Fuel: injector lag", "ms", 3}, {engine->outputChannels.engineMakeCodeNameCrc16, "Engine CRC16", "crc16", 0}, {engine->outputChannels.wallFuelAmount, "Fuel: wall amount", "mg", 3}, {engine->outputChannels.wallFuelCorrectionValue, "Fuel: wall correction", "mg", 3}, diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index d726e02b0d..5aea1cb512 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -508,9 +508,6 @@ static void updateFuelCorrections() { engine->outputChannels.fuelPidCorrection[0] = 100.0f * (engine->stftCorrection[0] - 1.0f); engine->outputChannels.fuelPidCorrection[1] = 100.0f * (engine->stftCorrection[1] - 1.0f); engine->outputChannels.Gego = 100.0f * engine->stftCorrection[0]; - -// get rid of this, have gauges use injector model info directly - engine->outputChannels.injectorLagMs = engine->module()->getDeadtime(); } static void updateFuelResults() { diff --git a/firmware/controllers/actuators/electronic_throttle.cpp b/firmware/controllers/actuators/electronic_throttle.cpp index 2206a545ac..2dbba69c75 100644 --- a/firmware/controllers/actuators/electronic_throttle.cpp +++ b/firmware/controllers/actuators/electronic_throttle.cpp @@ -583,13 +583,15 @@ bool EtbController::checkStatus() { TpsState localReason = TpsState::None; if (etbTpsErrorCounter > 50) { - localReason = TpsState::IntermittentTps; + // TODO: https://github.com/FOME-Tech/fome-fw/issues/169 + // localReason = TpsState::IntermittentTps; #if EFI_SHAFT_POSITION_INPUT } else if (engineConfiguration->disableEtbWhenEngineStopped && !engine->triggerCentral.engineMovedRecently()) { localReason = TpsState::EngineStopped; #endif // EFI_SHAFT_POSITION_INPUT } else if (etbPpsErrorCounter > 50) { - localReason = TpsState::IntermittentPps; + // TODO: https://github.com/FOME-Tech/fome-fw/issues/169 + // localReason = TpsState::IntermittentPps; } else if (engine->engineState.lua.luaDisableEtb) { localReason = TpsState::Lua; } diff --git a/firmware/controllers/actuators/vvt.cpp b/firmware/controllers/actuators/vvt.cpp index 96bada4378..75ea2fdcd7 100644 --- a/firmware/controllers/actuators/vvt.cpp +++ b/firmware/controllers/actuators/vvt.cpp @@ -12,10 +12,6 @@ #define NO_PIN_PERIOD 500 -#if defined(HAS_OS_ACCESS) -#error "Unexpected OS ACCESS HERE" -#endif /* HAS_OS_ACCESS */ - using vvt_map_t = Map3D; static vvt_map_t vvtTable1; @@ -62,6 +58,8 @@ expected VvtController::getSetpoint() { engine->outputChannels.vvtTargets[index] = target; #endif + vvtTarget = target; + return target; } @@ -104,6 +102,8 @@ void VvtController::setOutput(expected outputValue) { && engine->rpmCalculator.getSecondsSinceEngineStart(getTimeNowNt()) > engineConfiguration->vvtActivationDelayMs / MS_PER_SECOND ; + vvtOutput = outputValue.value_or(0); + if (outputValue && enabled) { m_pwm.setSimplePwmDutyCycle(PERCENT_TO_DUTY(outputValue.Value)); } else { @@ -184,3 +184,16 @@ void initVvtActuators() { } #endif + +template<> +const vvt_s* getLiveData(size_t idx) { +#if EFI_AUX_PID + if (idx >= efi::size(instances)) { + return nullptr; + } + + return &instances[idx]; +#else + return nullptr; +#endif +} diff --git a/firmware/controllers/actuators/vvt.h b/firmware/controllers/actuators/vvt.h index 4ca5331f5b..7c6d13c125 100644 --- a/firmware/controllers/actuators/vvt.h +++ b/firmware/controllers/actuators/vvt.h @@ -11,6 +11,7 @@ #include "closed_loop_controller.h" #include "pwm_generator_logic.h" #include "efi_pid.h" +#include "vvt_generated.h" class ValueProvider3D; @@ -18,7 +19,7 @@ void initVvtActuators(); void startVvtControlPins(); void stopVvtControlPins(); -class VvtController : public PeriodicTimerController, public ClosedLoopController { +class VvtController : public PeriodicTimerController, public ClosedLoopController, public vvt_s { public: void init(int index, int bankIndex, int camIndex, const ValueProvider3D* targetMap); diff --git a/firmware/controllers/actuators/vvt.txt b/firmware/controllers/actuators/vvt.txt new file mode 100644 index 0000000000..1fab77814c --- /dev/null +++ b/firmware/controllers/actuators/vvt.txt @@ -0,0 +1,4 @@ +struct_no_prefix vvt_s + uint16_t autoscale vvtTarget;;"deg", 0.1, 0, -90, 90, 1 + uint8_t autoscale vvtOutput;;"%", 0.5, 0, 100, 1 +end_struct diff --git a/firmware/controllers/actuators/vvt_generated.h b/firmware/controllers/actuators/vvt_generated.h new file mode 100644 index 0000000000..722cbff171 --- /dev/null +++ b/firmware/controllers/actuators/vvt_generated.h @@ -0,0 +1,19 @@ +#pragma once +#include "rusefi_types.h" +struct vvt_s { + // deg + // offset 0 + scaled_channel vvtTarget = (uint16_t)0; + + // % + // offset 2 + scaled_channel vvtOutput = (uint8_t)0; + + // need 4 byte alignment + // units + // offset 3 + uint8_t alignmentFill_at_3[1]; + +}; +static_assert(sizeof(vvt_s) == 4); + diff --git a/firmware/controllers/algo/defaults/default_fuel.cpp b/firmware/controllers/algo/defaults/default_fuel.cpp index e058756204..a9ce2b691b 100644 --- a/firmware/controllers/algo/defaults/default_fuel.cpp +++ b/firmware/controllers/algo/defaults/default_fuel.cpp @@ -210,6 +210,19 @@ void setDefaultWallWetting() { copyArray(engineConfiguration->wwBetaMapValues, betaMap); } +static void setDefaultLambdaProtection() { + engineConfiguration->lambdaProtectionEnable = false; + + engineConfiguration->lambdaProtectionMinLoad = 60; + engineConfiguration->lambdaProtectionMinRpm = 2500; + engineConfiguration->lambdaProtectionMinTps = 50; + engineConfiguration->lambdaProtectionTimeout = 0.5f; + + engineConfiguration->lambdaProtectionRestoreLoad = 30; + engineConfiguration->lambdaProtectionRestoreRpm = 2000; + engineConfiguration->lambdaProtectionRestoreTps = 20; +} + void setDefaultFuel() { // Base injection configuration engineConfiguration->isInjectionEnabled = true; @@ -278,4 +291,7 @@ void setDefaultFuel() { // Some reasonable reference pressure that many vehicles use engineConfiguration->fuelReferencePressure = 300; + + // Lambda protection defaults + setDefaultLambdaProtection(); } diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index ae4c5d3857..bbaa695511 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -49,6 +49,7 @@ #include "fuel_schedule.h" #include "prime_injection.h" #include "throttle_model.h" +#include "lambda_monitor.h" #ifndef EFI_UNIT_TEST #error EFI_UNIT_TEST must be defined! @@ -157,7 +158,7 @@ class Engine final : public TriggerStateListener { * Slightly shorter helper function to keep the code looking clean. */ template - auto & module() { + constexpr auto & module() { return engineModules.get(); } @@ -182,6 +183,8 @@ class Engine final : public TriggerStateListener { BoostController boostController; #endif // EFI_BOOST_CONTROL + LambdaMonitor lambdaMonitor; + IgnitionState ignitionState; void resetLua(); diff --git a/firmware/controllers/algo/engine2.cpp b/firmware/controllers/algo/engine2.cpp index c8d5120391..0b5c19d82c 100644 --- a/firmware/controllers/algo/engine2.cpp +++ b/firmware/controllers/algo/engine2.cpp @@ -156,6 +156,7 @@ void EngineState::periodicFastCallback() { float fuelLoad = getFuelingLoad(); injectionOffset = getInjectionOffset(rpm, fuelLoad); + engine->lambdaMonitor.update(rpm, fuelLoad); float ignitionLoad = getIgnitionLoad(); float advance = getAdvance(rpm, ignitionLoad) * engine->ignitionState.luaTimingMult + engine->ignitionState.luaTimingAdd; diff --git a/firmware/controllers/algo/fuel/injector_model.cpp b/firmware/controllers/algo/fuel/injector_model.cpp index 338093eb0a..f71d936624 100644 --- a/firmware/controllers/algo/fuel/injector_model.cpp +++ b/firmware/controllers/algo/fuel/injector_model.cpp @@ -63,7 +63,7 @@ expected InjectorModel::getFuelDifferentialPressure() const { - map.value_or(101.325); case ICM_SensedRailPressure: { if (!Sensor::hasSensor(SensorType::FuelPressureInjector)) { - firmwareError(ObdCode::OBD_PCM_Processor_Fault, "Fuel pressure compensation is set to use a pressure sensor, but none is configured."); + warning(ObdCode::OBD_Fuel_Pressure_Sensor_Missing, "Fuel pressure compensation is set to use a pressure sensor, but none is configured."); return unexpected; } diff --git a/firmware/controllers/algo/fuel/injector_model.h b/firmware/controllers/algo/fuel/injector_model.h index db41c0ce6a..c5c95b6a6a 100644 --- a/firmware/controllers/algo/fuel/injector_model.h +++ b/firmware/controllers/algo/fuel/injector_model.h @@ -4,14 +4,14 @@ #include "injector_model_generated.h" #include "engine_module.h" -struct IInjectorModel : public EngineModule { +struct IInjectorModel : public EngineModule, public injector_model_s { virtual void prepare() = 0; virtual floatms_t getInjectionDuration(float fuelMassGram) const = 0; virtual float getFuelMassForDuration(floatms_t duration) const = 0; virtual floatms_t getDeadtime() const = 0; }; -class InjectorModelBase : public IInjectorModel, public injector_model_s { +class InjectorModelBase : public IInjectorModel { public: void prepare() override; floatms_t getInjectionDuration(float fuelMassGram) const override; diff --git a/firmware/controllers/algo/fuel/injector_model.txt b/firmware/controllers/algo/fuel/injector_model.txt index 3db23ddc22..c6a4d92729 100644 --- a/firmware/controllers/algo/fuel/injector_model.txt +++ b/firmware/controllers/algo/fuel/injector_model.txt @@ -1,7 +1,7 @@ struct_no_prefix injector_model_s -float m_deadtime;injectorLag(VBatt)\nthis value depends on a slow-changing VBatt value, so\nwe update it once in a while +float m_deadtime;@@GAUGE_NAME_INJECTOR_LAG@@;"ms",1, 0, 0, 0, 3 -float pressureDelta;fuel: injector pressureDelta;"kPa", 1, 0, -10000, 10000, 1 -float pressureRatio;fuel: injector pressureRatio;"", 1, 0, -10000, 10000, 3 +float pressureDelta;fuel: Injector pressure delta;"kPa", 1, 0, -1000, 1000, 1 +float pressureRatio;fuel: Injector pressure ratio;"", 1, 0, 0, 100, 3 end_struct diff --git a/firmware/controllers/algo/fuel/injector_model_generated.h b/firmware/controllers/algo/fuel/injector_model_generated.h index 408e8d42f7..a5c9251a4c 100644 --- a/firmware/controllers/algo/fuel/injector_model_generated.h +++ b/firmware/controllers/algo/fuel/injector_model_generated.h @@ -1,18 +1,17 @@ #pragma once #include "rusefi_types.h" struct injector_model_s { - // injectorLag(VBatt) - // this value depends on a slow-changing VBatt value, so - // we update it once in a while + // @@GAUGE_NAME_INJECTOR_LAG@@ + // ms // offset 0 float m_deadtime = (float)0; - // fuel: injector pressureDelta + // fuel: Injector pressure delta // kPa // offset 4 float pressureDelta = (float)0; - // fuel: injector pressureRatio + // fuel: Injector pressure ratio // offset 8 float pressureRatio = (float)0; diff --git a/firmware/controllers/algo/obd_error_codes.h b/firmware/controllers/algo/obd_error_codes.h index 550e5abbb2..112e3e3697 100644 --- a/firmware/controllers/algo/obd_error_codes.h +++ b/firmware/controllers/algo/obd_error_codes.h @@ -14,16 +14,6 @@ enum class ObdCode : uint16_t { None = 0, -//P0001 Fuel Volume Regulator Control Circuit/Open -//P0002 Fuel Volume Regulator Control Circuit Range/Performance -//P0003 Fuel Volume Regulator Control Circuit Low -//P0004 Fuel Volume Regulator Control Circuit High -//P0005 Fuel Shutoff Valve "A" Control Circuit/Open -//P0006 Fuel Shutoff Valve "A" Control Circuit Low -//P0007 Fuel Shutoff Valve "A" Control Circuit High -//P0008 Engine Positions System Performance Bank 1 -//P0009 Engine Position System Performance Bank 2 -//P0010 "A" Camshaft Position Actuator Circuit (Bank 1) //P0001 Fuel Volume Regulator Control Circuit/Open //P0002 Fuel Volume Regulator Control Circuit Range/Performance //P0003 Fuel Volume Regulator Control Circuit Low @@ -108,7 +98,7 @@ enum class ObdCode : uint16_t { //P0087 Fuel Rail/System Pressure - Too Low //P0088 Fuel Rail/System Pressure - Too High //P0089 Fuel Pressure Regulator 1 Performance - //P0090 Fuel Pressure Regulator 1 Control Circuit + OBD_Fuel_Pressure_Sensor_Missing = 90, //P0091 Fuel Pressure Regulator 1 Control Circuit Low //P0092 Fuel Pressure Regulator 1 Control Circuit High //P0093 Fuel System Leak Detected - Large Leak @@ -1734,7 +1724,7 @@ enum class ObdCode : uint16_t { CUSTOM_6019 = 6019, CUSTOM_6020 = 6020, - CUSTOM_OBD_UNEXPECTED_INJECTION_MODE = 6021, + CUSTOM_6021 = 6021, CUSTOM_6022 = 6022, CUSTOM_OBD_UNKNOWN_FIRING_ORDER = 6023, CUSTOM_OBD_WRONG_FIRING_ORDER = 6024, @@ -1772,9 +1762,9 @@ enum class ObdCode : uint16_t { CUSTOM_TOO_LONG_CRANKING_FUEL_INJECTION = 6054, CUSTOM_INTERPOLATE_NAN = 6055, ERROR_HISTO_NAME = 6056, - CUSTOM_6057 = 6057, + // unused code: CUSTOM_6057 = 6057, CUSTOM_OBD_HIGH_FREQUENCY = 6058, - CUSTOM_OBD_59 = 6059, + // unused code: CUSTOM_OBD_59 = 6059, CUSTOM_OBD_MMC_START1 = 6060, CUSTOM_OBD_MMC_START2 = 6061, @@ -2123,7 +2113,7 @@ enum class ObdCode : uint16_t { CUSTOM_INSTANT_MAP_DECODING = 6899, STACK_USAGE_COMMUNICATION = 6900, STACK_USAGE_MIL = 6901, - STACK_USAGE_BENCH = 6902, + CUSTOM_6902 = 6902, STACK_USAGE_STATUS = 6903, STACK_USAGE_4 = 6904, diff --git a/firmware/controllers/bench_test.cpp b/firmware/controllers/bench_test.cpp index c5401a3745..2a1cd3a08d 100644 --- a/firmware/controllers/bench_test.cpp +++ b/firmware/controllers/bench_test.cpp @@ -60,10 +60,10 @@ static void benchOn(OutputPin* output) { output->setValue(true); } -static char pin_error[64]; - static void benchOff(OutputPin* output) { #if EFI_PROD_CODE && (BOARD_EXT_GPIOCHIPS > 0) + static char pin_error[64]; + brain_pin_diag_e diag = output->getDiag(); if (diag == PIN_INVALID) { efiPrintf("No Diag on this pin"); @@ -123,6 +123,8 @@ static int count; static brain_pin_e brainPin; static OutputPin* pinX; +static chibios_rt::CounterSemaphore benchSemaphore(0); + static void pinbench(float startdelay, float ontime, float offtime, int iterations, OutputPin* pinParam, brain_pin_e brainPinParam) { @@ -134,6 +136,7 @@ static void pinbench(float startdelay, float ontime, float offtime, int iteratio brainPin = brainPinParam; // let's signal bench thread to wake up isBenchTestPending = true; + benchSemaphore.signal(); } /*==========================================================================*/ @@ -271,27 +274,25 @@ void fuelPumpBench(void) { fuelPumpBenchExt(3000.0); } -class BenchController : public PeriodicController { +class BenchController : public ThreadController { public: - BenchController() : PeriodicController("BenchThread") { } + BenchController() : ThreadController("BenchTest", PRIO_BENCH_TEST) { } private: - void PeriodicTask(efitick_t nowNt) override { - UNUSED(nowNt); - setPeriod(50 /* ms */); - - validateStack("Bench", ObdCode::STACK_USAGE_BENCH, 128); - - // naive inter-thread communication - waiting for a flag - if (isBenchTestPending) { - isBenchTestPending = false; - runBench(brainPin, pinX, startDelayMs, onTime, offTime, count); - } - - if (widebandUpdatePending) { -#if EFI_WIDEBAND_FIRMWARE_UPDATE && EFI_CAN_SUPPORT - updateWidebandFirmware(); -#endif - widebandUpdatePending = false; + void ThreadTask() override { + while (true) { + benchSemaphore.wait(); + + if (isBenchTestPending) { + isBenchTestPending = false; + runBench(brainPin, pinX, startDelayMs, onTime, offTime, count); + } + + if (widebandUpdatePending) { + #if EFI_WIDEBAND_FIRMWARE_UPDATE && EFI_CAN_SUPPORT + updateWidebandFirmware(); + #endif + widebandUpdatePending = false; + } } } }; @@ -394,6 +395,7 @@ static void handleCommandX14(uint16_t index) { #endif case 0x12: widebandUpdatePending = true; + benchSemaphore.signal(); return; case 0x14: #ifdef STM32F7 @@ -446,7 +448,6 @@ void executeTSCommand(uint16_t subsystem, uint16_t index) { case TS_IGNITION_CATEGORY: if (!running) { - /* WARN: fixed charge time */ doRunSparkBench(index, 300.0, engineConfiguration->benchTestOnTime, engineConfiguration->benchTestOffTime, engineConfiguration->benchTestCount); } @@ -568,7 +569,6 @@ void initBenchTest() { addConsoleAction(CMD_HPFP_BENCH, hpfpValveBench); addConsoleActionFFFFF("luabench2", luaOutBench2); - instance.setPeriod(200 /*ms*/); instance.start(); onConfigurationChangeBenchTest(); } diff --git a/firmware/controllers/can/can_verbose.cpp b/firmware/controllers/can/can_verbose.cpp index ae7770ba22..0a22e61895 100644 --- a/firmware/controllers/can/can_verbose.cpp +++ b/firmware/controllers/can/can_verbose.cpp @@ -27,8 +27,8 @@ struct Status { uint8_t fuelPump : 1; uint8_t checkEngine : 1; uint8_t o2Heater : 1; + uint8_t lambdaProtectActive : 1; - uint8_t pad6 : 1; uint8_t pad7 : 1; uint8_t pad8 : 1; @@ -46,6 +46,7 @@ static void populateFrame(Status& msg) { msg.fuelPump = enginePins.fuelPumpRelay.getLogicValue(); msg.checkEngine = enginePins.checkEnginePin.getLogicValue(); msg.o2Heater = enginePins.o2heater.getLogicValue(); + msg.lambdaProtectActive = engine->lambdaMonitor.isCut(); msg.gear = Sensor::getOrZero(SensorType::DetectedGear); } diff --git a/firmware/controllers/can/rusEFI_CAN_verbose.dbc b/firmware/controllers/can/rusEFI_CAN_verbose.dbc index 37d288999f..4caf87b0ee 100644 --- a/firmware/controllers/can/rusEFI_CAN_verbose.dbc +++ b/firmware/controllers/can/rusEFI_CAN_verbose.dbc @@ -54,6 +54,7 @@ BO_ 512 BASE0: 8 Vector__XXX SG_ FuelPumpAct : 34|1@1+ (1,0) [0|0] "" Vector__XXX SG_ CELAct : 35|1@1+ (1,0) [0|0] "" Vector__XXX SG_ EGOHeatAct : 36|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ LambdaProtectAct : 37|1@1+ (1,0) [0|0] "" Vector__XXX SG_ CurrentGear : 40|8@1+ (1,0) [0|0] "" Vector__XXX BO_ 513 BASE1: 8 Vector__XXX @@ -123,6 +124,7 @@ CM_ SG_ 512 MainRelayAct "Main Relay Active"; CM_ SG_ 512 FuelPumpAct "Fuel Pump Output Active"; CM_ SG_ 512 CELAct "Check Engine Light Active"; CM_ SG_ 512 EGOHeatAct "EGO Heater Commanded On"; +CM_ SG_ 512 LambdaProtectAct "Lambda protection active (fault detected)"; CM_ SG_ 512 CurrentGear "Current detected gear. 0 means neutral, 1 means first, etc."; CM_ SG_ 513 RPM "Current RPM"; CM_ SG_ 513 IgnitionTiming "Current Ignition Timing. Positive is advance."; diff --git a/firmware/controllers/date_stamp.h b/firmware/controllers/date_stamp.h index e61031753d..dc0c1e7a6b 100644 --- a/firmware/controllers/date_stamp.h +++ b/firmware/controllers/date_stamp.h @@ -1,2 +1,2 @@ #pragma once -#define VCS_DATE 20230612 +#define VCS_DATE 20230710 diff --git a/firmware/controllers/engine_cycle/fuel_schedule.cpp b/firmware/controllers/engine_cycle/fuel_schedule.cpp index 8c89abc0a6..d82c8b218d 100644 --- a/firmware/controllers/engine_cycle/fuel_schedule.cpp +++ b/firmware/controllers/engine_cycle/fuel_schedule.cpp @@ -65,10 +65,9 @@ InjectionEvent::InjectionEvent() { // Returns the start angle of this injector in engine coordinates (0-720 for a 4 stroke), // or unexpected if unable to calculate the start angle due to missing information. expected InjectionEvent::computeInjectionAngle(int cylinderIndex) const { - floatus_t oneDegreeUs = getEngineRotationState()->getOneDegreeUs(); // local copy + floatus_t oneDegreeUs = getEngineRotationState()->getOneDegreeUs(); if (cisnan(oneDegreeUs)) { // in order to have fuel schedule we need to have current RPM - // wonder if this line slows engine startup? return unexpected; } @@ -127,30 +126,13 @@ bool FuelSchedule::addFuelEventsForCylinder(int i) { injection_mode_e mode = getCurrentInjectionMode(); engine->outputChannels.currentInjectionMode = static_cast(mode); - // We need two outputs if: - // - we are running batch fuel, and have "use two wire batch" enabled - // - running mode is sequential, but cranking mode is batch, so we should run two wire batch while cranking - // (if we didn't, only half of injectors would fire while cranking) - bool isTwoWireBatch = engineConfiguration->twoWireBatchInjection || (engineConfiguration->injectionMode == IM_SEQUENTIAL); - - int injectorIndex; - if (mode == IM_SIMULTANEOUS || mode == IM_SINGLE_POINT) { - // These modes only have one injector - injectorIndex = 0; - } else if (mode == IM_SEQUENTIAL || (mode == IM_BATCH && isTwoWireBatch)) { - // Map order index -> cylinder index (firing order) - injectorIndex = getCylinderId(i) - 1; - } else if (mode == IM_BATCH) { - // Loop over the first half of the firing order twice - injectorIndex = i % (engineConfiguration->cylindersCount / 2); - } else { - firmwareError(ObdCode::CUSTOM_OBD_UNEXPECTED_INJECTION_MODE, "Unexpected injection mode %d", mode); - injectorIndex = 0; - } + // Map order index -> cylinder index (firing order) + // Single point only uses injector 1 (index 0) + int injectorIndex = mode == IM_SINGLE_POINT ? 0 : ID2INDEX(getCylinderId(i)); - InjectorOutputPin *secondOutput; + InjectorOutputPin *secondOutput = nullptr; - if (mode == IM_BATCH && isTwoWireBatch) { + if (mode == IM_BATCH) { /** * also fire the 2nd half of the injectors so that we can implement a batch mode on individual wires */ @@ -158,18 +140,13 @@ bool FuelSchedule::addFuelEventsForCylinder(int i) { // Each injector gets fired as a primary (the same as sequential), but also // fires the injector 360 degrees later in the firing order. int secondOrder = (i + (engineConfiguration->cylindersCount / 2)) % engineConfiguration->cylindersCount; - int secondIndex = getCylinderId(secondOrder) - 1; + int secondIndex = ID2INDEX(getCylinderId(secondOrder)); secondOutput = &enginePins.injectors[secondIndex]; - } else { - secondOutput = nullptr; } - InjectorOutputPin *output = &enginePins.injectors[injectorIndex]; - bool isSimultaneous = mode == IM_SIMULTANEOUS; - - ev->outputs[0] = output; + ev->outputs[0] = &enginePins.injectors[injectorIndex]; ev->outputs[1] = secondOutput; - ev->isSimultaneous = isSimultaneous; + ev->isSimultaneous = mode == IM_SIMULTANEOUS; // Stash the cylinder number so we can select the correct fueling bank later ev->cylinderNumber = injectorIndex; diff --git a/firmware/controllers/engine_cycle/spark_logic.cpp b/firmware/controllers/engine_cycle/spark_logic.cpp index 0c9d6cdce3..ccbf7bb4f0 100644 --- a/firmware/controllers/engine_cycle/spark_logic.cpp +++ b/firmware/controllers/engine_cycle/spark_logic.cpp @@ -97,18 +97,17 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_ const int index = getIgnitionPinForIndex(event->cylinderIndex, ignitionMode); const int coilIndex = ID2INDEX(getCylinderId(index)); - event->outputs[0] = &enginePins.coils[coilIndex]; - IgnitionOutputPin *secondOutput; + + IgnitionOutputPin *secondOutput = nullptr; // If wasted spark, find the paired coil in addition to "main" output for this cylinder if (ignitionMode == IM_WASTED_SPARK) { int secondIndex = index + engineConfiguration->cylindersCount / 2; int secondCoilIndex = ID2INDEX(getCylinderId(secondIndex)); secondOutput = &enginePins.coils[secondCoilIndex]; - } else { - secondOutput = nullptr; } + event->outputs[0] = &enginePins.coils[coilIndex]; event->outputs[1] = secondOutput; // Stash which cylinder we're scheduling so that knock sensing knows which diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index 10abe66fae..a5c795f6e5 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures.h @@ -520,7 +520,7 @@ struct engine_configuration_s { bool useFordRedundantTps : 1 {}; // offset 88 bit 2 - bool unused88b2 : 1 {}; + bool lambdaProtectionEnable : 1 {}; // offset 88 bit 3 bool overrideTriggerGaps : 1 {}; @@ -1131,8 +1131,13 @@ struct engine_configuration_s { // offset 640 scaled_channel fordInjectorSmallPulseSlope; + // RPM // offset 642 - uint8_t unused638[2]; + scaled_channel lambdaProtectionMinRpm; + + // % + // offset 643 + scaled_channel lambdaProtectionMinLoad; // offset 644 bit 0 bool is_enabled_spi_1 : 1 {}; @@ -1217,31 +1222,31 @@ struct engine_configuration_s { bool enableAemXSeries : 1 {}; // offset 644 bit 23 - bool unusedBit_195_23 : 1 {}; + bool unusedBit_196_23 : 1 {}; // offset 644 bit 24 - bool unusedBit_195_24 : 1 {}; + bool unusedBit_196_24 : 1 {}; // offset 644 bit 25 - bool unusedBit_195_25 : 1 {}; + bool unusedBit_196_25 : 1 {}; // offset 644 bit 26 - bool unusedBit_195_26 : 1 {}; + bool unusedBit_196_26 : 1 {}; // offset 644 bit 27 - bool unusedBit_195_27 : 1 {}; + bool unusedBit_196_27 : 1 {}; // offset 644 bit 28 - bool unusedBit_195_28 : 1 {}; + bool unusedBit_196_28 : 1 {}; // offset 644 bit 29 - bool unusedBit_195_29 : 1 {}; + bool unusedBit_196_29 : 1 {}; // offset 644 bit 30 - bool unusedBit_195_30 : 1 {}; + bool unusedBit_196_30 : 1 {}; // offset 644 bit 31 - bool unusedBit_195_31 : 1 {}; + bool unusedBit_196_31 : 1 {}; // offset 648 brain_input_pin_e logicAnalyzerPins[LOGIC_ANALYZER_CHANNEL_COUNT]; @@ -1389,8 +1394,18 @@ struct engine_configuration_s { // offset 746 uint16_t startCrankingDuration; + // % // offset 748 - uint8_t unused748[3]; + scaled_channel lambdaProtectionMinTps; + + // Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed + // s + // offset 749 + scaled_channel lambdaProtectionTimeout; + + // RPM + // offset 750 + scaled_channel lambdaProtectionRestoreRpm; // offset 751 pin_output_mode_e acRelayPinMode; @@ -1537,13 +1552,13 @@ struct engine_configuration_s { bool verboseCan2 : 1 {}; // offset 808 bit 29 - bool unusedBit_288_29 : 1 {}; + bool unusedBit_291_29 : 1 {}; // offset 808 bit 30 - bool unusedBit_288_30 : 1 {}; + bool unusedBit_291_30 : 1 {}; // offset 808 bit 31 - bool unusedBit_288_31 : 1 {}; + bool unusedBit_291_31 : 1 {}; // offset 812 dc_io etbIo[ETB_COUNT]; @@ -1851,10 +1866,8 @@ struct engine_configuration_s { // offset 1200 bit 11 bool isManualSpinningMode : 1 {}; - // This is needed if your coils are individually wired and you wish to use batch injection. - // enable two_wire_batch_injection // offset 1200 bit 12 - bool twoWireBatchInjection : 1 {}; + bool unused1200b12 : 1 {}; // offset 1200 bit 13 bool neverInstantRpm : 1 {}; @@ -1921,10 +1934,10 @@ struct engine_configuration_s { bool ALSActivateInverted : 1 {}; // offset 1200 bit 30 - bool unusedBit_393_30 : 1 {}; + bool unusedBit_396_30 : 1 {}; // offset 1200 bit 31 - bool unusedBit_393_31 : 1 {}; + bool unusedBit_396_31 : 1 {}; // count // offset 1204 @@ -2231,96 +2244,101 @@ struct engine_configuration_s { bool injectorFlowAsMassFlow : 1 {}; // offset 1436 bit 4 - bool unusedBit_467_4 : 1 {}; + bool unusedBit_470_4 : 1 {}; // offset 1436 bit 5 - bool unusedBit_467_5 : 1 {}; + bool unusedBit_470_5 : 1 {}; // offset 1436 bit 6 - bool unusedBit_467_6 : 1 {}; + bool unusedBit_470_6 : 1 {}; // offset 1436 bit 7 - bool unusedBit_467_7 : 1 {}; + bool unusedBit_470_7 : 1 {}; // offset 1436 bit 8 - bool unusedBit_467_8 : 1 {}; + bool unusedBit_470_8 : 1 {}; // offset 1436 bit 9 - bool unusedBit_467_9 : 1 {}; + bool unusedBit_470_9 : 1 {}; // offset 1436 bit 10 - bool unusedBit_467_10 : 1 {}; + bool unusedBit_470_10 : 1 {}; // offset 1436 bit 11 - bool unusedBit_467_11 : 1 {}; + bool unusedBit_470_11 : 1 {}; // offset 1436 bit 12 - bool unusedBit_467_12 : 1 {}; + bool unusedBit_470_12 : 1 {}; // offset 1436 bit 13 - bool unusedBit_467_13 : 1 {}; + bool unusedBit_470_13 : 1 {}; // offset 1436 bit 14 - bool unusedBit_467_14 : 1 {}; + bool unusedBit_470_14 : 1 {}; // offset 1436 bit 15 - bool unusedBit_467_15 : 1 {}; + bool unusedBit_470_15 : 1 {}; // offset 1436 bit 16 - bool unusedBit_467_16 : 1 {}; + bool unusedBit_470_16 : 1 {}; // offset 1436 bit 17 - bool unusedBit_467_17 : 1 {}; + bool unusedBit_470_17 : 1 {}; // offset 1436 bit 18 - bool unusedBit_467_18 : 1 {}; + bool unusedBit_470_18 : 1 {}; // offset 1436 bit 19 - bool unusedBit_467_19 : 1 {}; + bool unusedBit_470_19 : 1 {}; // offset 1436 bit 20 - bool unusedBit_467_20 : 1 {}; + bool unusedBit_470_20 : 1 {}; // offset 1436 bit 21 - bool unusedBit_467_21 : 1 {}; + bool unusedBit_470_21 : 1 {}; // offset 1436 bit 22 - bool unusedBit_467_22 : 1 {}; + bool unusedBit_470_22 : 1 {}; // offset 1436 bit 23 - bool unusedBit_467_23 : 1 {}; + bool unusedBit_470_23 : 1 {}; // offset 1436 bit 24 - bool unusedBit_467_24 : 1 {}; + bool unusedBit_470_24 : 1 {}; // offset 1436 bit 25 - bool unusedBit_467_25 : 1 {}; + bool unusedBit_470_25 : 1 {}; // offset 1436 bit 26 - bool unusedBit_467_26 : 1 {}; + bool unusedBit_470_26 : 1 {}; // offset 1436 bit 27 - bool unusedBit_467_27 : 1 {}; + bool unusedBit_470_27 : 1 {}; // offset 1436 bit 28 - bool unusedBit_467_28 : 1 {}; + bool unusedBit_470_28 : 1 {}; // offset 1436 bit 29 - bool unusedBit_467_29 : 1 {}; + bool unusedBit_470_29 : 1 {}; // offset 1436 bit 30 - bool unusedBit_467_30 : 1 {}; + bool unusedBit_470_30 : 1 {}; // offset 1436 bit 31 - bool unusedBit_467_31 : 1 {}; + bool unusedBit_470_31 : 1 {}; // Time between bench test pulses // ms // offset 1440 scaled_channel benchTestOffTime; + // % // offset 1441 - uint8_t unused1445[2]; + scaled_channel lambdaProtectionRestoreTps; + + // % + // offset 1442 + scaled_channel lambdaProtectionRestoreLoad; // offset 1443 pin_input_mode_e launchActivatePinMode; @@ -3800,6 +3818,17 @@ struct persistent_config_s { // offset 22476 blend_table_s boostClosedLoopBlends[BOOST_BLEND_COUNT]; + // lambda + // offset 22852 + scaled_channel lambdaMaxDeviationTable[4][4]; + + // offset 22868 + uint16_t lambdaMaxDeviationLoadBins[4]; + + // RPM + // offset 22876 + uint16_t lambdaMaxDeviationRpmBins[4]; + }; -static_assert(sizeof(persistent_config_s) == 22852); +static_assert(sizeof(persistent_config_s) == 22884); diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 6d91d7305c..b13919b80f 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -945,7 +945,7 @@ #define PACK_PERCENT_BYTE_MULT 100.0 #define PEDAL_TO_TPS_SIZE 8 #define PERCENT_TRIM_BYTE_PACKING_DIV 0.02 -#define persistent_config_s_size 22852 +#define persistent_config_s_size 22884 #define pid_s_size 20 #define PidAutoTune_AutoTunerState_AUTOTUNER_OFF 0 #define PidAutoTune_AutoTunerState_CONVERGED 16 @@ -1031,7 +1031,7 @@ #define SentEtbType_NONE 0 #define show_Frankenso_presets true #define show_test_presets true -#define SIGNATURE_HASH 3178062656 +#define SIGNATURE_HASH 4223705144 #define spi_device_e_auto_enum 0="SPI_NONE",1="SPI_DEVICE_1",2="SPI_DEVICE_2",3="SPI_DEVICE_3",4="SPI_DEVICE_4" #define spi_device_e_SPI_DEVICE_1 1 #define spi_device_e_SPI_DEVICE_2 2 @@ -1076,7 +1076,7 @@ #define TOOTH_PACKET_SIZE 2 #define TOP_DEAD_CENTER_MESSAGE "r" #define TORQUE_CURVE_SIZE 6 -#define TOTAL_CONFIG_SIZE 22852 +#define TOTAL_CONFIG_SIZE 22884 #define TPS_2_BYTE_PACKING_MULT 100 #define TPS_TPS_ACCEL_CLT_CORR_TABLE 4 #define TPS_TPS_ACCEL_TABLE 8 @@ -1297,12 +1297,12 @@ #define ts_show_vbatt true #define ts_show_vr_threshold_2 true #define ts_show_vr_threshold_all true -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.f407-discovery.3178062656" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.f407-discovery.4223705144" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' #define TS_TEST_COMMAND_char t -#define TS_TOTAL_OUTPUT_SIZE 1372 +#define TS_TOTAL_OUTPUT_SIZE 1376 #define TS_TRIGGER_SCOPE_CHANNEL_1_NAME "Channel 1" #define TS_TRIGGER_SCOPE_CHANNEL_2_NAME "Channel 2" #define TS_TRIGGER_SCOPE_DISABLE 5 diff --git a/firmware/controllers/generated/signature_48way.h b/firmware/controllers/generated/signature_48way.h index 5381af92a9..f6fe294845 100644 --- a/firmware/controllers/generated/signature_48way.h +++ b/firmware/controllers/generated/signature_48way.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 2778011407 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.48way.2778011407" +#define SIGNATURE_HASH 3812152439 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.48way.3812152439" diff --git a/firmware/controllers/generated/signature_alphax-2chan.h b/firmware/controllers/generated/signature_alphax-2chan.h index 750b7708cd..eeb0e1a7b2 100644 --- a/firmware/controllers/generated/signature_alphax-2chan.h +++ b/firmware/controllers/generated/signature_alphax-2chan.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3289421938 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.alphax-2chan.3289421938" +#define SIGNATURE_HASH 2193447690 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.alphax-2chan.2193447690" diff --git a/firmware/controllers/generated/signature_alphax-4chan.h b/firmware/controllers/generated/signature_alphax-4chan.h index 2e3cda9247..71a493e40d 100644 --- a/firmware/controllers/generated/signature_alphax-4chan.h +++ b/firmware/controllers/generated/signature_alphax-4chan.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 1322818067 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.alphax-4chan.1322818067" +#define SIGNATURE_HASH 141908331 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.alphax-4chan.141908331" diff --git a/firmware/controllers/generated/signature_alphax-8chan.h b/firmware/controllers/generated/signature_alphax-8chan.h index fb28da62d0..ec514ea7ba 100644 --- a/firmware/controllers/generated/signature_alphax-8chan.h +++ b/firmware/controllers/generated/signature_alphax-8chan.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 912497898 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.alphax-8chan.912497898" +#define SIGNATURE_HASH 1892573074 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.alphax-8chan.1892573074" diff --git a/firmware/controllers/generated/signature_atlas.h b/firmware/controllers/generated/signature_atlas.h index 96f18cc96e..f78df74baa 100644 --- a/firmware/controllers/generated/signature_atlas.h +++ b/firmware/controllers/generated/signature_atlas.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 4253379218 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.atlas.4253379218" +#define SIGNATURE_HASH 3140004330 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.atlas.3140004330" diff --git a/firmware/controllers/generated/signature_core8.h b/firmware/controllers/generated/signature_core8.h index 2cd2275a52..f856301726 100644 --- a/firmware/controllers/generated/signature_core8.h +++ b/firmware/controllers/generated/signature_core8.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3647508995 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.core8.3647508995" +#define SIGNATURE_HASH 2680508795 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.core8.2680508795" diff --git a/firmware/controllers/generated/signature_f407-discovery.h b/firmware/controllers/generated/signature_f407-discovery.h index cbda7d2827..4957d216c2 100644 --- a/firmware/controllers/generated/signature_f407-discovery.h +++ b/firmware/controllers/generated/signature_f407-discovery.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3178062656 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.f407-discovery.3178062656" +#define SIGNATURE_HASH 4223705144 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.f407-discovery.4223705144" diff --git a/firmware/controllers/generated/signature_f429-discovery.h b/firmware/controllers/generated/signature_f429-discovery.h index f886634c01..4e51a9ad6c 100644 --- a/firmware/controllers/generated/signature_f429-discovery.h +++ b/firmware/controllers/generated/signature_f429-discovery.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3780091829 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.f429-discovery.3780091829" +#define SIGNATURE_HASH 2816629965 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.f429-discovery.2816629965" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index 058c7db9f6..f28f0e5d91 100644 --- a/firmware/controllers/generated/signature_frankenso_na6.h +++ b/firmware/controllers/generated/signature_frankenso_na6.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3273490303 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.frankenso_na6.3273490303" +#define SIGNATURE_HASH 2242952199 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.frankenso_na6.2242952199" diff --git a/firmware/controllers/generated/signature_harley81.h b/firmware/controllers/generated/signature_harley81.h index da8b26a1d7..3f8eae7e9d 100644 --- a/firmware/controllers/generated/signature_harley81.h +++ b/firmware/controllers/generated/signature_harley81.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 1759160271 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.harley81.1759160271" +#define SIGNATURE_HASH 779576503 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.harley81.779576503" diff --git a/firmware/controllers/generated/signature_hellen-gm-e67.h b/firmware/controllers/generated/signature_hellen-gm-e67.h index 63701a5304..7b6c2a182a 100644 --- a/firmware/controllers/generated/signature_hellen-gm-e67.h +++ b/firmware/controllers/generated/signature_hellen-gm-e67.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 2284237158 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen-gm-e67.2284237158" +#define SIGNATURE_HASH 3465245214 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen-gm-e67.3465245214" diff --git a/firmware/controllers/generated/signature_hellen-honda-k.h b/firmware/controllers/generated/signature_hellen-honda-k.h index 2f451dd55e..ca0dd28a28 100644 --- a/firmware/controllers/generated/signature_hellen-honda-k.h +++ b/firmware/controllers/generated/signature_hellen-honda-k.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 330792743 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen-honda-k.330792743" +#define SIGNATURE_HASH 1427815519 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen-honda-k.1427815519" diff --git a/firmware/controllers/generated/signature_hellen-nb1.h b/firmware/controllers/generated/signature_hellen-nb1.h index f1557e7e7e..9719792205 100644 --- a/firmware/controllers/generated/signature_hellen-nb1.h +++ b/firmware/controllers/generated/signature_hellen-nb1.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 375950857 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen-nb1.375950857" +#define SIGNATURE_HASH 1355107697 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen-nb1.1355107697" diff --git a/firmware/controllers/generated/signature_hellen121nissan.h b/firmware/controllers/generated/signature_hellen121nissan.h index a0a666ca8d..9ecd24dccb 100644 --- a/firmware/controllers/generated/signature_hellen121nissan.h +++ b/firmware/controllers/generated/signature_hellen121nissan.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 1723015747 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen121nissan.1723015747" +#define SIGNATURE_HASH 538894651 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen121nissan.538894651" diff --git a/firmware/controllers/generated/signature_hellen121vag.h b/firmware/controllers/generated/signature_hellen121vag.h index 93a93b12cd..7a37096846 100644 --- a/firmware/controllers/generated/signature_hellen121vag.h +++ b/firmware/controllers/generated/signature_hellen121vag.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3400543632 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen121vag.3400543632" +#define SIGNATURE_HASH 2350771944 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen121vag.2350771944" diff --git a/firmware/controllers/generated/signature_hellen128.h b/firmware/controllers/generated/signature_hellen128.h index 0a32d1f50a..b289809177 100644 --- a/firmware/controllers/generated/signature_hellen128.h +++ b/firmware/controllers/generated/signature_hellen128.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 1641938450 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen128.1641938450" +#define SIGNATURE_HASH 661667178 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen128.661667178" diff --git a/firmware/controllers/generated/signature_hellen154hyundai.h b/firmware/controllers/generated/signature_hellen154hyundai.h index 021eb8f16a..362c20a25f 100644 --- a/firmware/controllers/generated/signature_hellen154hyundai.h +++ b/firmware/controllers/generated/signature_hellen154hyundai.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 4113227507 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen154hyundai.4113227507" +#define SIGNATURE_HASH 3011976587 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen154hyundai.3011976587" diff --git a/firmware/controllers/generated/signature_hellen72.h b/firmware/controllers/generated/signature_hellen72.h index e2e4b8fb0e..b3c89c372c 100644 --- a/firmware/controllers/generated/signature_hellen72.h +++ b/firmware/controllers/generated/signature_hellen72.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 284886530 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen72.284886530" +#define SIGNATURE_HASH 1448527226 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen72.1448527226" diff --git a/firmware/controllers/generated/signature_hellen81.h b/firmware/controllers/generated/signature_hellen81.h index 74032d55ea..00a3328df7 100644 --- a/firmware/controllers/generated/signature_hellen81.h +++ b/firmware/controllers/generated/signature_hellen81.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3161554048 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen81.3161554048" +#define SIGNATURE_HASH 4208771064 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen81.4208771064" diff --git a/firmware/controllers/generated/signature_hellen88bmw.h b/firmware/controllers/generated/signature_hellen88bmw.h index ac226db1a8..17be718ead 100644 --- a/firmware/controllers/generated/signature_hellen88bmw.h +++ b/firmware/controllers/generated/signature_hellen88bmw.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3125373875 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellen88bmw.3125373875" +#define SIGNATURE_HASH 4242843851 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellen88bmw.4242843851" diff --git a/firmware/controllers/generated/signature_hellenNA6.h b/firmware/controllers/generated/signature_hellenNA6.h index f53e3ab5b8..91b23035b7 100644 --- a/firmware/controllers/generated/signature_hellenNA6.h +++ b/firmware/controllers/generated/signature_hellenNA6.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 4076854834 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellenNA6.4076854834" +#define SIGNATURE_HASH 3025280330 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellenNA6.3025280330" diff --git a/firmware/controllers/generated/signature_hellenNA8_96.h b/firmware/controllers/generated/signature_hellenNA8_96.h index 4943da3626..106aade78c 100644 --- a/firmware/controllers/generated/signature_hellenNA8_96.h +++ b/firmware/controllers/generated/signature_hellenNA8_96.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 1314630018 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.hellenNA8_96.1314630018" +#define SIGNATURE_HASH 150366970 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.hellenNA8_96.150366970" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index c4fbcd0014..2258bb0a82 100644 --- a/firmware/controllers/generated/signature_mre_f4.h +++ b/firmware/controllers/generated/signature_mre_f4.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 113375757 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.mre_f4.113375757" +#define SIGNATURE_HASH 1080834421 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.mre_f4.1080834421" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index 1e2f07f85a..b51bfc0d79 100644 --- a/firmware/controllers/generated/signature_mre_f7.h +++ b/firmware/controllers/generated/signature_mre_f7.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 113375757 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.mre_f7.113375757" +#define SIGNATURE_HASH 1080834421 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.mre_f7.1080834421" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index 9f50be0460..73b11685db 100644 --- a/firmware/controllers/generated/signature_prometheus_405.h +++ b/firmware/controllers/generated/signature_prometheus_405.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3520811557 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.prometheus_405.3520811557" +#define SIGNATURE_HASH 2541130077 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.prometheus_405.2541130077" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index 4511b36b48..c8b02a4b99 100644 --- a/firmware/controllers/generated/signature_prometheus_469.h +++ b/firmware/controllers/generated/signature_prometheus_469.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 3520811557 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.prometheus_469.3520811557" +#define SIGNATURE_HASH 2541130077 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.prometheus_469.2541130077" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index 54756d5f24..b5f529ef37 100644 --- a/firmware/controllers/generated/signature_proteus_f4.h +++ b/firmware/controllers/generated/signature_proteus_f4.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 2194741944 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.proteus_f4.2194741944" +#define SIGNATURE_HASH 3296516544 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.proteus_f4.3296516544" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index 5403744ff7..7ed47f8022 100644 --- a/firmware/controllers/generated/signature_proteus_f7.h +++ b/firmware/controllers/generated/signature_proteus_f7.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 2194741944 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.proteus_f7.2194741944" +#define SIGNATURE_HASH 3296516544 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.proteus_f7.3296516544" diff --git a/firmware/controllers/generated/signature_proteus_h7.h b/firmware/controllers/generated/signature_proteus_h7.h index d3fb39233c..06b6709dca 100644 --- a/firmware/controllers/generated/signature_proteus_h7.h +++ b/firmware/controllers/generated/signature_proteus_h7.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 2194741944 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.proteus_h7.2194741944" +#define SIGNATURE_HASH 3296516544 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.proteus_h7.3296516544" diff --git a/firmware/controllers/generated/signature_subaru_eg33_f7.h b/firmware/controllers/generated/signature_subaru_eg33_f7.h index 3d94aefe6b..f234dcf250 100644 --- a/firmware/controllers/generated/signature_subaru_eg33_f7.h +++ b/firmware/controllers/generated/signature_subaru_eg33_f7.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 1684310330 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.subaru_eg33_f7.1684310330" +#define SIGNATURE_HASH 583617090 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.subaru_eg33_f7.583617090" diff --git a/firmware/controllers/generated/signature_tdg-pdm8.h b/firmware/controllers/generated/signature_tdg-pdm8.h index fefeba356c..9a6927d188 100644 --- a/firmware/controllers/generated/signature_tdg-pdm8.h +++ b/firmware/controllers/generated/signature_tdg-pdm8.h @@ -1,2 +1,2 @@ -#define SIGNATURE_HASH 1809953687 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.06.11.tdg-pdm8.1809953687" +#define SIGNATURE_HASH 759984367 +#define TS_SIGNATURE "rusEFI (FOME) master.2023.07.09.tdg-pdm8.759984367" diff --git a/firmware/controllers/limp_manager.cpp b/firmware/controllers/limp_manager.cpp index 80bc94162f..638b4580ab 100644 --- a/firmware/controllers/limp_manager.cpp +++ b/firmware/controllers/limp_manager.cpp @@ -80,6 +80,10 @@ void LimpManager::updateState(int rpm, efitick_t nowNt) { } } + if (engine->lambdaMonitor.isCut()) { + allowFuel.clear(ClearReason::LambdaProtection); + } + #if EFI_SHAFT_POSITION_INPUT if (noFiringUntilVvtSync(engineConfiguration->vvtMode[0]) && !engine->triggerCentral.triggerState.hasSynchronizedPhase()) { diff --git a/firmware/controllers/limp_manager.h b/firmware/controllers/limp_manager.h index eef5851b6f..d5dfc96bfe 100644 --- a/firmware/controllers/limp_manager.h +++ b/firmware/controllers/limp_manager.h @@ -23,6 +23,7 @@ enum class ClearReason : uint8_t { IgnitionOff, // 14 Lua, // 15 ACR, // 16 - Harley Automatic Compression Release + LambdaProtection, // 17 // Keep this list in sync with fuelIgnCutCodeList in rusefi.input! // todo: add a code generator between ClearReason and fuelIgnCutCodeList in rusefi.input diff --git a/firmware/controllers/lua/generated/output_lookup_generated.cpp b/firmware/controllers/lua/generated/output_lookup_generated.cpp index ac59325cb2..1d14c7723a 100644 --- a/firmware/controllers/lua/generated/output_lookup_generated.cpp +++ b/firmware/controllers/lua/generated/output_lookup_generated.cpp @@ -1,3 +1,4 @@ +#if !EFI_UNIT_TEST #include "pch.h" #include "value_lookup.h" float getOutputValueByName(const char *name) { @@ -101,8 +102,6 @@ float getOutputValueByName(const char *name) { return engine->outputChannels.veValue; case -243031057: return engine->outputChannels.injectionOffset; - case 1615892023: - return engine->outputChannels.injectorLagMs; case 1726931380: return engine->outputChannels.engineMakeCodeNameCrc16; case 115540725: @@ -650,3 +649,4 @@ float getOutputValueByName(const char *name) { } return EFI_ERROR_CODE; } +#endif diff --git a/firmware/controllers/lua/generated/value_lookup_generated.cpp b/firmware/controllers/lua/generated/value_lookup_generated.cpp index 778df2feec..ecd9737597 100644 --- a/firmware/controllers/lua/generated/value_lookup_generated.cpp +++ b/firmware/controllers/lua/generated/value_lookup_generated.cpp @@ -29,6 +29,8 @@ float getConfigValueByName(const char *name) { return engineConfiguration->isForcedInduction; case -1284354759: return engineConfiguration->useFordRedundantTps; + case 1451020756: + return engineConfiguration->lambdaProtectionEnable; case 1362186948: return engineConfiguration->overrideTriggerGaps; case -298185774: @@ -243,6 +245,10 @@ float getConfigValueByName(const char *name) { return engineConfiguration->compressionRatio; case -1465119085: return engineConfiguration->fordInjectorSmallPulseSlope; + case 1758659040: + return engineConfiguration->lambdaProtectionMinRpm; + case -2094010831: + return engineConfiguration->lambdaProtectionMinLoad; case -722238362: return engineConfiguration->is_enabled_spi_1; case -722238361: @@ -321,6 +327,12 @@ float getConfigValueByName(const char *name) { return engineConfiguration->antiLagRpmTreshold; case 644409862: return engineConfiguration->startCrankingDuration; + case 1758661224: + return engineConfiguration->lambdaProtectionMinTps; + case -1645106444: + return engineConfiguration->lambdaProtectionTimeout; + case 872435040: + return engineConfiguration->lambdaProtectionRestoreRpm; case -1171325035: return engineConfiguration->clutchUpPinInverted; case -675074552: @@ -519,8 +531,6 @@ float getConfigValueByName(const char *name) { return engineConfiguration->verboseTriggerSynchDetails; case -795241238: return engineConfiguration->isManualSpinningMode; - case -1248413509: - return engineConfiguration->twoWireBatchInjection; case 240697653: return engineConfiguration->neverInstantRpm; case 201676494: @@ -697,6 +707,10 @@ float getConfigValueByName(const char *name) { return engineConfiguration->injectorFlowAsMassFlow; case -1655178001: return engineConfiguration->benchTestOffTime; + case 872437224: + return engineConfiguration->lambdaProtectionRestoreTps; + case -1274631759: + return engineConfiguration->lambdaProtectionRestoreLoad; case -1992945039: return engineConfiguration->boostCutPressure; case -1359134883: @@ -1053,6 +1067,11 @@ void setConfigValueByName(const char *name, float value) { { engineConfiguration->useFordRedundantTps = (int)value; return; + } + case 1451020756: + { + engineConfiguration->lambdaProtectionEnable = (int)value; + return; } case 1362186948: { @@ -1588,6 +1607,16 @@ void setConfigValueByName(const char *name, float value) { { engineConfiguration->fordInjectorSmallPulseSlope = (int)value; return; + } + case 1758659040: + { + engineConfiguration->lambdaProtectionMinRpm = (int)value; + return; + } + case -2094010831: + { + engineConfiguration->lambdaProtectionMinLoad = (int)value; + return; } case -722238362: { @@ -1783,6 +1812,21 @@ void setConfigValueByName(const char *name, float value) { { engineConfiguration->startCrankingDuration = (int)value; return; + } + case 1758661224: + { + engineConfiguration->lambdaProtectionMinTps = (int)value; + return; + } + case -1645106444: + { + engineConfiguration->lambdaProtectionTimeout = (int)value; + return; + } + case 872435040: + { + engineConfiguration->lambdaProtectionRestoreRpm = (int)value; + return; } case -1171325035: { @@ -2278,11 +2322,6 @@ void setConfigValueByName(const char *name, float value) { { engineConfiguration->isManualSpinningMode = (int)value; return; - } - case -1248413509: - { - engineConfiguration->twoWireBatchInjection = (int)value; - return; } case 240697653: { @@ -2723,6 +2762,16 @@ void setConfigValueByName(const char *name, float value) { { engineConfiguration->benchTestOffTime = (int)value; return; + } + case 872437224: + { + engineConfiguration->lambdaProtectionRestoreTps = (int)value; + return; + } + case -1274631759: + { + engineConfiguration->lambdaProtectionRestoreLoad = (int)value; + return; } case -1992945039: { diff --git a/firmware/controllers/lua/generated/value_lookup_generated.md b/firmware/controllers/lua/generated/value_lookup_generated.md index 0ed55f1294..3e06ad1a46 100644 --- a/firmware/controllers/lua/generated/value_lookup_generated.md +++ b/firmware/controllers/lua/generated/value_lookup_generated.md @@ -37,6 +37,9 @@ Does the vehicle have a turbo or supercharger? ### useFordRedundantTps On some Ford and Toyota vehicles one of the throttle sensors is not linear on the full range, i.e. in the specific range of the positions we effectively have only one sensor. +### lambdaProtectionEnable + + ### overrideTriggerGaps @@ -358,6 +361,12 @@ Just for reference really, not taken into account by any logic at this point ### fordInjectorSmallPulseSlope +### lambdaProtectionMinRpm + + +### lambdaProtectionMinLoad + + ### is_enabled_spi_1 @@ -475,6 +484,15 @@ Below this throttle position, the engine is considered idling. If you have an el ### startCrankingDuration Maximum time to crank starter when start/stop button is pressed +### lambdaProtectionMinTps + + +### lambdaProtectionTimeout +Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed + +### lambdaProtectionRestoreRpm + + ### clutchUpPinInverted @@ -772,9 +790,6 @@ Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details ### 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 -### twoWireBatchInjection -This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection - ### neverInstantRpm @@ -1039,6 +1054,12 @@ Select whether to configure injector flow in volumetric flow (defualt, cc/min) o ### benchTestOffTime Time between bench test pulses +### lambdaProtectionRestoreTps + + +### lambdaProtectionRestoreLoad + + ### boostCutPressure MAP value above which fuel is cut in case of overboost.\nSet to 0 to disable overboost cut. diff --git a/firmware/controllers/lua/lua_hooks.cpp b/firmware/controllers/lua/lua_hooks.cpp index 3adc99699d..43d595df90 100644 --- a/firmware/controllers/lua/lua_hooks.cpp +++ b/firmware/controllers/lua/lua_hooks.cpp @@ -808,12 +808,14 @@ void configureRusefiLuaHooks(lua_State* l) { return 1; }); +#if EFI_PROD_CODE || EFI_SIMULATOR lua_register(l, "getOutput", [](lua_State* l) { auto propertyName = luaL_checklstring(l, 1, nullptr); auto result = getOutputValueByName(propertyName); lua_pushnumber(l, result); return 1; }); +#endif // EFI_PROD_CODE || EFI_SIMULATOR #if EFI_SHAFT_POSITION_INPUT lua_register(l, "getEngineState", [](lua_State* l) { diff --git a/firmware/controllers/math/lambda_monitor.cpp b/firmware/controllers/math/lambda_monitor.cpp new file mode 100644 index 0000000000..22dc0aa92c --- /dev/null +++ b/firmware/controllers/math/lambda_monitor.cpp @@ -0,0 +1,103 @@ +#include "pch.h" + +#include "lambda_monitor.h" + +float LambdaMonitor::getMaxAllowedLambda(float rpm, float load) const { + return + engine->fuelComputer.targetLambda + + interpolate3d( + config->lambdaMaxDeviationTable, + config->lambdaMaxDeviationLoadBins, load, + config->lambdaMaxDeviationRpmBins, rpm + ); +} + +bool LambdaMonitorBase::isCut() const { + return m_isCut; +} + +void LambdaMonitorBase::update(float rpm, float load) { + if (isCurrentlyGood(rpm, load)) { + m_timeSinceGoodLambda.reset(); + } + + if (m_timeSinceGoodLambda.hasElapsedSec(engineConfiguration->lambdaProtectionTimeout)) { + // Things have been bad long enough, cut! + m_isCut = true; + } + + if (m_isCut) { + // If things are back to normal, cancel the cut and force a reset + if (restoreConditionsMet(rpm, load)) { + m_isCut = false; + m_timeSinceGoodLambda.reset(); + } + } +} + +bool LambdaMonitorBase::isCurrentlyGood(float rpm, float load) const { + // Lambda is always good if disabled + if (!engineConfiguration->lambdaProtectionEnable) { + return true; + } + + // Below min RPM, don't check + if (rpm < engineConfiguration->lambdaProtectionMinRpm) { + return true; + } + + // Below min load, don't check + if (load < engineConfiguration->lambdaProtectionMinLoad) { + return true; + } + + // Below min TPS, don't check + if (Sensor::getOrZero(SensorType::Tps1) <= engineConfiguration->lambdaProtectionMinTps) { + return true; + } + + // Pause checking if DFCO was active recently + auto timeSinceDfco = engine->module()->getTimeSinceCut(); + if (timeSinceDfco < engineConfiguration->noFuelTrimAfterDfcoTime) { + return true; + } + + // Pause checking if some other cut was active recently + auto timeSinceFuelCut = engine->module()->getTimeSinceAnyCut(); + // TODO: should this duration be configurable? + if (timeSinceFuelCut < 2) { + return true; + } + + // TODO: multiple banks + if (auto lambda = Sensor::get(SensorType::Lambda1)) { + if (lambda.Value < getMaxAllowedLambda(rpm, load)) { + // Lambda is OK, we're good. + return true; + } + } else { + // Broken lambda sensor doesn't imply bad lambda + + // TODO: can/should we be smarter here? + return true; + } + + // All checks failed, lambda is currently bad. + return false; +} + +bool LambdaMonitorBase::restoreConditionsMet(float rpm, float load) const { + if (rpm > engineConfiguration->lambdaProtectionRestoreRpm) { + return false; + } + + if (load > engineConfiguration->lambdaProtectionRestoreLoad) { + return false; + } + + if (Sensor::getOrZero(SensorType::Tps1) > engineConfiguration->lambdaProtectionRestoreTps) { + return false; + } + + return true; +} diff --git a/firmware/controllers/math/lambda_monitor.h b/firmware/controllers/math/lambda_monitor.h new file mode 100644 index 0000000000..fdaea8638e --- /dev/null +++ b/firmware/controllers/math/lambda_monitor.h @@ -0,0 +1,27 @@ +#pragma once + +struct LambdaMonitorBase { + void update(float rpm, float load); + bool isCut() const; + +protected: + // Returns whether lambda checking should happen at all + bool shouldCheckLambda(float rpm, float load) const; + + // Returns false if the current lambda reading is leaner than allowable. + // Returns true in any other case (rich enough, bad sensor, recent fuel cut, rpm to low, load too low, etc) + bool isCurrentlyGood(float rpm, float load) const; + virtual float getMaxAllowedLambda(float rpm, float load) const = 0; + + // Determine whether fuel should be restored after a cut occurs + // Returns true if OK to leave the "cut" state + bool restoreConditionsMet(float rpm, float load) const; + +private: + Timer m_timeSinceGoodLambda; + bool m_isCut = false; +}; + +class LambdaMonitor : public LambdaMonitorBase { + float getMaxAllowedLambda(float rpm, float load) const override; +}; diff --git a/firmware/controllers/math/math.mk b/firmware/controllers/math/math.mk index cbd543c72c..43515b20c1 100644 --- a/firmware/controllers/math/math.mk +++ b/firmware/controllers/math/math.mk @@ -4,5 +4,6 @@ CONTROLLERS_MATH_SRC_CPP = $(PROJECT_DIR)/controllers/math/engine_math.cpp \ $(PROJECT_DIR)/controllers/math/speed_density.cpp \ $(PROJECT_DIR)/controllers/math/closed_loop_fuel.cpp \ $(PROJECT_DIR)/controllers/math/closed_loop_fuel_cell.cpp \ + $(PROJECT_DIR)/controllers/math/lambda_monitor.cpp \ $(PROJECT_DIR)/controllers/math/throttle_model.cpp \ diff --git a/firmware/controllers/sensors/sensor_checker.cpp b/firmware/controllers/sensors/sensor_checker.cpp index 54b28436c9..f97ad1aeb0 100644 --- a/firmware/controllers/sensors/sensor_checker.cpp +++ b/firmware/controllers/sensors/sensor_checker.cpp @@ -144,9 +144,14 @@ static ObdCode getCodeForIgnition(int idx, brain_pin_diag_e diag) { } void SensorChecker::onSlowCallback() { - // Don't check when the ignition is off, or when it was just turned on (let things stabilize) + bool batteryVoltageSufficient = Sensor::getOrZero(SensorType::BatteryVoltage) > 7.0f; + + // Don't check when: + // - battery voltage is too low for sensors to work + // - the ignition is off + // - ignition was just turned on (let things stabilize first) // TODO: also inhibit checking if we just did a flash burn, since that blocks the ECU for a few seconds. - bool shouldCheck = m_ignitionIsOn && m_timeSinceIgnOff.hasElapsedSec(5); + bool shouldCheck = batteryVoltageSufficient && m_ignitionIsOn && m_timeSinceIgnOff.hasElapsedSec(5); m_analogSensorsShouldWork = shouldCheck; if (!shouldCheck) { return; diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp index ccd64ad661..17c6e822a3 100644 --- a/firmware/controllers/settings.cpp +++ b/firmware/controllers/settings.cpp @@ -389,9 +389,6 @@ static void enableOrDisable(const char *param, bool isEnabled) { #endif // EFI_PROD_CODE } else if (strEqualCaseInsensitive(param, "stepperidle")) { engineConfiguration->useStepperIdle = isEnabled; - } else if (strEqualCaseInsensitive(param, "two_wire_batch_injection")) { - engineConfiguration->twoWireBatchInjection = isEnabled; - incrementGlobalConfigurationVersion(); } else if (strEqualCaseInsensitive(param, "boardUseTempPullUp")) { engineConfiguration->boardUseTempPullUp = isEnabled; incrementGlobalConfigurationVersion(); diff --git a/firmware/controllers/thread_priority.h b/firmware/controllers/thread_priority.h index 60e08a53f6..03491bc7aa 100644 --- a/firmware/controllers/thread_priority.h +++ b/firmware/controllers/thread_priority.h @@ -38,6 +38,7 @@ // These can get starved without too much adverse effect #define PRIO_AUX_SERIAL NORMALPRIO #define PRIO_KNOCK_PROCESS (NORMALPRIO - 10) +#define PRIO_BENCH_TEST (NORMALPRIO - 10) // These are intentionally low priority so they can't get in the way of anything else #define PRIO_FLASH_WRITE LOWPRIO + 20 diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index e0cbcfc40a..ac4fec2b87 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -153,25 +153,27 @@ static angle_t adjustCrankPhase(int camIndex) { return 0; } - TriggerCentral *tc = getTriggerCentral(); operation_mode_e operationMode = getEngineRotationState()->getOperationMode(); + auto crankDivider = getCrankDivider(operationMode); + if (crankDivider == 1) { + // Crank divider of 1 means there's no ambiguity, so don't try to resolve it + return 0; + } + + TriggerCentral *tc = getTriggerCentral(); + vvt_mode_e vvtMode = engineConfiguration->vvtMode[camIndex]; switch (vvtMode) { case VVT_FIRST_HALF: case VVT_MAP_V_TWIN: case VVT_MITSUBISHI_4G63: case VVT_MITSUBISHI_4G9x: - return tc->syncAndReport(getCrankDivider(operationMode), 1); + return tc->syncAndReport(crankDivider, 1); case VVT_SECOND_HALF: case VVT_NISSAN_VQ: case VVT_BOSCH_QUICK_START: - return tc->syncAndReport(getCrankDivider(operationMode), 0); case VVT_MIATA_NB: - /** - * NB2 is a symmetrical crank, there are four phases total - */ - return tc->syncAndReport(getCrankDivider(operationMode), 0); case VVT_2JZ: case VVT_TOYOTA_4_1: case VVT_FORD_ST170: @@ -181,7 +183,7 @@ static angle_t adjustCrankPhase(int camIndex) { case VVT_MITSUBISHI_3A92: case VVT_MITSUBISHI_6G75: case VVT_HONDA_K_EXHAUST: - return tc->syncAndReport(getCrankDivider(operationMode), 0); + return tc->syncAndReport(crankDivider, 0); case VVT_HONDA_K_INTAKE: case VVT_INACTIVE: // do nothing diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp index 98af3ceb39..7dca25ea02 100644 --- a/firmware/controllers/trigger/trigger_decoder.cpp +++ b/firmware/controllers/trigger/trigger_decoder.cpp @@ -216,7 +216,8 @@ int TriggerDecoderBase::getCurrentIndex() const { } angle_t PrimaryTriggerDecoder::syncEnginePhase(int divider, int remainder, angle_t engineCycle) { - efiAssert(ObdCode::OBD_PCM_Processor_Fault, remainder < divider, "syncEnginePhase", false); + efiAssert(ObdCode::OBD_PCM_Processor_Fault, divider > 1, "syncEnginePhase divider", false); + efiAssert(ObdCode::OBD_PCM_Processor_Fault, remainder < divider, "syncEnginePhase remainder", false); angle_t totalShift = 0; while (getCrankSynchronizationCounter() % divider != remainder) { /** diff --git a/firmware/integration/LiveData.yaml b/firmware/integration/LiveData.yaml index 3a03ded80c..dd68ab0cac 100644 --- a/firmware/integration/LiveData.yaml +++ b/firmware/integration/LiveData.yaml @@ -37,11 +37,6 @@ Usages: folder: controllers/engine_cycle output_name: knock - - name: throttle_model - java: ThrottleModel.java - folder: controllers/math - output_name: throttle_model - - name: high_pressure_fuel_pump java: HighPressureFuelPump.java folder: controllers/engine_cycle @@ -50,6 +45,9 @@ Usages: - name: injector_model java: InjectorModel.java folder: controllers/algo/fuel + prepend: integration/rusefi_config_shared.txt + # constexpr: "___engine.module()" + # isPtr: true - name: launch_control_state java: LaunchControl.java @@ -152,5 +150,14 @@ Usages: - name: sent_state java: SentState.java - folder: controllers/sensors/ + folder: controllers/sensors prepend: integration/rusefi_config_shared.txt + + - name: throttle_model + java: ThrottleModel.java + folder: controllers/math + output_name: throttle_model + + - name: vvt + java: VvtState.java + folder: controllers/actuators diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 4bd95500fb..b8cf236fe2 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -406,7 +406,7 @@ injector_s injector bit isForcedInduction;Does the vehicle have a turbo or supercharger? bit useFordRedundantTps;On some Ford and Toyota vehicles one of the throttle sensors is not linear on the full range, i.e. in the specific range of the positions we effectively have only one sensor. -bit unused88b2 +bit lambdaProtectionEnable bit overrideTriggerGaps bit enableFan1WithAc;Turn on this fan when AC is on. bit enableFan2WithAc;Turn on this fan when AC is on. @@ -687,7 +687,8 @@ pin_input_mode_e throttlePedalUpPinMode; uint16_t autoscale fordInjectorSmallPulseSlope;;"g/s", 0.001, 0, 0, 65, 3 - uint8_t[2] unused638 + uint8_t autoscale lambdaProtectionMinRpm;;"RPM", 100, 0, 0, 25000, 0 + uint8_t autoscale lambdaProtectionMinLoad;;"%", 10, 0, 0, 1000, 0 bit is_enabled_spi_1 bit is_enabled_spi_2 @@ -775,7 +776,10 @@ custom uart_device_e 1 bits, U08, @OFFSET@, [0:1], "Off", "UART1", "UART2", "UAR int16_t antiLagRpmTreshold;;"rpm", 1, 0, 0, 20000, 0 uint16_t startCrankingDuration;Maximum time to crank starter when start/stop button is pressed;"Seconds", 1, 0, 0, 30, 0 - uint8_t[3] unused748 + uint8_t autoscale lambdaProtectionMinTps;;"%", 1, 0, 0, 100, 0 + uint8_t autoscale lambdaProtectionTimeout;Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed;"s", 0.1, 0, 0, 10, 1 + + uint8_t autoscale lambdaProtectionRestoreRpm;;"RPM", 100, 0, 0, 25000, 0 pin_output_mode_e acRelayPinMode; output_pin_e acRelayPin; @@ -985,7 +989,7 @@ bit skippedWheelOnCam,"On camshaft","On crankshaft";Where is your primary skippe bit useSeparateVeForIdle;This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling. bit verboseTriggerSynchDetails;Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details 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 twoWireBatchInjection;This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection + bit unused1200b12 bit neverInstantRpm bit unused1200b14 bit useFixedBaroCorrFromMap @@ -1125,7 +1129,10 @@ int16_t tps2Max;;"ADC", 1, 0, 0, 1023, 0 bit can2OpenBLT; Allow OpenBLT on Secondary CAN bit injectorFlowAsMassFlow,"mass flow","volumetric flow";Select whether to configure injector flow in volumetric flow (defualt, cc/min) or mass flow (g/s). uint8_t autoscale benchTestOffTime;Time between bench test pulses;"ms", 5, 0, 0, 2000, 1 - uint8_t[2] unused1445 + + uint8_t autoscale lambdaProtectionRestoreTps;;"%", 1, 0, 0, 100, 0 + uint8_t autoscale lambdaProtectionRestoreLoad;;"%", 10, 0, 0, 1000, 0 + pin_input_mode_e launchActivatePinMode; Gpio can2TxPin;set_can2_tx_pin X Gpio can2RxPin;set_can2_rx_pin X @@ -1702,6 +1709,10 @@ uint16_t[12] autoscale throttleEstimateEffectiveAreaValues;In units of g/s norma blend_table_s[BOOST_BLEND_COUNT iterate] boostOpenLoopBlends blend_table_s[BOOST_BLEND_COUNT iterate] boostClosedLoopBlends +uint8_t[4 x 4] autoscale lambdaMaxDeviationTable;;"lambda", 0.01, 0, 0, 1, 2 +uint16_t[4] lambdaMaxDeviationLoadBins;;"", 1, 0, 0, 1000, 0 +uint16_t[4] lambdaMaxDeviationRpmBins;;"RPM", 1, 0, 0, 18000, 0 + end_struct ! Pedal Position Sensor diff --git a/firmware/tunerstudio/generated/fome.ini b/firmware/tunerstudio/generated/fome.ini index 6bd47c2cfa..a757473355 100644 --- a/firmware/tunerstudio/generated/fome.ini +++ b/firmware/tunerstudio/generated/fome.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.f407-discovery.3178062656" + signature = "rusEFI (FOME) master.2023.07.09.f407-discovery.4223705144" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.f407-discovery.3178062656" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.f407-discovery.4223705144" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "TLE8888_25", "TLE8888_26", "TLE8888_27", "TLE8888_28", "INVALID", "INVALID", "INVALID", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5174,6 +5190,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5185,13 +5206,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5212,6 +5232,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5417,15 +5439,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5749,6 +5762,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5821,7 +5849,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5861,7 +5888,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5897,7 +5924,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6796,7 +6823,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7109,6 +7136,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7281,11 +7326,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7453,7 +7498,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7585,7 +7630,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7602,27 +7647,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7645,7 +7690,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7911,9 +7956,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_48way.ini b/firmware/tunerstudio/generated/fome_48way.ini index 8e38b4138c..49fad19396 100644 --- a/firmware/tunerstudio/generated/fome_48way.ini +++ b/firmware/tunerstudio/generated/fome_48way.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.48way.2778011407" + signature = "rusEFI (FOME) master.2023.07.09.48way.3812152439" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.48way.2778011407" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.48way.3812152439" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",41="Boost Controller Output (C7)",68="Fan Relay (E2)",69="Fuel Relay (E3)",65="HC1 Output (D15)",64="HC2 Output (D14)",40="Idle1 Output (C6)",62="Ignition 1 Output (D12)",63="Ignition 2 Output (D13)",33="Ignition 3 Output (B15)",32="Ignition 4 Output (B14)",58="Ignition 5 Output (D8)",59="Ignition 6 Output (D9)",61="Ignition 7 Output (D11)",60="Ignition 8 Output (D10)",81="Injector 1 Output (E15)",80="Injector 2 Output (E14)",79="Injector 3 Output (E13)",78="Injector 4 Output (E12)",77="Injector 5 Output (E11)",76="Injector 6 Output (E10)",75="Injector 7 Output (E9)",74="Injector 8 Output (E8)",71="Tachometer (E5)" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5174,6 +5190,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5185,13 +5206,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5212,6 +5232,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5417,15 +5439,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5749,6 +5762,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5821,7 +5849,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5861,7 +5888,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5897,7 +5924,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6796,7 +6823,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7109,6 +7136,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7281,11 +7326,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7453,7 +7498,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7585,7 +7630,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7602,27 +7647,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7645,7 +7690,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7909,9 +7954,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_alphax-2chan.ini b/firmware/tunerstudio/generated/fome_alphax-2chan.ini index 63d189765c..d8d5b3d63f 100644 --- a/firmware/tunerstudio/generated/fome_alphax-2chan.ini +++ b/firmware/tunerstudio/generated/fome_alphax-2chan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.alphax-2chan.3289421938" + signature = "rusEFI (FOME) master.2023.07.09.alphax-2chan.2193447690" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.alphax-2chan.3289421938" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.alphax-2chan.2193447690" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",40="A3 - Fuel Pump",41="A4 - Tachometer",47="A6 - Ignition A",71="A7 - Ignition B",105="A8 - Injector A",106="B8 - Injector B",42="C1 - Fan Relay",63="C8 - Idle" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5170,6 +5186,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5181,13 +5202,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5208,6 +5228,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5413,15 +5435,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5745,6 +5758,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5817,7 +5845,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5857,7 +5884,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5893,7 +5920,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6781,7 +6808,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7094,6 +7121,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7261,11 +7306,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7433,7 +7478,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7565,7 +7610,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7582,27 +7627,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7625,7 +7670,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7881,9 +7926,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/2chan" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_alphax-4chan.ini b/firmware/tunerstudio/generated/fome_alphax-4chan.ini index 0f445cf5e8..f1c6125d02 100644 --- a/firmware/tunerstudio/generated/fome_alphax-4chan.ini +++ b/firmware/tunerstudio/generated/fome_alphax-4chan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.alphax-4chan.1322818067" + signature = "rusEFI (FOME) master.2023.07.09.alphax-4chan.141908331" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.alphax-4chan.1322818067" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.alphax-4chan.141908331" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",10="A3 - Fuel Pump",104="A4 - Tachometer",47="A6 - Ignition 1",71="A7 - Ignition 2",105="A8 - Injector 1",106="B8 - Injector 2",100="C1 - Fan Relay",63="C8 - Idle",61="D1 - Injector 3",41="D2 - Out Boost",70="D6 - Ignition 3",69="D7 - Ignition 4",60="E1 - Injector 4",109="E2 - Out NOS",43="F1 - Idle2",65="F2 - VVT#1",62="F4 - VVT#2",110="F5 - MAIN" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5860,7 +5887,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5896,7 +5923,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7098,6 +7125,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7265,11 +7310,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7437,7 +7482,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7569,7 +7614,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7586,27 +7631,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7629,7 +7674,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7885,9 +7930,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/4chan" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_alphax-8chan.ini b/firmware/tunerstudio/generated/fome_alphax-8chan.ini index c6127bd7c7..a3e61b0d08 100644 --- a/firmware/tunerstudio/generated/fome_alphax-8chan.ini +++ b/firmware/tunerstudio/generated/fome_alphax-8chan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.alphax-8chan.912497898" + signature = "rusEFI (FOME) master.2023.07.09.alphax-8chan.1892573074" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.alphax-8chan.912497898" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.alphax-8chan.1892573074" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",69="10A - Ignition 4",53="10D - LS 7",70="11A - Ignition 3",11="11D - LS 8",71="12A - Ignition 2",111="12D - NOS",47="13A - Ignition 1",41="13D - Boost",72="18C - Ignition 8",27="19C - Ignition 7",60="1A - Injector 4",26="20C - Ignition 6",68="21C - Ignition 5",96="26C - Injector 8",95="27C - Injector 7",94="28C - Injector 6",59="29C - Injector 5",61="2A - Injector 3",106="3A - Injector 2",105="4A - Injector 1",110="8B - Main Relay LS",10="8D - Fuel Pump",100="9D - Fan Relay" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5860,7 +5887,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5896,7 +5923,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7098,6 +7125,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7265,11 +7310,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7437,7 +7482,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7569,7 +7614,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7586,27 +7631,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7629,7 +7674,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7885,9 +7930,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/8chan" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_atlas.ini b/firmware/tunerstudio/generated/fome_atlas.ini index dba9817011..a8712fd748 100644 --- a/firmware/tunerstudio/generated/fome_atlas.ini +++ b/firmware/tunerstudio/generated/fome_atlas.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.atlas.4253379218" + signature = "rusEFI (FOME) master.2023.07.09.atlas.3140004330" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.atlas.4253379218" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.atlas.3140004330" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "TLE8888_25", "TLE8888_26", "TLE8888_27", "TLE8888_28", "INVALID", "INVALID", "INVALID", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5172,6 +5188,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5183,13 +5204,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5210,6 +5230,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5415,15 +5437,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5747,6 +5760,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5819,7 +5847,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6786,7 +6813,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7099,6 +7126,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7271,11 +7316,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7443,7 +7488,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7575,7 +7620,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7592,27 +7637,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7635,7 +7680,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7900,9 +7945,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_core8.ini b/firmware/tunerstudio/generated/fome_core8.ini index 7d151623c6..ba1323cb6b 100644 --- a/firmware/tunerstudio/generated/fome_core8.ini +++ b/firmware/tunerstudio/generated/fome_core8.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.core8.3647508995" + signature = "rusEFI (FOME) master.2023.07.09.core8.2680508795" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.core8.3647508995" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.core8.2680508795" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",26="DBW Control (B8)",27="DBW Direction (B9)",25="DBW Disable (B7)",81="High Side 1 (E15)",76="High Side 10 (E10)",75="High Side 11 (E9)",74="High Side 12 (E8)",80="High Side 2 (E14)",79="High Side 3 (E13)",78="High Side 4 (E12)",77="High Side 5 (E11)",97="High Side 6 (F15)",98="High Side 7 (G0)",99="High Side 8 (G1)",73="High Side 9 (E7)",32="Low Side 1 (B14 v2.1 ONLY)",95="Low Side 1 (F13)",65="Low Side 10 (D15)",100="Low Side 11 (G2)",101="Low Side 12 (G3)",102="Low Side 13 (G4)",103="Low Side 14 (G5)",104="Low Side 15 (G6)",105="Low Side 16 (G7)",106="Low Side 17 (G8)",40="Low Side 18 (C6)",41="Low Side 19 (C7)",33="Low Side 2 (B15 v2.1 ONLY)",96="Low Side 2 (F14)",10="Low Side 20 (A8)",55="Low Side 21 (D5)",54="Low Side 22 (D4)",53="Low Side 23 (D3)",17="Low Side 24 (A15)",58="Low Side 3 (D8)",59="Low Side 4 (D9)",60="Low Side 5 (D10)",61="Low Side 6 (D11)",62="Low Side 7 (D12)",63="Low Side 8 (D13)",64="Low Side 9 (D14)",90="StepEr Control (F8)",89="StepEr Direction (F7)",91="StepEr Disable (F9)" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5174,6 +5190,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5185,13 +5206,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5212,6 +5232,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5417,15 +5439,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5749,6 +5762,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5821,7 +5849,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5861,7 +5888,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5897,7 +5924,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6796,7 +6823,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7109,6 +7136,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7281,11 +7326,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7453,7 +7498,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7585,7 +7630,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7602,27 +7647,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7645,7 +7690,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7909,9 +7954,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_f407-discovery.ini b/firmware/tunerstudio/generated/fome_f407-discovery.ini index 6bd47c2cfa..a757473355 100644 --- a/firmware/tunerstudio/generated/fome_f407-discovery.ini +++ b/firmware/tunerstudio/generated/fome_f407-discovery.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.f407-discovery.3178062656" + signature = "rusEFI (FOME) master.2023.07.09.f407-discovery.4223705144" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.f407-discovery.3178062656" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.f407-discovery.4223705144" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "TLE8888_25", "TLE8888_26", "TLE8888_27", "TLE8888_28", "INVALID", "INVALID", "INVALID", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5174,6 +5190,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5185,13 +5206,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5212,6 +5232,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5417,15 +5439,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5749,6 +5762,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5821,7 +5849,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5861,7 +5888,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5897,7 +5924,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6796,7 +6823,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7109,6 +7136,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7281,11 +7326,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7453,7 +7498,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7585,7 +7630,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7602,27 +7647,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7645,7 +7690,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7911,9 +7956,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_f429-discovery.ini b/firmware/tunerstudio/generated/fome_f429-discovery.ini index 8ef53d55f0..9c6c0b4763 100644 --- a/firmware/tunerstudio/generated/fome_f429-discovery.ini +++ b/firmware/tunerstudio/generated/fome_f429-discovery.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.f429-discovery.3780091829" + signature = "rusEFI (FOME) master.2023.07.09.f429-discovery.2816629965" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.f429-discovery.3780091829" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.f429-discovery.2816629965" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "TLE8888_25", "TLE8888_26", "TLE8888_27", "TLE8888_28", "INVALID", "INVALID", "INVALID", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5172,6 +5188,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5183,13 +5204,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5210,6 +5230,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5415,15 +5437,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5747,6 +5760,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5819,7 +5847,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6794,7 +6821,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7107,6 +7134,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7279,11 +7324,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7451,7 +7496,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7583,7 +7628,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7600,27 +7645,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7643,7 +7688,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7909,9 +7954,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_frankenso_na6.ini b/firmware/tunerstudio/generated/fome_frankenso_na6.ini index d0a27b4e22..208da11a46 100644 --- a/firmware/tunerstudio/generated/fome_frankenso_na6.ini +++ b/firmware/tunerstudio/generated/fome_frankenso_na6.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.frankenso_na6.3273490303" + signature = "rusEFI (FOME) master.2023.07.09.frankenso_na6.2242952199" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.frankenso_na6.3273490303" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.frankenso_na6.2242952199" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",43="Coil 1F",80="Coil 1G",41="Coil 1H",76="Coil 1I",74="Coil 1L",78="Coil 1M",58="Coil 1O",59="Coil 1P",47="Injector 2M",57="Injector 2N",71="Injector 2O",72="Injector 2P",69="Injector 3S",70="Injector 3T",53="Injector 3U",68="Injector 3V",27="Injector 3W",55="Injector 3X",26="Injector 3Y",25="Injector 3Z" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5172,6 +5188,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5183,13 +5204,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5210,6 +5230,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5415,15 +5437,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5747,6 +5760,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5819,7 +5847,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6794,7 +6821,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7107,6 +7134,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7279,11 +7324,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7451,7 +7496,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7583,7 +7628,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7600,27 +7645,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7643,7 +7688,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7909,9 +7954,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_harley81.ini b/firmware/tunerstudio/generated/fome_harley81.ini index 51e1779463..3b4c3f6e59 100644 --- a/firmware/tunerstudio/generated/fome_harley81.ini +++ b/firmware/tunerstudio/generated/fome_harley81.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.harley81.1759160271" + signature = "rusEFI (FOME) master.2023.07.09.harley81.779576503" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.harley81.1759160271" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.harley81.779576503" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",65="1 Right Oil Cooling",47="24 Front Coil",52="25 Front ACR",64="4 Left Oil Fan",71="43 Rear Coil",105="6 Front Injector",112="61 Reverse Gear",103="63 Cooling Pump",106="7 Rear Injector",109="8 Rear ACR",101="auxMain",41="auxWastegate" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6782,7 +6809,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7095,6 +7122,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7262,11 +7307,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7434,7 +7479,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7566,7 +7611,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7583,27 +7628,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7626,7 +7671,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7883,9 +7928,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/harley81" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen-gm-e67.ini b/firmware/tunerstudio/generated/fome_hellen-gm-e67.ini index 51933d4113..c0aaf778c4 100644 --- a/firmware/tunerstudio/generated/fome_hellen-gm-e67.ini +++ b/firmware/tunerstudio/generated/fome_hellen-gm-e67.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen-gm-e67.2284237158" + signature = "rusEFI (FOME) master.2023.07.09.hellen-gm-e67.3465245214" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen-gm-e67.2284237158" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen-gm-e67.3465245214" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",100="C1-12 Check Engine",52="C1-13 - Fuel Pump",65="C1-25 Tach",109="C1-26 - Starter Relay",64="C1-39 - VSS Output",112="C1-40 - MAIN",102="C1-56 - Starter Enable",47="C2-1 - IGN 1",61="C2-16 INJ 3",72="C2-17 - IGN 8",69="C2-18 - IGN 4",106="C2-32 INJ 2",27="C2-33 - IGN 7",68="C2-34 - IGN 5",96="C2-48 INJ 8",59="C2-49 INJ 5",94="C2-52 INJ 6",71="C2-53 - IGN 2",26="C2-54 - IGN 6",70="C2-55 - IGN 3",60="C2-70 INJ 4",95="C2-71 INJ 7",105="C2-72 INJ 1",111="C3-16 - Coolant Pump",10="C3-49 - Fan Relay",63="C3-7 - Alternator Enable",43="J4_4 Wastegate Solenoid",53="J4_5 Error Light",46="J7_1 AUX",45="J7_2 AUX",44="J7_3 AUX",17="J7_4 AUX",55="J7_5 AUX",56="J7_6 AUX",66="J7_7 AUX",67="J7_8 AUX" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5860,7 +5887,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5896,7 +5923,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7098,6 +7125,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7263,11 +7308,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7435,7 +7480,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7567,7 +7612,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7584,27 +7629,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7627,7 +7672,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7883,9 +7928,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/gm-e67" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen-honda-k.ini b/firmware/tunerstudio/generated/fome_hellen-honda-k.ini index 3b8ea309ca..356562f5ae 100644 --- a/firmware/tunerstudio/generated/fome_hellen-honda-k.ini +++ b/firmware/tunerstudio/generated/fome_hellen-honda-k.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen-honda-k.330792743" + signature = "rusEFI (FOME) master.2023.07.09.hellen-honda-k.1427815519" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen-honda-k.330792743" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen-honda-k.1427815519" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",94="A12 Idle Air Control",69="A27 - IGN4",70="A28 - IGN3",71="A29 - IGN2",47="A30 - IGN1",60="B2 - Injector 4",61="B3 - Injector 3",106="B4 - Injector 2",105="B5 - Injector 1",10="B6 Radiator Relay",104="E1 Fuel Relay",59="E18 - AC Relay",130="E26 Tachometer",101="E31 Check Engine",112="E7 Main Relay Control" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6782,7 +6809,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7095,6 +7122,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7259,11 +7304,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7431,7 +7476,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7563,7 +7608,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7580,27 +7625,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7623,7 +7668,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7879,9 +7924,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellen154hyuindai" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen-nb1.ini b/firmware/tunerstudio/generated/fome_hellen-nb1.ini index 293a7027a9..63468b6e73 100644 --- a/firmware/tunerstudio/generated/fome_hellen-nb1.ini +++ b/firmware/tunerstudio/generated/fome_hellen-nb1.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen-nb1.375950857" + signature = "rusEFI (FOME) master.2023.07.09.hellen-nb1.1355107697" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen-nb1.375950857" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen-nb1.1355107697" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",102="1E - Check Engine Light",11="1I AC Fan Relay",65="1O - ALTERN",110="1Q - Aternator Warning Lamp",62="1R - ECF",109="1S - AC Relay",53="1U - O2H",63="2K - TACH",100="2M US / 2P EUROPE - FPUMP",64="2Q - IDLE",35="3D - MAP",47="3G - IGN_1 (1&4)",71="3H - IGN_2 (2&3)",96="3Q - VICS",94="3T/4D - BOOST OUT",111="3V - O2H2",105="3W - INJ_1",106="3X - INJ_2",61="3Y - INJ_3",60="3Z - INJ_4",59="4E - VVT",41="ETB +",42="ETB -",40="ETB EN" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5860,7 +5887,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5896,7 +5923,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7098,6 +7125,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7263,11 +7308,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7435,7 +7480,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7567,7 +7612,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7584,27 +7629,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7627,7 +7672,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7884,9 +7929,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellenNB1" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen121nissan.ini b/firmware/tunerstudio/generated/fome_hellen121nissan.ini index 0301881dcd..d223815854 100644 --- a/firmware/tunerstudio/generated/fome_hellen121nissan.ini +++ b/firmware/tunerstudio/generated/fome_hellen121nissan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen121nissan.1723015747" + signature = "rusEFI (FOME) master.2023.07.09.hellen121nissan.538894651" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen121nissan.1723015747" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen121nissan.538894651" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",95="10 - VTC Left",103="104 ETB Relay",96="11 - VTC Right",112="111 Main Relay",62="113 Fuel Pump Relay",59="21 - INJ_5",61="22 - INJ_3",105="23 - INJ_1",53="29 - VIAS",94="40 - INJ_6",60="41 - INJ_4",106="42 - INJ_2",68="60 - Coil 5",70="61 - Coil 3",47="62 - Coil 1",26="79 - Coil 6",69="80 - Coil 4",71="81 - Coil 2",40="Aux Low 1",41="Aux Low 2",42="Aux Low 3" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6782,7 +6809,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7095,6 +7122,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7259,11 +7304,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7431,7 +7476,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7563,7 +7608,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7580,27 +7625,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7623,7 +7668,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7882,9 +7927,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellen121nissan" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen121vag.ini b/firmware/tunerstudio/generated/fome_hellen121vag.ini index 155de3eba0..e9bedaabd6 100644 --- a/firmware/tunerstudio/generated/fome_hellen121vag.ini +++ b/firmware/tunerstudio/generated/fome_hellen121vag.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen121vag.3400543632" + signature = "rusEFI (FOME) master.2023.07.09.hellen121vag.2350771944" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen121vag.3400543632" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen121vag.2350771944" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",35="101 - MAP2",138="102 - IGN_1",68="103 - IGN_5",11="104 Wastegate",64="105 - IDLE rev A,B",103="105 - IDLE rev C+",135="110 - IGN_6",70="111 - IGN_3",94="112 INJ 6",59="113 INJ 5",101="115 - VVT1_2",40="117 ETB_OUT+",41="118 ETB_OUT-",42="120 - VVT2 B2",43="18 - VVT2 B1",95="19 - INJ 7",130="22 - VVT1 1",96="24 - INJ 8",63="37 - TACH",102="47 - CEL",128="65 - Fuel Pump",71="7 - IGN_2",136="8 - IGN_7",60="88 - INJ_4",106="89 - INJ_2",69="94 - IGN_4",137="95 - IGN_8",105="96 - INJ_1",61="97 - INJ_3",132="Main Relay" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5860,7 +5887,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5896,7 +5923,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7098,6 +7125,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7262,11 +7307,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7434,7 +7479,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7566,7 +7611,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7583,27 +7628,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7626,7 +7671,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7887,9 +7932,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellen121vag" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen128mercedes.ini b/firmware/tunerstudio/generated/fome_hellen128mercedes.ini index dc983ef1a9..1461e4503d 100644 --- a/firmware/tunerstudio/generated/fome_hellen128mercedes.ini +++ b/firmware/tunerstudio/generated/fome_hellen128mercedes.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen128.1641938450" + signature = "rusEFI (FOME) master.2023.07.09.hellen128.661667178" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen128.1641938450" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen128.661667178" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",62="A6 - Fan Control",128="C21 - Evap Purge Control",65="C29 - Fuel Pump",105="E1 - LS1",59="E13 - INJ 4",94="E14 - INJ 2",106="E2- LS2",95="E25 - INJ 1",96="E26 - INJ 3",61="E3 - LS3",60="E4 - LS4/VVT",137="F11 - IGN 8",69="F13 - IGN 4",71="F16 - IGN 2",135="F17 - IGN 6",138="F20 - IGN 1",68="F4 - IGN 5",70="F6 - IGN 3",136="F9 - IGN 7",10="P18_OUT_PP2",131="P19_OUT_LOW11",43="P33_PWM5",129="P34_OUT_LOW8",130="P35_OUT_LOW9" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6782,7 +6809,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7095,6 +7122,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7259,11 +7304,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7431,7 +7476,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7563,7 +7608,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7580,27 +7625,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7623,7 +7668,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7882,9 +7927,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellen128merc" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen154hyundai.ini b/firmware/tunerstudio/generated/fome_hellen154hyundai.ini index e9b9a5289b..851a6bfbf0 100644 --- a/firmware/tunerstudio/generated/fome_hellen154hyundai.ini +++ b/firmware/tunerstudio/generated/fome_hellen154hyundai.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen154hyundai.4113227507" + signature = "rusEFI (FOME) master.2023.07.09.hellen154hyundai.3011976587" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen154hyundai.4113227507" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen154hyundai.3011976587" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",53="Aux P66",11="Aux P67",103="Aux P68",47="Coil 1",71="Coil 2",70="Coil 3",69="Coil 4",102="Fan Relay HI",101="Fan Relay Low",111="Fuel Pump K70",105="INJ_1 k25",106="INJ_2 k26",61="INJ_3 k27",60="INJ_4 k28",95="K47 BK1 Wastegate Solenoid",96="K48 LS1",110="K87 AC Relay",62="MIL",112="Main Relay K64",65="Tacho",59="VVT1",94="VVT2" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6782,7 +6809,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7095,6 +7122,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7259,11 +7304,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7431,7 +7476,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7563,7 +7608,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7580,27 +7625,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7623,7 +7668,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7881,9 +7926,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellen154hyuindai" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen72.ini b/firmware/tunerstudio/generated/fome_hellen72.ini index a7eb297eb1..dc17181ae7 100644 --- a/firmware/tunerstudio/generated/fome_hellen72.ini +++ b/firmware/tunerstudio/generated/fome_hellen72.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen72.284886530" + signature = "rusEFI (FOME) master.2023.07.09.hellen72.1448527226" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen72.284886530" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen72.1448527226" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",105="2A - INJ_1",62="2B - ECF (PWM8)",59="2C - AC Fan / INJ_5",106="2D - INJ_2",61="2G - INJ_3",60="2J - INJ_4",129="2K - AC (O4)",100="2M - FPUMP (O9)",94="2N - VTSC / INJ_6",70="2O - IGN_3",64="2Q - IDLE (PWM5)",102="2R - CE (O11)",95="3C - Purge Solenoid / INJ_7",96="3D - EGR Solenoid / INJ_8",101="3E - CANIST (O10)",138="3F - IGN_1 (1&4)",132="3H - MAIN (O1)",71="3I - IGN_2 (2&3)",128="3J - O2H (O3)",136="3L - IGN_7 / AFR",65="3M - ALTERN (PWM6)",69="3N - IGN_4",63="3O - TACH (PWM7)",11="3P - O2H2 (O7)",127="3U - AWARN (O2)",68="3Z - IGN_5 / GNDA",135="4K - IGN_6 / +5V_MAP",130="4R - VVT (O5)",137="4U - MAP2/Ign8 (A10)",43="5E - SOLENOID OUTPUT",41="ETB +",42="ETB -",40="ETB EN" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5860,7 +5887,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5896,7 +5923,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7098,6 +7125,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7263,11 +7308,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7435,7 +7480,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7567,7 +7612,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7584,27 +7629,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7627,7 +7672,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7884,9 +7929,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellen72" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen81.ini b/firmware/tunerstudio/generated/fome_hellen81.ini index 7b025b83cd..55b0f94bbc 100644 --- a/firmware/tunerstudio/generated/fome_hellen81.ini +++ b/firmware/tunerstudio/generated/fome_hellen81.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen81.3161554048" + signature = "rusEFI (FOME) master.2023.07.09.hellen81.4208771064" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen81.3161554048" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen81.4208771064" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",71="1 - IGN_2",65="10 - OUT_FUEL",127="11 - OUT_HIGH",132="14 - OUT_MAIN",70="2 - IGN_3",72="21 - IGN_8",27="22 - IGN_7",26="23 - IGN_6",68="24 - IGN_5",94="25 - INJ_6",105="27 - INJ_1",11="28 - OUT_O2H2",59="30 - INJ_5",102="31 - OUT_CE",69="4 - IGN_4",101="46 - OUT_CANIST",60="47 - INJ_4",128="48 - OUT_O2H",131="49 - OUT_HEATER",138="5 - IGN_1",130="50 - OUT_STARTER",106="6 - INJ_2",63="60 - OUT_IO",43="64 - OUT_COIL_B2",42="65 - OUT_COIL_B1",41="66 - OUT_COIL_A2",40="67 - OUT_COIL_A1",62="68 - OUT_ECF",129="69 - OUT_AC",61="7 - INJ_3",100="70 - OUT_PUMP",95="72 - INJ_7",96="73 - INJ_8",64="8 - OUT_TACH" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5171,6 +5187,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5182,13 +5203,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5209,6 +5229,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5414,15 +5436,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5746,6 +5759,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5818,7 +5846,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5858,7 +5885,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5894,7 +5921,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6783,7 +6810,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7096,6 +7123,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7260,11 +7305,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7432,7 +7477,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7564,7 +7609,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7581,27 +7626,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7624,7 +7669,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7880,9 +7925,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellen81" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellen88bmw.ini b/firmware/tunerstudio/generated/fome_hellen88bmw.ini index c4ac32bde8..28a9d1dbfc 100644 --- a/firmware/tunerstudio/generated/fome_hellen88bmw.ini +++ b/firmware/tunerstudio/generated/fome_hellen88bmw.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellen88bmw.3125373875" + signature = "rusEFI (FOME) master.2023.07.09.hellen88bmw.4242843851" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellen88bmw.3125373875" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellen88bmw.4242843851" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",112="1 - OUT_PUMP",62="2 - IdleC",69="23 - Coil 4",26="24 - Coil 6",68="25 - Coil 5",53="27 - MAIN",43="29 - Idle",59="3 - INJ_5",61="31 - INJ_3",106="32 - INJ_2",105="33 - INJ_1",96="35 - INJ_8",94="4 - INJ_6",65="47 - Tach",60="5 - INJ_4",47="50 - Coil 1",71="51 - Coil 2",70="52 - Coil 3",95="7 - INJ_7/VVT" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6782,7 +6809,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7095,6 +7122,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7258,11 +7303,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7430,7 +7475,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7562,7 +7607,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7579,27 +7624,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7622,7 +7667,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7878,9 +7923,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellen88bmw" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellenNA6.ini b/firmware/tunerstudio/generated/fome_hellenNA6.ini index 9e8055405c..6aa0a2ff27 100644 --- a/firmware/tunerstudio/generated/fome_hellenNA6.ini +++ b/firmware/tunerstudio/generated/fome_hellenNA6.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellenNA6.4076854834" + signature = "rusEFI (FOME) master.2023.07.09.hellenNA6.3025280330" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellenNA6.4076854834" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellenNA6.3025280330" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",107="1E - Check Engine Light",138="1G - Ignition 1 & 4 (rev C)",47="1G - Ignition 1 & 4 (rev D)",71="1H - Ignition 2 & 3",129="1J - AC Relay",96="2I - VVT",94="2J - Boost Control",59="3S - A/C Fan 94-95",105="3U - Injector 1",106="3V - Injector 2",64="3W - IDLE",61="3Y - Injector 3",60="3Z - Injector 4",41="ETB +",42="ETB -",40="ETB EN",100="Fuel Pump Relay",62="Radiator Fan",130="Tachometer (rev C)",110="Tachometer (rev D)" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5860,7 +5887,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5896,7 +5923,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7098,6 +7125,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7263,11 +7308,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7435,7 +7480,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7567,7 +7612,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7584,27 +7629,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7627,7 +7672,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7885,9 +7930,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellenNA6" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_hellenNA8_96.ini b/firmware/tunerstudio/generated/fome_hellenNA8_96.ini index 5cbbe84a66..47640c0467 100644 --- a/firmware/tunerstudio/generated/fome_hellenNA8_96.ini +++ b/firmware/tunerstudio/generated/fome_hellenNA8_96.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.hellenNA8_96.1314630018" + signature = "rusEFI (FOME) master.2023.07.09.hellenNA8_96.150366970" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.hellenNA8_96.1314630018" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.hellenNA8_96.150366970" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",62="1A - ECF",11="1B - AC Fan Relay",102="1E - Check Engine Light",109="1G - AC Relay",100="1U - Fuel Pump",63="3L - TACH",47="3N - IGN_1 (1&4)",64="3Q - IDLE",71="3R - IGN_2 (2&3)",105="3U - INJ_1",106="3V - INJ_2",61="3W - INJ_3",60="3X - INJ_4",111="3Z - O2H2",94="4D - BOOST OUT",59="4E - VVT",41="ETB +",42="ETB -",40="ETB EN",52="P18/P22" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5173,6 +5189,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5184,13 +5205,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5211,6 +5231,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5416,15 +5438,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5748,6 +5761,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5820,7 +5848,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5860,7 +5887,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5896,7 +5923,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7098,6 +7125,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7263,11 +7308,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7435,7 +7480,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7567,7 +7612,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7584,27 +7629,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7627,7 +7672,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7883,9 +7928,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/hellenNA96" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_mre_f4.ini b/firmware/tunerstudio/generated/fome_mre_f4.ini index f263f6983b..a0f90512a2 100644 --- a/firmware/tunerstudio/generated/fome_mre_f4.ini +++ b/firmware/tunerstudio/generated/fome_mre_f4.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.mre_f4.113375757" + signature = "rusEFI (FOME) master.2023.07.09.mre_f4.1080834421" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.mre_f4.113375757" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.mre_f4.1080834421" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",53="10 - Ignition 2",52="11 - Ignition 3",51="12 - Ignition 4",56="13 - GP Out 6",57="14 - GP Out 5",6="28 - AN volt 10, Aux Reuse",172="3 - Lowside 2",38="32 - AN volt 6, Aux Reuse",190="33 - GP Out 3",189="34 - GP Out 2",188="35 - GP Out 1",18="36 - AN volt 8, Aux Reuse",168="37 - Injector 1",169="38 - Injector 2",19="40 - AN volt 9, Aux Reuse",170="41 - Injector 3",171="42 - Injector 4",191="43 - GP Out 4",173="7 - Lowside 1",54="9 - Ignition 1",72="AUX J10 PE6",71="AUX J11 PE5",29="AUX J12",28="AUX J13",25="AUX J18 PB7",17="AUX J2 PA15",26="AUX J2 PB8",27="AUX J2 PB9",46="AUX J2 PC12",66="AUX J6" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4360,7 +4375,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4670,9 +4684,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4681,9 +4692,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4874,6 +4885,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5175,6 +5191,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5186,13 +5207,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5213,6 +5233,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5418,15 +5440,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5750,6 +5763,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5822,7 +5850,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5862,7 +5889,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5898,7 +5925,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7097,6 +7124,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7262,11 +7307,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7434,7 +7479,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7566,7 +7611,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7583,27 +7628,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7626,7 +7671,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7886,9 +7931,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/microrusefi" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_mre_f7.ini b/firmware/tunerstudio/generated/fome_mre_f7.ini index 2690a6887e..6bc0252815 100644 --- a/firmware/tunerstudio/generated/fome_mre_f7.ini +++ b/firmware/tunerstudio/generated/fome_mre_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.mre_f7.113375757" + signature = "rusEFI (FOME) master.2023.07.09.mre_f7.1080834421" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.mre_f7.113375757" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.mre_f7.1080834421" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",53="10 - Ignition 2",52="11 - Ignition 3",51="12 - Ignition 4",56="13 - GP Out 6",57="14 - GP Out 5",6="28 - AN volt 10, Aux Reuse",172="3 - Lowside 2",38="32 - AN volt 6, Aux Reuse",190="33 - GP Out 3",189="34 - GP Out 2",188="35 - GP Out 1",18="36 - AN volt 8, Aux Reuse",168="37 - Injector 1",169="38 - Injector 2",19="40 - AN volt 9, Aux Reuse",170="41 - Injector 3",171="42 - Injector 4",191="43 - GP Out 4",173="7 - Lowside 1",54="9 - Ignition 1",72="AUX J10 PE6",71="AUX J11 PE5",29="AUX J12",28="AUX J13",25="AUX J18 PB7",17="AUX J2 PA15",26="AUX J2 PB8",27="AUX J2 PB9",46="AUX J2 PC12",66="AUX J6" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4360,7 +4375,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4670,9 +4684,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4681,9 +4692,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4874,6 +4885,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5175,6 +5191,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5186,13 +5207,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5213,6 +5233,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5418,15 +5440,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5750,6 +5763,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5822,7 +5850,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5862,7 +5889,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5898,7 +5925,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6785,7 +6812,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7097,6 +7124,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7262,11 +7307,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7434,7 +7479,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7566,7 +7611,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7583,27 +7628,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7626,7 +7671,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7886,9 +7931,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://rusefi.com/s/microrusefi" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_prometheus_405.ini b/firmware/tunerstudio/generated/fome_prometheus_405.ini index 3bcb5a428a..9f5a65e130 100644 --- a/firmware/tunerstudio/generated/fome_prometheus_405.ini +++ b/firmware/tunerstudio/generated/fome_prometheus_405.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.prometheus_405.3520811557" + signature = "rusEFI (FOME) master.2023.07.09.prometheus_405.2541130077" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.prometheus_405.3520811557" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.prometheus_405.2541130077" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "TLE8888_25", "TLE8888_26", "TLE8888_27", "TLE8888_28", "INVALID", "INVALID", "INVALID", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5167,6 +5183,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5178,13 +5199,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5205,6 +5225,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5410,15 +5432,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5742,6 +5755,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5814,7 +5842,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5854,7 +5881,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5890,7 +5917,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6789,7 +6816,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7102,6 +7129,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7274,11 +7319,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7446,7 +7491,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7578,7 +7623,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7595,27 +7640,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7638,7 +7683,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7904,9 +7949,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_prometheus_469.ini b/firmware/tunerstudio/generated/fome_prometheus_469.ini index d3262e25ff..20dc2d13f5 100644 --- a/firmware/tunerstudio/generated/fome_prometheus_469.ini +++ b/firmware/tunerstudio/generated/fome_prometheus_469.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.prometheus_469.3520811557" + signature = "rusEFI (FOME) master.2023.07.09.prometheus_469.2541130077" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.prometheus_469.3520811557" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.prometheus_469.2541130077" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "TLE8888_25", "TLE8888_26", "TLE8888_27", "TLE8888_28", "INVALID", "INVALID", "INVALID", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5167,6 +5183,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5178,13 +5199,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5205,6 +5225,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5410,15 +5432,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5742,6 +5755,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5814,7 +5842,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5854,7 +5881,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5890,7 +5917,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6789,7 +6816,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7102,6 +7129,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7274,11 +7319,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7446,7 +7491,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7578,7 +7623,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7595,27 +7640,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7638,7 +7683,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7904,9 +7949,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_proteus_f4.ini b/firmware/tunerstudio/generated/fome_proteus_f4.ini index d795d3a56f..0999dd16d5 100644 --- a/firmware/tunerstudio/generated/fome_proteus_f4.ini +++ b/firmware/tunerstudio/generated/fome_proteus_f4.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.proteus_f4.2194741944" + signature = "rusEFI (FOME) master.2023.07.09.proteus_f4.3296516544" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.proteus_f4.2194741944" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.proteus_f4.3296516544" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 26852 +pageSize = 26884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",11="Highside 1",10="Highside 2",65="Highside 3",64="Highside 4",54="Ign 1",102="Ign 10",101="Ign 11",100="Ign 12",53="Ign 2",43="Ign 3",42="Ign 4",41="Ign 5",106="Ign 6",105="Ign 7",104="Ign 8",103="Ign 9",57="Lowside 1",24="Lowside 10",25="Lowside 11",26="Lowside 12",27="Lowside 13",66="Lowside 14",67="Lowside 15",68="Lowside 16",107="Lowside 2",108="Lowside 3",109="Lowside 4",110="Lowside 5",111="Lowside 6",112="Lowside 7",22="Lowside 8",23="Lowside 9",60="STM32 PD10",61="STM32 PD11",62="STM32 PD12",63="STM32 PD13",58="STM32 PD8",59="STM32 PD9" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 26808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 26824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 26826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 26852 +lambdaMaxDeviationTable = array, U08, 26852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 26868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 26876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 26884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5169,6 +5185,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5180,13 +5201,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5207,6 +5227,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5413,15 +5435,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5745,6 +5758,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5817,7 +5845,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5857,7 +5884,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5893,7 +5920,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6776,7 +6803,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7089,6 +7116,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7250,11 +7295,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7422,7 +7467,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7554,7 +7599,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7571,27 +7616,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7614,7 +7659,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7882,9 +7927,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://github.com/rusefi/rusefi/wiki/Proteus-Manual" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_proteus_f7.ini b/firmware/tunerstudio/generated/fome_proteus_f7.ini index 7c628e905a..a1a20e7f6b 100644 --- a/firmware/tunerstudio/generated/fome_proteus_f7.ini +++ b/firmware/tunerstudio/generated/fome_proteus_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.proteus_f7.2194741944" + signature = "rusEFI (FOME) master.2023.07.09.proteus_f7.3296516544" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.proteus_f7.2194741944" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.proteus_f7.3296516544" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 26852 +pageSize = 26884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",11="Highside 1",10="Highside 2",65="Highside 3",64="Highside 4",54="Ign 1",102="Ign 10",101="Ign 11",100="Ign 12",53="Ign 2",43="Ign 3",42="Ign 4",41="Ign 5",106="Ign 6",105="Ign 7",104="Ign 8",103="Ign 9",57="Lowside 1",24="Lowside 10",25="Lowside 11",26="Lowside 12",27="Lowside 13",66="Lowside 14",67="Lowside 15",68="Lowside 16",107="Lowside 2",108="Lowside 3",109="Lowside 4",110="Lowside 5",111="Lowside 6",112="Lowside 7",22="Lowside 8",23="Lowside 9",60="STM32 PD10",61="STM32 PD11",62="STM32 PD12",63="STM32 PD13",58="STM32 PD8",59="STM32 PD9" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 26808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 26824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 26826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 26852 +lambdaMaxDeviationTable = array, U08, 26852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 26868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 26876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 26884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5169,6 +5185,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5180,13 +5201,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5207,6 +5227,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5413,15 +5435,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5745,6 +5758,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5817,7 +5845,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5857,7 +5884,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5893,7 +5920,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6776,7 +6803,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7089,6 +7116,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7250,11 +7295,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7422,7 +7467,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7554,7 +7599,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7571,27 +7616,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7614,7 +7659,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7882,9 +7927,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://github.com/rusefi/rusefi/wiki/Proteus-Manual" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_proteus_h7.ini b/firmware/tunerstudio/generated/fome_proteus_h7.ini index df210bcecf..17e11b8222 100644 --- a/firmware/tunerstudio/generated/fome_proteus_h7.ini +++ b/firmware/tunerstudio/generated/fome_proteus_h7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.proteus_h7.2194741944" + signature = "rusEFI (FOME) master.2023.07.09.proteus_h7.3296516544" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.proteus_h7.2194741944" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.proteus_h7.3296516544" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 26852 +pageSize = 26884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",11="Highside 1",10="Highside 2",65="Highside 3",64="Highside 4",54="Ign 1",102="Ign 10",101="Ign 11",100="Ign 12",53="Ign 2",43="Ign 3",42="Ign 4",41="Ign 5",106="Ign 6",105="Ign 7",104="Ign 8",103="Ign 9",57="Lowside 1",24="Lowside 10",25="Lowside 11",26="Lowside 12",27="Lowside 13",66="Lowside 14",67="Lowside 15",68="Lowside 16",107="Lowside 2",108="Lowside 3",109="Lowside 4",110="Lowside 5",111="Lowside 6",112="Lowside 7",22="Lowside 8",23="Lowside 9",60="STM32 PD10",61="STM32 PD11",62="STM32 PD12",63="STM32 PD13",58="STM32 PD8",59="STM32 PD9" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 26808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 26824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 26826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 26852 +lambdaMaxDeviationTable = array, U08, 26852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 26868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 26876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 26884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 26842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5169,6 +5185,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5180,13 +5201,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5207,6 +5227,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5413,15 +5435,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5745,6 +5758,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5817,7 +5845,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5857,7 +5884,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5893,7 +5920,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6776,7 +6803,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7089,6 +7116,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7250,11 +7295,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7422,7 +7467,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7554,7 +7599,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7571,27 +7616,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7614,7 +7659,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7882,9 +7927,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://github.com/rusefi/rusefi/wiki/Proteus-Manual" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini b/firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini index 27c0336551..7a9cc323ba 100644 --- a/firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini +++ b/firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.subaru_eg33_f7.1684310330" + signature = "rusEFI (FOME) master.2023.07.09.subaru_eg33_f7.583617090" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.subaru_eg33_f7.1684310330" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.subaru_eg33_f7.583617090" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",186="A01 - Injector 5",194="A12 - Injector 6",159="AUX0_14 - AUX0 OD output 1",158="AUX0_17 - AUX0 OD output 0",160="B08 - AC clutch",149="C14 - FPump modulator",153="C15 - AUX1 OD out",148="C16 - Tacho out",157="D01 - IDLE close",156="D02 - IDLE open",147="D03 - FAN 2 relay",121="D05 - Self Shutdown",155="D06 - Absorber purge valve",188="D07 - Ignition Cyl 4",198="D08 - Ignition Cyl 2",189="D09 - Ignition Cyl 3",199="D10 - Ignition Cyl 1",185="D11 - Injector 3",192="D12 - Injector 2",184="D13 - Injector 1",197="D16 - Ignition Cyl 6",146="D17 - FAN 1 relay",154="D18 - Auxillary air valve",152="D19 - Check Engine indicator",161="D20 - Inertia-Resonance Super-Charger control",191="D21 - Ignition Cyl 5",151="D22 - EGR control",150="D23 - Fuel Pump relay",193="D26 - Injector 4" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5171,6 +5187,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5182,13 +5203,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5209,6 +5229,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5414,15 +5436,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5746,6 +5759,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5818,7 +5846,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5858,7 +5885,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5894,7 +5921,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6793,7 +6820,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7106,6 +7133,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7275,11 +7320,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7447,7 +7492,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7579,7 +7624,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7596,27 +7641,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7639,7 +7684,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7900,9 +7945,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/generated/fome_tdg-pdm8.ini b/firmware/tunerstudio/generated/fome_tdg-pdm8.ini index 846cdda565..680abbe632 100644 --- a/firmware/tunerstudio/generated/fome_tdg-pdm8.ini +++ b/firmware/tunerstudio/generated/fome_tdg-pdm8.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.06.11.tdg-pdm8.1809953687" + signature = "rusEFI (FOME) master.2023.07.09.tdg-pdm8.759984367" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.06.11.tdg-pdm8.1809953687" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.07.09.tdg-pdm8.759984367" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -86,7 +86,7 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -pageSize = 22852 +pageSize = 22884 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",11="ET_UNUSED_11",12="ET_UNUSED_12",13="ET_UNUSED_13",15="ET_UNUSED_15",17="ET_UNUSED_17",33="ET_UNUSED_33",57="ET_UNUSED_57",92="ET_UNUSED_92",93="ET_UNUSED_93",97="ET_UNUSED_97",98="ET_UNUSED_98",3="FORD_ASPIRE_1996",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",75="HELLEN_134_BMW",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",73="HELLEN_55_BMW",74="HELLEN_88_BMW",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",16="MITSU_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",25="PROTEUS_LUA_DEMO",4="PROTEUS_MIATA_NA6",67="PROTEUS_MIATA_NB2",42="PROTEUS_QC_TEST_BOARD",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",44="TOYOTA_2JZ_GTE_VVTi",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -107,7 +107,7 @@ injector_battLagCorrBins = array, U16, 56, [8], "volts", 0.01, 0, 0, 20, 2 injector_battLagCorr = array, U16, 72, [8], "ms", 0.01, 0, 0, 50, 2 isForcedInduction = bits, U32, 88, [0:0], "false", "true" useFordRedundantTps = bits, U32, 88, [1:1], "false", "true" -unused88b2 = bits, U32, 88, [2:2], "false", "true" +lambdaProtectionEnable = bits, U32, 88, [2:2], "false", "true" overrideTriggerGaps = bits, U32, 88, [3:3], "false", "true" enableFan1WithAc = bits, U32, 88, [4:4], "false", "true" enableFan2WithAc = bits, U32, 88, [5:5], "false", "true" @@ -318,7 +318,8 @@ compressionRatio = scalar, F32, 632, "CR", 1, 0, 0, 300, 1 triggerSimulatorPins1 = bits, U16, 636, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" triggerSimulatorPins2 = bits, U16, 638, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" fordInjectorSmallPulseSlope = scalar, U16, 640, "g/s", 0.001, 0, 0, 65, 3 -unused638 = array, U08, 642, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionMinRpm = scalar, U08, 642, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 643, "%", 10.0, 0, 0, 1000, 0 is_enabled_spi_1 = bits, U32, 644, [0:0], "false", "true" is_enabled_spi_2 = bits, U32, 644, [1:1], "false", "true" is_enabled_spi_3 = bits, U32, 644, [2:2], "false", "true" @@ -390,7 +391,9 @@ tps1SecondaryMin = scalar, U16, 740, "ADC", 1, 0, 0, 1000, 0 tps1SecondaryMax = scalar, U16, 742, "ADC", 1, 0, 0, 1000, 0 antiLagRpmTreshold = scalar, S16, 744, "rpm", 1, 0, 0, 20000, 0 startCrankingDuration = scalar, U16, 746, "Seconds", 1, 0, 0, 30, 0 -unused748 = array, U08, 748, [3], "", 1, 0, 0, 100, 0 +lambdaProtectionMinTps = scalar, U08, 748, "%", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 749, "s", 0.1, 0, 0, 10, 1 +lambdaProtectionRestoreRpm = scalar, U08, 750, "RPM", 100.0, 0, 0, 25000, 0 acRelayPinMode = bits, U08, 751, [0:1], "default", "default inverted", "open collector", "open collector inverted" acRelayPin = bits, U16, 752, [0:7], 0="NONE",257="Out 1",258="Out 2",259="Out 3",260="Out 4",261="Out 5",262="Out 6",263="Out 7",264="Out 8" mafSensorType = bits, S08, 754, [0:1], "v0", "v1", "v2", "v3" @@ -590,7 +593,7 @@ isWaveAnalyzerEnabled = bits, U32, 1200, [8:8], "false", "true" useSeparateVeForIdle = bits, U32, 1200, [9:9], "false", "true" verboseTriggerSynchDetails = bits, U32, 1200, [10:10], "false", "true" isManualSpinningMode = bits, U32, 1200, [11:11], "false", "true" -twoWireBatchInjection = bits, U32, 1200, [12:12], "false", "true" +unused1200b12 = bits, U32, 1200, [12:12], "false", "true" neverInstantRpm = bits, U32, 1200, [13:13], "false", "true" unused1200b14 = bits, U32, 1200, [14:14], "false", "true" useFixedBaroCorrFromMap = bits, U32, 1200, [15:15], "false", "true" @@ -704,7 +707,8 @@ canOpenBLT = bits, U32, 1436, [1:1], "false", "true" can2OpenBLT = bits, U32, 1436, [2:2], "false", "true" injectorFlowAsMassFlow = bits, U32, 1436, [3:3], "volumetric flow", "mass flow" benchTestOffTime = scalar, U08, 1440, "ms", 5.0, 0, 0, 2000, 1 -unused1445 = array, U08, 1441, [2], "", 1, 0, 0, 100, 0 +lambdaProtectionRestoreTps = scalar, U08, 1441, "%", 1, 0, 0, 100, 0 +lambdaProtectionRestoreLoad = scalar, U08, 1442, "%", 10.0, 0, 0, 1000, 0 launchActivatePinMode = bits, U08, 1443, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" can2TxPin = bits, U16, 1444, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" can2RxPin = bits, U16, 1446, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PF0", "PF1", "PF2", "PF3", "PF4", "PF5", "PF6", "PF7", "PF8", "PF9", "PF10", "PF11", "PF12", "PF13", "PF14", "PF15", "PG0", "PG1", "PG2", "PG3", "PG4", "PG5", "PG6", "PG7", "PG8", "PG9", "PG10", "PG11", "PG12", "PG13", "PG14", "PG15", "PH0", "PH1", "PH2", "PH3", "PH4", "PH5", "PH6", "PH7", "PH8", "PH9", "PH10", "PH11", "PH12", "PH13", "PH14", "PH15", "PI0", "PI1", "PI2", "PI3", "PI4", "PI5", "PI6", "PI7", "PI8", "PI9", "PI10", "PI11", "PI12", "PI13", "PI14", "PI15" @@ -1388,7 +1392,10 @@ boostClosedLoopBlends2_rpmBins = array, U16, 22808, [8], "RPM", 1, 0, 0, 18000, boostClosedLoopBlends2_blendParameter = bits, U08, 22824, [0:4], "Zero", "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2", "Accel Pedal", "Battery Voltage", "VVT 1 I", "VVT 1 E", "VVT 2 I", "VVT 2 E", "Ethanol (Flex) %", "Aux Linear 1", "Aux Linear 2", "GPPWM Output 1", "GPPWM Output 2", "GPPWM Output 3", "GPPWM Output 4", "Lua Gauge 1", "Lua Gauge 2", "RPM", "Gear (detected)" boostClosedLoopBlends2_blendBins = array, S16, 22826, [8], "", 0.1, 0, -1000, 1000, 1 boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100, 1 -; total TS size = 22852 +lambdaMaxDeviationTable = array, U08, 22852, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 22868, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 22876, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 22884 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -1568,6 +1575,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 mapMinBufferLength = "This many MAP samples are used to estimate the current MAP. This many samples are considered, and the minimum taken. Recommended value is 1 for single-throttle engines, and your number of cylinders for individual throttle bodies." idlePidDeactivationTpsThreshold = "Below this throttle position, the engine is considered idling. If you have an electronic throttle, this checks accelerator pedal position instead of throttle position, and should be set to 1-2%." startCrankingDuration = "Maximum time to crank starter when start/stop button is pressed" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" scriptSetting1 = "scriptSetting 1" scriptSetting2 = "scriptSetting 2" scriptSetting3 = "scriptSetting 3" @@ -1659,7 +1667,6 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 useSeparateVeForIdle = "This activates a separate fuel table for Idle, this allows fine tuning of the idle fuelling." verboseTriggerSynchDetails = "Verbose info in console below engineSnifferRpmThreshold\nenable trigger_details" 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" - twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useSeparateAdvanceForCranking = "In Constant mode, timing is automatically tapered to running as RPM increases.\nIn Table mode, the "Cranking ignition advance" table is used directly." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle).\nYou probably don't need this." flexCranking = "Enable a second cranking table to use for E100 flex fuel, interpolating between the two based on flex fuel sensor." @@ -2110,7 +2117,7 @@ boostClosedLoopBlends2_blendValues = array, U08, 22842, [8], "%", 0.5, 0, 0, 100 ochGetCommand = "O%2o%2c" ; see TS_OUTPUT_SIZE in console source code - ochBlockSize = 1372 + ochBlockSize = 1376 ; 11.2.3 Full Optimized – High Speed scatteredOchGetCommand = 9 @@ -2170,24 +2177,23 @@ actualLastInjection = scalar, U16, 44, "ms", 0.0033333333333333335, 0 injectorDutyCycle = scalar, U08, 46, "%", 0.5, 0 veValue = scalar, U08, 47, "ratio", 0.5, 0 injectionOffset = scalar, S16, 48, "deg", 1, 0 -injectorLagMs = scalar, U16, 50, "ms", 0.0033333333333333335, 0 -engineMakeCodeNameCrc16 = scalar, U16, 52, "crc16", 1, 0 -wallFuelAmount = scalar, U16, 54, "mg", 0.01, 0 -wallFuelCorrectionValue = scalar, S16, 56, "mg", 0.01, 0 -revolutionCounterSinceStart = scalar, U16, 58, "", 1, 0 -canReadCounter = scalar, U16, 60, "", 1, 0 -tpsAccelFuel = scalar, S16, 62, "ms", 0.0033333333333333335, 0 -ignitionAdvance = scalar, S16, 64, "deg", 0.02, 0 -currentIgnitionMode = scalar, U08, 66, "", 1, 0 -currentInjectionMode = scalar, U08, 67, "", 1, 0 -coilDutyCycle = scalar, U16, 68, "%", 0.01, 0 -etbTarget = scalar, S16, 70, "%", 0.01, 0 -etb1DutyCycle = scalar, S16, 72, "%", 0.01, 0 -fuelTankLevel = scalar, S16, 74, "%", 0.01, 0 -totalFuelConsumption = scalar, U16, 76, "grams", 1, 0 -fuelFlowRate = scalar, U16, 78, "gram/s", 0.005, 0 -TPS2Value = scalar, S16, 80, "%", 0.01, 0 -tuneCrc16 = scalar, U16, 82, "crc16", 1, 0 +engineMakeCodeNameCrc16 = scalar, U16, 50, "crc16", 1, 0 +wallFuelAmount = scalar, U16, 52, "mg", 0.01, 0 +wallFuelCorrectionValue = scalar, S16, 54, "mg", 0.01, 0 +revolutionCounterSinceStart = scalar, U16, 56, "", 1, 0 +canReadCounter = scalar, U16, 58, "", 1, 0 +tpsAccelFuel = scalar, S16, 60, "ms", 0.0033333333333333335, 0 +ignitionAdvance = scalar, S16, 62, "deg", 0.02, 0 +currentIgnitionMode = scalar, U08, 64, "", 1, 0 +currentInjectionMode = scalar, U08, 65, "", 1, 0 +coilDutyCycle = scalar, U16, 66, "%", 0.01, 0 +etbTarget = scalar, S16, 68, "%", 0.01, 0 +etb1DutyCycle = scalar, S16, 70, "%", 0.01, 0 +fuelTankLevel = scalar, S16, 72, "%", 0.01, 0 +totalFuelConsumption = scalar, U16, 74, "grams", 1, 0 +fuelFlowRate = scalar, U16, 76, "gram/s", 0.005, 0 +TPS2Value = scalar, S16, 78, "%", 0.01, 0 +tuneCrc16 = scalar, U16, 80, "crc16", 1, 0 knockLevel = scalar, F32, 84, "Volts", 1, 0 seconds = scalar, U32, 88, "sec", 1, 0 engineMode = scalar, U32, 92, "em", 1, 0 @@ -2642,231 +2648,234 @@ m_knockThreshold = scalar, F32, 896, "", 1, 0 m_knockCount = scalar, U32, 900, "", 1, 0 m_maximumRetard = scalar, F32, 904, "", 1, 0 ; total TS size = 908 -throttleUseWotModel = bits, U32, 908, [0:0] -throttleModelCrossoverAngle = scalar, S16, 912, "%", 0.01, 0 -throttleEstimatedFlow = scalar, F32, 916, "g/s", 1, 0 -; total TS size = 920 -m_requested_pump = scalar, F32, 920, "", 1, 0 -fuel_requested_percent = scalar, F32, 924, "", 1, 0 -fuel_requested_percent_pi = scalar, F32, 928, "", 1, 0 -noValve = bits, U32, 932, [0:0] -angleAboveMin = bits, U32, 932, [1:1] -isHpfpInactive = bits, U32, 932, [2:2] -nextLobe = scalar, F32, 936, "", 1, 0 -di_nextStart = scalar, F32, 940, "v", 1, 0 +m_requested_pump = scalar, F32, 908, "", 1, 0 +fuel_requested_percent = scalar, F32, 912, "", 1, 0 +fuel_requested_percent_pi = scalar, F32, 916, "", 1, 0 +noValve = bits, U32, 920, [0:0] +angleAboveMin = bits, U32, 920, [1:1] +isHpfpInactive = bits, U32, 920, [2:2] +nextLobe = scalar, F32, 924, "", 1, 0 +di_nextStart = scalar, F32, 928, "v", 1, 0 +; total TS size = 932 +m_deadtime = scalar, F32, 932, "ms", 1, 0 +pressureDelta = scalar, F32, 936, "kPa", 1, 0 +pressureRatio = scalar, F32, 940, "", 1, 0 ; total TS size = 944 -m_deadtime = scalar, F32, 944, "", 1, 0 -pressureDelta = scalar, F32, 948, "kPa", 1, 0 -pressureRatio = scalar, F32, 952, "", 1, 0 -; total TS size = 956 -retardThresholdRpm = scalar, S32, 956, "", 1, 0 -combinedConditions = bits, U32, 960, [0:0] -launchActivatePinState = bits, U32, 960, [1:1] -isLaunchCondition = bits, U32, 960, [2:2] -isSwitchActivated = bits, U32, 960, [3:3] -isClutchActivated = bits, U32, 960, [4:4] -isValidInputPin = bits, U32, 960, [5:5] -activateSwitchCondition = bits, U32, 960, [6:6] -rpmCondition = bits, U32, 960, [7:7] -speedCondition = bits, U32, 960, [8:8] -tpsCondition = bits, U32, 960, [9:9] +retardThresholdRpm = scalar, S32, 944, "", 1, 0 +combinedConditions = bits, U32, 948, [0:0] +launchActivatePinState = bits, U32, 948, [1:1] +isLaunchCondition = bits, U32, 948, [2:2] +isSwitchActivated = bits, U32, 948, [3:3] +isClutchActivated = bits, U32, 948, [4:4] +isValidInputPin = bits, U32, 948, [5:5] +activateSwitchCondition = bits, U32, 948, [6:6] +rpmCondition = bits, U32, 948, [7:7] +speedCondition = bits, U32, 948, [8:8] +tpsCondition = bits, U32, 948, [9:9] +; total TS size = 952 +isAntilagCondition = bits, U32, 952, [0:0] +ALSMinRPMCondition = bits, U32, 952, [1:1] +ALSMaxRPMCondition = bits, U32, 952, [2:2] +ALSMinCLTCondition = bits, U32, 952, [3:3] +ALSMaxCLTCondition = bits, U32, 952, [4:4] +ALSMaxThrottleIntentCondition = bits, U32, 952, [5:5] +isALSSwitchActivated = bits, U32, 952, [6:6] +ALSActivatePinState = bits, U32, 952, [7:7] +ALSSwitchCondition = bits, U32, 952, [8:8] +ALSTimerCondition = bits, U32, 952, [9:9] +fuelALSCorrection = scalar, F32, 956, "", 1, 0 +timingALSCorrection = scalar, S16, 960, "deg", 0.01, 0 ; total TS size = 964 -isAntilagCondition = bits, U32, 964, [0:0] -ALSMinRPMCondition = bits, U32, 964, [1:1] -ALSMaxRPMCondition = bits, U32, 964, [2:2] -ALSMinCLTCondition = bits, U32, 964, [3:3] -ALSMaxCLTCondition = bits, U32, 964, [4:4] -ALSMaxThrottleIntentCondition = bits, U32, 964, [5:5] -isALSSwitchActivated = bits, U32, 964, [6:6] -ALSActivatePinState = bits, U32, 964, [7:7] -ALSSwitchCondition = bits, U32, 964, [8:8] -ALSTimerCondition = bits, U32, 964, [9:9] -fuelALSCorrection = scalar, F32, 968, "", 1, 0 -timingALSCorrection = scalar, S16, 972, "deg", 0.01, 0 -; total TS size = 976 -isTpsInvalid = bits, U32, 976, [0:0] -m_shouldResetPid = bits, U32, 976, [1:1] -isBelowClosedLoopThreshold = bits, U32, 976, [2:2] -isNotClosedLoop = bits, U32, 976, [3:3] -isZeroRpm = bits, U32, 976, [4:4] -hasInitBoost = bits, U32, 976, [5:5] -rpmTooLow = bits, U32, 976, [6:6] -tpsTooLow = bits, U32, 976, [7:7] -mapTooLow = bits, U32, 976, [8:8] -luaTargetAdd = scalar, S16, 980, "v", 0.5,0 -boostOutput = scalar, S16, 982, "percent", 0.01,0 -luaTargetMult = scalar, F32, 984, "v", 1,0 -openLoopPart = scalar, F32, 988, "v", 1,0 -luaOpenLoopAdd = scalar, F32, 992, "v", 1,0 -boostControllerClosedLoopPart = scalar, S08, 996, "%", 0.5,0 -boostControlTarget = scalar, S16, 998, "kPa", 0.03333333333333333,0 +isTpsInvalid = bits, U32, 964, [0:0] +m_shouldResetPid = bits, U32, 964, [1:1] +isBelowClosedLoopThreshold = bits, U32, 964, [2:2] +isNotClosedLoop = bits, U32, 964, [3:3] +isZeroRpm = bits, U32, 964, [4:4] +hasInitBoost = bits, U32, 964, [5:5] +rpmTooLow = bits, U32, 964, [6:6] +tpsTooLow = bits, U32, 964, [7:7] +mapTooLow = bits, U32, 964, [8:8] +luaTargetAdd = scalar, S16, 968, "v", 0.5,0 +boostOutput = scalar, S16, 970, "percent", 0.01,0 +luaTargetMult = scalar, F32, 972, "v", 1,0 +openLoopPart = scalar, F32, 976, "v", 1,0 +luaOpenLoopAdd = scalar, F32, 980, "v", 1,0 +boostControllerClosedLoopPart = scalar, S08, 984, "%", 0.5,0 +boostControlTarget = scalar, S16, 986, "kPa", 0.03333333333333333,0 +; total TS size = 988 +acButtonState = bits, U32, 988, [0:0] +m_acEnabled = bits, U32, 988, [1:1] +engineTooSlow = bits, U32, 988, [2:2] +engineTooFast = bits, U32, 988, [3:3] +noClt = bits, U32, 988, [4:4] +engineTooHot = bits, U32, 988, [5:5] +tpsTooHigh = bits, U32, 988, [6:6] +isDisabledByLua = bits, U32, 988, [7:7] +acCompressorState = bits, U32, 988, [8:8] +latest_usage_ac_control = scalar, S32, 992, "", 1, 0 +acSwitchLastChangeTimeMs = scalar, S32, 996, "", 1, 0 ; total TS size = 1000 -acButtonState = bits, U32, 1000, [0:0] -m_acEnabled = bits, U32, 1000, [1:1] -engineTooSlow = bits, U32, 1000, [2:2] -engineTooFast = bits, U32, 1000, [3:3] -noClt = bits, U32, 1000, [4:4] -engineTooHot = bits, U32, 1000, [5:5] -tpsTooHigh = bits, U32, 1000, [6:6] -isDisabledByLua = bits, U32, 1000, [7:7] -acCompressorState = bits, U32, 1000, [8:8] -latest_usage_ac_control = scalar, S32, 1004, "", 1, 0 -acSwitchLastChangeTimeMs = scalar, S32, 1008, "", 1, 0 +cranking = bits, U32, 1000, [0:0] +notRunning = bits, U32, 1000, [1:1] +disabledWhileEngineStopped = bits, U32, 1000, [2:2] +brokenClt = bits, U32, 1000, [3:3] +enabledForAc = bits, U32, 1000, [4:4] +hot = bits, U32, 1000, [5:5] +cold = bits, U32, 1000, [6:6] +; total TS size = 1004 +isPrime = bits, U32, 1004, [0:0] +engineTurnedRecently = bits, U32, 1004, [1:1] +isFuelPumpOn = bits, U32, 1004, [2:2] +ignitionOn = bits, U32, 1004, [3:3] +; total TS size = 1008 +isBenchTest = bits, U32, 1008, [0:0] +hasIgnitionVoltage = bits, U32, 1008, [1:1] +mainRelayState = bits, U32, 1008, [2:2] +delayedShutoffRequested = bits, U32, 1008, [3:3] ; total TS size = 1012 -cranking = bits, U32, 1012, [0:0] -notRunning = bits, U32, 1012, [1:1] -disabledWhileEngineStopped = bits, U32, 1012, [2:2] -brokenClt = bits, U32, 1012, [3:3] -enabledForAc = bits, U32, 1012, [4:4] -hot = bits, U32, 1012, [5:5] -cold = bits, U32, 1012, [6:6] -; total TS size = 1016 -isPrime = bits, U32, 1016, [0:0] -engineTurnedRecently = bits, U32, 1016, [1:1] -isFuelPumpOn = bits, U32, 1016, [2:2] -ignitionOn = bits, U32, 1016, [3:3] -; total TS size = 1020 -isBenchTest = bits, U32, 1020, [0:0] -hasIgnitionVoltage = bits, U32, 1020, [1:1] -mainRelayState = bits, U32, 1020, [2:2] -delayedShutoffRequested = bits, U32, 1020, [3:3] -; total TS size = 1024 -lua_fuelAdd = scalar, F32, 1024, "g", 1, 0 -lua_fuelMult = scalar, F32, 1028, "", 1, 0 -lua_clutchUpState = bits, U32, 1032, [0:0] -lua_brakePedalState = bits, U32, 1032, [1:1] -lua_acRequestState = bits, U32, 1032, [2:2] -lua_luaDisableEtb = bits, U32, 1032, [3:3] -lua_luaIgnCut = bits, U32, 1032, [4:4] -sd_tCharge = scalar, S16, 1036, "deg C", 0.01, 0 -sd_tChargeK = scalar, F32, 1040, "", 1, 0 -crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1044, "", 1, 0 -crankingFuel_tpsCoefficient = scalar, F32, 1048, "", 1, 0 -crankingFuel_durationCoefficient = scalar, F32, 1052, "", 1, 0 -crankingFuel_fuel = scalar, U16, 1056, "mg", 0.01, 0 -baroCorrection = scalar, F32, 1060, "", 1, 0 -hellenBoardId = scalar, S16, 1064, "id", 1, 0 -clutchUpState = bits, U32, 1068, [0:0] -clutchDownState = bits, U32, 1068, [1:1] -brakePedalState = bits, U32, 1068, [2:2] -startStopState = bits, U32, 1068, [3:3] -startStopStateToggleCounter = scalar, U32, 1072, "", 1, 0 -egtValue1 = scalar, F32, 1076, "", 1, 0 -egtValue2 = scalar, F32, 1080, "", 1, 0 -desiredRpmLimit = scalar, S16, 1084, "rpm", 1, 0 -fuelInjectionCounter = scalar, U32, 1088, "", 1, 0 -sparkCounter = scalar, U32, 1092, "", 1, 0 -fuelingLoad = scalar, F32, 1096, "", 1, 0 -ignitionLoad = scalar, F32, 1100, "", 1, 0 -veTableYAxis = scalar, U16, 1104, "%", 0.01, 0 -; total TS size = 1108 -tpsFrom = scalar, F32, 1108 -tpsTo = scalar, F32, 1112 -deltaTps = scalar, F32, 1116 -extraFuel = scalar, F32, 1120, "", 1, 0 -valueFromTable = scalar, F32, 1124, "", 1, 0 -isAboveAccelThreshold = bits, U32, 1128, [0:0] -isBelowDecelThreshold = bits, U32, 1128, [1:1] -isTimeToResetAccumulator = bits, U32, 1128, [2:2] -isFractionalEnrichment = bits, U32, 1128, [3:3] -belowEpsilon = bits, U32, 1128, [4:4] -tooShort = bits, U32, 1128, [5:5] -fractionalInjFuel = scalar, F32, 1132, "", 1, 0 -accumulatedValue = scalar, F32, 1136, "", 1, 0 -maxExtraPerCycle = scalar, F32, 1140, "", 1, 0 -maxExtraPerPeriod = scalar, F32, 1144, "", 1, 0 -maxInjectedPerPeriod = scalar, F32, 1148, "", 1, 0 -cycleCnt = scalar, S32, 1152, "", 1, 0 -; total TS size = 1156 -hwEventCounters1 = scalar, U32, 1156, "", 1, 0 -hwEventCounters2 = scalar, U32, 1160, "", 1, 0 -hwEventCounters3 = scalar, U32, 1164, "", 1, 0 -hwEventCounters4 = scalar, U32, 1168, "", 1, 0 -hwEventCounters5 = scalar, U32, 1172, "", 1, 0 -hwEventCounters6 = scalar, U32, 1176, "", 1, 0 -vvtCamCounter = scalar, U32, 1180, "", 1, 0 -mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1184, "", 1, 0 -mapVvt_MAP_AT_DIFF = scalar, F32, 1188, "", 1, 0 -mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1192, "", 1, 0 -mapVvt_map_peak = scalar, U08, 1193, "", 1, 0 -currentEngineDecodedPhase = scalar, F32, 1196, "deg", 1, 0 -triggerToothAngleError = scalar, F32, 1200, "deg", 1, 0 -triggerIgnoredToothCount = scalar, U08, 1204, "", 1, 0 -; total TS size = 1208 -crankSynchronizationCounter = scalar, U32, 1208, "", 1, 0 -vvtSyncGapRatio = scalar, F32, 1212, "", 1, 0 -vvtCurrentPosition = scalar, F32, 1216, "", 1, 0 -triggerSyncGapRatio = scalar, F32, 1220, "", 1, 0 -triggerStateIndex = scalar, U08, 1224, "", 1, 0 -vvtCounter = scalar, U08, 1225, "", 1, 0 -camResyncCounter = scalar, U08, 1226, "", 1, 0 -vvtStateIndex = scalar, U08, 1227, "", 1, 0 +lua_fuelAdd = scalar, F32, 1012, "g", 1, 0 +lua_fuelMult = scalar, F32, 1016, "", 1, 0 +lua_clutchUpState = bits, U32, 1020, [0:0] +lua_brakePedalState = bits, U32, 1020, [1:1] +lua_acRequestState = bits, U32, 1020, [2:2] +lua_luaDisableEtb = bits, U32, 1020, [3:3] +lua_luaIgnCut = bits, U32, 1020, [4:4] +sd_tCharge = scalar, S16, 1024, "deg C", 0.01, 0 +sd_tChargeK = scalar, F32, 1028, "", 1, 0 +crankingFuel_coolantTemperatureCoefficient = scalar, F32, 1032, "", 1, 0 +crankingFuel_tpsCoefficient = scalar, F32, 1036, "", 1, 0 +crankingFuel_durationCoefficient = scalar, F32, 1040, "", 1, 0 +crankingFuel_fuel = scalar, U16, 1044, "mg", 0.01, 0 +baroCorrection = scalar, F32, 1048, "", 1, 0 +hellenBoardId = scalar, S16, 1052, "id", 1, 0 +clutchUpState = bits, U32, 1056, [0:0] +clutchDownState = bits, U32, 1056, [1:1] +brakePedalState = bits, U32, 1056, [2:2] +startStopState = bits, U32, 1056, [3:3] +startStopStateToggleCounter = scalar, U32, 1060, "", 1, 0 +egtValue1 = scalar, F32, 1064, "", 1, 0 +egtValue2 = scalar, F32, 1068, "", 1, 0 +desiredRpmLimit = scalar, S16, 1072, "rpm", 1, 0 +fuelInjectionCounter = scalar, U32, 1076, "", 1, 0 +sparkCounter = scalar, U32, 1080, "", 1, 0 +fuelingLoad = scalar, F32, 1084, "", 1, 0 +ignitionLoad = scalar, F32, 1088, "", 1, 0 +veTableYAxis = scalar, U16, 1092, "%", 0.01, 0 +; total TS size = 1096 +tpsFrom = scalar, F32, 1096 +tpsTo = scalar, F32, 1100 +deltaTps = scalar, F32, 1104 +extraFuel = scalar, F32, 1108, "", 1, 0 +valueFromTable = scalar, F32, 1112, "", 1, 0 +isAboveAccelThreshold = bits, U32, 1116, [0:0] +isBelowDecelThreshold = bits, U32, 1116, [1:1] +isTimeToResetAccumulator = bits, U32, 1116, [2:2] +isFractionalEnrichment = bits, U32, 1116, [3:3] +belowEpsilon = bits, U32, 1116, [4:4] +tooShort = bits, U32, 1116, [5:5] +fractionalInjFuel = scalar, F32, 1120, "", 1, 0 +accumulatedValue = scalar, F32, 1124, "", 1, 0 +maxExtraPerCycle = scalar, F32, 1128, "", 1, 0 +maxExtraPerPeriod = scalar, F32, 1132, "", 1, 0 +maxInjectedPerPeriod = scalar, F32, 1136, "", 1, 0 +cycleCnt = scalar, S32, 1140, "", 1, 0 +; total TS size = 1144 +hwEventCounters1 = scalar, U32, 1144, "", 1, 0 +hwEventCounters2 = scalar, U32, 1148, "", 1, 0 +hwEventCounters3 = scalar, U32, 1152, "", 1, 0 +hwEventCounters4 = scalar, U32, 1156, "", 1, 0 +hwEventCounters5 = scalar, U32, 1160, "", 1, 0 +hwEventCounters6 = scalar, U32, 1164, "", 1, 0 +vvtCamCounter = scalar, U32, 1168, "", 1, 0 +mapVvt_MAP_AT_SPECIAL_POINT = scalar, F32, 1172, "", 1, 0 +mapVvt_MAP_AT_DIFF = scalar, F32, 1176, "", 1, 0 +mapVvt_MAP_AT_CYCLE_COUNT = scalar, U08, 1180, "", 1, 0 +mapVvt_map_peak = scalar, U08, 1181, "", 1, 0 +currentEngineDecodedPhase = scalar, F32, 1184, "deg", 1, 0 +triggerToothAngleError = scalar, F32, 1188, "deg", 1, 0 +triggerIgnoredToothCount = scalar, U08, 1192, "", 1, 0 +; total TS size = 1196 +crankSynchronizationCounter = scalar, U32, 1196, "", 1, 0 +vvtSyncGapRatio = scalar, F32, 1200, "", 1, 0 +vvtCurrentPosition = scalar, F32, 1204, "", 1, 0 +triggerSyncGapRatio = scalar, F32, 1208, "", 1, 0 +triggerStateIndex = scalar, U08, 1212, "", 1, 0 +vvtCounter = scalar, U08, 1213, "", 1, 0 +camResyncCounter = scalar, U08, 1214, "", 1, 0 +vvtStateIndex = scalar, U08, 1215, "", 1, 0 +; total TS size = 1216 +m_hasSynchronizedPhase = bits, U32, 1216, [0:0] +; total TS size = 1220 +wallFuelCorrection = scalar, F32, 1220, "", 1, 0 +wallFuel = scalar, F32, 1224, "", 1, 0 ; total TS size = 1228 -m_hasSynchronizedPhase = bits, U32, 1228, [0:0] -; total TS size = 1232 -wallFuelCorrection = scalar, F32, 1232, "", 1, 0 -wallFuel = scalar, F32, 1236, "", 1, 0 -; total TS size = 1240 -idleState = bits, S32, 1240, [0:2], "not important" -currentIdlePosition = scalar, F32, 1244 -baseIdlePosition = scalar, F32, 1248 -idleClosedLoop = scalar, F32, 1252 -iacByTpsTaper = scalar, F32, 1256 -throttlePedalUpState = scalar, S32, 1260, "", 1, 0 -mightResetPid = bits, U32, 1264, [0:0] -shouldResetPid = bits, U32, 1264, [1:1] -wasResetPid = bits, U32, 1264, [2:2] -mustResetPid = bits, U32, 1264, [3:3] -isCranking = bits, U32, 1264, [4:4] -isIacTableForCoasting = bits, U32, 1264, [5:5] -notIdling = bits, U32, 1264, [6:6] -needReset = bits, U32, 1264, [7:7] -isInDeadZone = bits, U32, 1264, [8:8] -isBlipping = bits, U32, 1264, [9:9] -looksLikeRunning = bits, U32, 1264, [10:10] -looksLikeCoasting = bits, U32, 1264, [11:11] -looksLikeCrankToIdle = bits, U32, 1264, [12:12] -isVerboseIAC = bits, U32, 1264, [13:13] -isIdleCoasting = bits, U32, 1264, [14:14] -isIdleClosedLoop = bits, U32, 1264, [15:15] -idleTarget = scalar, S32, 1268, "", 1, 0 -targetRpmByClt = scalar, S32, 1272, "", 1, 0 -targetRpmAcBump = scalar, S32, 1276, "", 1, 0 -iacByRpmTaper = scalar, F32, 1280 -luaAdd = scalar, F32, 1284 -; total TS size = 1288 -idlePosition = scalar, F32, 1288, "per", 1,0 -trim = scalar, F32, 1292, "", 1, 0 -luaAdjustment = scalar, F32, 1296, "per", 1,0 -m_wastegatePosition = scalar, F32, 1300, "per", 1,0 -etbFeedForward = scalar, F32, 1304 -etbIntegralError = scalar, F32, 1308, "", 1, 0 -etbCurrentTarget = scalar, F32, 1312, "%", 1, 0 -etbCurrentAdjustedTarget = scalar, F32, 1316, "%", 1, 0 -etbRevLimitActive = bits, U32, 1320, [0:0] -jamDetected = bits, U32, 1320, [1:1] -etbDutyRateOfChange = scalar, F32, 1324, "per", 1,0 -etbDutyAverage = scalar, F32, 1328, "per", 1,0 -etbTpsErrorCounter = scalar, U16, 1332, "count", 1,0 -etbPpsErrorCounter = scalar, U16, 1334, "count", 1,0 -etbErrorCode = scalar, S08, 1336, "", 1, 0 -jamTimer = scalar, U16, 1338, "sec", 0.01, 0 +idleState = bits, S32, 1228, [0:2], "not important" +currentIdlePosition = scalar, F32, 1232 +baseIdlePosition = scalar, F32, 1236 +idleClosedLoop = scalar, F32, 1240 +iacByTpsTaper = scalar, F32, 1244 +throttlePedalUpState = scalar, S32, 1248, "", 1, 0 +mightResetPid = bits, U32, 1252, [0:0] +shouldResetPid = bits, U32, 1252, [1:1] +wasResetPid = bits, U32, 1252, [2:2] +mustResetPid = bits, U32, 1252, [3:3] +isCranking = bits, U32, 1252, [4:4] +isIacTableForCoasting = bits, U32, 1252, [5:5] +notIdling = bits, U32, 1252, [6:6] +needReset = bits, U32, 1252, [7:7] +isInDeadZone = bits, U32, 1252, [8:8] +isBlipping = bits, U32, 1252, [9:9] +looksLikeRunning = bits, U32, 1252, [10:10] +looksLikeCoasting = bits, U32, 1252, [11:11] +looksLikeCrankToIdle = bits, U32, 1252, [12:12] +isVerboseIAC = bits, U32, 1252, [13:13] +isIdleCoasting = bits, U32, 1252, [14:14] +isIdleClosedLoop = bits, U32, 1252, [15:15] +idleTarget = scalar, S32, 1256, "", 1, 0 +targetRpmByClt = scalar, S32, 1260, "", 1, 0 +targetRpmAcBump = scalar, S32, 1264, "", 1, 0 +iacByRpmTaper = scalar, F32, 1268 +luaAdd = scalar, F32, 1272 +; total TS size = 1276 +idlePosition = scalar, F32, 1276, "per", 1,0 +trim = scalar, F32, 1280, "", 1, 0 +luaAdjustment = scalar, F32, 1284, "per", 1,0 +m_wastegatePosition = scalar, F32, 1288, "per", 1,0 +etbFeedForward = scalar, F32, 1292 +etbIntegralError = scalar, F32, 1296, "", 1, 0 +etbCurrentTarget = scalar, F32, 1300, "%", 1, 0 +etbCurrentAdjustedTarget = scalar, F32, 1304, "%", 1, 0 +etbRevLimitActive = bits, U32, 1308, [0:0] +jamDetected = bits, U32, 1308, [1:1] +etbDutyRateOfChange = scalar, F32, 1312, "per", 1,0 +etbDutyAverage = scalar, F32, 1316, "per", 1,0 +etbTpsErrorCounter = scalar, U16, 1320, "count", 1,0 +etbPpsErrorCounter = scalar, U16, 1322, "count", 1,0 +etbErrorCode = scalar, S08, 1324, "", 1, 0 +jamTimer = scalar, U16, 1326, "sec", 0.01, 0 +; total TS size = 1328 +faultCode = scalar, U08, 1328, "", 1, 0 +heaterDuty = scalar, U08, 1329, "%", 1, 0 +pumpDuty = scalar, U08, 1330, "%", 1, 0 +tempC = scalar, U16, 1332, "C", 1, 0 +nernstVoltage = scalar, U16, 1334, "V", 0.001, 0 +esr = scalar, U16, 1336, "ohm", 1, 0 ; total TS size = 1340 -faultCode = scalar, U08, 1340, "", 1, 0 -heaterDuty = scalar, U08, 1341, "%", 1, 0 -pumpDuty = scalar, U08, 1342, "%", 1, 0 -tempC = scalar, U16, 1344, "C", 1, 0 -nernstVoltage = scalar, U16, 1346, "V", 0.001, 0 -esr = scalar, U16, 1348, "ohm", 1, 0 +dcOutput0 = scalar, F32, 1340, "per", 1,0 +isEnabled0_int = scalar, U08, 1344, "per", 1,0 +isEnabled0 = bits, U32, 1348, [0:0] ; total TS size = 1352 -dcOutput0 = scalar, F32, 1352, "per", 1,0 -isEnabled0_int = scalar, U08, 1356, "per", 1,0 -isEnabled0 = bits, U32, 1360, [0:0] -; total TS size = 1364 -value0 = scalar, U16, 1364, "value", 1,0 -value1 = scalar, U16, 1366, "value", 1,0 -errorRate = scalar, F32, 1368, "ratio", 1,0 +value0 = scalar, U16, 1352, "value", 1,0 +value1 = scalar, U16, 1354, "value", 1,0 +errorRate = scalar, F32, 1356, "ratio", 1,0 +; total TS size = 1360 +throttleUseWotModel = bits, U32, 1360, [0:0] +throttleModelCrossoverAngle = scalar, S16, 1364, "%", 0.01, 0 +throttleEstimatedFlow = scalar, F32, 1368, "g/s", 1, 0 ; total TS size = 1372 +vvtTarget = scalar, U16, 1372, "deg", 0.1, 0 +vvtOutput = scalar, U08, 1374, "%", 0.5, 0 +; total TS size = 1376 time = { timeNow } @@ -2908,7 +2917,7 @@ errorRate = scalar, F32, 1368, "ratio", 1,0 ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -3836,6 +3845,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -4359,7 +4374,6 @@ entry = actualLastInjection, "Fuel: Last inj pulse width", float, "%.3f" entry = injectorDutyCycle, "Fuel: injector duty cycle", float, "%.3f" entry = veValue, "Fuel: VE", float, "%.3f" entry = injectionOffset, "Fuel: Injection timing SOI", int, "%d" -entry = injectorLagMs, "Fuel: injector lag", float, "%.3f" entry = engineMakeCodeNameCrc16, "Engine CRC16", int, "%d" entry = wallFuelAmount, "Fuel: wall amount", float, "%.3f" entry = wallFuelCorrectionValue, "Fuel: wall correction", float, "%.3f" @@ -4669,9 +4683,6 @@ entry = m_knockRetard, "Knock Degrees retarded", float, "%.3f" entry = m_knockThreshold, "m_knockThreshold", float, "%.3f" entry = m_knockCount, "m_knockCount", int, "%d" entry = m_maximumRetard, "m_maximumRetard", float, "%.3f" -entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" -entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" -entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" entry = m_requested_pump, "HPFP duration", float, "%.3f" entry = fuel_requested_percent, "fuel_requested_percent", float, "%.3f" entry = fuel_requested_percent_pi, "fuel_requested_percent_pi", float, "%.3f" @@ -4680,9 +4691,9 @@ entry = angleAboveMin, "angleAboveMin", int, "%d" entry = isHpfpInactive, "isHpfpInactive", int, "%d" entry = nextLobe, "nextLobe", float, "%.3f" entry = di_nextStart, "DI: next start", float, "%.3f" -entry = m_deadtime, "injectorLag(VBatt)", float, "%.3f" -entry = pressureDelta, "fuel: injector pressureDelta", float, "%.3f" -entry = pressureRatio, "fuel: injector pressureRatio", float, "%.3f" +entry = m_deadtime, "Fuel: injector lag", float, "%.3f" +entry = pressureDelta, "fuel: Injector pressure delta", float, "%.3f" +entry = pressureRatio, "fuel: Injector pressure ratio", float, "%.3f" entry = retardThresholdRpm, "retardThresholdRpm", int, "%d" entry = combinedConditions, "combinedConditions", int, "%d" entry = launchActivatePinState, "launchActivatePinState", int, "%d" @@ -4873,6 +4884,11 @@ entry = isEnabled0, "isEnabled0", int, "%d" entry = value0, "ETB: SENT value0", int, "%d" entry = value1, "ETB: SENT value1", int, "%d" entry = errorRate, "ETB: SENT error rate", float, "%.3f" +entry = throttleUseWotModel, "Air: Throttle model WOT", int, "%d" +entry = throttleModelCrossoverAngle, "Air: Throttle crossover pos", float, "%.3f" +entry = throttleEstimatedFlow, "Air: Throttle flow estimate", float, "%.3f" +entry = vvtTarget, "vvtTarget", float, "%.3f" +entry = vvtOutput, "vvtOutput", float, "%.3f" [Menu] @@ -5172,6 +5188,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -5183,13 +5204,12 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" subMenu = fuel_computerDialog, "fuel_computer" subMenu = ignition_stateDialog, "ignition_state" subMenu = knock_controllerDialog, "knock_controller" - subMenu = throttle_modelDialog, "throttle_model" subMenu = high_pressure_fuel_pumpDialog, "high_pressure_fuel_pump" subMenu = injector_modelDialog, "injector_model" subMenu = launch_control_stateDialog, "launch_control_state" @@ -5210,6 +5230,8 @@ menuDialog = main subMenu = wideband_stateDialog, "wideband_state" subMenu = dc_motorsDialog, "dc_motors" subMenu = sent_stateDialog, "sent_state" + subMenu = throttle_modelDialog, "throttle_model" + subMenu = vvtDialog, "vvt" @@ -5415,15 +5437,6 @@ dialog = knock_controllerDialog, "knock_controller" graphLine = m_knockCount graphLine = m_maximumRetard -indicatorPanel = throttle_modelIndicatorPanel, 2 - indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" - -dialog = throttle_modelDialog, "throttle_model" - panel = throttle_modelIndicatorPanel - liveGraph = throttle_model_1_Graph, "Graph", South - graphLine = throttleModelCrossoverAngle - graphLine = throttleEstimatedFlow - indicatorPanel = high_pressure_fuel_pumpIndicatorPanel, 2 indicator = {noValve}, "noValve No", "noValve Yes" indicator = {angleAboveMin}, "angleAboveMin No", "angleAboveMin Yes" @@ -5747,6 +5760,21 @@ dialog = sent_stateDialog, "sent_state" graphLine = value1 graphLine = errorRate +indicatorPanel = throttle_modelIndicatorPanel, 2 + indicator = {throttleUseWotModel}, "throttleUseWotModel No", "throttleUseWotModel Yes" + +dialog = throttle_modelDialog, "throttle_model" + panel = throttle_modelIndicatorPanel + liveGraph = throttle_model_1_Graph, "Graph", South + graphLine = throttleModelCrossoverAngle + graphLine = throttleEstimatedFlow + + +dialog = vvtDialog, "vvt" + liveGraph = vvt_1_Graph, "Graph", South + graphLine = vvtTarget + graphLine = vvtOutput + dialog = scriptTable1TblSettings, "", yAxis @@ -5819,7 +5847,6 @@ dialog = sent_stateDialog, "sent_state" field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2 } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -5859,7 +5886,7 @@ dialog = sent_stateDialog, "sent_state" field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -5895,7 +5922,7 @@ dialog = sent_stateDialog, "sent_state" field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (trigger_type == 1 || trigger_type == 3 || trigger_type == 11 || trigger_type == 15 || trigger_type == 16 || trigger_type == 19 || trigger_type == 25 || trigger_type == 28 || trigger_type == 31 || trigger_type == 35 || trigger_type == 36 || trigger_type == 37 || trigger_type == 40 || trigger_type == 49 || trigger_type == 50 || trigger_type == 53 || trigger_type == 54 || trigger_type == 63 || trigger_type == 64) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -6794,7 +6821,7 @@ dialog = sent_stateDialog, "sent_state" field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -7107,6 +7134,24 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -7279,11 +7324,11 @@ dialog = sent_stateDialog, "sent_state" field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -7451,7 +7496,7 @@ dialog = sent_stateDialog, "sent_state" field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -7583,7 +7628,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -7600,27 +7645,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -7643,7 +7688,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -7909,9 +7954,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = "https://wiki.fome.tech/" - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index c7af5a2388..aa7f757a2b 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -228,7 +228,7 @@ enable2ndByteCanID = false ignModeList = bits, U08, [0:3], "Single Coil", "Sequential", "Wasted", "Two Coils" ; ClearReason - fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR" + fuelIgnCutCodeList = bits, U08, [0:7], "None", "fatal error", "setting disabled", "RPM limit", "fault RPM limit", "boost cut", "oil pressure", "stop requested", "ETB problem", "launch control", "max injector duty", "flood clear", "engine sync", "kickstart", "ign off", "Lua", "ACR", "Lambda Prot" ; TpsState etbCutCodeList = bits, U08, [0:7], "None", "engine stopped", "TPS error", "PPS error", "TPS noise", "PID noise", "Lua", "Manual", "N/A", "Redundancy", "PPS noise" @@ -1156,6 +1156,12 @@ curve = 32Curve, "3-2 Shift Solenoid Percent by Speed" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -1898,6 +1904,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" @@if_ts_show_software_knock subMenu = maxKnockRetardTbl, "Max knock retard" @@if_ts_show_software_knock + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -1909,7 +1920,7 @@ menuDialog = main subMenu = throttleEffectiveArea, "Throttle effective area" menu = "Help" - subMenu = helpGeneral, "rusEFI Info" + subMenu = helpGeneral, "FOME Info" menu = "&View" @@LIVE_DATA_MENU_FROM_FILE@@ @@ -2147,7 +2158,6 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "Enabled", isInjectionEnabled field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" - field = "Individually wired Batch Fuel", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == @@injection_mode_e_IM_BATCH@@ } field = "Override VE table load axis", veOverrideMode, { isInjectionEnabled } field = "Override AFR table load axis", afrOverrideMode, { isInjectionEnabled } field = "Injection phase control mode", injectionTimingMode, { isInjectionEnabled } @@ -2187,7 +2197,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "Vehicle weight", vehicleWeight dialog = engineMetadata, "Engine Metadata" - field = "#These metadata are used by rusEFI Online" + field = "#These metadata are used by https://tunes.fome.tech" field = "Engine Make", engineMake field = "Manufacturer Engine Code", engineCode field = "Vehicle Name", vehicleName @@ -2223,7 +2233,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "Invert Secondary", invertSecondaryTriggerSignal, {triggerInputPins2 != 0 && (@@TRIGGER_TYPE_WITH_SECOND_WHEEL@@) } dialog = trigger_cams, "Cam Inputs" - field = "!https://rusefi.com/s/vvt" + field = "!https://wiki.fome.tech/r/vvt" ; todo: code generator to hard-code all triggers not requiring VVT? ; todo: https://github.com/rusefi/rusefi/issues/2077 @@ -3123,7 +3133,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "No2 Direction #1", stepperDcIo2_directionPin1 field = "No2 Direction #2", stepperDcIo2_directionPin2 field = "No2 Disable", stepperDcIo2_disablePin - + dialog = stepperHbridgeHardware, "Stepper H-Bridge Hardware" topicHelp = "stepperHbridgeHardwareHelp" field = "Inverted driver pins", stepperDcInvertedPins @@ -3437,6 +3447,24 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "and above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "and above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "and after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + field = "Then cut fuel until:" + field = "Load less than", lambdaProtectionRestoreLoad, { lambdaProtectionEnable } + field = "and TPS less than", lambdaProtectionRestoreTps, { lambdaProtectionEnable } + field = "and RPM less than", lambdaProtectionRestoreRpm, { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm @@ -3609,11 +3637,11 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "Engine Sniffer Threshold", engineSnifferRpmThreshold dialog = generalSettings, "Fuel" - field = "!https://rusefi.com/s/fuel" + field = "!https://wiki.fome.tech/r/fuel" field = "Fuel strategy", fuelAlgorithm dialog = debugging, "Debug" - field = "!https://rusefi.com/s/debugmode" + field = "!https://wiki.fome.tech/r/debugmode" field = "Debug mode", debugMode dialog = limitsSettings, "Limits" @@ -3781,7 +3809,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "!Use FOME console for Lua script editing" field = "#Call startPwm to initialize, then call" field = "#setPwmDuty and setPwmFreq to vary duty/freq" - field = "#See rusefi.com/s/lua for more info" + field = "#See https://wiki.fome.tech/r/lua for more info" field = "output #0", luaOutputPins1 field = "output #1", luaOutputPins2 field = "output #2", luaOutputPins3 @@ -3913,7 +3941,7 @@ dialog = tcuControls, "Transmission Settings" help = veTableDialogHelp, "Volumetric Efficiency" text = "Volumetric Efficiency is used to calculate fuel in Speed Density mode. VE incorporates pressure ratio as measured by MAP sensor in boost (no VE ever above 105%ish)" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = stepperHbridgeHardwareHelp, "Stepper driven by Dual H-bridge" text = "In case you are using two H-bridges driving 4-wire stepper. H-brigde control signals connected to MCU pins configured here." @@ -3930,27 +3958,27 @@ dialog = tcuControls, "Transmission Settings" help = fuelHelp, "Fuel Control" text = "More about fuel control on the web" - webHelp = "https://rusefi.com/s/fuel" + webHelp = "https://wiki.fome.tech/r/fuel" help = triggerHelp, "Trigger Settings" text = "More about Trigger Settings on the web" - webHelp = "https://rusefi.com/s/trigger" + webHelp = "https://wiki.fome.tech/r/trigger" help = etbHelp, "ETB Control" text = "More about electronic throttle body on the web" - webHelp = "https://rusefi.com/s/etb" + webHelp = "https://wiki.fome.tech/r/etb" help = vrThresholdHelp, "VR Sensor Threshold" - text = "This is about rusEFI VR Discrete decoder" - webHelp = "https://rusefi.com/" + text = "This is about FOME VR Discrete decoder" + webHelp = "https://wiki.fome.tech/r/vr" help = tpsTpsHelp, "Acceleration Enrichment" text = "More about Tps To Tps acceleration on the web" - webHelp = "https://rusefi.com/s/tpstps" + webHelp = "https://wiki.fome.tech/r/tpstps" help = baseHelp, "Base Settings Control" - text = "More about rusefi on the web" - webHelp = "https://rusefi.com/" + text = "More about FOME on the web" + webHelp = "https://wiki.fome.tech" dialog = veTableDialog topicHelp = "veTableDialogHelp" @@ -3973,7 +4001,7 @@ dialog = tcuControls, "Transmission Settings" field = "ETB idle maximum angle", etbIdleThrottleRange dialog = etbDialogLeft - field = "https://rusefi.com/s/etb" + field = "https://wiki.fome.tech/r/etb" field = "Disable ETB if engine is stopped", disableEtbWhenEngineStopped field = "Disable ETB Motor", pauseEtbControl field = "H-Bridge #1 function", etbFunctions1 @@ -4272,9 +4300,9 @@ dialog = tcuControls, "Transmission Settings" panel = allTriggerDebug panel = harleyAcr - help = helpGeneral, "rusEFI General Help" + help = helpGeneral, "FOME General Help" webHelp = @@MAIN_HELP_URL@@ - text = "" + text = "" dialog = vrThreshold1, "VR 1 Threshold" field = "Pin", vrThreshold1_pin diff --git a/firmware/util/containers/type_list.h b/firmware/util/containers/type_list.h index e9fa6e85e0..47f260eeef 100644 --- a/firmware/util/containers/type_list.h +++ b/firmware/util/containers/type_list.h @@ -63,13 +63,13 @@ struct type_list { * The return type is type_list or type_list> */ template - auto get() -> std::enable_if_t(), + constexpr auto get() -> std::enable_if_t(), decltype(first.template get())> { return first.template get(); } template - auto get() -> std::enable_if_t(), + constexpr auto get() -> std::enable_if_t(), decltype(others.template get())> { return others.template get(); } @@ -111,19 +111,19 @@ struct type_list { } template()>> - auto & get() { + constexpr auto & get() { return *this; } - auto & unmock() { + constexpr auto & unmock() { return me; } - base_t * operator->() { + constexpr base_t * operator->() { return &me; } - base_t & operator*() { + constexpr base_t & operator*() { return me; } }; @@ -170,7 +170,7 @@ struct type_list> { } template()>> - auto & get() { + constexpr auto & get() { return *this; } @@ -186,11 +186,11 @@ struct type_list> { } } - auto * operator->() { + constexpr auto * operator->() { return cur; } - auto & operator*() { + constexpr auto & operator*() { return *cur; } diff --git a/java_console/io/src/main/java/com/rusefi/enums/auto_generated_enums.cpp b/java_console/io/src/main/java/com/rusefi/enums/auto_generated_enums.cpp index 31743c4c34..74acac1ebb 100644 --- a/java_console/io/src/main/java/com/rusefi/enums/auto_generated_enums.cpp +++ b/java_console/io/src/main/java/com/rusefi/enums/auto_generated_enums.cpp @@ -48,6 +48,8 @@ case LDS_trigger_state: return "LDS_trigger_state"; case LDS_trigger_state_primary: return "LDS_trigger_state_primary"; +case LDS_vvt: + return "LDS_vvt"; case LDS_wall_fuel_state: return "LDS_wall_fuel_state"; case LDS_wideband_state: diff --git a/java_console/io/src/main/java/com/rusefi/enums/live_data_e.java b/java_console/io/src/main/java/com/rusefi/enums/live_data_e.java index 39d1bdbaae..064fe377cf 100644 --- a/java_console/io/src/main/java/com/rusefi/enums/live_data_e.java +++ b/java_console/io/src/main/java/com/rusefi/enums/live_data_e.java @@ -9,7 +9,6 @@ public enum live_data_e { LDS_fuel_computer, LDS_ignition_state, LDS_knock_controller, - LDS_throttle_model, LDS_high_pressure_fuel_pump, LDS_injector_model, LDS_launch_control_state, @@ -30,4 +29,6 @@ public enum live_data_e { LDS_wideband_state, LDS_dc_motors, LDS_sent_state, + LDS_throttle_model, + LDS_vvt, } diff --git a/java_console/io/src/main/java/com/rusefi/ldmp/StateDictionary.java b/java_console/io/src/main/java/com/rusefi/ldmp/StateDictionary.java index c26c35a871..e9682fb5f8 100644 --- a/java_console/io/src/main/java/com/rusefi/ldmp/StateDictionary.java +++ b/java_console/io/src/main/java/com/rusefi/ldmp/StateDictionary.java @@ -47,7 +47,8 @@ public enum StateDictionary { register(live_data_e.LDS_antilag_system_state, AntilagSystem.VALUES, "antilag_system"); register(live_data_e.LDS_dc_motors, DcMotors.VALUES, "dc_motors"); register(live_data_e.LDS_sent_state, SentState.VALUES, "sent"); - register(live_data_e.LDS_throttle_model, ThrottleModel.VALUES, "throttle_model"); + register(live_data_e.LDS_throttle_model, ThrottleModel.VALUES, "throttle_model"); + register(live_data_e.LDS_vvt, VvtState.VALUES, "vvt"); if (map.size() != live_data_e.values().length) { Set missing = new HashSet<>(Arrays.asList(live_data_e.values())); missing.removeAll(map.keySet()); diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/AcControl.java b/java_console/models/src/main/java/com/rusefi/config/generated/AcControl.java index b747f3968c..bb94ea2d8e 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/AcControl.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/AcControl.java @@ -155,17 +155,17 @@ public class AcControl { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field ACBUTTONSTATE = Field.create("ACBUTTONSTATE", 0, FieldType.BIT, 0).setBaseOffset(1000); - public static final Field M_ACENABLED = Field.create("M_ACENABLED", 0, FieldType.BIT, 1).setBaseOffset(1000); - public static final Field ENGINETOOSLOW = Field.create("ENGINETOOSLOW", 0, FieldType.BIT, 2).setBaseOffset(1000); - public static final Field ENGINETOOFAST = Field.create("ENGINETOOFAST", 0, FieldType.BIT, 3).setBaseOffset(1000); - public static final Field NOCLT = Field.create("NOCLT", 0, FieldType.BIT, 4).setBaseOffset(1000); - public static final Field ENGINETOOHOT = Field.create("ENGINETOOHOT", 0, FieldType.BIT, 5).setBaseOffset(1000); - public static final Field TPSTOOHIGH = Field.create("TPSTOOHIGH", 0, FieldType.BIT, 6).setBaseOffset(1000); - public static final Field ISDISABLEDBYLUA = Field.create("ISDISABLEDBYLUA", 0, FieldType.BIT, 7).setBaseOffset(1000); - public static final Field ACCOMPRESSORSTATE = Field.create("ACCOMPRESSORSTATE", 0, FieldType.BIT, 8).setBaseOffset(1000); - public static final Field LATEST_USAGE_AC_CONTROL = Field.create("LATEST_USAGE_AC_CONTROL", 4, FieldType.INT).setScale(1.0).setBaseOffset(1000); - public static final Field ACSWITCHLASTCHANGETIMEMS = Field.create("ACSWITCHLASTCHANGETIMEMS", 8, FieldType.INT).setScale(1.0).setBaseOffset(1000); + public static final Field ACBUTTONSTATE = Field.create("ACBUTTONSTATE", 0, FieldType.BIT, 0).setBaseOffset(988); + public static final Field M_ACENABLED = Field.create("M_ACENABLED", 0, FieldType.BIT, 1).setBaseOffset(988); + public static final Field ENGINETOOSLOW = Field.create("ENGINETOOSLOW", 0, FieldType.BIT, 2).setBaseOffset(988); + public static final Field ENGINETOOFAST = Field.create("ENGINETOOFAST", 0, FieldType.BIT, 3).setBaseOffset(988); + public static final Field NOCLT = Field.create("NOCLT", 0, FieldType.BIT, 4).setBaseOffset(988); + public static final Field ENGINETOOHOT = Field.create("ENGINETOOHOT", 0, FieldType.BIT, 5).setBaseOffset(988); + public static final Field TPSTOOHIGH = Field.create("TPSTOOHIGH", 0, FieldType.BIT, 6).setBaseOffset(988); + public static final Field ISDISABLEDBYLUA = Field.create("ISDISABLEDBYLUA", 0, FieldType.BIT, 7).setBaseOffset(988); + public static final Field ACCOMPRESSORSTATE = Field.create("ACCOMPRESSORSTATE", 0, FieldType.BIT, 8).setBaseOffset(988); + public static final Field LATEST_USAGE_AC_CONTROL = Field.create("LATEST_USAGE_AC_CONTROL", 4, FieldType.INT).setScale(1.0).setBaseOffset(988); + public static final Field ACSWITCHLASTCHANGETIMEMS = Field.create("ACSWITCHLASTCHANGETIMEMS", 8, FieldType.INT).setScale(1.0).setBaseOffset(988); public static final Field[] VALUES = { ACBUTTONSTATE, M_ACENABLED, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/AntilagSystem.java b/java_console/models/src/main/java/com/rusefi/config/generated/AntilagSystem.java index 44f3006619..d22aa6650d 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/AntilagSystem.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/AntilagSystem.java @@ -155,19 +155,19 @@ public class AntilagSystem { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field ISANTILAGCONDITION = Field.create("ISANTILAGCONDITION", 0, FieldType.BIT, 0).setBaseOffset(964); - public static final Field ALSMINRPMCONDITION = Field.create("ALSMINRPMCONDITION", 0, FieldType.BIT, 1).setBaseOffset(964); - public static final Field ALSMAXRPMCONDITION = Field.create("ALSMAXRPMCONDITION", 0, FieldType.BIT, 2).setBaseOffset(964); - public static final Field ALSMINCLTCONDITION = Field.create("ALSMINCLTCONDITION", 0, FieldType.BIT, 3).setBaseOffset(964); - public static final Field ALSMAXCLTCONDITION = Field.create("ALSMAXCLTCONDITION", 0, FieldType.BIT, 4).setBaseOffset(964); - public static final Field ALSMAXTHROTTLEINTENTCONDITION = Field.create("ALSMAXTHROTTLEINTENTCONDITION", 0, FieldType.BIT, 5).setBaseOffset(964); - public static final Field ISALSSWITCHACTIVATED = Field.create("ISALSSWITCHACTIVATED", 0, FieldType.BIT, 6).setBaseOffset(964); - public static final Field ALSACTIVATEPINSTATE = Field.create("ALSACTIVATEPINSTATE", 0, FieldType.BIT, 7).setBaseOffset(964); - public static final Field ALSSWITCHCONDITION = Field.create("ALSSWITCHCONDITION", 0, FieldType.BIT, 8).setBaseOffset(964); - public static final Field ALSTIMERCONDITION = Field.create("ALSTIMERCONDITION", 0, FieldType.BIT, 9).setBaseOffset(964); - public static final Field FUELALSCORRECTION = Field.create("FUELALSCORRECTION", 4, FieldType.FLOAT).setBaseOffset(964); - public static final Field TIMINGALSCORRECTION = Field.create("TIMINGALSCORRECTION", 8, FieldType.INT16).setScale(0.01).setBaseOffset(964); - public static final Field ALIGNMENTFILL_AT_10 = Field.create("ALIGNMENTFILL_AT_10", 10, FieldType.INT8).setScale(1.0).setBaseOffset(964); + public static final Field ISANTILAGCONDITION = Field.create("ISANTILAGCONDITION", 0, FieldType.BIT, 0).setBaseOffset(952); + public static final Field ALSMINRPMCONDITION = Field.create("ALSMINRPMCONDITION", 0, FieldType.BIT, 1).setBaseOffset(952); + public static final Field ALSMAXRPMCONDITION = Field.create("ALSMAXRPMCONDITION", 0, FieldType.BIT, 2).setBaseOffset(952); + public static final Field ALSMINCLTCONDITION = Field.create("ALSMINCLTCONDITION", 0, FieldType.BIT, 3).setBaseOffset(952); + public static final Field ALSMAXCLTCONDITION = Field.create("ALSMAXCLTCONDITION", 0, FieldType.BIT, 4).setBaseOffset(952); + public static final Field ALSMAXTHROTTLEINTENTCONDITION = Field.create("ALSMAXTHROTTLEINTENTCONDITION", 0, FieldType.BIT, 5).setBaseOffset(952); + public static final Field ISALSSWITCHACTIVATED = Field.create("ISALSSWITCHACTIVATED", 0, FieldType.BIT, 6).setBaseOffset(952); + public static final Field ALSACTIVATEPINSTATE = Field.create("ALSACTIVATEPINSTATE", 0, FieldType.BIT, 7).setBaseOffset(952); + public static final Field ALSSWITCHCONDITION = Field.create("ALSSWITCHCONDITION", 0, FieldType.BIT, 8).setBaseOffset(952); + public static final Field ALSTIMERCONDITION = Field.create("ALSTIMERCONDITION", 0, FieldType.BIT, 9).setBaseOffset(952); + public static final Field FUELALSCORRECTION = Field.create("FUELALSCORRECTION", 4, FieldType.FLOAT).setBaseOffset(952); + public static final Field TIMINGALSCORRECTION = Field.create("TIMINGALSCORRECTION", 8, FieldType.INT16).setScale(0.01).setBaseOffset(952); + public static final Field ALIGNMENTFILL_AT_10 = Field.create("ALIGNMENTFILL_AT_10", 10, FieldType.INT8).setScale(1.0).setBaseOffset(952); public static final Field[] VALUES = { ISANTILAGCONDITION, ALSMINRPMCONDITION, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/BoostControl.java b/java_console/models/src/main/java/com/rusefi/config/generated/BoostControl.java index 734f47e04d..434186c41d 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/BoostControl.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/BoostControl.java @@ -155,23 +155,23 @@ public class BoostControl { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field ISTPSINVALID = Field.create("ISTPSINVALID", 0, FieldType.BIT, 0).setBaseOffset(976); - public static final Field M_SHOULDRESETPID = Field.create("M_SHOULDRESETPID", 0, FieldType.BIT, 1).setBaseOffset(976); - public static final Field ISBELOWCLOSEDLOOPTHRESHOLD = Field.create("ISBELOWCLOSEDLOOPTHRESHOLD", 0, FieldType.BIT, 2).setBaseOffset(976); - public static final Field ISNOTCLOSEDLOOP = Field.create("ISNOTCLOSEDLOOP", 0, FieldType.BIT, 3).setBaseOffset(976); - public static final Field ISZERORPM = Field.create("ISZERORPM", 0, FieldType.BIT, 4).setBaseOffset(976); - public static final Field HASINITBOOST = Field.create("HASINITBOOST", 0, FieldType.BIT, 5).setBaseOffset(976); - public static final Field RPMTOOLOW = Field.create("RPMTOOLOW", 0, FieldType.BIT, 6).setBaseOffset(976); - public static final Field TPSTOOLOW = Field.create("TPSTOOLOW", 0, FieldType.BIT, 7).setBaseOffset(976); - public static final Field MAPTOOLOW = Field.create("MAPTOOLOW", 0, FieldType.BIT, 8).setBaseOffset(976); - public static final Field LUATARGETADD = Field.create("LUATARGETADD", 4, FieldType.INT16).setScale(0.5).setBaseOffset(976); - public static final Field BOOSTOUTPUT = Field.create("BOOSTOUTPUT", 6, FieldType.INT16).setScale(0.01).setBaseOffset(976); - public static final Field LUATARGETMULT = Field.create("LUATARGETMULT", 8, FieldType.FLOAT).setBaseOffset(976); - public static final Field OPENLOOPPART = Field.create("OPENLOOPPART", 12, FieldType.FLOAT).setBaseOffset(976); - public static final Field LUAOPENLOOPADD = Field.create("LUAOPENLOOPADD", 16, FieldType.FLOAT).setBaseOffset(976); - public static final Field BOOSTCONTROLLERCLOSEDLOOPPART = Field.create("BOOSTCONTROLLERCLOSEDLOOPPART", 20, FieldType.INT8).setScale(0.5).setBaseOffset(976); - public static final Field ALIGNMENTFILL_AT_21 = Field.create("ALIGNMENTFILL_AT_21", 21, FieldType.INT8).setScale(1.0).setBaseOffset(976); - public static final Field BOOSTCONTROLTARGET = Field.create("BOOSTCONTROLTARGET", 22, FieldType.INT16).setScale(0.03333333333333333).setBaseOffset(976); + public static final Field ISTPSINVALID = Field.create("ISTPSINVALID", 0, FieldType.BIT, 0).setBaseOffset(964); + public static final Field M_SHOULDRESETPID = Field.create("M_SHOULDRESETPID", 0, FieldType.BIT, 1).setBaseOffset(964); + public static final Field ISBELOWCLOSEDLOOPTHRESHOLD = Field.create("ISBELOWCLOSEDLOOPTHRESHOLD", 0, FieldType.BIT, 2).setBaseOffset(964); + public static final Field ISNOTCLOSEDLOOP = Field.create("ISNOTCLOSEDLOOP", 0, FieldType.BIT, 3).setBaseOffset(964); + public static final Field ISZERORPM = Field.create("ISZERORPM", 0, FieldType.BIT, 4).setBaseOffset(964); + public static final Field HASINITBOOST = Field.create("HASINITBOOST", 0, FieldType.BIT, 5).setBaseOffset(964); + public static final Field RPMTOOLOW = Field.create("RPMTOOLOW", 0, FieldType.BIT, 6).setBaseOffset(964); + public static final Field TPSTOOLOW = Field.create("TPSTOOLOW", 0, FieldType.BIT, 7).setBaseOffset(964); + public static final Field MAPTOOLOW = Field.create("MAPTOOLOW", 0, FieldType.BIT, 8).setBaseOffset(964); + public static final Field LUATARGETADD = Field.create("LUATARGETADD", 4, FieldType.INT16).setScale(0.5).setBaseOffset(964); + public static final Field BOOSTOUTPUT = Field.create("BOOSTOUTPUT", 6, FieldType.INT16).setScale(0.01).setBaseOffset(964); + public static final Field LUATARGETMULT = Field.create("LUATARGETMULT", 8, FieldType.FLOAT).setBaseOffset(964); + public static final Field OPENLOOPPART = Field.create("OPENLOOPPART", 12, FieldType.FLOAT).setBaseOffset(964); + public static final Field LUAOPENLOOPADD = Field.create("LUAOPENLOOPADD", 16, FieldType.FLOAT).setBaseOffset(964); + public static final Field BOOSTCONTROLLERCLOSEDLOOPPART = Field.create("BOOSTCONTROLLERCLOSEDLOOPPART", 20, FieldType.INT8).setScale(0.5).setBaseOffset(964); + public static final Field ALIGNMENTFILL_AT_21 = Field.create("ALIGNMENTFILL_AT_21", 21, FieldType.INT8).setScale(1.0).setBaseOffset(964); + public static final Field BOOSTCONTROLTARGET = Field.create("BOOSTCONTROLTARGET", 22, FieldType.INT16).setScale(0.03333333333333333).setBaseOffset(964); public static final Field[] VALUES = { ISTPSINVALID, M_SHOULDRESETPID, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/DcMotors.java b/java_console/models/src/main/java/com/rusefi/config/generated/DcMotors.java index 5b68b1c30f..0375f3e8d7 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/DcMotors.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/DcMotors.java @@ -155,10 +155,10 @@ public class DcMotors { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field DCOUTPUT0 = Field.create("DCOUTPUT0", 0, FieldType.FLOAT).setBaseOffset(1352); - public static final Field ISENABLED0_INT = Field.create("ISENABLED0_INT", 4, FieldType.INT8).setScale(1.0).setBaseOffset(1352); - public static final Field ALIGNMENTFILL_AT_5 = Field.create("ALIGNMENTFILL_AT_5", 5, FieldType.INT8).setScale(1.0).setBaseOffset(1352); - public static final Field ISENABLED0 = Field.create("ISENABLED0", 8, FieldType.BIT, 0).setBaseOffset(1352); + public static final Field DCOUTPUT0 = Field.create("DCOUTPUT0", 0, FieldType.FLOAT).setBaseOffset(1340); + public static final Field ISENABLED0_INT = Field.create("ISENABLED0_INT", 4, FieldType.INT8).setScale(1.0).setBaseOffset(1340); + public static final Field ALIGNMENTFILL_AT_5 = Field.create("ALIGNMENTFILL_AT_5", 5, FieldType.INT8).setScale(1.0).setBaseOffset(1340); + public static final Field ISENABLED0 = Field.create("ISENABLED0", 8, FieldType.BIT, 0).setBaseOffset(1340); public static final Field[] VALUES = { DCOUTPUT0, ISENABLED0_INT, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/ElectronicThrottle.java b/java_console/models/src/main/java/com/rusefi/config/generated/ElectronicThrottle.java index e6fd210f70..af98522d98 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/ElectronicThrottle.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/ElectronicThrottle.java @@ -155,23 +155,23 @@ public class ElectronicThrottle { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field IDLEPOSITION = Field.create("IDLEPOSITION", 0, FieldType.FLOAT).setBaseOffset(1288); - public static final Field TRIM = Field.create("TRIM", 4, FieldType.FLOAT).setBaseOffset(1288); - public static final Field LUAADJUSTMENT = Field.create("LUAADJUSTMENT", 8, FieldType.FLOAT).setBaseOffset(1288); - public static final Field M_WASTEGATEPOSITION = Field.create("M_WASTEGATEPOSITION", 12, FieldType.FLOAT).setBaseOffset(1288); - public static final Field ETBFEEDFORWARD = Field.create("ETBFEEDFORWARD", 16, FieldType.FLOAT).setBaseOffset(1288); - public static final Field ETBINTEGRALERROR = Field.create("ETBINTEGRALERROR", 20, FieldType.FLOAT).setBaseOffset(1288); - public static final Field ETBCURRENTTARGET = Field.create("ETBCURRENTTARGET", 24, FieldType.FLOAT).setBaseOffset(1288); - public static final Field ETBCURRENTADJUSTEDTARGET = Field.create("ETBCURRENTADJUSTEDTARGET", 28, FieldType.FLOAT).setBaseOffset(1288); - public static final Field ETBREVLIMITACTIVE = Field.create("ETBREVLIMITACTIVE", 32, FieldType.BIT, 0).setBaseOffset(1288); - public static final Field JAMDETECTED = Field.create("JAMDETECTED", 32, FieldType.BIT, 1).setBaseOffset(1288); - public static final Field ETBDUTYRATEOFCHANGE = Field.create("ETBDUTYRATEOFCHANGE", 36, FieldType.FLOAT).setBaseOffset(1288); - public static final Field ETBDUTYAVERAGE = Field.create("ETBDUTYAVERAGE", 40, FieldType.FLOAT).setBaseOffset(1288); - public static final Field ETBTPSERRORCOUNTER = Field.create("ETBTPSERRORCOUNTER", 44, FieldType.INT16).setScale(1.0).setBaseOffset(1288); - public static final Field ETBPPSERRORCOUNTER = Field.create("ETBPPSERRORCOUNTER", 46, FieldType.INT16).setScale(1.0).setBaseOffset(1288); - public static final Field ETBERRORCODE = Field.create("ETBERRORCODE", 48, FieldType.INT8).setScale(1.0).setBaseOffset(1288); - public static final Field ALIGNMENTFILL_AT_49 = Field.create("ALIGNMENTFILL_AT_49", 49, FieldType.INT8).setScale(1.0).setBaseOffset(1288); - public static final Field JAMTIMER = Field.create("JAMTIMER", 50, FieldType.INT16).setScale(0.01).setBaseOffset(1288); + public static final Field IDLEPOSITION = Field.create("IDLEPOSITION", 0, FieldType.FLOAT).setBaseOffset(1276); + public static final Field TRIM = Field.create("TRIM", 4, FieldType.FLOAT).setBaseOffset(1276); + public static final Field LUAADJUSTMENT = Field.create("LUAADJUSTMENT", 8, FieldType.FLOAT).setBaseOffset(1276); + public static final Field M_WASTEGATEPOSITION = Field.create("M_WASTEGATEPOSITION", 12, FieldType.FLOAT).setBaseOffset(1276); + public static final Field ETBFEEDFORWARD = Field.create("ETBFEEDFORWARD", 16, FieldType.FLOAT).setBaseOffset(1276); + public static final Field ETBINTEGRALERROR = Field.create("ETBINTEGRALERROR", 20, FieldType.FLOAT).setBaseOffset(1276); + public static final Field ETBCURRENTTARGET = Field.create("ETBCURRENTTARGET", 24, FieldType.FLOAT).setBaseOffset(1276); + public static final Field ETBCURRENTADJUSTEDTARGET = Field.create("ETBCURRENTADJUSTEDTARGET", 28, FieldType.FLOAT).setBaseOffset(1276); + public static final Field ETBREVLIMITACTIVE = Field.create("ETBREVLIMITACTIVE", 32, FieldType.BIT, 0).setBaseOffset(1276); + public static final Field JAMDETECTED = Field.create("JAMDETECTED", 32, FieldType.BIT, 1).setBaseOffset(1276); + public static final Field ETBDUTYRATEOFCHANGE = Field.create("ETBDUTYRATEOFCHANGE", 36, FieldType.FLOAT).setBaseOffset(1276); + public static final Field ETBDUTYAVERAGE = Field.create("ETBDUTYAVERAGE", 40, FieldType.FLOAT).setBaseOffset(1276); + public static final Field ETBTPSERRORCOUNTER = Field.create("ETBTPSERRORCOUNTER", 44, FieldType.INT16).setScale(1.0).setBaseOffset(1276); + public static final Field ETBPPSERRORCOUNTER = Field.create("ETBPPSERRORCOUNTER", 46, FieldType.INT16).setScale(1.0).setBaseOffset(1276); + public static final Field ETBERRORCODE = Field.create("ETBERRORCODE", 48, FieldType.INT8).setScale(1.0).setBaseOffset(1276); + public static final Field ALIGNMENTFILL_AT_49 = Field.create("ALIGNMENTFILL_AT_49", 49, FieldType.INT8).setScale(1.0).setBaseOffset(1276); + public static final Field JAMTIMER = Field.create("JAMTIMER", 50, FieldType.INT16).setScale(0.01).setBaseOffset(1276); public static final Field[] VALUES = { IDLEPOSITION, TRIM, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/EngineState.java b/java_console/models/src/main/java/com/rusefi/config/generated/EngineState.java index 98618fe595..874dd82495 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/EngineState.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/EngineState.java @@ -155,39 +155,39 @@ public class EngineState { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field LUA_FUELADD = Field.create("LUA_FUELADD", 0, FieldType.FLOAT).setBaseOffset(1024); - public static final Field LUA_FUELMULT = Field.create("LUA_FUELMULT", 4, FieldType.FLOAT).setBaseOffset(1024); - public static final Field LUA_CLUTCHUPSTATE = Field.create("LUA_CLUTCHUPSTATE", 8, FieldType.BIT, 0).setBaseOffset(1024); - public static final Field LUA_BRAKEPEDALSTATE = Field.create("LUA_BRAKEPEDALSTATE", 8, FieldType.BIT, 1).setBaseOffset(1024); - public static final Field LUA_ACREQUESTSTATE = Field.create("LUA_ACREQUESTSTATE", 8, FieldType.BIT, 2).setBaseOffset(1024); - public static final Field LUA_LUADISABLEETB = Field.create("LUA_LUADISABLEETB", 8, FieldType.BIT, 3).setBaseOffset(1024); - public static final Field LUA_LUAIGNCUT = Field.create("LUA_LUAIGNCUT", 8, FieldType.BIT, 4).setBaseOffset(1024); - public static final Field SD_TCHARGE = Field.create("SD_TCHARGE", 12, FieldType.INT16).setScale(0.01).setBaseOffset(1024); - public static final Field SD_ALIGNMENTFILL_AT_2 = Field.create("SD_ALIGNMENTFILL_AT_2", 14, FieldType.INT8).setScale(1.0).setBaseOffset(1024); - public static final Field SD_TCHARGEK = Field.create("SD_TCHARGEK", 16, FieldType.FLOAT).setBaseOffset(1024); - public static final Field CRANKINGFUEL_COOLANTTEMPERATURECOEFFICIENT = Field.create("CRANKINGFUEL_COOLANTTEMPERATURECOEFFICIENT", 20, FieldType.FLOAT).setBaseOffset(1024); - public static final Field CRANKINGFUEL_TPSCOEFFICIENT = Field.create("CRANKINGFUEL_TPSCOEFFICIENT", 24, FieldType.FLOAT).setBaseOffset(1024); - public static final Field CRANKINGFUEL_DURATIONCOEFFICIENT = Field.create("CRANKINGFUEL_DURATIONCOEFFICIENT", 28, FieldType.FLOAT).setBaseOffset(1024); - public static final Field CRANKINGFUEL_FUEL = Field.create("CRANKINGFUEL_FUEL", 32, FieldType.INT16).setScale(0.01).setBaseOffset(1024); - public static final Field CRANKINGFUEL_ALIGNMENTFILL_AT_14 = Field.create("CRANKINGFUEL_ALIGNMENTFILL_AT_14", 34, FieldType.INT8).setScale(1.0).setBaseOffset(1024); - public static final Field BAROCORRECTION = Field.create("BAROCORRECTION", 36, FieldType.FLOAT).setBaseOffset(1024); - public static final Field HELLENBOARDID = Field.create("HELLENBOARDID", 40, FieldType.INT16).setScale(1.0).setBaseOffset(1024); - public static final Field ALIGNMENTFILL_AT_42 = Field.create("ALIGNMENTFILL_AT_42", 42, FieldType.INT8).setScale(1.0).setBaseOffset(1024); - public static final Field CLUTCHUPSTATE = Field.create("CLUTCHUPSTATE", 44, FieldType.BIT, 0).setBaseOffset(1024); - public static final Field CLUTCHDOWNSTATE = Field.create("CLUTCHDOWNSTATE", 44, FieldType.BIT, 1).setBaseOffset(1024); - public static final Field BRAKEPEDALSTATE = Field.create("BRAKEPEDALSTATE", 44, FieldType.BIT, 2).setBaseOffset(1024); - public static final Field STARTSTOPSTATE = Field.create("STARTSTOPSTATE", 44, FieldType.BIT, 3).setBaseOffset(1024); - public static final Field STARTSTOPSTATETOGGLECOUNTER = Field.create("STARTSTOPSTATETOGGLECOUNTER", 48, FieldType.INT).setScale(1.0).setBaseOffset(1024); - public static final Field EGTVALUE1 = Field.create("EGTVALUE1", 52, FieldType.FLOAT).setBaseOffset(1024); - public static final Field EGTVALUE2 = Field.create("EGTVALUE2", 56, FieldType.FLOAT).setBaseOffset(1024); - public static final Field DESIREDRPMLIMIT = Field.create("DESIREDRPMLIMIT", 60, FieldType.INT16).setScale(1.0).setBaseOffset(1024); - public static final Field ALIGNMENTFILL_AT_62 = Field.create("ALIGNMENTFILL_AT_62", 62, FieldType.INT8).setScale(1.0).setBaseOffset(1024); - public static final Field FUELINJECTIONCOUNTER = Field.create("FUELINJECTIONCOUNTER", 64, FieldType.INT).setScale(1.0).setBaseOffset(1024); - public static final Field SPARKCOUNTER = Field.create("SPARKCOUNTER", 68, FieldType.INT).setScale(1.0).setBaseOffset(1024); - public static final Field FUELINGLOAD = Field.create("FUELINGLOAD", 72, FieldType.FLOAT).setBaseOffset(1024); - public static final Field IGNITIONLOAD = Field.create("IGNITIONLOAD", 76, FieldType.FLOAT).setBaseOffset(1024); - public static final Field VETABLEYAXIS = Field.create("VETABLEYAXIS", 80, FieldType.INT16).setScale(0.01).setBaseOffset(1024); - public static final Field ALIGNMENTFILL_AT_82 = Field.create("ALIGNMENTFILL_AT_82", 82, FieldType.INT8).setScale(1.0).setBaseOffset(1024); + public static final Field LUA_FUELADD = Field.create("LUA_FUELADD", 0, FieldType.FLOAT).setBaseOffset(1012); + public static final Field LUA_FUELMULT = Field.create("LUA_FUELMULT", 4, FieldType.FLOAT).setBaseOffset(1012); + public static final Field LUA_CLUTCHUPSTATE = Field.create("LUA_CLUTCHUPSTATE", 8, FieldType.BIT, 0).setBaseOffset(1012); + public static final Field LUA_BRAKEPEDALSTATE = Field.create("LUA_BRAKEPEDALSTATE", 8, FieldType.BIT, 1).setBaseOffset(1012); + public static final Field LUA_ACREQUESTSTATE = Field.create("LUA_ACREQUESTSTATE", 8, FieldType.BIT, 2).setBaseOffset(1012); + public static final Field LUA_LUADISABLEETB = Field.create("LUA_LUADISABLEETB", 8, FieldType.BIT, 3).setBaseOffset(1012); + public static final Field LUA_LUAIGNCUT = Field.create("LUA_LUAIGNCUT", 8, FieldType.BIT, 4).setBaseOffset(1012); + public static final Field SD_TCHARGE = Field.create("SD_TCHARGE", 12, FieldType.INT16).setScale(0.01).setBaseOffset(1012); + public static final Field SD_ALIGNMENTFILL_AT_2 = Field.create("SD_ALIGNMENTFILL_AT_2", 14, FieldType.INT8).setScale(1.0).setBaseOffset(1012); + public static final Field SD_TCHARGEK = Field.create("SD_TCHARGEK", 16, FieldType.FLOAT).setBaseOffset(1012); + public static final Field CRANKINGFUEL_COOLANTTEMPERATURECOEFFICIENT = Field.create("CRANKINGFUEL_COOLANTTEMPERATURECOEFFICIENT", 20, FieldType.FLOAT).setBaseOffset(1012); + public static final Field CRANKINGFUEL_TPSCOEFFICIENT = Field.create("CRANKINGFUEL_TPSCOEFFICIENT", 24, FieldType.FLOAT).setBaseOffset(1012); + public static final Field CRANKINGFUEL_DURATIONCOEFFICIENT = Field.create("CRANKINGFUEL_DURATIONCOEFFICIENT", 28, FieldType.FLOAT).setBaseOffset(1012); + public static final Field CRANKINGFUEL_FUEL = Field.create("CRANKINGFUEL_FUEL", 32, FieldType.INT16).setScale(0.01).setBaseOffset(1012); + public static final Field CRANKINGFUEL_ALIGNMENTFILL_AT_14 = Field.create("CRANKINGFUEL_ALIGNMENTFILL_AT_14", 34, FieldType.INT8).setScale(1.0).setBaseOffset(1012); + public static final Field BAROCORRECTION = Field.create("BAROCORRECTION", 36, FieldType.FLOAT).setBaseOffset(1012); + public static final Field HELLENBOARDID = Field.create("HELLENBOARDID", 40, FieldType.INT16).setScale(1.0).setBaseOffset(1012); + public static final Field ALIGNMENTFILL_AT_42 = Field.create("ALIGNMENTFILL_AT_42", 42, FieldType.INT8).setScale(1.0).setBaseOffset(1012); + public static final Field CLUTCHUPSTATE = Field.create("CLUTCHUPSTATE", 44, FieldType.BIT, 0).setBaseOffset(1012); + public static final Field CLUTCHDOWNSTATE = Field.create("CLUTCHDOWNSTATE", 44, FieldType.BIT, 1).setBaseOffset(1012); + public static final Field BRAKEPEDALSTATE = Field.create("BRAKEPEDALSTATE", 44, FieldType.BIT, 2).setBaseOffset(1012); + public static final Field STARTSTOPSTATE = Field.create("STARTSTOPSTATE", 44, FieldType.BIT, 3).setBaseOffset(1012); + public static final Field STARTSTOPSTATETOGGLECOUNTER = Field.create("STARTSTOPSTATETOGGLECOUNTER", 48, FieldType.INT).setScale(1.0).setBaseOffset(1012); + public static final Field EGTVALUE1 = Field.create("EGTVALUE1", 52, FieldType.FLOAT).setBaseOffset(1012); + public static final Field EGTVALUE2 = Field.create("EGTVALUE2", 56, FieldType.FLOAT).setBaseOffset(1012); + public static final Field DESIREDRPMLIMIT = Field.create("DESIREDRPMLIMIT", 60, FieldType.INT16).setScale(1.0).setBaseOffset(1012); + public static final Field ALIGNMENTFILL_AT_62 = Field.create("ALIGNMENTFILL_AT_62", 62, FieldType.INT8).setScale(1.0).setBaseOffset(1012); + public static final Field FUELINJECTIONCOUNTER = Field.create("FUELINJECTIONCOUNTER", 64, FieldType.INT).setScale(1.0).setBaseOffset(1012); + public static final Field SPARKCOUNTER = Field.create("SPARKCOUNTER", 68, FieldType.INT).setScale(1.0).setBaseOffset(1012); + public static final Field FUELINGLOAD = Field.create("FUELINGLOAD", 72, FieldType.FLOAT).setBaseOffset(1012); + public static final Field IGNITIONLOAD = Field.create("IGNITIONLOAD", 76, FieldType.FLOAT).setBaseOffset(1012); + public static final Field VETABLEYAXIS = Field.create("VETABLEYAXIS", 80, FieldType.INT16).setScale(0.01).setBaseOffset(1012); + public static final Field ALIGNMENTFILL_AT_82 = Field.create("ALIGNMENTFILL_AT_82", 82, FieldType.INT8).setScale(1.0).setBaseOffset(1012); public static final Field[] VALUES = { LUA_FUELADD, LUA_FUELMULT, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/FanControl.java b/java_console/models/src/main/java/com/rusefi/config/generated/FanControl.java index 729ecdf654..8ca7c06b31 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/FanControl.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/FanControl.java @@ -3,13 +3,13 @@ import com.rusefi.config.*; public class FanControl { - public static final Field CRANKING = Field.create("CRANKING", 0, FieldType.BIT, 0).setBaseOffset(1012); - public static final Field NOTRUNNING = Field.create("NOTRUNNING", 0, FieldType.BIT, 1).setBaseOffset(1012); - public static final Field DISABLEDWHILEENGINESTOPPED = Field.create("DISABLEDWHILEENGINESTOPPED", 0, FieldType.BIT, 2).setBaseOffset(1012); - public static final Field BROKENCLT = Field.create("BROKENCLT", 0, FieldType.BIT, 3).setBaseOffset(1012); - public static final Field ENABLEDFORAC = Field.create("ENABLEDFORAC", 0, FieldType.BIT, 4).setBaseOffset(1012); - public static final Field HOT = Field.create("HOT", 0, FieldType.BIT, 5).setBaseOffset(1012); - public static final Field COLD = Field.create("COLD", 0, FieldType.BIT, 6).setBaseOffset(1012); + public static final Field CRANKING = Field.create("CRANKING", 0, FieldType.BIT, 0).setBaseOffset(1000); + public static final Field NOTRUNNING = Field.create("NOTRUNNING", 0, FieldType.BIT, 1).setBaseOffset(1000); + public static final Field DISABLEDWHILEENGINESTOPPED = Field.create("DISABLEDWHILEENGINESTOPPED", 0, FieldType.BIT, 2).setBaseOffset(1000); + public static final Field BROKENCLT = Field.create("BROKENCLT", 0, FieldType.BIT, 3).setBaseOffset(1000); + public static final Field ENABLEDFORAC = Field.create("ENABLEDFORAC", 0, FieldType.BIT, 4).setBaseOffset(1000); + public static final Field HOT = Field.create("HOT", 0, FieldType.BIT, 5).setBaseOffset(1000); + public static final Field COLD = Field.create("COLD", 0, FieldType.BIT, 6).setBaseOffset(1000); public static final Field[] VALUES = { CRANKING, NOTRUNNING, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java b/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java index 790bb529aa..db70975fbc 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java @@ -905,7 +905,7 @@ public class Fields { public static final int PACK_MULT_TEMPERATURE = 100; public static final int PACK_MULT_VOLTAGE = 1000; public static final int PEDAL_TO_TPS_SIZE = 8; - public static final int persistent_config_s_size = 22852; + public static final int persistent_config_s_size = 22884; public static final int pid_s_size = 20; public static final int PidAutoTune_AutoTunerState_AUTOTUNER_OFF = 0; public static final int PidAutoTune_AutoTunerState_CONVERGED = 16; @@ -1015,7 +1015,7 @@ public class Fields { public static final int TOOTH_PACKET_SIZE = 2; public static final String TOP_DEAD_CENTER_MESSAGE = "r"; public static final int TORQUE_CURVE_SIZE = 6; - public static final int TOTAL_CONFIG_SIZE = 22852; + public static final int TOTAL_CONFIG_SIZE = 22884; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int TPS_TPS_ACCEL_CLT_CORR_TABLE = 4; public static final int TPS_TPS_ACCEL_TABLE = 8; @@ -1181,10 +1181,10 @@ public class Fields { public static final int TS_RESPONSE_UNDERRUN = 0x80; public static final int TS_RESPONSE_UNRECOGNIZED_COMMAND = 0x83; public static final char TS_SET_LOGGER_SWITCH = 'l'; - public static final String TS_SIGNATURE = "rusEFI (FOME) master.2023.06.11.f407-discovery.3178062656"; + public static final String TS_SIGNATURE = "rusEFI (FOME) master.2023.07.09.f407-discovery.4223705144"; public static final char TS_SINGLE_WRITE_COMMAND = 'W'; public static final char TS_TEST_COMMAND = 't'; - public static final int TS_TOTAL_OUTPUT_SIZE = 1372; + public static final int TS_TOTAL_OUTPUT_SIZE = 1376; public static final String TS_TRIGGER_SCOPE_CHANNEL_1_NAME = "Channel 1"; public static final String TS_TRIGGER_SCOPE_CHANNEL_2_NAME = "Channel 2"; public static final int TS_TRIGGER_SCOPE_DISABLE = 5; @@ -1257,6 +1257,7 @@ public class Fields { public static final Field INJECTOR_BATTLAGCORR = Field.create("INJECTOR_BATTLAGCORR", 72, FieldType.INT16).setScale(0.01).setBaseOffset(0); public static final Field ISFORCEDINDUCTION = Field.create("ISFORCEDINDUCTION", 88, FieldType.BIT, 0).setBaseOffset(0); public static final Field USEFORDREDUNDANTTPS = Field.create("USEFORDREDUNDANTTPS", 88, FieldType.BIT, 1).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONENABLE = Field.create("LAMBDAPROTECTIONENABLE", 88, FieldType.BIT, 2).setBaseOffset(0); public static final Field OVERRIDETRIGGERGAPS = Field.create("OVERRIDETRIGGERGAPS", 88, FieldType.BIT, 3).setBaseOffset(0); public static final Field ENABLEFAN1WITHAC = Field.create("ENABLEFAN1WITHAC", 88, FieldType.BIT, 4).setBaseOffset(0); public static final Field ENABLEFAN2WITHAC = Field.create("ENABLEFAN2WITHAC", 88, FieldType.BIT, 5).setBaseOffset(0); @@ -1485,7 +1486,8 @@ public class Fields { public static final Field TRIGGERSIMULATORPINS1 = Field.create("TRIGGERSIMULATORPINS1", 636, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0); public static final Field TRIGGERSIMULATORPINS2 = Field.create("TRIGGERSIMULATORPINS2", 638, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0); public static final Field FORDINJECTORSMALLPULSESLOPE = Field.create("FORDINJECTORSMALLPULSESLOPE", 640, FieldType.INT16).setScale(0.001).setBaseOffset(0); - public static final Field UNUSED638 = Field.create("UNUSED638", 642, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONMINRPM = Field.create("LAMBDAPROTECTIONMINRPM", 642, FieldType.INT8).setScale(100.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONMINLOAD = Field.create("LAMBDAPROTECTIONMINLOAD", 643, FieldType.INT8).setScale(10.0).setBaseOffset(0); public static final Field IS_ENABLED_SPI_1 = Field.create("IS_ENABLED_SPI_1", 644, FieldType.BIT, 0).setBaseOffset(0); public static final Field IS_ENABLED_SPI_2 = Field.create("IS_ENABLED_SPI_2", 644, FieldType.BIT, 1).setBaseOffset(0); public static final Field IS_ENABLED_SPI_3 = Field.create("IS_ENABLED_SPI_3", 644, FieldType.BIT, 2).setBaseOffset(0); @@ -1557,7 +1559,9 @@ public class Fields { public static final Field TPS1SECONDARYMAX = Field.create("TPS1SECONDARYMAX", 742, FieldType.INT16).setScale(1.0).setBaseOffset(0); public static final Field ANTILAGRPMTRESHOLD = Field.create("ANTILAGRPMTRESHOLD", 744, FieldType.INT16).setScale(1.0).setBaseOffset(0); public static final Field STARTCRANKINGDURATION = Field.create("STARTCRANKINGDURATION", 746, FieldType.INT16).setScale(1.0).setBaseOffset(0); - public static final Field UNUSED748 = Field.create("UNUSED748", 748, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONMINTPS = Field.create("LAMBDAPROTECTIONMINTPS", 748, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONTIMEOUT = Field.create("LAMBDAPROTECTIONTIMEOUT", 749, FieldType.INT8).setScale(0.1).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONRESTORERPM = Field.create("LAMBDAPROTECTIONRESTORERPM", 750, FieldType.INT8).setScale(100.0).setBaseOffset(0); public static final Field ACRELAYPINMODE = Field.create("ACRELAYPINMODE", 751, FieldType.INT8, pin_output_mode_e).setScale(1.0).setBaseOffset(0); public static final Field ACRELAYPIN = Field.create("ACRELAYPIN", 752, FieldType.INT16, output_pin_e).setScale(1.0).setBaseOffset(0); public static final String[] maf_sensor_type_e = {"v0", "v1", "v2", "v3"}; @@ -1762,7 +1766,6 @@ public class Fields { public static final Field USESEPARATEVEFORIDLE = Field.create("USESEPARATEVEFORIDLE", 1200, FieldType.BIT, 9).setBaseOffset(0); public static final Field VERBOSETRIGGERSYNCHDETAILS = Field.create("VERBOSETRIGGERSYNCHDETAILS", 1200, FieldType.BIT, 10).setBaseOffset(0); public static final Field ISMANUALSPINNINGMODE = Field.create("ISMANUALSPINNINGMODE", 1200, FieldType.BIT, 11).setBaseOffset(0); - public static final Field TWOWIREBATCHINJECTION = Field.create("TWOWIREBATCHINJECTION", 1200, FieldType.BIT, 12).setBaseOffset(0); public static final Field NEVERINSTANTRPM = Field.create("NEVERINSTANTRPM", 1200, FieldType.BIT, 13).setBaseOffset(0); public static final Field USEFIXEDBAROCORRFROMMAP = Field.create("USEFIXEDBAROCORRFROMMAP", 1200, FieldType.BIT, 15).setBaseOffset(0); public static final Field USESEPARATEADVANCEFORCRANKING = Field.create("USESEPARATEADVANCEFORCRANKING", 1200, FieldType.BIT, 16).setBaseOffset(0); @@ -1879,7 +1882,8 @@ public class Fields { public static final Field CAN2OPENBLT = Field.create("CAN2OPENBLT", 1436, FieldType.BIT, 2).setBaseOffset(0); public static final Field INJECTORFLOWASMASSFLOW = Field.create("INJECTORFLOWASMASSFLOW", 1436, FieldType.BIT, 3).setBaseOffset(0); public static final Field BENCHTESTOFFTIME = Field.create("BENCHTESTOFFTIME", 1440, FieldType.INT8).setScale(5.0).setBaseOffset(0); - public static final Field UNUSED1445 = Field.create("UNUSED1445", 1441, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONRESTORETPS = Field.create("LAMBDAPROTECTIONRESTORETPS", 1441, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONRESTORELOAD = Field.create("LAMBDAPROTECTIONRESTORELOAD", 1442, FieldType.INT8).setScale(10.0).setBaseOffset(0); public static final Field LAUNCHACTIVATEPINMODE = Field.create("LAUNCHACTIVATEPINMODE", 1443, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0); public static final Field CAN2TXPIN = Field.create("CAN2TXPIN", 1444, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0); public static final Field CAN2RXPIN = Field.create("CAN2RXPIN", 1446, FieldType.INT16, Gpio).setScale(1.0).setBaseOffset(0); @@ -2606,6 +2610,9 @@ public class Fields { public static final Field BOOSTCLOSEDLOOPBLENDS2_BLENDBINS = Field.create("BOOSTCLOSEDLOOPBLENDS2_BLENDBINS", 22826, FieldType.INT16).setScale(0.1).setBaseOffset(0); public static final Field BOOSTCLOSEDLOOPBLENDS2_BLENDVALUES = Field.create("BOOSTCLOSEDLOOPBLENDS2_BLENDVALUES", 22842, FieldType.INT8).setScale(0.5).setBaseOffset(0); public static final Field BOOSTCLOSEDLOOPBLENDS2_ALIGNMENTFILL_AT_186 = Field.create("BOOSTCLOSEDLOOPBLENDS2_ALIGNMENTFILL_AT_186", 22850, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAMAXDEVIATIONTABLE = Field.create("LAMBDAMAXDEVIATIONTABLE", 22852, FieldType.INT8).setScale(0.01).setBaseOffset(0); + public static final Field LAMBDAMAXDEVIATIONLOADBINS = Field.create("LAMBDAMAXDEVIATIONLOADBINS", 22868, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAMAXDEVIATIONRPMBINS = Field.create("LAMBDAMAXDEVIATIONRPMBINS", 22876, FieldType.INT16).setScale(1.0).setBaseOffset(0); public static final Field[] VALUES = { ENGINETYPE, SENSORSNIFFERRPMTHRESHOLD, @@ -2626,6 +2633,7 @@ public class Fields { INJECTOR_BATTLAGCORR, ISFORCEDINDUCTION, USEFORDREDUNDANTTPS, + LAMBDAPROTECTIONENABLE, OVERRIDETRIGGERGAPS, ENABLEFAN1WITHAC, ENABLEFAN2WITHAC, @@ -2844,7 +2852,8 @@ public class Fields { TRIGGERSIMULATORPINS1, TRIGGERSIMULATORPINS2, FORDINJECTORSMALLPULSESLOPE, - UNUSED638, + LAMBDAPROTECTIONMINRPM, + LAMBDAPROTECTIONMINLOAD, IS_ENABLED_SPI_1, IS_ENABLED_SPI_2, IS_ENABLED_SPI_3, @@ -2916,7 +2925,9 @@ public class Fields { TPS1SECONDARYMAX, ANTILAGRPMTRESHOLD, STARTCRANKINGDURATION, - UNUSED748, + LAMBDAPROTECTIONMINTPS, + LAMBDAPROTECTIONTIMEOUT, + LAMBDAPROTECTIONRESTORERPM, ACRELAYPINMODE, ACRELAYPIN, MAFSENSORTYPE, @@ -3117,7 +3128,6 @@ public class Fields { USESEPARATEVEFORIDLE, VERBOSETRIGGERSYNCHDETAILS, ISMANUALSPINNINGMODE, - TWOWIREBATCHINJECTION, NEVERINSTANTRPM, USEFIXEDBAROCORRFROMMAP, USESEPARATEADVANCEFORCRANKING, @@ -3231,7 +3241,8 @@ public class Fields { CAN2OPENBLT, INJECTORFLOWASMASSFLOW, BENCHTESTOFFTIME, - UNUSED1445, + LAMBDAPROTECTIONRESTORETPS, + LAMBDAPROTECTIONRESTORELOAD, LAUNCHACTIVATEPINMODE, CAN2TXPIN, CAN2RXPIN, @@ -3950,5 +3961,8 @@ public class Fields { BOOSTCLOSEDLOOPBLENDS2_BLENDBINS, BOOSTCLOSEDLOOPBLENDS2_BLENDVALUES, BOOSTCLOSEDLOOPBLENDS2_ALIGNMENTFILL_AT_186, + LAMBDAMAXDEVIATIONTABLE, + LAMBDAMAXDEVIATIONLOADBINS, + LAMBDAMAXDEVIATIONRPMBINS, }; } diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/FuelPump.java b/java_console/models/src/main/java/com/rusefi/config/generated/FuelPump.java index 3aecbd5d0e..1ff00d0b37 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/FuelPump.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/FuelPump.java @@ -3,10 +3,10 @@ import com.rusefi.config.*; public class FuelPump { - public static final Field ISPRIME = Field.create("ISPRIME", 0, FieldType.BIT, 0).setBaseOffset(1016); - public static final Field ENGINETURNEDRECENTLY = Field.create("ENGINETURNEDRECENTLY", 0, FieldType.BIT, 1).setBaseOffset(1016); - public static final Field ISFUELPUMPON = Field.create("ISFUELPUMPON", 0, FieldType.BIT, 2).setBaseOffset(1016); - public static final Field IGNITIONON = Field.create("IGNITIONON", 0, FieldType.BIT, 3).setBaseOffset(1016); + public static final Field ISPRIME = Field.create("ISPRIME", 0, FieldType.BIT, 0).setBaseOffset(1004); + public static final Field ENGINETURNEDRECENTLY = Field.create("ENGINETURNEDRECENTLY", 0, FieldType.BIT, 1).setBaseOffset(1004); + public static final Field ISFUELPUMPON = Field.create("ISFUELPUMPON", 0, FieldType.BIT, 2).setBaseOffset(1004); + public static final Field IGNITIONON = Field.create("IGNITIONON", 0, FieldType.BIT, 3).setBaseOffset(1004); public static final Field[] VALUES = { ISPRIME, ENGINETURNEDRECENTLY, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/HighPressureFuelPump.java b/java_console/models/src/main/java/com/rusefi/config/generated/HighPressureFuelPump.java index 58e9ac575a..90d3914598 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/HighPressureFuelPump.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/HighPressureFuelPump.java @@ -3,14 +3,14 @@ import com.rusefi.config.*; public class HighPressureFuelPump { - public static final Field M_REQUESTED_PUMP = Field.create("M_REQUESTED_PUMP", 0, FieldType.FLOAT).setBaseOffset(920); - public static final Field FUEL_REQUESTED_PERCENT = Field.create("FUEL_REQUESTED_PERCENT", 4, FieldType.FLOAT).setBaseOffset(920); - public static final Field FUEL_REQUESTED_PERCENT_PI = Field.create("FUEL_REQUESTED_PERCENT_PI", 8, FieldType.FLOAT).setBaseOffset(920); - public static final Field NOVALVE = Field.create("NOVALVE", 12, FieldType.BIT, 0).setBaseOffset(920); - public static final Field ANGLEABOVEMIN = Field.create("ANGLEABOVEMIN", 12, FieldType.BIT, 1).setBaseOffset(920); - public static final Field ISHPFPINACTIVE = Field.create("ISHPFPINACTIVE", 12, FieldType.BIT, 2).setBaseOffset(920); - public static final Field NEXTLOBE = Field.create("NEXTLOBE", 16, FieldType.FLOAT).setBaseOffset(920); - public static final Field DI_NEXTSTART = Field.create("DI_NEXTSTART", 20, FieldType.FLOAT).setBaseOffset(920); + public static final Field M_REQUESTED_PUMP = Field.create("M_REQUESTED_PUMP", 0, FieldType.FLOAT).setBaseOffset(908); + public static final Field FUEL_REQUESTED_PERCENT = Field.create("FUEL_REQUESTED_PERCENT", 4, FieldType.FLOAT).setBaseOffset(908); + public static final Field FUEL_REQUESTED_PERCENT_PI = Field.create("FUEL_REQUESTED_PERCENT_PI", 8, FieldType.FLOAT).setBaseOffset(908); + public static final Field NOVALVE = Field.create("NOVALVE", 12, FieldType.BIT, 0).setBaseOffset(908); + public static final Field ANGLEABOVEMIN = Field.create("ANGLEABOVEMIN", 12, FieldType.BIT, 1).setBaseOffset(908); + public static final Field ISHPFPINACTIVE = Field.create("ISHPFPINACTIVE", 12, FieldType.BIT, 2).setBaseOffset(908); + public static final Field NEXTLOBE = Field.create("NEXTLOBE", 16, FieldType.FLOAT).setBaseOffset(908); + public static final Field DI_NEXTSTART = Field.create("DI_NEXTSTART", 20, FieldType.FLOAT).setBaseOffset(908); public static final Field[] VALUES = { M_REQUESTED_PUMP, FUEL_REQUESTED_PERCENT, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/IdleState.java b/java_console/models/src/main/java/com/rusefi/config/generated/IdleState.java index 1a0c4331a5..8c8c76061f 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/IdleState.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/IdleState.java @@ -155,33 +155,33 @@ public class IdleState { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field IDLESTATE = Field.create("IDLESTATE", 0, FieldType.INT).setScale(1.0).setBaseOffset(1240); - public static final Field CURRENTIDLEPOSITION = Field.create("CURRENTIDLEPOSITION", 4, FieldType.FLOAT).setBaseOffset(1240); - public static final Field BASEIDLEPOSITION = Field.create("BASEIDLEPOSITION", 8, FieldType.FLOAT).setBaseOffset(1240); - public static final Field IDLECLOSEDLOOP = Field.create("IDLECLOSEDLOOP", 12, FieldType.FLOAT).setBaseOffset(1240); - public static final Field IACBYTPSTAPER = Field.create("IACBYTPSTAPER", 16, FieldType.FLOAT).setBaseOffset(1240); - public static final Field THROTTLEPEDALUPSTATE = Field.create("THROTTLEPEDALUPSTATE", 20, FieldType.INT).setScale(1.0).setBaseOffset(1240); - public static final Field MIGHTRESETPID = Field.create("MIGHTRESETPID", 24, FieldType.BIT, 0).setBaseOffset(1240); - public static final Field SHOULDRESETPID = Field.create("SHOULDRESETPID", 24, FieldType.BIT, 1).setBaseOffset(1240); - public static final Field WASRESETPID = Field.create("WASRESETPID", 24, FieldType.BIT, 2).setBaseOffset(1240); - public static final Field MUSTRESETPID = Field.create("MUSTRESETPID", 24, FieldType.BIT, 3).setBaseOffset(1240); - public static final Field ISCRANKING = Field.create("ISCRANKING", 24, FieldType.BIT, 4).setBaseOffset(1240); - public static final Field ISIACTABLEFORCOASTING = Field.create("ISIACTABLEFORCOASTING", 24, FieldType.BIT, 5).setBaseOffset(1240); - public static final Field NOTIDLING = Field.create("NOTIDLING", 24, FieldType.BIT, 6).setBaseOffset(1240); - public static final Field NEEDRESET = Field.create("NEEDRESET", 24, FieldType.BIT, 7).setBaseOffset(1240); - public static final Field ISINDEADZONE = Field.create("ISINDEADZONE", 24, FieldType.BIT, 8).setBaseOffset(1240); - public static final Field ISBLIPPING = Field.create("ISBLIPPING", 24, FieldType.BIT, 9).setBaseOffset(1240); - public static final Field LOOKSLIKERUNNING = Field.create("LOOKSLIKERUNNING", 24, FieldType.BIT, 10).setBaseOffset(1240); - public static final Field LOOKSLIKECOASTING = Field.create("LOOKSLIKECOASTING", 24, FieldType.BIT, 11).setBaseOffset(1240); - public static final Field LOOKSLIKECRANKTOIDLE = Field.create("LOOKSLIKECRANKTOIDLE", 24, FieldType.BIT, 12).setBaseOffset(1240); - public static final Field ISVERBOSEIAC = Field.create("ISVERBOSEIAC", 24, FieldType.BIT, 13).setBaseOffset(1240); - public static final Field ISIDLECOASTING = Field.create("ISIDLECOASTING", 24, FieldType.BIT, 14).setBaseOffset(1240); - public static final Field ISIDLECLOSEDLOOP = Field.create("ISIDLECLOSEDLOOP", 24, FieldType.BIT, 15).setBaseOffset(1240); - public static final Field IDLETARGET = Field.create("IDLETARGET", 28, FieldType.INT).setScale(1.0).setBaseOffset(1240); - public static final Field TARGETRPMBYCLT = Field.create("TARGETRPMBYCLT", 32, FieldType.INT).setScale(1.0).setBaseOffset(1240); - public static final Field TARGETRPMACBUMP = Field.create("TARGETRPMACBUMP", 36, FieldType.INT).setScale(1.0).setBaseOffset(1240); - public static final Field IACBYRPMTAPER = Field.create("IACBYRPMTAPER", 40, FieldType.FLOAT).setBaseOffset(1240); - public static final Field LUAADD = Field.create("LUAADD", 44, FieldType.FLOAT).setBaseOffset(1240); + public static final Field IDLESTATE = Field.create("IDLESTATE", 0, FieldType.INT).setScale(1.0).setBaseOffset(1228); + public static final Field CURRENTIDLEPOSITION = Field.create("CURRENTIDLEPOSITION", 4, FieldType.FLOAT).setBaseOffset(1228); + public static final Field BASEIDLEPOSITION = Field.create("BASEIDLEPOSITION", 8, FieldType.FLOAT).setBaseOffset(1228); + public static final Field IDLECLOSEDLOOP = Field.create("IDLECLOSEDLOOP", 12, FieldType.FLOAT).setBaseOffset(1228); + public static final Field IACBYTPSTAPER = Field.create("IACBYTPSTAPER", 16, FieldType.FLOAT).setBaseOffset(1228); + public static final Field THROTTLEPEDALUPSTATE = Field.create("THROTTLEPEDALUPSTATE", 20, FieldType.INT).setScale(1.0).setBaseOffset(1228); + public static final Field MIGHTRESETPID = Field.create("MIGHTRESETPID", 24, FieldType.BIT, 0).setBaseOffset(1228); + public static final Field SHOULDRESETPID = Field.create("SHOULDRESETPID", 24, FieldType.BIT, 1).setBaseOffset(1228); + public static final Field WASRESETPID = Field.create("WASRESETPID", 24, FieldType.BIT, 2).setBaseOffset(1228); + public static final Field MUSTRESETPID = Field.create("MUSTRESETPID", 24, FieldType.BIT, 3).setBaseOffset(1228); + public static final Field ISCRANKING = Field.create("ISCRANKING", 24, FieldType.BIT, 4).setBaseOffset(1228); + public static final Field ISIACTABLEFORCOASTING = Field.create("ISIACTABLEFORCOASTING", 24, FieldType.BIT, 5).setBaseOffset(1228); + public static final Field NOTIDLING = Field.create("NOTIDLING", 24, FieldType.BIT, 6).setBaseOffset(1228); + public static final Field NEEDRESET = Field.create("NEEDRESET", 24, FieldType.BIT, 7).setBaseOffset(1228); + public static final Field ISINDEADZONE = Field.create("ISINDEADZONE", 24, FieldType.BIT, 8).setBaseOffset(1228); + public static final Field ISBLIPPING = Field.create("ISBLIPPING", 24, FieldType.BIT, 9).setBaseOffset(1228); + public static final Field LOOKSLIKERUNNING = Field.create("LOOKSLIKERUNNING", 24, FieldType.BIT, 10).setBaseOffset(1228); + public static final Field LOOKSLIKECOASTING = Field.create("LOOKSLIKECOASTING", 24, FieldType.BIT, 11).setBaseOffset(1228); + public static final Field LOOKSLIKECRANKTOIDLE = Field.create("LOOKSLIKECRANKTOIDLE", 24, FieldType.BIT, 12).setBaseOffset(1228); + public static final Field ISVERBOSEIAC = Field.create("ISVERBOSEIAC", 24, FieldType.BIT, 13).setBaseOffset(1228); + public static final Field ISIDLECOASTING = Field.create("ISIDLECOASTING", 24, FieldType.BIT, 14).setBaseOffset(1228); + public static final Field ISIDLECLOSEDLOOP = Field.create("ISIDLECLOSEDLOOP", 24, FieldType.BIT, 15).setBaseOffset(1228); + public static final Field IDLETARGET = Field.create("IDLETARGET", 28, FieldType.INT).setScale(1.0).setBaseOffset(1228); + public static final Field TARGETRPMBYCLT = Field.create("TARGETRPMBYCLT", 32, FieldType.INT).setScale(1.0).setBaseOffset(1228); + public static final Field TARGETRPMACBUMP = Field.create("TARGETRPMACBUMP", 36, FieldType.INT).setScale(1.0).setBaseOffset(1228); + public static final Field IACBYRPMTAPER = Field.create("IACBYRPMTAPER", 40, FieldType.FLOAT).setBaseOffset(1228); + public static final Field LUAADD = Field.create("LUAADD", 44, FieldType.FLOAT).setBaseOffset(1228); public static final Field[] VALUES = { IDLESTATE, CURRENTIDLEPOSITION, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/InjectorModel.java b/java_console/models/src/main/java/com/rusefi/config/generated/InjectorModel.java index d9cae7b951..fdd7df3dd8 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/InjectorModel.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/InjectorModel.java @@ -3,9 +3,161 @@ import com.rusefi.config.*; public class InjectorModel { - public static final Field M_DEADTIME = Field.create("M_DEADTIME", 0, FieldType.FLOAT).setBaseOffset(944); - public static final Field PRESSUREDELTA = Field.create("PRESSUREDELTA", 4, FieldType.FLOAT).setBaseOffset(944); - public static final Field PRESSURERATIO = Field.create("PRESSURERATIO", 8, FieldType.FLOAT).setBaseOffset(944); + public static final int BANKS_COUNT = 2; + public static final int BOOST_BLEND_COUNT = 2; + public static final int CAM_INPUTS_COUNT = 4; + public static final int CAMS_PER_BANK = 2; + public static final int EGT_CHANNEL_COUNT = 8; + public static final String GAUGE_CATEGORY_BOOST_CONTROL = "Boost Control"; + public static final String GAUGE_CATEGORY_ETB = "ETB more"; + public static final String GAUGE_CATEGORY_FUEL_MATH = "Fuel: math"; + public static final String GAUGE_CATEGORY_TIMING = "Timing"; + public static final String GAUGE_COIL_DWELL_TIME = "Ign: Dwell"; + public static final String GAUGE_NAME_ACCEL_ROLL = "Acceleration: Roll"; + public static final String GAUGE_NAME_ACCEL_X = "Acceleration: X"; + public static final String GAUGE_NAME_ACCEL_Y = "Acceleration: Y"; + public static final String GAUGE_NAME_ACCEL_YAW = "Acceleration: Yaw"; + public static final String GAUGE_NAME_ACCEL_Z = "Acceleration: Z"; + public static final String GAUGE_NAME_AFR = "Air/Fuel Ratio"; + public static final String GAUGE_NAME_AFR2 = "Air/Fuel Ratio 2"; + public static final String GAUGE_NAME_AIR_FLOW_ESTIMATE = "Air: Flow estimate"; + public static final String GAUGE_NAME_AIR_FLOW_MEASURED = "MAF"; + public static final String GAUGE_NAME_AIR_FLOW_MEASURED_2 = "MAF #2"; + public static final String GAUGE_NAME_AIR_MASS = "Air: Cylinder airmass"; + public static final String GAUGE_NAME_AUX_LINEAR_1 = "Aux linear #1"; + public static final String GAUGE_NAME_AUX_LINEAR_2 = "Aux linear #2"; + public static final String GAUGE_NAME_AUX_TEMP1 = "Aux temp 1"; + public static final String GAUGE_NAME_AUX_TEMP2 = "Aux temp 2"; + public static final String GAUGE_NAME_BARO_PRESSURE = "Barometric pressure"; + public static final String GAUGE_NAME_BOOST_CLOSED_LOOP = "Boost: Closed loop"; + public static final String GAUGE_NAME_BOOST_OPEN_LOOP = "Boost: Open loop"; + public static final String GAUGE_NAME_BOOST_OUTPUT = "Boost: Output"; + public static final String GAUGE_NAME_BOOST_TARGET = "Boost: Target"; + public static final String GAUGE_NAME_CLT = "CLT"; + public static final String GAUGE_NAME_CURRENT_GEAR = "Current Gear"; + public static final String GAUGE_NAME_DEBUG_F1 = "debug f1"; + public static final String GAUGE_NAME_DEBUG_F2 = "debug f2: iTerm"; + public static final String GAUGE_NAME_DEBUG_F3 = "debug f3: prevError"; + public static final String GAUGE_NAME_DEBUG_F4 = "debug f4: iParam"; + public static final String GAUGE_NAME_DEBUG_F5 = "debug f5: dParam"; + public static final String GAUGE_NAME_DEBUG_F6 = "debug f6: dTerm"; + public static final String GAUGE_NAME_DEBUG_F7 = "debug f7"; + public static final String GAUGE_NAME_DEBUG_I1 = "debug i1: pParam"; + public static final String GAUGE_NAME_DEBUG_I2 = "debug i2: offset"; + public static final String GAUGE_NAME_DEBUG_I3 = "debug i3"; + public static final String GAUGE_NAME_DEBUG_I4 = "debug i4"; + public static final String GAUGE_NAME_DEBUG_I5 = "debug i5"; + public static final String GAUGE_NAME_DESIRED_GEAR = "TCU: Desired Gear"; + public static final String GAUGE_NAME_DETECTED_GEAR = "Detected Gear"; + public static final String GAUGE_NAME_DWELL_DUTY = "Ign: Coil duty cycle"; + public static final String GAUGE_NAME_ECU_TEMPERATURE = "ECU temperature"; + public static final String GAUGE_NAME_ENGINE_CRC16 = "Engine CRC16"; + public static final String GAUGE_NAME_ETB_DUTY = "ETB: Duty"; + public static final String GAUGE_NAME_ETB_ERROR = "ETB: position error"; + public static final String GAUGE_NAME_ETB_TARGET = "ETB: position target"; + public static final String GAUGE_NAME_FLEX = "Flex Ethanol %"; + public static final String GAUGE_NAME_FUEL_BARO_CORR = "Fuel: Barometric pressure mult"; + public static final String GAUGE_NAME_FUEL_BASE = "Fuel: base cycle mass"; + public static final String GAUGE_NAME_FUEL_CHARGE_TEMP = "Fuel: Estimated charge temperature"; + public static final String GAUGE_NAME_FUEL_CLT_CORR = "Fuel: CLT correction"; + public static final String GAUGE_NAME_FUEL_CONSUMPTION = "Fuel: Total consumed"; + public static final String GAUGE_NAME_FUEL_CRANKING = "Fuel: cranking"; + public static final String GAUGE_NAME_FUEL_FLOW = "Fuel: Flow rate"; + public static final String GAUGE_NAME_FUEL_IAT_CORR = "Fuel: IAT correction"; + public static final String GAUGE_NAME_FUEL_INJ_DUTY = "Fuel: injector duty cycle"; + public static final String GAUGE_NAME_FUEL_INJECTION_TIMING = "Fuel: Injection timing SOI"; + public static final String GAUGE_NAME_FUEL_LAST_INJECTION = "Fuel: Last inj pulse width"; + public static final String GAUGE_NAME_FUEL_LEVEL = "Fuel level"; + public static final String GAUGE_NAME_FUEL_LOAD = "Fuel: Load"; + public static final String GAUGE_NAME_FUEL_PRESSURE_HIGH = "Fuel pressure (high)"; + public static final String GAUGE_NAME_FUEL_PRESSURE_HIGH_UNITS = "bar"; + public static final String GAUGE_NAME_FUEL_PRESSURE_LOW = "Fuel pressure (low)"; + public static final String GAUGE_NAME_FUEL_PRESSURE_LOW_UNITS = "kPa"; + public static final String GAUGE_NAME_FUEL_RUNNING = "Fuel: running"; + public static final String GAUGE_NAME_FUEL_TPS_EXTRA = "Fuel: TPS AE add fuel ms"; + public static final String GAUGE_NAME_FUEL_TRIM = "Fuel: fuel trim"; + public static final String GAUGE_NAME_FUEL_TRIM_2 = "Fuel: fuel trim 2"; + public static final String GAUGE_NAME_FUEL_VE = "Fuel: VE"; + public static final String GAUGE_NAME_FUEL_WALL_AMOUNT = "Fuel: wall amount"; + public static final String GAUGE_NAME_FUEL_WALL_CORRECTION = "Fuel: wall correction"; + public static final String GAUGE_NAME_FW_VERSION = "ECU Software Version"; + public static final String GAUGE_NAME_GEAR_RATIO = "Gearbox Ratio"; + public static final String GAUGE_NAME_IAC = "Idle: Position"; + public static final String GAUGE_NAME_IAT = "IAT"; + public static final String GAUGE_NAME_IDLE_POSITION = "Idle: Position sensor"; + public static final String GAUGE_NAME_IGNITION_LOAD = "Ign: Load"; + public static final String GAUGE_NAME_IGNITION_MODE = "Ign: Mode"; + public static final String GAUGE_NAME_INJECTION_MODE = "Fuel: Injection mode"; + public static final String GAUGE_NAME_INJECTOR_LAG = "Fuel: injector lag"; + public static final String GAUGE_NAME_ISS = "TCU: Input Shaft Speed"; + public static final String GAUGE_NAME_KNOCK_COUNTER = "Knock: Count"; + public static final String GAUGE_NAME_KNOCK_LEVEL = "Knock: Current level"; + public static final String GAUGE_NAME_KNOCK_RETARD = "Knock: Retard"; + public static final String GAUGE_NAME_LAMBDA = "Lambda"; + public static final String GAUGE_NAME_LAMBDA2 = "Lambda 2"; + public static final String GAUGE_NAME_LAST_ERROR = "Last error"; + public static final String GAUGE_NAME_MAF = "MAF"; + public static final String GAUGE_NAME_MAP = "MAP"; + public static final String GAUGE_NAME_OIL_PRESSURE = "Oil Pressure"; + public static final String GAUGE_NAME_RAW_FUEL_PRESSURE_HIGH = "Fuel pressure raw (high)"; + public static final String GAUGE_NAME_RAW_FUEL_PRESSURE_LOW = "Fuel pressure raw (low)"; + public static final String GAUGE_NAME_RPM = "RPM"; + public static final String GAUGE_NAME_TARGET_AFR = "Fuel: target AFR"; + public static final String GAUGE_NAME_TARGET_LAMBDA = "Fuel: target lambda"; + public static final String GAUGE_NAME_TC_RATIO = "TCU: Torque Converter Ratio"; + public static final String GAUGE_NAME_TCHARGE = "Air: SD tCharge"; + public static final String GAUGE_NAME_THROTTLE_PEDAL = "Throttle pedal position"; + public static final String GAUGE_NAME_TIME = "Time"; + public static final String GAUGE_NAME_TIMING_ADVANCE = "Ign: Timing Base"; + public static final String GAUGE_NAME_TPS = "TPS"; + public static final String GAUGE_NAME_TPS2 = "TPS2"; + public static final String GAUGE_NAME_TRG_ERR = "Trigger Error Counter"; + public static final String GAUGE_NAME_TRG_GAP = "Trigger Sync Latest Ratio"; + public static final String GAUGE_NAME_TUNE_CRC16 = "Tune CRC16"; + public static final String GAUGE_NAME_TURBO_SPEED = "Turbocharger Speed"; + public static final String GAUGE_NAME_UPTIME = "Uptime"; + public static final String GAUGE_NAME_VBAT = "VBatt"; + public static final String GAUGE_NAME_VERSION = "firmware"; + public static final String GAUGE_NAME_VVS = "Vehicle Speed"; + public static final String GAUGE_NAME_VVT_B1E = "VVT: bank 1 exhaust"; + public static final String GAUGE_NAME_VVT_B1I = "VVT: bank 1 intake"; + public static final String GAUGE_NAME_VVT_B2E = "VVT: bank 2 exhaust"; + public static final String GAUGE_NAME_VVT_B2I = "VVT: bank 2 intake"; + public static final String GAUGE_NAME_VVT_TARGET_B1E = "VVT: bank 1 exhaust target"; + public static final String GAUGE_NAME_VVT_TARGET_B1I = "VVT: bank 1 intake target"; + public static final String GAUGE_NAME_VVT_TARGET_B2E = "VVT: bank 2 exhaust target"; + public static final String GAUGE_NAME_VVT_TARGET_B2I = "VVT: bank 2 intake target"; + public static final String GAUGE_NAME_WARNING_COUNTER = "Warning: counter"; + public static final String GAUGE_NAME_WARNING_LAST = "Warning: last"; + public static final String GAUGE_NAME_WG_POSITION = "Wastegate position sensor"; + public static final int GEARS_COUNT = 8; + public static final int IGN_BLEND_COUNT = 4; + public static final String INDICATOR_NAME_AC_SWITCH = "AC switch"; + public static final String INDICATOR_NAME_BRAKE_DOWN = "Brake switch"; + public static final String INDICATOR_NAME_CLUTCH_DOWN = "Clutch: down"; + public static final String INDICATOR_NAME_CLUTCH_UP = "Clutch: up"; + public static final int LUA_ANALOG_INPUT_COUNT = 8; + public static final int LUA_GAUGE_COUNT = 2; + public static final int PACK_ADD_TEMPERATURE = 40; + public static final int PACK_MULT_AFR = 1000; + public static final int PACK_MULT_AFR_CFG = 10; + public static final int PACK_MULT_ANGLE = 50; + public static final int PACK_MULT_FUEL_FLOW = 200; + public static final int PACK_MULT_FUEL_MASS = 100; + public static final int PACK_MULT_HIGH_PRESSURE = 10; + public static final int PACK_MULT_LAMBDA = 10000; + public static final int PACK_MULT_LAMBDA_CFG = 147; + public static final int PACK_MULT_MASS_FLOW = 10; + public static final int PACK_MULT_MS = 300; + public static final int PACK_MULT_PERCENT = 100; + public static final int PACK_MULT_PRESSURE = 30; + public static final int PACK_MULT_TEMPERATURE = 100; + public static final int PACK_MULT_VOLTAGE = 1000; + public static final int TPS_2_BYTE_PACKING_MULT = 100; + public static final int VE_BLEND_COUNT = 4; + public static final Field M_DEADTIME = Field.create("M_DEADTIME", 0, FieldType.FLOAT).setBaseOffset(932); + public static final Field PRESSUREDELTA = Field.create("PRESSUREDELTA", 4, FieldType.FLOAT).setBaseOffset(932); + public static final Field PRESSURERATIO = Field.create("PRESSURERATIO", 8, FieldType.FLOAT).setBaseOffset(932); public static final Field[] VALUES = { M_DEADTIME, PRESSUREDELTA, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/LaunchControl.java b/java_console/models/src/main/java/com/rusefi/config/generated/LaunchControl.java index 1e9f86144a..c51b9631c5 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/LaunchControl.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/LaunchControl.java @@ -3,17 +3,17 @@ import com.rusefi.config.*; public class LaunchControl { - public static final Field RETARDTHRESHOLDRPM = Field.create("RETARDTHRESHOLDRPM", 0, FieldType.INT).setScale(1.0).setBaseOffset(956); - public static final Field COMBINEDCONDITIONS = Field.create("COMBINEDCONDITIONS", 4, FieldType.BIT, 0).setBaseOffset(956); - public static final Field LAUNCHACTIVATEPINSTATE = Field.create("LAUNCHACTIVATEPINSTATE", 4, FieldType.BIT, 1).setBaseOffset(956); - public static final Field ISLAUNCHCONDITION = Field.create("ISLAUNCHCONDITION", 4, FieldType.BIT, 2).setBaseOffset(956); - public static final Field ISSWITCHACTIVATED = Field.create("ISSWITCHACTIVATED", 4, FieldType.BIT, 3).setBaseOffset(956); - public static final Field ISCLUTCHACTIVATED = Field.create("ISCLUTCHACTIVATED", 4, FieldType.BIT, 4).setBaseOffset(956); - public static final Field ISVALIDINPUTPIN = Field.create("ISVALIDINPUTPIN", 4, FieldType.BIT, 5).setBaseOffset(956); - public static final Field ACTIVATESWITCHCONDITION = Field.create("ACTIVATESWITCHCONDITION", 4, FieldType.BIT, 6).setBaseOffset(956); - public static final Field RPMCONDITION = Field.create("RPMCONDITION", 4, FieldType.BIT, 7).setBaseOffset(956); - public static final Field SPEEDCONDITION = Field.create("SPEEDCONDITION", 4, FieldType.BIT, 8).setBaseOffset(956); - public static final Field TPSCONDITION = Field.create("TPSCONDITION", 4, FieldType.BIT, 9).setBaseOffset(956); + public static final Field RETARDTHRESHOLDRPM = Field.create("RETARDTHRESHOLDRPM", 0, FieldType.INT).setScale(1.0).setBaseOffset(944); + public static final Field COMBINEDCONDITIONS = Field.create("COMBINEDCONDITIONS", 4, FieldType.BIT, 0).setBaseOffset(944); + public static final Field LAUNCHACTIVATEPINSTATE = Field.create("LAUNCHACTIVATEPINSTATE", 4, FieldType.BIT, 1).setBaseOffset(944); + public static final Field ISLAUNCHCONDITION = Field.create("ISLAUNCHCONDITION", 4, FieldType.BIT, 2).setBaseOffset(944); + public static final Field ISSWITCHACTIVATED = Field.create("ISSWITCHACTIVATED", 4, FieldType.BIT, 3).setBaseOffset(944); + public static final Field ISCLUTCHACTIVATED = Field.create("ISCLUTCHACTIVATED", 4, FieldType.BIT, 4).setBaseOffset(944); + public static final Field ISVALIDINPUTPIN = Field.create("ISVALIDINPUTPIN", 4, FieldType.BIT, 5).setBaseOffset(944); + public static final Field ACTIVATESWITCHCONDITION = Field.create("ACTIVATESWITCHCONDITION", 4, FieldType.BIT, 6).setBaseOffset(944); + public static final Field RPMCONDITION = Field.create("RPMCONDITION", 4, FieldType.BIT, 7).setBaseOffset(944); + public static final Field SPEEDCONDITION = Field.create("SPEEDCONDITION", 4, FieldType.BIT, 8).setBaseOffset(944); + public static final Field TPSCONDITION = Field.create("TPSCONDITION", 4, FieldType.BIT, 9).setBaseOffset(944); public static final Field[] VALUES = { RETARDTHRESHOLDRPM, COMBINEDCONDITIONS, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/MainRelay.java b/java_console/models/src/main/java/com/rusefi/config/generated/MainRelay.java index f291ce4173..50f1b29627 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/MainRelay.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/MainRelay.java @@ -3,10 +3,10 @@ import com.rusefi.config.*; public class MainRelay { - public static final Field ISBENCHTEST = Field.create("ISBENCHTEST", 0, FieldType.BIT, 0).setBaseOffset(1020); - public static final Field HASIGNITIONVOLTAGE = Field.create("HASIGNITIONVOLTAGE", 0, FieldType.BIT, 1).setBaseOffset(1020); - public static final Field MAINRELAYSTATE = Field.create("MAINRELAYSTATE", 0, FieldType.BIT, 2).setBaseOffset(1020); - public static final Field DELAYEDSHUTOFFREQUESTED = Field.create("DELAYEDSHUTOFFREQUESTED", 0, FieldType.BIT, 3).setBaseOffset(1020); + public static final Field ISBENCHTEST = Field.create("ISBENCHTEST", 0, FieldType.BIT, 0).setBaseOffset(1008); + public static final Field HASIGNITIONVOLTAGE = Field.create("HASIGNITIONVOLTAGE", 0, FieldType.BIT, 1).setBaseOffset(1008); + public static final Field MAINRELAYSTATE = Field.create("MAINRELAYSTATE", 0, FieldType.BIT, 2).setBaseOffset(1008); + public static final Field DELAYEDSHUTOFFREQUESTED = Field.create("DELAYEDSHUTOFFREQUESTED", 0, FieldType.BIT, 3).setBaseOffset(1008); public static final Field[] VALUES = { ISBENCHTEST, HASIGNITIONVOLTAGE, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/SentState.java b/java_console/models/src/main/java/com/rusefi/config/generated/SentState.java index c4ee188854..1d9d1e7770 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/SentState.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/SentState.java @@ -155,9 +155,9 @@ public class SentState { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field VALUE0 = Field.create("VALUE0", 0, FieldType.INT16).setScale(1.0).setBaseOffset(1364); - public static final Field VALUE1 = Field.create("VALUE1", 2, FieldType.INT16).setScale(1.0).setBaseOffset(1364); - public static final Field ERRORRATE = Field.create("ERRORRATE", 4, FieldType.FLOAT).setBaseOffset(1364); + public static final Field VALUE0 = Field.create("VALUE0", 0, FieldType.INT16).setScale(1.0).setBaseOffset(1352); + public static final Field VALUE1 = Field.create("VALUE1", 2, FieldType.INT16).setScale(1.0).setBaseOffset(1352); + public static final Field ERRORRATE = Field.create("ERRORRATE", 4, FieldType.FLOAT).setBaseOffset(1352); public static final Field[] VALUES = { VALUE0, VALUE1, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/ThrottleModel.java b/java_console/models/src/main/java/com/rusefi/config/generated/ThrottleModel.java index 6711c5c244..2a2c035280 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/ThrottleModel.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/ThrottleModel.java @@ -3,10 +3,10 @@ import com.rusefi.config.*; public class ThrottleModel { - public static final Field THROTTLEUSEWOTMODEL = Field.create("THROTTLEUSEWOTMODEL", 0, FieldType.BIT, 0).setBaseOffset(908); - public static final Field THROTTLEMODELCROSSOVERANGLE = Field.create("THROTTLEMODELCROSSOVERANGLE", 4, FieldType.INT16).setScale(0.01).setBaseOffset(908); - public static final Field ALIGNMENTFILL_AT_6 = Field.create("ALIGNMENTFILL_AT_6", 6, FieldType.INT8).setScale(1.0).setBaseOffset(908); - public static final Field THROTTLEESTIMATEDFLOW = Field.create("THROTTLEESTIMATEDFLOW", 8, FieldType.FLOAT).setBaseOffset(908); + public static final Field THROTTLEUSEWOTMODEL = Field.create("THROTTLEUSEWOTMODEL", 0, FieldType.BIT, 0).setBaseOffset(1360); + public static final Field THROTTLEMODELCROSSOVERANGLE = Field.create("THROTTLEMODELCROSSOVERANGLE", 4, FieldType.INT16).setScale(0.01).setBaseOffset(1360); + public static final Field ALIGNMENTFILL_AT_6 = Field.create("ALIGNMENTFILL_AT_6", 6, FieldType.INT8).setScale(1.0).setBaseOffset(1360); + public static final Field THROTTLEESTIMATEDFLOW = Field.create("THROTTLEESTIMATEDFLOW", 8, FieldType.FLOAT).setBaseOffset(1360); public static final Field[] VALUES = { THROTTLEUSEWOTMODEL, THROTTLEMODELCROSSOVERANGLE, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/TpsAccelState.java b/java_console/models/src/main/java/com/rusefi/config/generated/TpsAccelState.java index e1a2c6f296..c58f3f8de9 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/TpsAccelState.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/TpsAccelState.java @@ -155,23 +155,23 @@ public class TpsAccelState { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field TPSFROM = Field.create("TPSFROM", 0, FieldType.FLOAT).setBaseOffset(1108); - public static final Field TPSTO = Field.create("TPSTO", 4, FieldType.FLOAT).setBaseOffset(1108); - public static final Field DELTATPS = Field.create("DELTATPS", 8, FieldType.FLOAT).setBaseOffset(1108); - public static final Field EXTRAFUEL = Field.create("EXTRAFUEL", 12, FieldType.FLOAT).setBaseOffset(1108); - public static final Field VALUEFROMTABLE = Field.create("VALUEFROMTABLE", 16, FieldType.FLOAT).setBaseOffset(1108); - public static final Field ISABOVEACCELTHRESHOLD = Field.create("ISABOVEACCELTHRESHOLD", 20, FieldType.BIT, 0).setBaseOffset(1108); - public static final Field ISBELOWDECELTHRESHOLD = Field.create("ISBELOWDECELTHRESHOLD", 20, FieldType.BIT, 1).setBaseOffset(1108); - public static final Field ISTIMETORESETACCUMULATOR = Field.create("ISTIMETORESETACCUMULATOR", 20, FieldType.BIT, 2).setBaseOffset(1108); - public static final Field ISFRACTIONALENRICHMENT = Field.create("ISFRACTIONALENRICHMENT", 20, FieldType.BIT, 3).setBaseOffset(1108); - public static final Field BELOWEPSILON = Field.create("BELOWEPSILON", 20, FieldType.BIT, 4).setBaseOffset(1108); - public static final Field TOOSHORT = Field.create("TOOSHORT", 20, FieldType.BIT, 5).setBaseOffset(1108); - public static final Field FRACTIONALINJFUEL = Field.create("FRACTIONALINJFUEL", 24, FieldType.FLOAT).setBaseOffset(1108); - public static final Field ACCUMULATEDVALUE = Field.create("ACCUMULATEDVALUE", 28, FieldType.FLOAT).setBaseOffset(1108); - public static final Field MAXEXTRAPERCYCLE = Field.create("MAXEXTRAPERCYCLE", 32, FieldType.FLOAT).setBaseOffset(1108); - public static final Field MAXEXTRAPERPERIOD = Field.create("MAXEXTRAPERPERIOD", 36, FieldType.FLOAT).setBaseOffset(1108); - public static final Field MAXINJECTEDPERPERIOD = Field.create("MAXINJECTEDPERPERIOD", 40, FieldType.FLOAT).setBaseOffset(1108); - public static final Field CYCLECNT = Field.create("CYCLECNT", 44, FieldType.INT).setScale(1.0).setBaseOffset(1108); + public static final Field TPSFROM = Field.create("TPSFROM", 0, FieldType.FLOAT).setBaseOffset(1096); + public static final Field TPSTO = Field.create("TPSTO", 4, FieldType.FLOAT).setBaseOffset(1096); + public static final Field DELTATPS = Field.create("DELTATPS", 8, FieldType.FLOAT).setBaseOffset(1096); + public static final Field EXTRAFUEL = Field.create("EXTRAFUEL", 12, FieldType.FLOAT).setBaseOffset(1096); + public static final Field VALUEFROMTABLE = Field.create("VALUEFROMTABLE", 16, FieldType.FLOAT).setBaseOffset(1096); + public static final Field ISABOVEACCELTHRESHOLD = Field.create("ISABOVEACCELTHRESHOLD", 20, FieldType.BIT, 0).setBaseOffset(1096); + public static final Field ISBELOWDECELTHRESHOLD = Field.create("ISBELOWDECELTHRESHOLD", 20, FieldType.BIT, 1).setBaseOffset(1096); + public static final Field ISTIMETORESETACCUMULATOR = Field.create("ISTIMETORESETACCUMULATOR", 20, FieldType.BIT, 2).setBaseOffset(1096); + public static final Field ISFRACTIONALENRICHMENT = Field.create("ISFRACTIONALENRICHMENT", 20, FieldType.BIT, 3).setBaseOffset(1096); + public static final Field BELOWEPSILON = Field.create("BELOWEPSILON", 20, FieldType.BIT, 4).setBaseOffset(1096); + public static final Field TOOSHORT = Field.create("TOOSHORT", 20, FieldType.BIT, 5).setBaseOffset(1096); + public static final Field FRACTIONALINJFUEL = Field.create("FRACTIONALINJFUEL", 24, FieldType.FLOAT).setBaseOffset(1096); + public static final Field ACCUMULATEDVALUE = Field.create("ACCUMULATEDVALUE", 28, FieldType.FLOAT).setBaseOffset(1096); + public static final Field MAXEXTRAPERCYCLE = Field.create("MAXEXTRAPERCYCLE", 32, FieldType.FLOAT).setBaseOffset(1096); + public static final Field MAXEXTRAPERPERIOD = Field.create("MAXEXTRAPERPERIOD", 36, FieldType.FLOAT).setBaseOffset(1096); + public static final Field MAXINJECTEDPERPERIOD = Field.create("MAXINJECTEDPERPERIOD", 40, FieldType.FLOAT).setBaseOffset(1096); + public static final Field CYCLECNT = Field.create("CYCLECNT", 44, FieldType.INT).setScale(1.0).setBaseOffset(1096); public static final Field[] VALUES = { TPSFROM, TPSTO, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/TriggerCentral.java b/java_console/models/src/main/java/com/rusefi/config/generated/TriggerCentral.java index 53325319d9..79909d6fd6 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/TriggerCentral.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/TriggerCentral.java @@ -4,22 +4,22 @@ public class TriggerCentral { public static final int HW_EVENT_TYPES = 6; - public static final Field HWEVENTCOUNTERS1 = Field.create("HWEVENTCOUNTERS1", 0, FieldType.INT).setScale(1.0).setBaseOffset(1156); - public static final Field HWEVENTCOUNTERS2 = Field.create("HWEVENTCOUNTERS2", 4, FieldType.INT).setScale(1.0).setBaseOffset(1156); - public static final Field HWEVENTCOUNTERS3 = Field.create("HWEVENTCOUNTERS3", 8, FieldType.INT).setScale(1.0).setBaseOffset(1156); - public static final Field HWEVENTCOUNTERS4 = Field.create("HWEVENTCOUNTERS4", 12, FieldType.INT).setScale(1.0).setBaseOffset(1156); - public static final Field HWEVENTCOUNTERS5 = Field.create("HWEVENTCOUNTERS5", 16, FieldType.INT).setScale(1.0).setBaseOffset(1156); - public static final Field HWEVENTCOUNTERS6 = Field.create("HWEVENTCOUNTERS6", 20, FieldType.INT).setScale(1.0).setBaseOffset(1156); - public static final Field VVTCAMCOUNTER = Field.create("VVTCAMCOUNTER", 24, FieldType.INT).setScale(1.0).setBaseOffset(1156); - public static final Field MAPVVT_MAP_AT_SPECIAL_POINT = Field.create("MAPVVT_MAP_AT_SPECIAL_POINT", 28, FieldType.FLOAT).setBaseOffset(1156); - public static final Field MAPVVT_MAP_AT_DIFF = Field.create("MAPVVT_MAP_AT_DIFF", 32, FieldType.FLOAT).setBaseOffset(1156); - public static final Field MAPVVT_MAP_AT_CYCLE_COUNT = Field.create("MAPVVT_MAP_AT_CYCLE_COUNT", 36, FieldType.INT8).setScale(1.0).setBaseOffset(1156); - public static final Field MAPVVT_MAP_PEAK = Field.create("MAPVVT_MAP_PEAK", 37, FieldType.INT8).setScale(1.0).setBaseOffset(1156); - public static final Field ALIGNMENTFILL_AT_38 = Field.create("ALIGNMENTFILL_AT_38", 38, FieldType.INT8).setScale(1.0).setBaseOffset(1156); - public static final Field CURRENTENGINEDECODEDPHASE = Field.create("CURRENTENGINEDECODEDPHASE", 40, FieldType.FLOAT).setBaseOffset(1156); - public static final Field TRIGGERTOOTHANGLEERROR = Field.create("TRIGGERTOOTHANGLEERROR", 44, FieldType.FLOAT).setBaseOffset(1156); - public static final Field TRIGGERIGNOREDTOOTHCOUNT = Field.create("TRIGGERIGNOREDTOOTHCOUNT", 48, FieldType.INT8).setScale(1.0).setBaseOffset(1156); - public static final Field ALIGNMENTFILL_AT_49 = Field.create("ALIGNMENTFILL_AT_49", 49, FieldType.INT8).setScale(1.0).setBaseOffset(1156); + public static final Field HWEVENTCOUNTERS1 = Field.create("HWEVENTCOUNTERS1", 0, FieldType.INT).setScale(1.0).setBaseOffset(1144); + public static final Field HWEVENTCOUNTERS2 = Field.create("HWEVENTCOUNTERS2", 4, FieldType.INT).setScale(1.0).setBaseOffset(1144); + public static final Field HWEVENTCOUNTERS3 = Field.create("HWEVENTCOUNTERS3", 8, FieldType.INT).setScale(1.0).setBaseOffset(1144); + public static final Field HWEVENTCOUNTERS4 = Field.create("HWEVENTCOUNTERS4", 12, FieldType.INT).setScale(1.0).setBaseOffset(1144); + public static final Field HWEVENTCOUNTERS5 = Field.create("HWEVENTCOUNTERS5", 16, FieldType.INT).setScale(1.0).setBaseOffset(1144); + public static final Field HWEVENTCOUNTERS6 = Field.create("HWEVENTCOUNTERS6", 20, FieldType.INT).setScale(1.0).setBaseOffset(1144); + public static final Field VVTCAMCOUNTER = Field.create("VVTCAMCOUNTER", 24, FieldType.INT).setScale(1.0).setBaseOffset(1144); + public static final Field MAPVVT_MAP_AT_SPECIAL_POINT = Field.create("MAPVVT_MAP_AT_SPECIAL_POINT", 28, FieldType.FLOAT).setBaseOffset(1144); + public static final Field MAPVVT_MAP_AT_DIFF = Field.create("MAPVVT_MAP_AT_DIFF", 32, FieldType.FLOAT).setBaseOffset(1144); + public static final Field MAPVVT_MAP_AT_CYCLE_COUNT = Field.create("MAPVVT_MAP_AT_CYCLE_COUNT", 36, FieldType.INT8).setScale(1.0).setBaseOffset(1144); + public static final Field MAPVVT_MAP_PEAK = Field.create("MAPVVT_MAP_PEAK", 37, FieldType.INT8).setScale(1.0).setBaseOffset(1144); + public static final Field ALIGNMENTFILL_AT_38 = Field.create("ALIGNMENTFILL_AT_38", 38, FieldType.INT8).setScale(1.0).setBaseOffset(1144); + public static final Field CURRENTENGINEDECODEDPHASE = Field.create("CURRENTENGINEDECODEDPHASE", 40, FieldType.FLOAT).setBaseOffset(1144); + public static final Field TRIGGERTOOTHANGLEERROR = Field.create("TRIGGERTOOTHANGLEERROR", 44, FieldType.FLOAT).setBaseOffset(1144); + public static final Field TRIGGERIGNOREDTOOTHCOUNT = Field.create("TRIGGERIGNOREDTOOTHCOUNT", 48, FieldType.INT8).setScale(1.0).setBaseOffset(1144); + public static final Field ALIGNMENTFILL_AT_49 = Field.create("ALIGNMENTFILL_AT_49", 49, FieldType.INT8).setScale(1.0).setBaseOffset(1144); public static final Field[] VALUES = { HWEVENTCOUNTERS1, HWEVENTCOUNTERS2, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/TriggerState.java b/java_console/models/src/main/java/com/rusefi/config/generated/TriggerState.java index 7279f97318..5360b6b9d5 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/TriggerState.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/TriggerState.java @@ -155,14 +155,14 @@ public class TriggerState { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field CRANKSYNCHRONIZATIONCOUNTER = Field.create("CRANKSYNCHRONIZATIONCOUNTER", 0, FieldType.INT).setScale(1.0).setBaseOffset(1208); - public static final Field VVTSYNCGAPRATIO = Field.create("VVTSYNCGAPRATIO", 4, FieldType.FLOAT).setBaseOffset(1208); - public static final Field VVTCURRENTPOSITION = Field.create("VVTCURRENTPOSITION", 8, FieldType.FLOAT).setBaseOffset(1208); - public static final Field TRIGGERSYNCGAPRATIO = Field.create("TRIGGERSYNCGAPRATIO", 12, FieldType.FLOAT).setBaseOffset(1208); - public static final Field TRIGGERSTATEINDEX = Field.create("TRIGGERSTATEINDEX", 16, FieldType.INT8).setScale(1.0).setBaseOffset(1208); - public static final Field VVTCOUNTER = Field.create("VVTCOUNTER", 17, FieldType.INT8).setScale(1.0).setBaseOffset(1208); - public static final Field CAMRESYNCCOUNTER = Field.create("CAMRESYNCCOUNTER", 18, FieldType.INT8).setScale(1.0).setBaseOffset(1208); - public static final Field VVTSTATEINDEX = Field.create("VVTSTATEINDEX", 19, FieldType.INT8).setScale(1.0).setBaseOffset(1208); + public static final Field CRANKSYNCHRONIZATIONCOUNTER = Field.create("CRANKSYNCHRONIZATIONCOUNTER", 0, FieldType.INT).setScale(1.0).setBaseOffset(1196); + public static final Field VVTSYNCGAPRATIO = Field.create("VVTSYNCGAPRATIO", 4, FieldType.FLOAT).setBaseOffset(1196); + public static final Field VVTCURRENTPOSITION = Field.create("VVTCURRENTPOSITION", 8, FieldType.FLOAT).setBaseOffset(1196); + public static final Field TRIGGERSYNCGAPRATIO = Field.create("TRIGGERSYNCGAPRATIO", 12, FieldType.FLOAT).setBaseOffset(1196); + public static final Field TRIGGERSTATEINDEX = Field.create("TRIGGERSTATEINDEX", 16, FieldType.INT8).setScale(1.0).setBaseOffset(1196); + public static final Field VVTCOUNTER = Field.create("VVTCOUNTER", 17, FieldType.INT8).setScale(1.0).setBaseOffset(1196); + public static final Field CAMRESYNCCOUNTER = Field.create("CAMRESYNCCOUNTER", 18, FieldType.INT8).setScale(1.0).setBaseOffset(1196); + public static final Field VVTSTATEINDEX = Field.create("VVTSTATEINDEX", 19, FieldType.INT8).setScale(1.0).setBaseOffset(1196); public static final Field[] VALUES = { CRANKSYNCHRONIZATIONCOUNTER, VVTSYNCGAPRATIO, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/TriggerStatePrimary.java b/java_console/models/src/main/java/com/rusefi/config/generated/TriggerStatePrimary.java index acc1834c75..b6a6305585 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/TriggerStatePrimary.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/TriggerStatePrimary.java @@ -155,7 +155,7 @@ public class TriggerStatePrimary { public static final int PACK_MULT_VOLTAGE = 1000; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int VE_BLEND_COUNT = 4; - public static final Field M_HASSYNCHRONIZEDPHASE = Field.create("M_HASSYNCHRONIZEDPHASE", 0, FieldType.BIT, 0).setBaseOffset(1228); + public static final Field M_HASSYNCHRONIZEDPHASE = Field.create("M_HASSYNCHRONIZEDPHASE", 0, FieldType.BIT, 0).setBaseOffset(1216); public static final Field[] VALUES = { M_HASSYNCHRONIZEDPHASE, }; diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/TsOutputs.java b/java_console/models/src/main/java/com/rusefi/config/generated/TsOutputs.java index f856c757d0..f6c6c2b25d 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/TsOutputs.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/TsOutputs.java @@ -205,24 +205,24 @@ public class TsOutputs { public static final Field INJECTORDUTYCYCLE = Field.create("INJECTORDUTYCYCLE", 46, FieldType.INT8).setScale(0.5).setBaseOffset(0); public static final Field VEVALUE = Field.create("VEVALUE", 47, FieldType.INT8).setScale(0.5).setBaseOffset(0); public static final Field INJECTIONOFFSET = Field.create("INJECTIONOFFSET", 48, FieldType.INT16).setScale(1.0).setBaseOffset(0); - public static final Field INJECTORLAGMS = Field.create("INJECTORLAGMS", 50, FieldType.INT16).setScale(0.0033333333333333335).setBaseOffset(0); - public static final Field ENGINEMAKECODENAMECRC16 = Field.create("ENGINEMAKECODENAMECRC16", 52, FieldType.INT16).setScale(1.0).setBaseOffset(0); - public static final Field WALLFUELAMOUNT = Field.create("WALLFUELAMOUNT", 54, FieldType.INT16).setScale(0.01).setBaseOffset(0); - public static final Field WALLFUELCORRECTIONVALUE = Field.create("WALLFUELCORRECTIONVALUE", 56, FieldType.INT16).setScale(0.01).setBaseOffset(0); - public static final Field REVOLUTIONCOUNTERSINCESTART = Field.create("REVOLUTIONCOUNTERSINCESTART", 58, FieldType.INT16).setScale(1.0).setBaseOffset(0); - public static final Field CANREADCOUNTER = Field.create("CANREADCOUNTER", 60, FieldType.INT16).setScale(1.0).setBaseOffset(0); - public static final Field TPSACCELFUEL = Field.create("TPSACCELFUEL", 62, FieldType.INT16).setScale(0.0033333333333333335).setBaseOffset(0); - public static final Field IGNITIONADVANCE = Field.create("IGNITIONADVANCE", 64, FieldType.INT16).setScale(0.02).setBaseOffset(0); - public static final Field CURRENTIGNITIONMODE = Field.create("CURRENTIGNITIONMODE", 66, FieldType.INT8).setScale(1.0).setBaseOffset(0); - public static final Field CURRENTINJECTIONMODE = Field.create("CURRENTINJECTIONMODE", 67, FieldType.INT8).setScale(1.0).setBaseOffset(0); - public static final Field COILDUTYCYCLE = Field.create("COILDUTYCYCLE", 68, FieldType.INT16).setScale(0.01).setBaseOffset(0); - public static final Field ETBTARGET = Field.create("ETBTARGET", 70, FieldType.INT16).setScale(0.01).setBaseOffset(0); - public static final Field ETB1DUTYCYCLE = Field.create("ETB1DUTYCYCLE", 72, FieldType.INT16).setScale(0.01).setBaseOffset(0); - public static final Field FUELTANKLEVEL = Field.create("FUELTANKLEVEL", 74, FieldType.INT16).setScale(0.01).setBaseOffset(0); - public static final Field TOTALFUELCONSUMPTION = Field.create("TOTALFUELCONSUMPTION", 76, FieldType.INT16).setScale(1.0).setBaseOffset(0); - public static final Field FUELFLOWRATE = Field.create("FUELFLOWRATE", 78, FieldType.INT16).setScale(0.005).setBaseOffset(0); - public static final Field TPS2VALUE = Field.create("TPS2VALUE", 80, FieldType.INT16).setScale(0.01).setBaseOffset(0); - public static final Field TUNECRC16 = Field.create("TUNECRC16", 82, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field ENGINEMAKECODENAMECRC16 = Field.create("ENGINEMAKECODENAMECRC16", 50, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field WALLFUELAMOUNT = Field.create("WALLFUELAMOUNT", 52, FieldType.INT16).setScale(0.01).setBaseOffset(0); + public static final Field WALLFUELCORRECTIONVALUE = Field.create("WALLFUELCORRECTIONVALUE", 54, FieldType.INT16).setScale(0.01).setBaseOffset(0); + public static final Field REVOLUTIONCOUNTERSINCESTART = Field.create("REVOLUTIONCOUNTERSINCESTART", 56, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field CANREADCOUNTER = Field.create("CANREADCOUNTER", 58, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field TPSACCELFUEL = Field.create("TPSACCELFUEL", 60, FieldType.INT16).setScale(0.0033333333333333335).setBaseOffset(0); + public static final Field IGNITIONADVANCE = Field.create("IGNITIONADVANCE", 62, FieldType.INT16).setScale(0.02).setBaseOffset(0); + public static final Field CURRENTIGNITIONMODE = Field.create("CURRENTIGNITIONMODE", 64, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field CURRENTINJECTIONMODE = Field.create("CURRENTINJECTIONMODE", 65, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field COILDUTYCYCLE = Field.create("COILDUTYCYCLE", 66, FieldType.INT16).setScale(0.01).setBaseOffset(0); + public static final Field ETBTARGET = Field.create("ETBTARGET", 68, FieldType.INT16).setScale(0.01).setBaseOffset(0); + public static final Field ETB1DUTYCYCLE = Field.create("ETB1DUTYCYCLE", 70, FieldType.INT16).setScale(0.01).setBaseOffset(0); + public static final Field FUELTANKLEVEL = Field.create("FUELTANKLEVEL", 72, FieldType.INT16).setScale(0.01).setBaseOffset(0); + public static final Field TOTALFUELCONSUMPTION = Field.create("TOTALFUELCONSUMPTION", 74, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field FUELFLOWRATE = Field.create("FUELFLOWRATE", 76, FieldType.INT16).setScale(0.005).setBaseOffset(0); + public static final Field TPS2VALUE = Field.create("TPS2VALUE", 78, FieldType.INT16).setScale(0.01).setBaseOffset(0); + public static final Field TUNECRC16 = Field.create("TUNECRC16", 80, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field ALIGNMENTFILL_AT_82 = Field.create("ALIGNMENTFILL_AT_82", 82, FieldType.INT8).setScale(1.0).setBaseOffset(0); public static final Field KNOCKLEVEL = Field.create("KNOCKLEVEL", 84, FieldType.FLOAT).setBaseOffset(0); public static final Field SECONDS = Field.create("SECONDS", 88, FieldType.INT).setScale(1.0).setBaseOffset(0); public static final Field ENGINEMODE = Field.create("ENGINEMODE", 92, FieldType.INT).setScale(1.0).setBaseOffset(0); @@ -703,7 +703,6 @@ public class TsOutputs { INJECTORDUTYCYCLE, VEVALUE, INJECTIONOFFSET, - INJECTORLAGMS, ENGINEMAKECODENAMECRC16, WALLFUELAMOUNT, WALLFUELCORRECTIONVALUE, @@ -721,6 +720,7 @@ public class TsOutputs { FUELFLOWRATE, TPS2VALUE, TUNECRC16, + ALIGNMENTFILL_AT_82, KNOCKLEVEL, SECONDS, ENGINEMODE, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/VvtState.java b/java_console/models/src/main/java/com/rusefi/config/generated/VvtState.java new file mode 100644 index 0000000000..6b7e41dd66 --- /dev/null +++ b/java_console/models/src/main/java/com/rusefi/config/generated/VvtState.java @@ -0,0 +1,14 @@ +package com.rusefi.config.generated; + +import com.rusefi.config.*; + +public class VvtState { + public static final Field VVTTARGET = Field.create("VVTTARGET", 0, FieldType.INT16).setScale(0.1).setBaseOffset(1372); + public static final Field VVTOUTPUT = Field.create("VVTOUTPUT", 2, FieldType.INT8).setScale(0.5).setBaseOffset(1372); + public static final Field ALIGNMENTFILL_AT_3 = Field.create("ALIGNMENTFILL_AT_3", 3, FieldType.INT8).setScale(1.0).setBaseOffset(1372); + public static final Field[] VALUES = { + VVTTARGET, + VVTOUTPUT, + ALIGNMENTFILL_AT_3, + }; +} diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/WallFuelState.java b/java_console/models/src/main/java/com/rusefi/config/generated/WallFuelState.java index 4ef705a8f9..322666243a 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/WallFuelState.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/WallFuelState.java @@ -3,8 +3,8 @@ import com.rusefi.config.*; public class WallFuelState { - public static final Field WALLFUELCORRECTION = Field.create("WALLFUELCORRECTION", 0, FieldType.FLOAT).setBaseOffset(1232); - public static final Field WALLFUEL = Field.create("WALLFUEL", 4, FieldType.FLOAT).setBaseOffset(1232); + public static final Field WALLFUELCORRECTION = Field.create("WALLFUELCORRECTION", 0, FieldType.FLOAT).setBaseOffset(1220); + public static final Field WALLFUEL = Field.create("WALLFUEL", 4, FieldType.FLOAT).setBaseOffset(1220); public static final Field[] VALUES = { WALLFUELCORRECTION, WALLFUEL, diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/WidebandController.java b/java_console/models/src/main/java/com/rusefi/config/generated/WidebandController.java index 71cabcf1b5..56db46a915 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/WidebandController.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/WidebandController.java @@ -3,14 +3,14 @@ import com.rusefi.config.*; public class WidebandController { - public static final Field FAULTCODE = Field.create("FAULTCODE", 0, FieldType.INT8).setScale(1.0).setBaseOffset(1340); - public static final Field HEATERDUTY = Field.create("HEATERDUTY", 1, FieldType.INT8).setScale(1.0).setBaseOffset(1340); - public static final Field PUMPDUTY = Field.create("PUMPDUTY", 2, FieldType.INT8).setScale(1.0).setBaseOffset(1340); - public static final Field ALIGNMENTFILL_AT_3 = Field.create("ALIGNMENTFILL_AT_3", 3, FieldType.INT8).setScale(1.0).setBaseOffset(1340); - public static final Field TEMPC = Field.create("TEMPC", 4, FieldType.INT16).setScale(1.0).setBaseOffset(1340); - public static final Field NERNSTVOLTAGE = Field.create("NERNSTVOLTAGE", 6, FieldType.INT16).setScale(0.001).setBaseOffset(1340); - public static final Field ESR = Field.create("ESR", 8, FieldType.INT16).setScale(1.0).setBaseOffset(1340); - public static final Field ALIGNMENTFILL_AT_10 = Field.create("ALIGNMENTFILL_AT_10", 10, FieldType.INT8).setScale(1.0).setBaseOffset(1340); + public static final Field FAULTCODE = Field.create("FAULTCODE", 0, FieldType.INT8).setScale(1.0).setBaseOffset(1328); + public static final Field HEATERDUTY = Field.create("HEATERDUTY", 1, FieldType.INT8).setScale(1.0).setBaseOffset(1328); + public static final Field PUMPDUTY = Field.create("PUMPDUTY", 2, FieldType.INT8).setScale(1.0).setBaseOffset(1328); + public static final Field ALIGNMENTFILL_AT_3 = Field.create("ALIGNMENTFILL_AT_3", 3, FieldType.INT8).setScale(1.0).setBaseOffset(1328); + public static final Field TEMPC = Field.create("TEMPC", 4, FieldType.INT16).setScale(1.0).setBaseOffset(1328); + public static final Field NERNSTVOLTAGE = Field.create("NERNSTVOLTAGE", 6, FieldType.INT16).setScale(0.001).setBaseOffset(1328); + public static final Field ESR = Field.create("ESR", 8, FieldType.INT16).setScale(1.0).setBaseOffset(1328); + public static final Field ALIGNMENTFILL_AT_10 = Field.create("ALIGNMENTFILL_AT_10", 10, FieldType.INT8).setScale(1.0).setBaseOffset(1328); public static final Field[] VALUES = { FAULTCODE, HEATERDUTY, diff --git a/java_console/ui/build.gradle b/java_console/ui/build.gradle index 4181ed842b..6ba5efac9f 100644 --- a/java_console/ui/build.gradle +++ b/java_console/ui/build.gradle @@ -4,7 +4,7 @@ plugins { } configurations { - // not sure what is this and why but it's huge + // icu4j is huge: https://en.wikipedia.org/wiki/International_Components_for_Unicode all*.exclude group: 'com.ibm.icu', module: 'icu4j' } @@ -25,7 +25,7 @@ dependencies { shadowJar { archivesBaseName = 'fome_console' - destinationDir = file("$rootDir/../java_console_binary") + destinationDir = file("$rootDir/../java_console_binary") archiveClassifier = '' manifest { @@ -33,4 +33,4 @@ shadowJar { 'Main-Class': 'com.rusefi.Launcher' ) } -} \ No newline at end of file +} diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index 1d22059c69..34bbffe9bb 100644 Binary files a/java_tools/ConfigDefinition.jar and b/java_tools/ConfigDefinition.jar differ diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/LiveDataProcessor.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/LiveDataProcessor.java index 3ecbc33be4..7cfd5ec1a7 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/LiveDataProcessor.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/LiveDataProcessor.java @@ -79,7 +79,7 @@ private void end() throws IOException { } interface EntryHandler { - void onEntry(String name, String javaName, String folder, String prepend, boolean withCDefines, String[] outputNames, String constexpr, String conditional) throws IOException; + void onEntry(String name, String javaName, String folder, String prepend, boolean withCDefines, String[] outputNames, String constexpr, String conditional, Boolean isPtr) throws IOException; } private int handleYaml(Map data) throws IOException { @@ -93,7 +93,7 @@ private int handleYaml(Map data) throws IOException { EntryHandler handler = new EntryHandler() { @Override - public void onEntry(String name, String javaName, String folder, String prepend, boolean withCDefines, String[] outputNames, String constexpr, String conditional) throws IOException { + public void onEntry(String name, String javaName, String folder, String prepend, boolean withCDefines, String[] outputNames, String constexpr, String conditional, Boolean isPtr) throws IOException { // TODO: use outputNames int startingPosition = outputsSections.sensorTsPosition; @@ -122,10 +122,12 @@ public void onEntry(String name, String javaName, String folder, String prepend, if (constexpr != null) { sdCardFieldsConsumer.home = constexpr; + sdCardFieldsConsumer.isPtr = isPtr; state.addDestination((state1, structure) -> sdCardFieldsConsumer.handleEndStruct(state1, structure)); outputValueConsumer.currentSectionPrefix = constexpr; outputValueConsumer.conditional = conditional; + outputValueConsumer.isPtr = isPtr; state.addDestination((state1, structure) -> outputValueConsumer.handleEndStruct(state1, structure)); } @@ -157,8 +159,10 @@ public void handleEndStruct(ReaderState readerState, ConfigStructure structure) String constexpr = (String) entry.get("constexpr"); String conditional = (String) entry.get("conditional_compilation"); Boolean withCDefines = (Boolean) entry.get("withCDefines"); + Boolean isPtr = (Boolean) entry.get("isPtr"); // Defaults to false if not specified withCDefines = withCDefines != null && withCDefines; + isPtr = isPtr != null && isPtr; Object outputNames = entry.get("output_name"); @@ -174,7 +178,7 @@ public void handleEndStruct(ReaderState readerState, ConfigStructure structure) nameList.toArray(outputNamesArr); } - handler.onEntry(name, java, folder, prepend, withCDefines, outputNamesArr, constexpr, conditional); + handler.onEntry(name, java, folder, prepend, withCDefines, outputNamesArr, constexpr, conditional, isPtr); String enumName = "LDS_" + name; String type = name + "_s"; // convention diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/GetOutputValueConsumer.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/GetOutputValueConsumer.java index 3f1a6f96af..dd2596d537 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/GetOutputValueConsumer.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/GetOutputValueConsumer.java @@ -30,6 +30,7 @@ public class GetOutputValueConsumer implements ConfigurationConsumer { public String currentSectionPrefix = "engine->outputChannels"; public String conditional; + public Boolean isPtr = false; public GetOutputValueConsumer(String fileName) { this.fileName = fileName; @@ -55,7 +56,7 @@ private String processOutput(ConfigField cf, String prefix) { } String userName = prefix + cf.getName(); - String javaName = currentSectionPrefix + "." + prefix; + String javaName = currentSectionPrefix + (isPtr ? "->" : ".") + prefix; getterPairs.add(new VariableRecord(userName, javaName + cf.getName(), null, conditional)); @@ -75,10 +76,12 @@ public String getContent() { String fullSwitch = wrapSwitchStatement(switchBody); - return FILE_HEADER + + return "#if !EFI_UNIT_TEST\n" + + FILE_HEADER + "float getOutputValueByName(const char *name) {\n" + fullSwitch + - getterBody + GetConfigValueConsumer.GET_METHOD_FOOTER; + getterBody + GetConfigValueConsumer.GET_METHOD_FOOTER + + "#endif\n"; } @NotNull diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/SdCardFieldsContent.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/SdCardFieldsContent.java index 150496c1f2..2892ac487f 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/SdCardFieldsContent.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/SdCardFieldsContent.java @@ -13,6 +13,7 @@ public class SdCardFieldsContent { private final StringBuilder body = new StringBuilder(); public String home = "engine->outputChannels"; + public Boolean isPtr = false; public void handleEndStruct(ReaderState state, ConfigStructure structure) throws IOException { if (state.isStackEmpty()) { @@ -49,7 +50,7 @@ private String getLine(ConfigField configField, String prefix, String name) { categoryStr = ", " + categoryStr; } - return "\t{" + home + "." + name + + return "\t{" + home + (isPtr ? "->" : ".") + name + ", " + DataLogConsumer.getHumanGaugeName(prefix, configField) + ", " + diff --git a/java_tools/configuration_definition/src/test/java/com/rusefi/test/OutputsTest.java b/java_tools/configuration_definition/src/test/java/com/rusefi/test/OutputsTest.java index d23b318858..3961f1068a 100644 --- a/java_tools/configuration_definition/src/test/java/com/rusefi/test/OutputsTest.java +++ b/java_tools/configuration_definition/src/test/java/com/rusefi/test/OutputsTest.java @@ -145,6 +145,7 @@ public void generateGetOutputs() { outputValueConsumer.conditional = "EFI_BOOST_CONTROL"; state.readBufferedReader(test, (outputValueConsumer)); assertEquals( + "#if !EFI_UNIT_TEST\n" + "#include \"pch.h\"\n" + "#include \"value_lookup.h\"\n" + "float getOutputValueByName(const char *name) {\n" + @@ -164,7 +165,8 @@ public void generateGetOutputs() { "#endif\n" + "\t}\n" + "\treturn EFI_ERROR_CODE;\n" + - "}\n", outputValueConsumer.getContent()); + "}\n" + + "#endif\n", outputValueConsumer.getContent()); } @Test diff --git a/misc/Strategy_2019.md b/misc/Strategy_2019.md deleted file mode 100644 index e24c13c980..0000000000 --- a/misc/Strategy_2019.md +++ /dev/null @@ -1,24 +0,0 @@ -[Update: this is still rusEfi strategy even for 2020] - -1a) As of June 2019, rusEfi has a _LOT_ of potential but probably is pretty far from being easily usable and pretty far from being -easy to use. - -1c) As of June 2019, only 4 to 6 vehicles TOTAL have put any significant miles on rusEfi. _Significant_ means 10 000 km per vehicle. - -1e) Most of the 51 vehicles with rusEfi have driven below 10 km per vehicle. - -1g) rusEfi has a number of great hardware options and **reliable** firmware. While **reliable**, the models and features of -the software are extremely limited. - -1i) As of 2019, rusEfi focus is on tools, infrastructure and development community. - -1m) In order to get more developers to contribute to rusEfi firmware and content, rusEfi Strategy 2017 and -Strategy 2018 was to provide kits and assembled units of highly flexible but large and not very cheap [Frankenso](https://rusefi.com/wiki/index.php?title=Hardware:For_Sale) board. - -1s) rusEfi Strategy 2019 (Update: and 2020) is to provide the community with smaller and cheaper boards. Maybe [microRusEfi](https://github.com/960/hw_microRusEfi) maybe -[Deucalion](https://rusefi.com/forum/viewtopic.php?f=4&t=1516). - -1z) it is NOT rusEfi Strategy 2019 to market rusEfi to a wide retail audience. The lack of documentation and the steep -learning curve would cause a less than ideal user experience. - - \ No newline at end of file diff --git a/misc/Strategy_2020.md b/misc/Strategy_2020.md deleted file mode 100644 index 0e9c979b44..0000000000 --- a/misc/Strategy_2020.md +++ /dev/null @@ -1 +0,0 @@ -Nothing has changed - see [Strategy 2019](Strategy_2019.md) \ No newline at end of file diff --git a/misc/Strategy_2021.md b/misc/Strategy_2021.md deleted file mode 100644 index 01dd067a77..0000000000 --- a/misc/Strategy_2021.md +++ /dev/null @@ -1,20 +0,0 @@ -TL,DR: we want to develop a much _smarter_ ECU. At the moment the two bottlenecks for us are: - -a) software developers - -b) actionable user feedback - -As of February 2021, rusEFI has a LOT of potential but is far from easy to use. -1) rusEFI has a number of great hardware options and stable features. More information about particular features and their status can be found on the Wiki here: -https://github.com/rusefi/rusefi/wiki#features -2) As of February 2021, the focus of rusEFI is on tools, infrastructure and further development. Attracting more developers is a goal. -3) In order to get more developers to contribute to rusEFI firmware and content, rusEFI Strategy 2020 was to provide kits and assembled units of highly flexible but large and not very cheap Proteus board. rusEFI Strategy February 2021 is to provide the community with smaller and cheaper boards that can be assembled completely by automated methods which do not require as much labor from developers, allowing developers to focus on writing firmware and designing more hardware instead of building kits for new users. -5) Some important tasks to be finished in 2021 are:
- a. Move production of hardware sold by rusEFI to automated assembly, away from hand assembly.
- b. Complete a Proteus board that fits into a standard ECU case (154 pin)
- c. Incorporate results of Ion Sense testing conducted in 2020 to the spark control system
- d. Improve Variable Camshaft control to allow more engines with this feature to run on rusEFI
- e. Continue to improve documentation for development process, firmware, tuning and use
-4) As of February 2021, 65 cars are listed as running on https://github.com/rusefi/rusefi/wiki/List-of-engines-running-rusEFI -5) As of February 2021, hundreds of rusEFI units have been sold in addition to any ECUs produced from our designs independently. There is no true count of how many rusEFI derived devices are in the wild anymore. -6) As of February 2021 is is NOT the goal of rusEFI to market to a wide retail audience. The lack of documentation and the steep learning curve would cause a less than ideal user experience. Developers continue to be the intended audience for the immediate future. diff --git a/misc/Strategy_2022_draft.md b/misc/Strategy_2022_draft.md deleted file mode 100644 index de1577f337..0000000000 --- a/misc/Strategy_2022_draft.md +++ /dev/null @@ -1,13 +0,0 @@ - -We still need software developers. - -Two years of microRusEFI and Proteus sales did not bring us much of new software developers. -At the moment most of rusEFI Hellen boards are pretty successful as end-user products, not as means to bring new developers. - -I think it's time to admit that we enjoy focusing on a small number of specific platforms instead of running thin trying to remotely -support rusEFI as a completely universal ECU. - -Significant portion of rusEFI KiCAD work in 2021 was done by hired professionals. At the moment rusEFI LLC is focusing on building -a steady stream of revenue in order to hire software developers. - -Our goal is still to develop the smartest open source ECU. diff --git a/misc/atollic_truestudio_notes.txt b/misc/atollic_truestudio_notes.txt deleted file mode 100644 index 8e8227c1f0..0000000000 --- a/misc/atollic_truestudio_notes.txt +++ /dev/null @@ -1,33 +0,0 @@ -Debug Configurations Settings Window won't close - -mkdir -p firmware/.settings -touch firmware/.settings/com.atollic.truestudio.debug.hardware_device.prefs - -https://forum.atollic.com/viewtopic.php?t=1015 - - -target software startup script - -#start - -# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers -# Uncomment next line, 2=32 bit, 1=16 bit and 0=8 bit parallelism mode -monitor flash set_parallelism_mode 2 -# Set character encoding -set host-charset CP1252 -set target-charset CP1252 -# Reset to known state -monitor reset -# Load the program executable -load -# Reset the chip to get to a known state. Remove "monitor reset" command -# if the code is not located at default address and does not run by reset. -monitor reset -# Enable Debug connection in low power modes (DBGMCU->CR) -set *0xE0042004 = (*0xE0042004) | 0x7 -# Set a breakpoint at main(). -tbreak main -# Run to the breakpoint. -continue - -#end \ No newline at end of file diff --git a/misc/work_in_progress.md b/misc/work_in_progress.md deleted file mode 100644 index b1a7f7e860..0000000000 --- a/misc/work_in_progress.md +++ /dev/null @@ -1,106 +0,0 @@ -Jan, 11 2022 status -* AndreyB works on data point logging and live view https://github.com/rusefi/rusefi/issues/3614 as part of rusEFI usability improvements -* AndreyB is trying to push https://github.com/mck1117/wideband/issues/28 forward as part of Hellen fabrication improvements -* AndreyB is working on GDI4 https://github.com/rusefi/rusefi-hardware/issues?q=is%3Aissue+label%3AGDI as part of BMW 760 epic -* Mark is working on STM32 sleep / CAN wake up as part of Harley Hellen -* Anyone to pick up https://github.com/rusefi/rusefi/issues/936? -* Anyone to pick up https://github.com/rusefi/rusefi/issues/3771? -* Anyone to pick up https://github.com/rusefi/rusefi/labels/ADC-shortage? - - -Sept, 23 2021 status -* two Hellen-Mercedes driving -* Hellen-Nissan started! -* Lua progress - -July, 25 2021 status -* we now have five or six Hellen boards too many of these untested -* Matt is helping Hellen-Mercedes and H7 progress -* AndreyB is testing Hellen-Nissan and working on VVT code -* AndreiKA is focusing on Hellen81 and H7 - -Feb 9, 2021 status -* AndreiKA is focusing on Hellen-One -* AndreyB is focusing on quad VVT -* Matt is working on wideband and VR without ASIC - -Jan, 2 2021 status -* We had GDI vehicle start & idle! GDI effort is now suspected since too many projects in the works. -* TCU first real hardware test was not a success - -Nov, 18 2020 status -* GDI test mule was damaged during GDI tests -* Matt is working on fueling, wideband and knock detection logic -* TCU first hardware tests are getting closer! - -Sep, 7 2020 status -* Stefan is happy enough with idle control and now manufacturing a batch of Miata NA6 & developing a Miata NB2 PnP board -* AndreiKA and AndreyB are merging Hellen code into rusEFI master -* Matt is working on fueling and knock detection logic -* AndreiKA and AndreyB are making rusEFI Online better -* David is making TCU progress -* GDI is slooooowly moving forward - -July, 19 2020 status -* Stefan and AndreiKA are looking to improve miata idle (again!) -* AndreiKA and AndreyB are focused on rusEFI Online -* Matt is dealing with a number of different scheduling defects -* Miata NA base tune is getting closer -* GDI is a bit on hold - -Apr, 20 2020 status: -* Nick and Chris are focusing on GDI progress -* Matt is focusing on ETB https://github.com/rusefi/rusefi/issues/1240 https://github.com/rusefi/rusefi/issues/1336 -* x number of Andreys are focusing on data gathering usability https://github.com/rusefi/rusefi/issues/1337 -* andreika is currently focusing on Hellen, SD-card/binary logging, TS plugin and online connectivity - -Mar, 02 2020 status: -* playing with some GDI software, but now waiting for repaired MC33816 to come from Seattle -* Matt and DronoGus are working on different parts of getting stepper control using two universal H-bridged, that would give us stepper idle control on microRusEfi. -* A _lot_ of hardware to play with - v12 on Manhattan, v12 on Proteus, setting up microRusEfi fabrication. - -Dec, 28 2019 status: -* playing with some GDI while waiting for proteus 0.2 and microRusEfi 0.4.6 -* [DONE] top priority is https://github.com/rusefi/rusefi/issues/1011 Fix and expand commit gate check - -Nov, 19 2019 status: -* top priority is https://github.com/rusefi/rusefi/issues/1011 Fix and expand commit gate check -* [DONE] https://github.com/rusefi/rusefi/issues/796 Missing dwell altogether in some corner cases still should be addressed - -Sep, 19 2019 status: -* https://github.com/rusefi/rusefi/issues/796 Missing dwell altogether in some corner cases still should be addressed -* Ion Sense https://rusefi.com/forum/viewtopic.php?f=4&t=963 is now somewhere on top of the list! -* [DONE] build server is reliable again -* [DONE] Electronic throttle body is now road-tested including idle control -* CJ125 - probably falling off the wagon since no time :( - -June, 07 2019 status: -* new annoying issue: integration testing on new build server is unreliable - disconnects https://github.com/rusefi/rusefi/issues/816 -* https://github.com/rusefi/rusefi/issues/796 should be addressed -* Electronic throttle body - two and three wire control seems good enough, next step ETB-based idle control see https://github.com/rusefi/rusefi/issues/783 -* Ion Sense https://rusefi.com/forum/viewtopic.php?f=4&t=963 -* HIP9011 - still need to improve unit tests and give this functionality another test now that we can reproduce detonation -* CJ125 - still need to improve unit tests and give this functionality another test - -May, 31 2019 status: -* https://github.com/rusefi/rusefi/issues/796 should be addressed -* Electronic throttle body - two and three wire control seems good enough, next step ETB-based idle control see https://github.com/rusefi/rusefi/issues/783 -* Ion Sense https://rusefi.com/forum/viewtopic.php?f=4&t=963 -* HIP9011 - still need to improve unit tests and give this functionality another test now that we can reproduce detonation -* CJ125 - still need to improve unit tests and give this functionality another test, also need to merge mck1117's changes into master now that we have a source for cheap used 4.9 sensors - -May, 11 2019 status: -* Electronic throttle body - two and three wire control seems good enough, next step ETB-based idle control see https://github.com/rusefi/rusefi/issues/783 -* Ion Sense https://rusefi.com/forum/viewtopic.php?f=4&t=963 -* HIP9011 - still need to improve unit tests and give this functionality another test now that we can reproduce detonation -* CJ125 - still need to improve unit tests and give this functionality another test, also need to merge mck1117's changes into master now that we have a source for cheap used 4.9 sensors - -Jan, 7 2019 status: -* Electronic throttle body - need to merge mck1117's changes into master https://rusefi.com/forum/viewtopic.php?f=5&t=592 -* Ion Sense https://rusefi.com/forum/viewtopic.php?f=4&t=963 -* HIP9011 - need to improve unit tests and give this functionality another test now that we can reproduce detonation -* CJ125 - need to improve unit tests and give this functionality another test, alsoneed to merge mck1117's changes into master now we have a source for cheap used 4.9 sensors - -Dec, 16 2018 status: -* Electronic throttle body https://rusefi.com/forum/viewtopic.php?f=5&t=592 -* Ion Sense https://rusefi.com/forum/viewtopic.php?f=4&t=963 diff --git a/misc/www/readme.md b/misc/www/readme.md deleted file mode 100644 index 6fc3361ca3..0000000000 --- a/misc/www/readme.md +++ /dev/null @@ -1 +0,0 @@ -Files moved to https://github.com/rusefi/web_backend/tree/master/www \ No newline at end of file diff --git a/simulator/main.cpp b/simulator/main.cpp index 3f89430461..152ac45e89 100644 --- a/simulator/main.cpp +++ b/simulator/main.cpp @@ -32,7 +32,7 @@ static thread_t *cdtp; #define cputs(msg) chMsgSend(cdtp, (msg_t)msg) -void printToConsole(char *p) { +void printToConsole(const char *p) { cputs(p); } @@ -59,7 +59,7 @@ extern int isSerialOverTcpReady; * * @param[in] id event id. */ -static void termination_handler(eventid_t id) { +static void termination_handler(eventid_t /*id*/) { chThdSleepMilliseconds(10); diff --git a/simulator/simulator/global.h b/simulator/simulator/global.h index e5c331cd8c..68a6534050 100644 --- a/simulator/simulator/global.h +++ b/simulator/simulator/global.h @@ -52,7 +52,7 @@ extern "C" { #endif /* __cplusplus */ -void printToConsole(char *p); +void printToConsole(const char *p); #define getCurrentRemainingStack() getRemainingStack(chThdGetSelfX()) diff --git a/unit_tests/tests/actuators/test_etb_integrated.cpp b/unit_tests/tests/actuators/test_etb_integrated.cpp index 431168d7ad..b444df3108 100644 --- a/unit_tests/tests/actuators/test_etb_integrated.cpp +++ b/unit_tests/tests/actuators/test_etb_integrated.cpp @@ -49,91 +49,91 @@ TEST(etb, integrated) { extern int timeNowUs; -TEST(etb, intermittentTps) { - EngineTestHelper eth(engine_type_e::TEST_ENGINE); // we have a destructor so cannot move EngineTestHelper into utility method - EtbController *etb = initEtbIntegratedTest(); +// TEST(etb, intermittentTps) { +// EngineTestHelper eth(engine_type_e::TEST_ENGINE); // we have a destructor so cannot move EngineTestHelper into utility method +// EtbController *etb = initEtbIntegratedTest(); - // Tell the sensor checker that the ignition is on - engine->module()->onIgnitionStateChanged(true); - engine->module()->onSlowCallback(); - timeNowUs += 10e6; - engine->module()->onSlowCallback(); +// // Tell the sensor checker that the ignition is on +// engine->module()->onIgnitionStateChanged(true); +// engine->module()->onSlowCallback(); +// timeNowUs += 10e6; +// engine->module()->onSlowCallback(); - ASSERT_TRUE(engine->module()->analogSensorsShouldWork()); +// ASSERT_TRUE(engine->module()->analogSensorsShouldWork()); - ASSERT_FALSE(isTps1Error()); +// ASSERT_FALSE(isTps1Error()); - etb->update(); +// etb->update(); - EXPECT_EQ(0, etb->etbTpsErrorCounter); - EXPECT_EQ(0, etb->etbErrorCode); +// EXPECT_EQ(0, etb->etbTpsErrorCounter); +// EXPECT_EQ(0, etb->etbErrorCode); - int badCount = 0; +// int badCount = 0; - // Do some bad/good/bad/good cycles, make sure count keeps up - for (size_t i = 0; i < 50; i++) { - Sensor::setInvalidMockValue(SensorType::Tps1); - ASSERT_TRUE(isTps1Error()); - etb->update(); +// // Do some bad/good/bad/good cycles, make sure count keeps up +// for (size_t i = 0; i < 50; i++) { +// Sensor::setInvalidMockValue(SensorType::Tps1); +// ASSERT_TRUE(isTps1Error()); +// etb->update(); - badCount++; - EXPECT_EQ(badCount, etb->etbTpsErrorCounter); - EXPECT_EQ(0, etb->etbErrorCode); +// badCount++; +// EXPECT_EQ(badCount, etb->etbTpsErrorCounter); +// EXPECT_EQ(0, etb->etbErrorCode); - Sensor::setMockValue(SensorType::Tps1, 20); - ASSERT_FALSE(isTps1Error()); - etb->update(); - } +// Sensor::setMockValue(SensorType::Tps1, 20); +// ASSERT_FALSE(isTps1Error()); +// etb->update(); +// } - // 51st bad TPS should set etbErrorCode - Sensor::setInvalidMockValue(SensorType::Tps1); - ASSERT_TRUE(isTps1Error()); - etb->update(); +// // 51st bad TPS should set etbErrorCode +// Sensor::setInvalidMockValue(SensorType::Tps1); +// ASSERT_TRUE(isTps1Error()); +// etb->update(); - EXPECT_NE(0, etb->etbErrorCode); -} +// EXPECT_NE(0, etb->etbErrorCode); +// } -TEST(etb, intermittentPps) { - EngineTestHelper eth(engine_type_e::TEST_ENGINE); // we have a destructor so cannot move EngineTestHelper into utility method +// TEST(etb, intermittentPps) { +// EngineTestHelper eth(engine_type_e::TEST_ENGINE); // we have a destructor so cannot move EngineTestHelper into utility method - Sensor::setMockValue(SensorType::AcceleratorPedal, 10, true); - EtbController *etb = initEtbIntegratedTest(); +// Sensor::setMockValue(SensorType::AcceleratorPedal, 10, true); +// EtbController *etb = initEtbIntegratedTest(); - // Tell the sensor checker that the ignition is on - engine->module()->onIgnitionStateChanged(true); - engine->module()->onSlowCallback(); - timeNowUs += 10e6; - engine->module()->onSlowCallback(); +// // Tell the sensor checker that the ignition is on +// engine->module()->onIgnitionStateChanged(true); +// engine->module()->onSlowCallback(); +// timeNowUs += 10e6; +// engine->module()->onSlowCallback(); - ASSERT_TRUE(engine->module()->analogSensorsShouldWork()); +// ASSERT_TRUE(engine->module()->analogSensorsShouldWork()); - ASSERT_FALSE(isPedalError()); +// ASSERT_FALSE(isPedalError()); - etb->update(); +// etb->update(); - EXPECT_EQ(0, etb->etbPpsErrorCounter); - EXPECT_EQ(0, etb->etbErrorCode); +// EXPECT_EQ(0, etb->etbPpsErrorCounter); +// EXPECT_EQ(0, etb->etbErrorCode); - int badCount = 0; +// int badCount = 0; - // Do some bad/good/bad/good cycles, make sure count keeps up - for (size_t i = 0; i < 50; i++) { - Sensor::setInvalidMockValue(SensorType::AcceleratorPedal); - ASSERT_TRUE(isPedalError()); - etb->update(); +// // Do some bad/good/bad/good cycles, make sure count keeps up +// for (size_t i = 0; i < 50; i++) { +// Sensor::setInvalidMockValue(SensorType::AcceleratorPedal); +// ASSERT_TRUE(isPedalError()); +// etb->update(); - badCount++; - EXPECT_EQ(badCount, etb->etbPpsErrorCounter); - EXPECT_EQ(0, etb->etbErrorCode); +// badCount++; +// EXPECT_EQ(badCount, etb->etbPpsErrorCounter); +// EXPECT_EQ(0, etb->etbErrorCode); - Sensor::setMockValue(SensorType::AcceleratorPedal, 20); - ASSERT_FALSE(isPedalError()); - etb->update(); - } +// Sensor::setMockValue(SensorType::AcceleratorPedal, 20); +// ASSERT_FALSE(isPedalError()); +// etb->update(); +// } - // 51st bad TPS should set etbErrorCode - Sensor::setInvalidMockValue(SensorType::AcceleratorPedal); - ASSERT_TRUE(isPedalError()); - etb->update(); - EXPECT_NE(0, etb->etbErrorCode); -} +// // 51st bad TPS should set etbErrorCode +// Sensor::setInvalidMockValue(SensorType::AcceleratorPedal); +// ASSERT_TRUE(isPedalError()); +// etb->update(); +// EXPECT_NE(0, etb->etbErrorCode); +// } diff --git a/unit_tests/tests/ignition_injection/injection_mode_transition.cpp b/unit_tests/tests/ignition_injection/injection_mode_transition.cpp index c4b19ef995..94a2e03d4f 100644 --- a/unit_tests/tests/ignition_injection/injection_mode_transition.cpp +++ b/unit_tests/tests/ignition_injection/injection_mode_transition.cpp @@ -56,8 +56,6 @@ TEST(fuelControl, transitionIssue1592) { // Test the transition from batch cranking to sequential running engineConfiguration->crankingInjectionMode = IM_BATCH; - engineConfiguration->twoWireBatchInjection = true; - // First sync point will schedule cranking pulse since we're in "faster spin up" mode doRevolution(eth, 240); diff --git a/unit_tests/tests/ignition_injection/test_injector_model.cpp b/unit_tests/tests/ignition_injection/test_injector_model.cpp index 67196f21b4..b74497b6eb 100644 --- a/unit_tests/tests/ignition_injection/test_injector_model.cpp +++ b/unit_tests/tests/ignition_injection/test_injector_model.cpp @@ -319,6 +319,11 @@ TEST(InjectorModel, MissingPressureSensor) { // Sensor is missing! Sensor::resetMockValue(SensorType::FuelPressureInjector); - // Missing sensor should trigger a fatal as it's a misconfiguration - EXPECT_FATAL_ERROR(dut.getInjectorFlowRatio()); + // no warning before + ASSERT_EQ(0, eth.recentWarnings()->getCount()); + + // Missing sensor should return 1.0 flow ratio and log a warning + EXPECT_EQ(1.0f, dut.getInjectorFlowRatio()); + + EXPECT_EQ(1, eth.recentWarnings()->getCount()); } diff --git a/unit_tests/tests/tests.mk b/unit_tests/tests/tests.mk index f59e651f32..e151ce7398 100644 --- a/unit_tests/tests/tests.mk +++ b/unit_tests/tests/tests.mk @@ -11,6 +11,7 @@ TESTS_SRC_CPP = \ tests/trigger/test_real_cranking_miata_NA.cpp \ tests/trigger/test_real_cranking_miata_na6.cpp \ tests/trigger/test_real_cranking_nissan_vq40.cpp \ + tests/trigger/test_real_cas_24_plus_1.cpp \ tests/trigger/test_trigger_skipped_wheel.cpp \ tests/trigger/test_real_4b11.cpp \ tests/trigger/test_real_4g93.cpp \ diff --git a/unit_tests/tests/trigger/resources/cas_nissan_24_plus_1.csv b/unit_tests/tests/trigger/resources/cas_nissan_24_plus_1.csv new file mode 100644 index 0000000000..b40e8ad7c6 --- /dev/null +++ b/unit_tests/tests/trigger/resources/cas_nissan_24_plus_1.csv @@ -0,0 +1,449 @@ +timestamp,pri,sec +8.937617,1,0 +8.940322,0,0 +8.943855,1,0 +8.946542,0,0 +8.950059,1,0 +8.952713,0,0 +8.956174,1,0 +8.958801,0,0 +8.962274,1,0 +8.964871,0,0 +8.968273,1,0 +8.97086,0,0 +8.974244,1,0 +8.976776,0,0 +8.980122,1,0 +8.982656,0,0 +8.98595,1,0 +8.988429,0,0 +8.991714,1,0 +8.9942,0,0 +8.997441,1,0 +8.999913,0,0 +9.003146,1,0 +9.005591,0,0 +9.008795,1,0 +9.011229,0,0 +9.014393,1,0 +9.016801,0,0 +9.019959,1,0 +9.022345,0,0 +9.025471,1,0 +9.027858,0,0 +9.030973,1,0 +9.033345,0,0 +9.036436,1,0 +9.036453,1,0 +9.036456,1,0 +9.038789,0,0 +9.041863,1,0 +9.043581,1,1 +9.044232,0,1 +9.045688,0,0 +9.047325,1,0 +9.049667,0,0 +9.052764,1,0 +9.05512,0,0 +9.05818,1,0 +9.060501,0,0 +9.063539,1,0 +9.065865,0,0 +9.068908,1,0 +9.07121,0,0 +9.074194,1,0 +9.076471,0,0 +9.079485,1,0 +9.081775,0,0 +9.084792,1,0 +9.087073,0,0 +9.090081,1,0 +9.092347,0,0 +9.095342,1,0 +9.097615,0,0 +9.100608,1,0 +9.102871,0,0 +9.105835,1,0 +9.10808,0,0 +9.111051,1,0 +9.113295,0,0 +9.116238,1,0 +9.118473,0,0 +9.12144,1,0 +9.123696,0,0 +9.12665,1,0 +9.128885,0,0 +9.131805,1,0 +9.134014,0,0 +9.136925,1,0 +9.139134,0,0 +9.142013,1,0 +9.144209,0,0 +9.147095,1,0 +9.149276,0,0 +9.152151,1,0 +9.154355,0,0 +9.157222,1,0 +9.159417,0,0 +9.162306,1,0 +9.162323,1,0 +9.162326,1,0 +9.164505,0,0 +9.167362,1,0 +9.168955,1,1 +9.169557,0,1 +9.170915,0,0 +9.172439,1,0 +9.174624,0,0 +9.1775,1,0 +9.179671,0,0 +9.182513,1,0 +9.184695,0,0 +9.187535,1,0 +9.189694,0,0 +9.192531,1,0 +9.194711,0,0 +9.19756,1,0 +9.199707,0,0 +9.202535,1,0 +9.204697,0,0 +9.207539,1,0 +9.209694,0,0 +9.212523,1,0 +9.21465,0,0 +9.21748,1,0 +9.219632,0,0 +9.222457,1,0 +9.224588,0,0 +9.227414,1,0 +9.229568,0,0 +9.2324,1,0 +9.234544,0,0 +9.237382,1,0 +9.239545,0,0 +9.242387,1,0 +9.244523,0,0 +9.247338,1,0 +9.249473,0,0 +9.252262,1,0 +9.254372,0,0 +9.257163,1,0 +9.259285,0,0 +9.262046,1,0 +9.264156,0,0 +9.266941,1,0 +9.269059,0,0 +9.27184,1,0 +9.273976,0,0 +9.276768,1,0 +9.278891,0,0 +9.281655,1,0 +9.281674,1,0 +9.281676,1,0 +9.283768,0,0 +9.28654,1,0 +9.288081,1,1 +9.288662,0,1 +9.289956,0,0 +9.29141,1,0 +9.293517,0,0 +9.296308,1,0 +9.298404,0,0 +9.301169,1,0 +9.303294,0,0 +9.306082,1,0 +9.3082,0,0 +9.310982,1,0 +9.313096,0,0 +9.315838,1,0 +9.317928,0,0 +9.320701,1,0 +9.322807,0,0 +9.325562,1,0 +9.327657,0,0 +9.330424,1,0 +9.332503,0,0 +9.335259,1,0 +9.337373,0,0 +9.340174,1,0 +9.342285,0,0 +9.345053,1,0 +9.347155,0,0 +9.349943,1,0 +9.352051,0,0 +9.3548,1,0 +9.356893,0,0 +9.359678,1,0 +9.361763,0,0 +9.364493,1,0 +9.366583,0,0 +9.369345,1,0 +9.371441,0,0 +9.374206,1,0 +9.3763,0,0 +9.379032,1,0 +9.381124,0,0 +9.383883,1,0 +9.385974,0,0 +9.388702,1,0 +9.390794,0,0 +9.39354,1,0 +9.395632,0,0 +9.398357,1,0 +9.398375,1,0 +9.398377,1,0 +9.400441,0,0 +9.403164,1,0 +9.404667,1,1 +9.405233,0,1 +9.406507,0,0 +9.407949,1,0 +9.410042,0,0 +9.412814,1,0 +9.414893,0,0 +9.417629,1,0 +9.41973,0,0 +9.422472,1,0 +9.424542,0,0 +9.427269,1,0 +9.429352,0,0 +9.432057,1,0 +9.434112,0,0 +9.43684,1,0 +9.438912,0,0 +9.441628,1,0 +9.443687,0,0 +9.4464,1,0 +9.448466,0,0 +9.451215,1,0 +9.453288,0,0 +9.456027,1,0 +9.45811,0,0 +9.460841,1,0 +9.462908,0,0 +9.465636,1,0 +9.467705,0,0 +9.470415,1,0 +9.472482,0,0 +9.475204,1,0 +9.477254,0,0 +9.479978,1,0 +9.482068,0,0 +9.484803,1,0 +9.486864,0,0 +9.48959,1,0 +9.491665,0,0 +9.494355,1,0 +9.496401,0,0 +9.499116,1,0 +9.501184,0,0 +9.50389,1,0 +9.505949,0,0 +9.508647,1,0 +9.510717,0,0 +9.51342,1,0 +9.513438,1,0 +9.51344,1,0 +9.515482,0,0 +9.518196,1,0 +9.519716,1,1 +9.52029,0,1 +9.521578,0,0 +9.523021,1,0 +9.525097,0,0 +9.52783,1,0 +9.529905,0,0 +9.532637,1,0 +9.534727,0,0 +9.537436,1,0 +9.539497,0,0 +9.542209,1,0 +9.544278,0,0 +9.546987,1,0 +9.549046,0,0 +9.551775,1,0 +9.553853,0,0 +9.556589,1,0 +9.558648,0,0 +9.561369,1,0 +9.563429,0,0 +9.566165,1,0 +9.568231,0,0 +9.570969,1,0 +9.573039,0,0 +9.575739,1,0 +9.577801,0,0 +9.58054,1,0 +9.582614,0,0 +9.585336,1,0 +9.587418,0,0 +9.59017,1,0 +9.592253,0,0 +9.594983,1,0 +9.597075,0,0 +9.599817,1,0 +9.601879,0,0 +9.60458,1,0 +9.606634,0,0 +9.609345,1,0 +9.611412,0,0 +9.614115,1,0 +9.616172,0,0 +9.618886,1,0 +9.620961,0,0 +9.62368,1,0 +9.625759,0,0 +9.628485,1,0 +9.628503,1,0 +9.628505,1,0 +9.630569,0,0 +9.633305,1,0 +9.634817,1,1 +9.635386,0,1 +9.636661,0,0 +9.638091,1,0 +9.640162,0,0 +9.642911,1,0 +9.644975,0,0 +9.647684,1,0 +9.64977,0,0 +9.652508,1,0 +9.654576,0,0 +9.657287,1,0 +9.659374,0,0 +9.662116,1,0 +9.664198,0,0 +9.666913,1,0 +9.668979,0,0 +9.67171,1,0 +9.673771,0,0 +9.676491,1,0 +9.678549,0,0 +9.681278,1,0 +9.683341,0,0 +9.686078,1,0 +9.688154,0,0 +9.690892,1,0 +9.692982,0,0 +9.695743,1,0 +9.697826,0,0 +9.700568,1,0 +9.702654,0,0 +9.705395,1,0 +9.707474,0,0 +9.71021,1,0 +9.712288,0,0 +9.715014,1,0 +9.717077,0,0 +9.719783,1,0 +9.721845,0,0 +9.724563,1,0 +9.726647,0,0 +9.729371,1,0 +9.731449,0,0 +9.734172,1,0 +9.73624,0,0 +9.738958,1,0 +9.741047,0,0 +9.743765,1,0 +9.743782,1,0 +9.743785,1,0 +9.745828,0,0 +9.748548,1,0 +9.750056,1,1 +9.750626,0,1 +9.751901,0,0 +9.753332,1,0 +9.755398,0,0 +9.758145,1,0 +9.760222,0,0 +9.762954,1,0 +9.765045,0,0 +9.767772,1,0 +9.769846,0,0 +9.77258,1,0 +9.774655,0,0 +9.777358,1,0 +9.779424,0,0 +9.782146,1,0 +9.7842,0,0 +9.786895,1,0 +9.788949,0,0 +9.791672,1,0 +9.793733,0,0 +9.79644,1,0 +9.798496,0,0 +9.801232,1,0 +9.803315,0,0 +9.806042,1,0 +9.808106,0,0 +9.81084,1,0 +9.812906,0,0 +9.815611,1,0 +9.81766,0,0 +9.820372,1,0 +9.822437,0,0 +9.825159,1,0 +9.827213,0,0 +9.829919,1,0 +9.831982,0,0 +9.834686,1,0 +9.83674,0,0 +9.839434,1,0 +9.841492,0,0 +9.844191,1,0 +9.846241,0,0 +9.848928,1,0 +9.850984,0,0 +9.853681,1,0 +9.855738,0,0 +9.858414,1,0 +9.858431,1,0 +9.858434,1,0 +9.860461,0,0 +9.863141,1,0 +9.86463,1,1 +9.865194,0,1 +9.866461,0,0 +9.867891,1,0 +9.869958,0,0 +9.872688,1,0 +9.874751,0,0 +9.877467,1,0 +9.879533,0,0 +9.882227,1,0 +9.884286,0,0 +9.886998,1,0 +9.889044,0,0 +9.891724,1,0 +9.893765,0,0 +9.896442,1,0 +9.898487,0,0 +9.9012,1,0 +9.903256,0,0 +9.905954,1,0 +9.908,0,0 +9.910716,1,0 +9.912772,0,0 +9.915478,1,0 +9.917528,0,0 +9.920245,1,0 +9.922298,0,0 +9.924992,1,0 +9.927023,0,0 +9.929717,1,0 +9.931773,0,0 +9.934469,1,0 +9.936519,0,0 +9.939243,1,0 +9.941315,0,0 +9.944002,1,0 +9.946039,0,0 +9.948735,1,0 +9.950783,0,0 +9.953461,1,0 +9.955485,0,0 +9.958163,1,0 +9.960207,0,0 +9.962884,1,0 +9.964915,0,0 diff --git a/unit_tests/tests/trigger/test_fasterEngineSpinningUp.cpp b/unit_tests/tests/trigger/test_fasterEngineSpinningUp.cpp index d7452c56b5..28924f6b5a 100644 --- a/unit_tests/tests/trigger/test_fasterEngineSpinningUp.cpp +++ b/unit_tests/tests/trigger/test_fasterEngineSpinningUp.cpp @@ -79,7 +79,7 @@ TEST(cranking, testFasterEngineSpinningUp) { eth.assertEvent5("inj end#2", 1, (void*)endSimultaneousInjection, 149999); // Now perform a fake VVT sync and check that ignition mode changes to sequential - engine->triggerCentral.syncAndReport(1, 0); + engine->triggerCentral.syncAndReport(2, 0); ASSERT_EQ(IM_SEQUENTIAL, getCurrentIgnitionMode()); // skip, clear & advance 1 more revolution at higher RPM diff --git a/unit_tests/tests/trigger/test_real_cas_24_plus_1.cpp b/unit_tests/tests/trigger/test_real_cas_24_plus_1.cpp new file mode 100644 index 0000000000..18185ad436 --- /dev/null +++ b/unit_tests/tests/trigger/test_real_cas_24_plus_1.cpp @@ -0,0 +1,64 @@ +// Mitsubishi 4B11 trigger pattern +// Crank: 36-2-1 +// Cam: Single tooth (half moon) + +#include "pch.h" + +#include "logicdata_csv_reader.h" + +TEST(realCas24Plus1, spinningOnBench) { + CsvReader reader(1, /* vvtCount */ 1); + + reader.open("tests/trigger/resources/cas_nissan_24_plus_1.csv"); + EngineTestHelper eth(engine_type_e::TEST_ENGINE); + + engineConfiguration->isFasterEngineSpinUpEnabled = true; + engineConfiguration->alwaysInstantRpm = true; + + engineConfiguration->isPhaseSyncRequiredForIgnition = true; + + // 24 teeth at cam speed + 1 tooth + // AKA 12 teeth at crank speed + 1 cam tooth + engineConfiguration->vvtMode[0] = VVT_SECOND_HALF; + eth.setTriggerType(trigger_type_e::TT_12_TOOTH_CRANK); + + int eventCount = 0; + bool gotRpm = false; + bool gotFullSync = false; + + while (reader.haveMore()) { + reader.processLine(ð); + eventCount++; + engine->rpmCalculator.onSlowCallback(); + + // Expect that all teeth are in the correct spot + float angleError = getTriggerCentral()->triggerToothAngleError; + EXPECT_TRUE(angleError < 3 && angleError > -3) << "tooth angle of " << angleError << " at timestamp " << (getTimeNowNt() / 1e8); + + auto rpm = Sensor::getOrZero(SensorType::Rpm); + if (!gotRpm && rpm) { + gotRpm = true; + + // We should get first RPM on exactly the first (primary) sync point - this means the instant RPM pre-sync event copy all worked OK + EXPECT_EQ(eventCount, 7); + EXPECT_NEAR(rpm, 808.32f, 0.1); + } + + bool hasFullSync = getTriggerCentral()->triggerState.hasSynchronizedPhase(); + if (!gotFullSync && hasFullSync) { + gotFullSync = true; + + // Should get full sync on the first cam tooth + EXPECT_EQ(eventCount, 40); + EXPECT_NEAR(rpm, 915.08f, 0.1); + } + + float vvt = engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/0); + if (vvt != 0) { + // cam position should never be reported outside of correct range + EXPECT_TRUE(vvt > -10 && vvt < -9); + } + } + + ASSERT_EQ(0, eth.recentWarnings()->getCount()); +} diff --git a/unit_tests/tests/trigger/test_trigger_decoder.cpp b/unit_tests/tests/trigger/test_trigger_decoder.cpp index dbf2187ab7..b8dd025e97 100644 --- a/unit_tests/tests/trigger/test_trigger_decoder.cpp +++ b/unit_tests/tests/trigger/test_trigger_decoder.cpp @@ -420,7 +420,6 @@ static void setTestBug299(EngineTestHelper *eth) { .WillRepeatedly(Return(AirmassResult{0.1008001f, 50.0f})); Engine *engine = ð->engine; - eth->assertRpm(0, "RPM=0"); @@ -443,18 +442,18 @@ static void setTestBug299(EngineTestHelper *eth) { // inj #1 |........|.......#|........|.......#| ASSERT_EQ( 4, engine->executor.size()) << "qs#00"; ASSERT_EQ( 3, getRevolutionCounter()) << "rev cnt#3"; - eth->assertInjectorUpEvent("setTestBug299: 1@0", 0, MS2US(8.5), 0); - eth->assertInjectorDownEvent("@1", 1, MS2US(10), 0); - eth->assertInjectorUpEvent("1@2", 2, MS2US(18.5), 1); - eth->assertInjectorDownEvent("1@3", 3, MS2US(20), 1); + eth->assertInjectorUpEvent("setTestBug299: 1@0", 0, MS2US(8.5), 2); + eth->assertInjectorDownEvent("@1", 1, MS2US(10), 2); + eth->assertInjectorUpEvent("1@2", 2, MS2US(18.5), 3); + eth->assertInjectorDownEvent("1@3", 3, MS2US(20), 3); ASSERT_EQ( 0, eth->executeActions()) << "exec#0"; FuelSchedule * t = &engine->injectionEvents; - assertInjectionEvent("#0", &t->elements[0], 0, 1, 153 + 360); - assertInjectionEvent("#1_i_@", &t->elements[1], 1, 1, 333 + 360); - assertInjectionEvent("#2@", &t->elements[2], 0, 0, 153); - assertInjectionEvent("inj#3@", &t->elements[3], 1, 0, 153 + 180); + assertInjectionEventBatch("#0", &t->elements[0], 0, 3, 1, 153 + 360); + assertInjectionEventBatch("#1_i_@", &t->elements[1], 2, 1, 1, 333 + 360); + assertInjectionEventBatch("#2@", &t->elements[2], 3, 0, 0, 153); + assertInjectionEventBatch("inj#3@", &t->elements[3], 1, 2, 0, 153 + 180); /** * Trigger down - no new events, executing some @@ -466,10 +465,10 @@ static void setTestBug299(EngineTestHelper *eth) { // inj #1 |........|.......#|........|.......#| ASSERT_EQ( 8, engine->executor.size()) << "qs#0"; ASSERT_EQ( 3, getRevolutionCounter()) << "rev cnt#3"; - eth->assertInjectorUpEvent("02@0", 0, MS2US(-11.5), 0); - eth->assertInjectorDownEvent("@1", 1, MS2US(-10), 0); - eth->assertInjectorUpEvent("@2", 2, MS2US(-1.5), 1); - eth->assertInjectorDownEvent("02@3", 3, MS2US(0), 1); + eth->assertInjectorUpEvent("02@0", 0, MS2US(-11.5), 2); + eth->assertInjectorDownEvent("@1", 1, MS2US(-10), 2); + eth->assertInjectorUpEvent("@2", 2, MS2US(-1.5), 3); + eth->assertInjectorDownEvent("02@3", 3, MS2US(0), 3); eth->assertInjectorUpEvent("02@4", 4, MS2US(8.5), 0); eth->assertInjectorDownEvent("@5", 5, MS2US(10), 0); eth->assertInjectorUpEvent("02@6", 6, MS2US(18.5), 1); @@ -493,10 +492,10 @@ static void setTestBug299(EngineTestHelper *eth) { // time...|-20.....|-10.....|0.......|10......|20 // inj #0 |.......#|........|.......#|........| // inj #1 |........|.......#|........|.......#| - eth->assertInjectorUpEvent("2@0", 0, MS2US(8.5), 0); - eth->assertInjectorDownEvent("@1", 1, MS2US(10), 0); - eth->assertInjectorUpEvent("@2", 2, MS2US(18.5), 1); - eth->assertInjectorDownEvent("2@3", 3, MS2US(20), 1); + eth->assertInjectorUpEvent("2@0", 0, MS2US(8.5), 2); + eth->assertInjectorDownEvent("@1", 1, MS2US(10), 2); + eth->assertInjectorUpEvent("@2", 2, MS2US(18.5), 3); + eth->assertInjectorDownEvent("2@3", 3, MS2US(20), 3); ASSERT_EQ( 0, eth->executeActions()) << "exec#2"; @@ -620,10 +619,10 @@ void doTestFuelSchedulerBug299smallAndMedium(int startUpDelayMs) { t = &engine->injectionEvents; - assertInjectionEvent("#0", &t->elements[0], 0, 0, 315); - assertInjectionEvent("#1__", &t->elements[1], 1, 1, 495); - assertInjectionEvent("inj#2", &t->elements[2], 0, 0, 153); - assertInjectionEvent("inj#3", &t->elements[3], 1, 0, 333); + assertInjectionEventBatch("#0", &t->elements[0], 0, 3, 0, 315); + assertInjectionEventBatch("#1__", &t->elements[1], 2, 1, 1, 495); + assertInjectionEventBatch("inj#2", &t->elements[2], 3, 0, 0, 153); + assertInjectionEventBatch("inj#3", &t->elements[3], 1, 2, 0, 333); eth.moveTimeForwardUs(MS2US(20)); ASSERT_EQ( 5, engine->executor.size()) << "qs#02"; @@ -692,10 +691,10 @@ void doTestFuelSchedulerBug299smallAndMedium(int startUpDelayMs) { eth.firePrimaryTriggerRise(); ASSERT_EQ( 5, engine->executor.size()) << "Queue.size#03"; - eth.assertInjectorUpEvent("07@0", 0, MS2US(7.5), 1); - eth.assertInjectorDownEvent("07@1", 1, MS2US(10), 0); + eth.assertInjectorUpEvent("07@0", 0, MS2US(7.5), 3); + eth.assertInjectorDownEvent("07@1", 1, MS2US(10), 2); eth.assertInjectorUpEvent("07@2", 2, MS2US(17.5), 0); - eth.assertInjectorDownEvent("07@3", 3, MS2US(20), 1); + eth.assertInjectorDownEvent("07@3", 3, MS2US(20), 3); eth.assertInjectorDownEvent("07@4", 4, MS2US(30), 0); // assertInjectorDownEvent("07@5", 5, MS2US(30), 0); // assertInjectorUpEvent("07@6", 6, MS2US(37.5), 0); @@ -708,10 +707,10 @@ void doTestFuelSchedulerBug299smallAndMedium(int startUpDelayMs) { t = &engine->injectionEvents; - assertInjectionEvent("#0#", &t->elements[0], 0, 0, 135 + 180); - assertInjectionEvent("#1#", &t->elements[1], 1, 1, 135 + 360); - assertInjectionEvent("#2#", &t->elements[2], 0, 1, 135 + 540); - assertInjectionEvent("#3#", &t->elements[3], 1, 0, 135); + assertInjectionEventBatch("#0#", &t->elements[0], 0, 3, 0, 135 + 180); + assertInjectionEventBatch("#1#", &t->elements[1], 2, 1, 1, 135 + 360); + assertInjectionEventBatch("#2#", &t->elements[2], 3, 0, 1, 135 + 540); + assertInjectionEventBatch("#3#", &t->elements[3], 1, 2, 0, 135); engine->engineState.injectionDuration = 17.5; // Injection duration of 17.5ms @@ -723,7 +722,7 @@ void doTestFuelSchedulerBug299smallAndMedium(int startUpDelayMs) { assertEqualsM("duty for maf=3", 87.5, getInjectorDutyCycle(round(Sensor::getOrZero(SensorType::Rpm)))); - assertInjectionEvent("#03", &t->elements[0], 0, 0, 315); + assertInjectionEventBatch("#03", &t->elements[0], 0, 3, 0, 315); ASSERT_EQ( 1, enginePins.injectors[0].currentLogicValue) << "inj#0"; @@ -753,10 +752,10 @@ void doTestFuelSchedulerBug299smallAndMedium(int startUpDelayMs) { t = &engine->injectionEvents; - assertInjectionEvent("#00", &t->elements[0], 0, 0, 225); // 87.5 duty cycle - assertInjectionEvent("#10", &t->elements[1], 1, 1, 45 + 360); - assertInjectionEvent("#20", &t->elements[2], 0, 1, 225 + 360); - assertInjectionEvent("#30", &t->elements[3], 1, 0, 45); + assertInjectionEventBatch("#00", &t->elements[0], 0, 3, 0, 225); // 87.5 duty cycle + assertInjectionEventBatch("#10", &t->elements[1], 2, 1, 1, 45 + 360); + assertInjectionEventBatch("#20", &t->elements[2], 3, 0, 1, 225 + 360); + assertInjectionEventBatch("#30", &t->elements[3], 1, 2, 0, 45); // todo: what's what? a mix of new something and old something? ASSERT_EQ( 4, engine->executor.size()) << "qs#5"; @@ -795,7 +794,6 @@ TEST(big, testTwoWireBatch) { .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); engineConfiguration->injectionMode = IM_BATCH; - engineConfiguration->twoWireBatchInjection = true; eth.fireTriggerEventsWithDuration(20); // still no RPM since need to cycles measure cycle duration @@ -815,7 +813,6 @@ TEST(big, testTwoWireBatch) { assertInjectionEventBatch("inj#3@", &t->elements[3], 1, 2, 0, 153 + 180); // Cyl 2 and 3 } - TEST(big, testSequential) { EngineTestHelper eth(engine_type_e::TEST_ENGINE); setTable(config->injectionPhase, -180.0f); @@ -844,6 +841,62 @@ TEST(big, testSequential) { assertInjectionEvent("inj#3@", &t->elements[3], 1, 0, 126 + 180); // Cyl 2 } +TEST(big, testBatch) { + EngineTestHelper eth(engine_type_e::TEST_ENGINE); + setTable(config->injectionPhase, -180.0f); + EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) + .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); + + setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); + + engineConfiguration->injectionMode = IM_BATCH; + + eth.fireTriggerEventsWithDuration(20); + // still no RPM since need to cycles measure cycle duration + eth.fireTriggerEventsWithDuration(20); + eth.executeActions(); + + /** + * Trigger up - scheduling fuel for full engine cycle + */ + eth.fireRise(20); + + FuelSchedule * t = &engine->injectionEvents; + + assertInjectionEventBatch("#0", &t->elements[0], 0, 3, 1, 153 + 360); // Cyl 1 + 4 + assertInjectionEventBatch("#1_i_@", &t->elements[1], 2, 1, 1, 153 + 540); // Cyl 3 + 2 + assertInjectionEventBatch("#2@", &t->elements[2], 3, 0, 0, 153); // Cyl 4 + 1 + assertInjectionEventBatch("inj#3@", &t->elements[3], 1, 2, 0, 153 + 180); // Cyl 2 + 3 +} + +TEST(big, testSinglePoint) { + EngineTestHelper eth(engine_type_e::TEST_ENGINE); + setTable(config->injectionPhase, -180.0f); + EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _)) + .WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f})); + + setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð); + + engineConfiguration->injectionMode = IM_SINGLE_POINT; + + eth.fireTriggerEventsWithDuration(20); + // still no RPM since need to cycles measure cycle duration + eth.fireTriggerEventsWithDuration(20); + eth.executeActions(); + + /** + * Trigger up - scheduling fuel for full engine cycle + */ + eth.fireRise(20); + + FuelSchedule * t = &engine->injectionEvents; + + assertInjectionEvent("#0", &t->elements[0], 0, 1, 126 + 360); // Cyl 1 + assertInjectionEvent("#1_i_@", &t->elements[1], 0, 1, 126 + 540); // Cyl 3 + assertInjectionEvent("#2@", &t->elements[2], 0, 0, 126); // Cyl 4 + assertInjectionEvent("inj#3@", &t->elements[3], 0, 0, 126 + 180); // Cyl 2 +} + TEST(big, testFuelSchedulerBug299smallAndLarge) { EngineTestHelper eth(engine_type_e::TEST_ENGINE); setTable(config->injectionPhase, -180.0f); @@ -876,12 +929,12 @@ TEST(big, testFuelSchedulerBug299smallAndLarge) { // inj #0 |########|########|########|.....###|########|........|........| // inj #1 |..######|########|....####|########|........|........|........| ASSERT_EQ( 6, engine->executor.size()) << "Lqs#4"; - eth.assertInjectorUpEvent("L04@0", 0, MS2US(8.5), 0); + eth.assertInjectorUpEvent("L04@0", 0, MS2US(8.5), 2); eth.assertInjectorUpEvent("L04@1", 1, MS2US(12.5), 0); // special overlapping injection is merged with one of the scheduled injections - eth.assertInjectorUpEvent("L04@2", 2, MS2US(18.5), 1); + eth.assertInjectorUpEvent("L04@2", 2, MS2US(18.5), 3); - eth.assertInjectorDownEvent("L04@3", 3, MS2US(26), 0); + eth.assertInjectorDownEvent("L04@3", 3, MS2US(26), 2); eth.assertInjectorDownEvent("L04@4", 4, MS2US(30), 0); // assertInjectorDownEvent("L04@5", 5, MS2US(30), 0); @@ -902,11 +955,11 @@ TEST(big, testFuelSchedulerBug299smallAndLarge) { eth.fireFall(20); ASSERT_EQ( 6, engine->executor.size()) << "Lqs#04"; - eth.assertInjectorUpEvent("L015@0", 0, MS2US(-1.5), 1); + eth.assertInjectorUpEvent("L015@0", 0, MS2US(-1.5), 3); eth.assertInjectorUpEvent("L015@1", 1, MS2US(2.5), 1); - eth.assertInjectorDownEvent("L015@2", 2, MS2US(6), 0); + eth.assertInjectorDownEvent("L015@2", 2, MS2US(6), 2); eth.assertInjectorDownEvent("L015@3", 3, MS2US(10), 0); - eth.assertInjectorDownEvent("L015@4", 4, MS2US(16), 1); + eth.assertInjectorDownEvent("L015@4", 4, MS2US(16), 3); //todo assertInjectorDownEvent("L015@5", 5, MS2US(30), 0); @@ -948,10 +1001,10 @@ TEST(big, testFuelSchedulerBug299smallAndLarge) { eth.firePrimaryTriggerRise(); ASSERT_EQ( 4, engine->executor.size()) << "Lqs#5"; - eth.assertInjectorUpEvent("L05@0", 0, MS2US(8), 0); - eth.assertInjectorDownEvent("L05@1", 1, MS2US(10), 0); - eth.assertInjectorUpEvent("L05@2", 2, MS2US(18), 1); - eth.assertInjectorDownEvent("L05@3", 3, MS2US(20), 1); + eth.assertInjectorUpEvent("L05@0", 0, MS2US(8), 2); + eth.assertInjectorDownEvent("L05@1", 1, MS2US(10), 2); + eth.assertInjectorUpEvent("L05@2", 2, MS2US(18), 3); + eth.assertInjectorDownEvent("L05@3", 3, MS2US(20), 3); eth.moveTimeForwardUs(MS2US(20)); eth.executeActions(); @@ -974,7 +1027,7 @@ TEST(big, testSparkReverseOrderBug319) { setConstantDwell(45); - engine->triggerCentral.syncAndReport(1, 0); + engine->triggerCentral.syncAndReport(2, 0); // this is needed to update injectorLag engine->updateSlowSensors(); @@ -987,7 +1040,7 @@ TEST(big, testSparkReverseOrderBug319) { eth.fireRise(20); eth.fireFall(20); - engine->triggerCentral.syncAndReport(1, 0); + engine->triggerCentral.syncAndReport(2, 0); eth.executeActions();