From 9b437cf2d60d5ab5b9b89249771616217cdddf97 Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Sun, 26 Sep 2021 21:56:36 +0000 Subject: [PATCH] Auto-generated configs and docs --- ...ngine_configuration_generated_structures.h | 6 ++--- .../controllers/algo/rusefi_generated.h | 10 ++++----- ...ngine_configuration_generated_structures.h | 6 ++--- .../controllers/algo/rusefi_generated.h | 10 ++++----- ...ngine_configuration_generated_structures.h | 6 ++--- .../controllers/algo/rusefi_generated.h | 10 ++++----- ...ngine_configuration_generated_structures.h | 6 ++--- .../generated/fsio_enums_generated.def | 2 +- .../controllers/generated/fsio_getters.def | 2 +- firmware/controllers/generated/fsio_names.def | 2 +- .../controllers/generated/fsio_strings.def | 2 +- .../controllers/generated/rusefi_generated.h | 10 ++++----- .../controllers/generated/signature_all.h | 6 ++--- .../controllers/generated/signature_atlas.h | 6 ++--- .../generated/signature_f429-discovery.h | 6 ++--- .../generated/signature_frankenso_na6.h | 6 ++--- .../generated/signature_hellen-nb1.h | 6 ++--- .../generated/signature_hellen121nissan.h | 6 ++--- .../generated/signature_hellen121vag.h | 6 ++--- .../generated/signature_hellen128.h | 6 ++--- .../generated/signature_hellen154hyundai.h | 6 ++--- .../generated/signature_hellen72.h | 6 ++--- .../generated/signature_hellenNA6.h | 6 ++--- .../generated/signature_hellen_cypress.h | 6 ++--- .../controllers/generated/signature_kin.h | 6 ++--- .../controllers/generated/signature_mre_f4.h | 6 ++--- .../controllers/generated/signature_mre_f7.h | 6 ++--- .../generated/signature_prometheus_405.h | 6 ++--- .../generated/signature_prometheus_469.h | 6 ++--- .../generated/signature_proteus_f4.h | 6 ++--- .../generated/signature_proteus_f7.h | 6 ++--- .../generated/signature_subaru_eg33_f7.h | 6 ++--- firmware/tunerstudio/generated/cache.zip | Bin 1966361 -> 1967241 bytes firmware/tunerstudio/generated/rusefi.ini | 21 +++++++++--------- .../tunerstudio/generated/rusefi_atlas.ini | 21 +++++++++--------- .../generated/rusefi_f429-discovery.ini | 21 +++++++++--------- .../generated/rusefi_frankenso_na6.ini | 21 +++++++++--------- .../generated/rusefi_hellen-nb1.ini | 21 +++++++++--------- .../generated/rusefi_hellen121nissan.ini | 21 +++++++++--------- .../generated/rusefi_hellen121vag.ini | 21 +++++++++--------- .../generated/rusefi_hellen128mercedes.ini | 21 +++++++++--------- .../generated/rusefi_hellen154hyundai.ini | 21 +++++++++--------- .../tunerstudio/generated/rusefi_hellen72.ini | 21 +++++++++--------- .../generated/rusefi_hellenNA6.ini | 21 +++++++++--------- .../generated/rusefi_hellen_cypress.ini | 21 +++++++++--------- .../tunerstudio/generated/rusefi_kinetis.ini | 21 +++++++++--------- .../tunerstudio/generated/rusefi_mre_f4.ini | 21 +++++++++--------- .../tunerstudio/generated/rusefi_mre_f7.ini | 21 +++++++++--------- .../generated/rusefi_prometheus_405.ini | 21 +++++++++--------- .../generated/rusefi_prometheus_469.ini | 21 +++++++++--------- .../generated/rusefi_proteus_f4.ini | 21 +++++++++--------- .../generated/rusefi_proteus_f7.ini | 21 +++++++++--------- .../generated/rusefi_subaru_eg33_f7.ini | 21 +++++++++--------- .../com/rusefi/config/generated/Fields.java | 10 ++++----- java_console/rusefi.xml | 2 +- 55 files changed, 322 insertions(+), 302 deletions(-) diff --git a/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h index e491e87a63..98983e2ce8 100644 --- a/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Wed Sep 22 00:43:26 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Sep 26 21:55:37 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1939,7 +1939,7 @@ struct engine_configuration_s { /** * If enabled we use two H-bridges to drive stepper idle air valve offset 976 bit 2 */ - bool useHbridges : 1; + bool useHbridgesToDriveIdleStepper : 1; /** offset 976 bit 3 */ bool multisparkEnable : 1; @@ -4340,4 +4340,4 @@ struct persistent_config_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Wed Sep 22 00:43:26 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Sep 26 21:55:37 UTC 2021 diff --git a/firmware/config/boards/hellen/cypress/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/hellen/cypress/config/controllers/algo/rusefi_generated.h index f5ea4b7da3..3800f4f04c 100644 --- a/firmware/config/boards/hellen/cypress/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/hellen/cypress/config/controllers/algo/rusefi_generated.h @@ -412,7 +412,7 @@ #define ENGINE_MAKE_VAG "VAG" #define ENGINE_NOISE_CURVE_SIZE 8 #define ENGINE_SNIFFER_UNIT_US 10 -#define engine_type_e_auto_enum "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY" +#define engine_type_e_auto_enum "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110" #define engineChartSize_offset 1480 #define engineCode_offset 1128 #define engineConfiguration_offset 0 @@ -1271,8 +1271,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD hellen_cypress -#define SIGNATURE_DATE 2021.09.22 -#define SIGNATURE_HASH 2334530837 +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 2501832053 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1628,7 +1628,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.09.22.hellen_cypress.2334530837" +#define TS_SIGNATURE "rusEFI 2021.09.26.hellen_cypress.2501832053" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' @@ -1789,7 +1789,7 @@ #define useFSIO4ForSeriousEngineWarning_offset 1464 #define useFSIO5ForCriticalIssueEngineStop_offset 1464 #define useFSIOTableForCanSniffingFiltering_offset 76 -#define useHbridges_offset 976 +#define useHbridgesToDriveIdleStepper_offset 976 #define useIacPidMultTable_offset 1476 #define useIacTableForCoasting_offset 744 #define useIdleTimingPidControl_offset 744 diff --git a/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h index d793f1db34..d2c539eafd 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Wed Sep 22 00:43:24 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Sep 26 21:55:35 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1939,7 +1939,7 @@ struct engine_configuration_s { /** * If enabled we use two H-bridges to drive stepper idle air valve offset 976 bit 2 */ - bool useHbridges : 1; + bool useHbridgesToDriveIdleStepper : 1; /** offset 976 bit 3 */ bool multisparkEnable : 1; @@ -4334,4 +4334,4 @@ struct persistent_config_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Wed Sep 22 00:43:24 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Sep 26 21:55:35 UTC 2021 diff --git a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h index 7e319e549e..bc109f7b3b 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -393,7 +393,7 @@ #define ENGINE_MAKE_VAG "VAG" #define ENGINE_NOISE_CURVE_SIZE 8 #define ENGINE_SNIFFER_UNIT_US 10 -#define engine_type_e_auto_enum "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY" +#define engine_type_e_auto_enum "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110" #define engineChartSize_offset 1480 #define engineCode_offset 1128 #define engineConfiguration_offset 0 @@ -1252,8 +1252,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD kin -#define SIGNATURE_DATE 2021.09.22 -#define SIGNATURE_HASH 1954796009 +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 1790648713 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1609,7 +1609,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator true #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.09.22.kin.1954796009" +#define TS_SIGNATURE "rusEFI 2021.09.26.kin.1790648713" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' @@ -1770,7 +1770,7 @@ #define useFSIO4ForSeriousEngineWarning_offset 1464 #define useFSIO5ForCriticalIssueEngineStop_offset 1464 #define useFSIOTableForCanSniffingFiltering_offset 76 -#define useHbridges_offset 976 +#define useHbridgesToDriveIdleStepper_offset 976 #define useIacPidMultTable_offset 1476 #define useIacTableForCoasting_offset 744 #define useIdleTimingPidControl_offset 744 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 c292382df4..b69af7221b 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 @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:28 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:39 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1939,7 +1939,7 @@ struct engine_configuration_s { /** * If enabled we use two H-bridges to drive stepper idle air valve offset 976 bit 2 */ - bool useHbridges : 1; + bool useHbridgesToDriveIdleStepper : 1; /** offset 976 bit 3 */ bool multisparkEnable : 1; @@ -4340,4 +4340,4 @@ struct persistent_config_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:28 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:39 UTC 2021 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 dce470e59a..fb9eb6164b 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 @@ -412,7 +412,7 @@ #define ENGINE_MAKE_VAG "VAG" #define ENGINE_NOISE_CURVE_SIZE 8 #define ENGINE_SNIFFER_UNIT_US 10 -#define engine_type_e_auto_enum "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY" +#define engine_type_e_auto_enum "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110" #define engineChartSize_offset 1480 #define engineCode_offset 1128 #define engineConfiguration_offset 0 @@ -1272,8 +1272,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD subaru_eg33_f7 -#define SIGNATURE_DATE 2021.09.22 -#define SIGNATURE_HASH 1557147046 +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 1122557382 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1629,7 +1629,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port false -#define TS_SIGNATURE "rusEFI 2021.09.22.subaru_eg33_f7.1557147046" +#define TS_SIGNATURE "rusEFI 2021.09.26.subaru_eg33_f7.1122557382" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' @@ -1790,7 +1790,7 @@ #define useFSIO4ForSeriousEngineWarning_offset 1464 #define useFSIO5ForCriticalIssueEngineStop_offset 1464 #define useFSIOTableForCanSniffingFiltering_offset 76 -#define useHbridges_offset 976 +#define useHbridgesToDriveIdleStepper_offset 976 #define useIacPidMultTable_offset 1476 #define useIacTableForCoasting_offset 744 #define useIdleTimingPidControl_offset 744 diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index 0dbbfc1bee..d36ab70e74 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:22 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:32 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1939,7 +1939,7 @@ struct engine_configuration_s { /** * If enabled we use two H-bridges to drive stepper idle air valve offset 976 bit 2 */ - bool useHbridges : 1; + bool useHbridgesToDriveIdleStepper : 1; /** offset 976 bit 3 */ bool multisparkEnable : 1; @@ -4340,4 +4340,4 @@ struct persistent_config_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:22 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:32 UTC 2021 diff --git a/firmware/controllers/generated/fsio_enums_generated.def b/firmware/controllers/generated/fsio_enums_generated.def index fb382e6fef..2956e7ed4c 100644 --- a/firmware/controllers/generated/fsio_enums_generated.def +++ b/firmware/controllers/generated/fsio_enums_generated.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:22 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:32 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer FSIO_SETTING_ACIDLEEXTRAOFFSET = 1000, diff --git a/firmware/controllers/generated/fsio_getters.def b/firmware/controllers/generated/fsio_getters.def index cbb63869f5..db59141aa5 100644 --- a/firmware/controllers/generated/fsio_getters.def +++ b/firmware/controllers/generated/fsio_getters.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:22 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:32 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_ACIDLEEXTRAOFFSET: diff --git a/firmware/controllers/generated/fsio_names.def b/firmware/controllers/generated/fsio_names.def index 9e18ddcc96..5554368b21 100644 --- a/firmware/controllers/generated/fsio_names.def +++ b/firmware/controllers/generated/fsio_names.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:22 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:32 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer static LENameOrdinalPair leacIdleExtraOffset(FSIO_SETTING_ACIDLEEXTRAOFFSET, "cfg_acIdleExtraOffset"); diff --git a/firmware/controllers/generated/fsio_strings.def b/firmware/controllers/generated/fsio_strings.def index b8c4d72f06..2fa39a3940 100644 --- a/firmware/controllers/generated/fsio_strings.def +++ b/firmware/controllers/generated/fsio_strings.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:22 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:32 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_ACIDLEEXTRAOFFSET: diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 253049e64f..d298bdf74b 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -412,7 +412,7 @@ #define ENGINE_MAKE_VAG "VAG" #define ENGINE_NOISE_CURVE_SIZE 8 #define ENGINE_SNIFFER_UNIT_US 10 -#define engine_type_e_auto_enum "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY" +#define engine_type_e_auto_enum "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110" #define engineChartSize_offset 1480 #define engineCode_offset 1128 #define engineConfiguration_offset 0 @@ -1271,8 +1271,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD all -#define SIGNATURE_DATE 2021.09.22 -#define SIGNATURE_HASH 3378169541 +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 3613537957 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1628,7 +1628,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.09.22.all.3378169541" +#define TS_SIGNATURE "rusEFI 2021.09.26.all.3613537957" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' @@ -1789,7 +1789,7 @@ #define useFSIO4ForSeriousEngineWarning_offset 1464 #define useFSIO5ForCriticalIssueEngineStop_offset 1464 #define useFSIOTableForCanSniffingFiltering_offset 76 -#define useHbridges_offset 976 +#define useHbridgesToDriveIdleStepper_offset 976 #define useIacPidMultTable_offset 1476 #define useIacTableForCoasting_offset 744 #define useIdleTimingPidControl_offset 744 diff --git a/firmware/controllers/generated/signature_all.h b/firmware/controllers/generated/signature_all.h index 1c7969e7e2..e1dd453f2e 100644 --- a/firmware/controllers/generated/signature_all.h +++ b/firmware/controllers/generated/signature_all.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD all -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 2777193875 -#define TS_SIGNATURE "rusEFI 2021.09.24.all.2777193875" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 3613537957 +#define TS_SIGNATURE "rusEFI 2021.09.26.all.3613537957" diff --git a/firmware/controllers/generated/signature_atlas.h b/firmware/controllers/generated/signature_atlas.h index 9ef377e4dc..95d900b5cf 100644 --- a/firmware/controllers/generated/signature_atlas.h +++ b/firmware/controllers/generated/signature_atlas.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD atlas -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 2777193875 -#define TS_SIGNATURE "rusEFI 2021.09.24.atlas.2777193875" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 3613537957 +#define TS_SIGNATURE "rusEFI 2021.09.26.atlas.3613537957" diff --git a/firmware/controllers/generated/signature_f429-discovery.h b/firmware/controllers/generated/signature_f429-discovery.h index e9c3531c57..d55357b8a3 100644 --- a/firmware/controllers/generated/signature_f429-discovery.h +++ b/firmware/controllers/generated/signature_f429-discovery.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD f429-discovery -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 2777193875 -#define TS_SIGNATURE "rusEFI 2021.09.24.f429-discovery.2777193875" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 3613537957 +#define TS_SIGNATURE "rusEFI 2021.09.26.f429-discovery.3613537957" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index fcede29352..0adf72deb9 100644 --- a/firmware/controllers/generated/signature_frankenso_na6.h +++ b/firmware/controllers/generated/signature_frankenso_na6.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD frankenso_na6 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 3753560186 -#define TS_SIGNATURE "rusEFI 2021.09.24.frankenso_na6.3753560186" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 2907726668 +#define TS_SIGNATURE "rusEFI 2021.09.26.frankenso_na6.2907726668" diff --git a/firmware/controllers/generated/signature_hellen-nb1.h b/firmware/controllers/generated/signature_hellen-nb1.h index 79563f8bf1..7bcb6ae028 100644 --- a/firmware/controllers/generated/signature_hellen-nb1.h +++ b/firmware/controllers/generated/signature_hellen-nb1.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen-nb1 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 2605593754 -#define TS_SIGNATURE "rusEFI 2021.09.24.hellen-nb1.2605593754" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 3919880108 +#define TS_SIGNATURE "rusEFI 2021.09.26.hellen-nb1.3919880108" diff --git a/firmware/controllers/generated/signature_hellen121nissan.h b/firmware/controllers/generated/signature_hellen121nissan.h index 0afdf1b359..c6e36194f5 100644 --- a/firmware/controllers/generated/signature_hellen121nissan.h +++ b/firmware/controllers/generated/signature_hellen121nissan.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen121nissan -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 779732433 -#define TS_SIGNATURE "rusEFI 2021.09.24.hellen121nissan.779732433" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 1553166055 +#define TS_SIGNATURE "rusEFI 2021.09.26.hellen121nissan.1553166055" diff --git a/firmware/controllers/generated/signature_hellen121vag.h b/firmware/controllers/generated/signature_hellen121vag.h index afd7cade0c..e33425fb42 100644 --- a/firmware/controllers/generated/signature_hellen121vag.h +++ b/firmware/controllers/generated/signature_hellen121vag.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen121vag -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 4133780949 -#define TS_SIGNATURE "rusEFI 2021.09.24.hellen121vag.4133780949" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 2223953635 +#define TS_SIGNATURE "rusEFI 2021.09.26.hellen121vag.2223953635" diff --git a/firmware/controllers/generated/signature_hellen128.h b/firmware/controllers/generated/signature_hellen128.h index 35ea095a5e..8cd4bfd622 100644 --- a/firmware/controllers/generated/signature_hellen128.h +++ b/firmware/controllers/generated/signature_hellen128.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen128 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 1027721184 -#define TS_SIGNATURE "rusEFI 2021.09.24.hellen128.1027721184" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 1336634582 +#define TS_SIGNATURE "rusEFI 2021.09.26.hellen128.1336634582" diff --git a/firmware/controllers/generated/signature_hellen154hyundai.h b/firmware/controllers/generated/signature_hellen154hyundai.h index d3f4784e82..36909b0d5f 100644 --- a/firmware/controllers/generated/signature_hellen154hyundai.h +++ b/firmware/controllers/generated/signature_hellen154hyundai.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen154hyundai -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 2268259147 -#define TS_SIGNATURE "rusEFI 2021.09.24.hellen154hyundai.2268259147" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 4124592253 +#define TS_SIGNATURE "rusEFI 2021.09.26.hellen154hyundai.4124592253" diff --git a/firmware/controllers/generated/signature_hellen72.h b/firmware/controllers/generated/signature_hellen72.h index 065a2c7155..060c58e670 100644 --- a/firmware/controllers/generated/signature_hellen72.h +++ b/firmware/controllers/generated/signature_hellen72.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen72 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 3273522612 -#define TS_SIGNATURE "rusEFI 2021.09.24.hellen72.3273522612" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 2985776770 +#define TS_SIGNATURE "rusEFI 2021.09.26.hellen72.2985776770" diff --git a/firmware/controllers/generated/signature_hellenNA6.h b/firmware/controllers/generated/signature_hellenNA6.h index 7066d1aff3..d0bb2904dd 100644 --- a/firmware/controllers/generated/signature_hellenNA6.h +++ b/firmware/controllers/generated/signature_hellenNA6.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellenNA6 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 1729031367 -#define TS_SIGNATURE "rusEFI 2021.09.24.hellenNA6.1729031367" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 367282161 +#define TS_SIGNATURE "rusEFI 2021.09.26.hellenNA6.367282161" diff --git a/firmware/controllers/generated/signature_hellen_cypress.h b/firmware/controllers/generated/signature_hellen_cypress.h index c118b285ed..658f47cad2 100644 --- a/firmware/controllers/generated/signature_hellen_cypress.h +++ b/firmware/controllers/generated/signature_hellen_cypress.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen_cypress -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 3891545667 -#define TS_SIGNATURE "rusEFI 2021.09.24.hellen_cypress.3891545667" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 2501832053 +#define TS_SIGNATURE "rusEFI 2021.09.26.hellen_cypress.2501832053" diff --git a/firmware/controllers/generated/signature_kin.h b/firmware/controllers/generated/signature_kin.h index fb4cbac9d6..23eb0a5f92 100644 --- a/firmware/controllers/generated/signature_kin.h +++ b/firmware/controllers/generated/signature_kin.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD kin -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 407997119 -#define TS_SIGNATURE "rusEFI 2021.09.24.kin.407997119" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 1790648713 +#define TS_SIGNATURE "rusEFI 2021.09.26.kin.1790648713" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index 9b4eba6dcc..304cd138c7 100644 --- a/firmware/controllers/generated/signature_mre_f4.h +++ b/firmware/controllers/generated/signature_mre_f4.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD mre_f4 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 985632408 -#define TS_SIGNATURE "rusEFI 2021.09.24.mre_f4.985632408" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 1213539758 +#define TS_SIGNATURE "rusEFI 2021.09.26.mre_f4.1213539758" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index 650f302538..bee9c92bd3 100644 --- a/firmware/controllers/generated/signature_mre_f7.h +++ b/firmware/controllers/generated/signature_mre_f7.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD mre_f7 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 985632408 -#define TS_SIGNATURE "rusEFI 2021.09.24.mre_f7.985632408" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 1213539758 +#define TS_SIGNATURE "rusEFI 2021.09.26.mre_f7.1213539758" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index cdba96427c..1be7d4d6f4 100644 --- a/firmware/controllers/generated/signature_prometheus_405.h +++ b/firmware/controllers/generated/signature_prometheus_405.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD prometheus_405 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 4116857973 -#define TS_SIGNATURE "rusEFI 2021.09.24.prometheus_405.4116857973" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 2273898307 +#define TS_SIGNATURE "rusEFI 2021.09.26.prometheus_405.2273898307" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index 9c1cbd5afd..3695ddb06e 100644 --- a/firmware/controllers/generated/signature_prometheus_469.h +++ b/firmware/controllers/generated/signature_prometheus_469.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD prometheus_469 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 4116857973 -#define TS_SIGNATURE "rusEFI 2021.09.24.prometheus_469.4116857973" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 2273898307 +#define TS_SIGNATURE "rusEFI 2021.09.26.prometheus_469.2273898307" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index 1c42d5852e..cf6f210cfb 100644 --- a/firmware/controllers/generated/signature_proteus_f4.h +++ b/firmware/controllers/generated/signature_proteus_f4.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD proteus_f4 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 1129222965 -#define TS_SIGNATURE "rusEFI 2021.09.24.proteus_f4.1129222965" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 832845827 +#define TS_SIGNATURE "rusEFI 2021.09.26.proteus_f4.832845827" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index d43dfe2770..34094df7cf 100644 --- a/firmware/controllers/generated/signature_proteus_f7.h +++ b/firmware/controllers/generated/signature_proteus_f7.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD proteus_f7 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 1129222965 -#define TS_SIGNATURE "rusEFI 2021.09.24.proteus_f7.1129222965" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 832845827 +#define TS_SIGNATURE "rusEFI 2021.09.26.proteus_f7.832845827" diff --git a/firmware/controllers/generated/signature_subaru_eg33_f7.h b/firmware/controllers/generated/signature_subaru_eg33_f7.h index 1d8eea90d5..aed7f41c9b 100644 --- a/firmware/controllers/generated/signature_subaru_eg33_f7.h +++ b/firmware/controllers/generated/signature_subaru_eg33_f7.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD subaru_eg33_f7 -#define SIGNATURE_DATE 2021.09.24 -#define SIGNATURE_HASH 805467888 -#define TS_SIGNATURE "rusEFI 2021.09.24.subaru_eg33_f7.805467888" +#define SIGNATURE_DATE 2021.09.26 +#define SIGNATURE_HASH 1122557382 +#define TS_SIGNATURE "rusEFI 2021.09.26.subaru_eg33_f7.1122557382" diff --git a/firmware/tunerstudio/generated/cache.zip b/firmware/tunerstudio/generated/cache.zip index b459e796cf2ccde540e4858c4d6b63439f6ee813..341153334c4e27f020ff66a2c6cdd4c274fa5862 100644 GIT binary patch delta 615272 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
82|7FT`= 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 E0N%2!+5i9m delta 614402 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

ie&Ud4{EN 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 IQS|@*2hZG}pa1{> diff --git a/firmware/tunerstudio/generated/rusefi.ini b/firmware/tunerstudio/generated/rusefi.ini index ef76ddd813..bcb536b936 100644 --- a/firmware/tunerstudio/generated/rusefi.ini +++ b/firmware/tunerstudio/generated/rusefi.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.all.2777193875" + signature = "rusEFI 2021.09.26.all.3613537957" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.all.2777193875" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.all.3613537957" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:44 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:32 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4108,13 +4108,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4857,7 +4857,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_atlas.ini b/firmware/tunerstudio/generated/rusefi_atlas.ini index f4e8f786c4..0a9d84d67f 100644 --- a/firmware/tunerstudio/generated/rusefi_atlas.ini +++ b/firmware/tunerstudio/generated/rusefi_atlas.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.atlas.2777193875" + signature = "rusEFI 2021.09.26.atlas.3613537957" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.atlas.2777193875" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.atlas.3613537957" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:42 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:30 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4108,13 +4108,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4857,7 +4857,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_f429-discovery.ini b/firmware/tunerstudio/generated/rusefi_f429-discovery.ini index 5c2aca64bf..d10035c178 100644 --- a/firmware/tunerstudio/generated/rusefi_f429-discovery.ini +++ b/firmware/tunerstudio/generated/rusefi_f429-discovery.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.f429-discovery.2777193875" + signature = "rusEFI 2021.09.26.f429-discovery.3613537957" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.f429-discovery.2777193875" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.f429-discovery.3613537957" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:55:57 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:54:51 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4108,13 +4108,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4857,7 +4857,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini index 5bd58ab8c4..fc84dc96e1 100644 --- a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini +++ b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.frankenso_na6.3753560186" + signature = "rusEFI 2021.09.26.frankenso_na6.2907726668" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.frankenso_na6.3753560186" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.frankenso_na6.2907726668" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:27 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:17 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4108,13 +4108,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4857,7 +4857,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_hellen-nb1.ini b/firmware/tunerstudio/generated/rusefi_hellen-nb1.ini index 20afe3a005..01d15b64a7 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen-nb1.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen-nb1.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.hellen-nb1.2605593754" + signature = "rusEFI 2021.09.26.hellen-nb1.3919880108" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.hellen-nb1.2605593754" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.hellen-nb1.3919880108" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:15 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:06 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4833,7 +4833,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini b/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini index fe31fe18f0..a5287420a1 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.hellen121nissan.779732433" + signature = "rusEFI 2021.09.26.hellen121nissan.1553166055" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.hellen121nissan.779732433" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.hellen121nissan.1553166055" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:06 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:54:59 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4833,7 +4833,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_hellen121vag.ini b/firmware/tunerstudio/generated/rusefi_hellen121vag.ini index 2bf6dc947a..90b5ef3421 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen121vag.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen121vag.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.hellen121vag.4133780949" + signature = "rusEFI 2021.09.26.hellen121vag.2223953635" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.hellen121vag.4133780949" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.hellen121vag.2223953635" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:03 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:54:56 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4833,7 +4833,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_hellen128mercedes.ini b/firmware/tunerstudio/generated/rusefi_hellen128mercedes.ini index 6584e3c8a1..4979d29466 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen128mercedes.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen128mercedes.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.hellen128.1027721184" + signature = "rusEFI 2021.09.26.hellen128.1336634582" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.hellen128.1027721184" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.hellen128.1336634582" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:00 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:54:54 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4833,7 +4833,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_hellen154hyundai.ini b/firmware/tunerstudio/generated/rusefi_hellen154hyundai.ini index 2e557df5a5..84cd6f6999 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen154hyundai.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen154hyundai.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.hellen154hyundai.2268259147" + signature = "rusEFI 2021.09.26.hellen154hyundai.4124592253" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.hellen154hyundai.2268259147" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.hellen154hyundai.4124592253" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:09 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:01 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4833,7 +4833,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_hellen72.ini b/firmware/tunerstudio/generated/rusefi_hellen72.ini index ab2ca21ed0..35ea08e7d7 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen72.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen72.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.hellen72.3273522612" + signature = "rusEFI 2021.09.26.hellen72.2985776770" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.hellen72.3273522612" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.hellen72.2985776770" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:12 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:04 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4833,7 +4833,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_hellenNA6.ini b/firmware/tunerstudio/generated/rusefi_hellenNA6.ini index 80cbea7aab..e24666a0ba 100644 --- a/firmware/tunerstudio/generated/rusefi_hellenNA6.ini +++ b/firmware/tunerstudio/generated/rusefi_hellenNA6.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.hellenNA6.1729031367" + signature = "rusEFI 2021.09.26.hellenNA6.367282161" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.hellenNA6.1729031367" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.hellenNA6.367282161" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:18 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:09 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4833,7 +4833,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini b/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini index 95fe438938..1987334f21 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.hellen_cypress.3891545667" + signature = "rusEFI 2021.09.26.hellen_cypress.2501832053" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.hellen_cypress.3891545667" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.hellen_cypress.2501832053" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Fri Sep 24 22:56:50 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sun Sep 26 21:55:37 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4108,13 +4108,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4857,7 +4857,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_kinetis.ini b/firmware/tunerstudio/generated/rusefi_kinetis.ini index f2c5b26fc9..649b23fd19 100644 --- a/firmware/tunerstudio/generated/rusefi_kinetis.ini +++ b/firmware/tunerstudio/generated/rusefi_kinetis.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.kin.407997119" + signature = "rusEFI 2021.09.26.kin.1790648713" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.kin.407997119" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.kin.1790648713" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Fri Sep 24 22:56:47 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sun Sep 26 21:55:35 UTC 2021 pageSize = 19972 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -494,7 +494,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1366,7 +1366,7 @@ fsioTable4RpmBins = array, F32, 19940, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4081,13 +4081,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4830,7 +4830,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f4.ini b/firmware/tunerstudio/generated/rusefi_mre_f4.ini index 37de139d01..c2e37d67a3 100644 --- a/firmware/tunerstudio/generated/rusefi_mre_f4.ini +++ b/firmware/tunerstudio/generated/rusefi_mre_f4.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.mre_f4.985632408" + signature = "rusEFI 2021.09.26.mre_f4.1213539758" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.mre_f4.985632408" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.mre_f4.1213539758" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:24 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:15 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4832,7 +4832,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f7.ini b/firmware/tunerstudio/generated/rusefi_mre_f7.ini index ae84760b79..90a0e4099c 100644 --- a/firmware/tunerstudio/generated/rusefi_mre_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_mre_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.mre_f7.985632408" + signature = "rusEFI 2021.09.26.mre_f7.1213539758" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.mre_f7.985632408" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.mre_f7.1213539758" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:21 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:12 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4092,13 +4092,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4832,7 +4832,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini index 185af9d323..8fe9663638 100644 --- a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini +++ b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.prometheus_405.4116857973" + signature = "rusEFI 2021.09.26.prometheus_405.2273898307" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.prometheus_405.4116857973" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.prometheus_405.2273898307" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:33 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:22 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4103,13 +4103,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4852,7 +4852,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini index 20ca33356d..4acac56563 100644 --- a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini +++ b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.prometheus_469.4116857973" + signature = "rusEFI 2021.09.26.prometheus_469.2273898307" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.prometheus_469.4116857973" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.prometheus_469.2273898307" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:30 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:20 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4103,13 +4103,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4852,7 +4852,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini index 6f4fdd4ae9..a29b1a9707 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.proteus_f4.1129222965" + signature = "rusEFI 2021.09.26.proteus_f4.832845827" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.proteus_f4.1129222965" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.proteus_f4.832845827" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:39 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:27 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4086,13 +4086,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4825,7 +4825,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini index 0c46775d7b..8fc2fc3c4b 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.proteus_f7.1129222965" + signature = "rusEFI 2021.09.26.proteus_f7.832845827" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.proteus_f7.1129222965" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.proteus_f7.832845827" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:36 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:25 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4086,13 +4086,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4825,7 +4825,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" diff --git a/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini b/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini index a88f71b2b2..55427e4521 100644 --- a/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.09.24.subaru_eg33_f7.805467888" + signature = "rusEFI 2021.09.26.subaru_eg33_f7.1122557382" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.09.24.subaru_eg33_f7.805467888" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.09.26.subaru_eg33_f7.1122557382" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,11 +77,11 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Fri Sep 24 22:56:52 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:39 UTC 2021 pageSize = 20000 page = 1 -engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" +engineType = bits, S32, 0, [0:6], "DEFAULT_FRANKENSO", "MIATA_PROTEUS_TCU", "DODGE_NEON_1995", "FORD_ASPIRE_1996", "INVALID", "NISSAN_PRIMERA", "HONDA_ACCORD_CD", "FORD_INLINE_6_1995", "GY6_139QMB", "MAZDA_MIATA_NB1", "INVALID", "MRE_MIATA_NB2_MAP", "MRE_MIATA_NA6_VAF", "MRE_MIATA_NB2_ETB", "FORD_ESCORT_GT", "MRE_MIATA_NB2_MAF", "MITSU_4G93", "HONDA_ACCORD_CD_TWO_WIRES", "HONDA_ACCORD_CD_DIP", "MIATA_1990", "MRE_MIATA_94_MAP", "MIATA_1996", "SUBARU_2003_WRX", "MRE_BODY_CONTROL", "BMW_M73_M", "INVALID", "TEST_ENGINE", "TEST_ISSUE_898", "MAZDA_626", "SACHS", "MRE_BOARD_OLD_TEST", "MRE_BOARD_NEW_TEST", "VW_ABA", "HELLEN72_ETB", "HELLEN_NA6", "CAMARO_4", "HELLEN_128_MERCEDES_4_CYL", "MRE_SUBARU_EJ18", "TOYOTA_JZS147", "LADA_KALINA", "BMW_M73_F", "MIATA_NA6_MAP", "PROTEUS_QC_TEST_BOARD", "HONDA_600", "TOYOTA_2JZ_GTE_VVTi", "TEST_ENGINE_VVT", "DODGE_NEON_2003_CRANK", "MAZDA_MIATA_2003", "HONDA_ACCORD_1_24_SHIFTED", "FRANKENSO_QA_ENGINE", "TEST_CIVIC_4_0_BOTH", "TEST_CIVIC_4_0_RISE", "TEST_ISSUE_366_BOTH", "TEST_ISSUE_366_RISE", "MAZDA_MIATA_2003_NA_RAIL", "MAZDA_MIATA_2003_BOARD_TEST", "MAZDA_MIATA_NA8", "MIATA_NA6_VAF", "ETB_BENCH_ENGINE", "TLE8888_BENCH_ENGINE", "MICRO_RUS_EFI", "PROTEUS_DEFAULTS", "VW_B6", "BMW_M73_PROTEUS", "DODGE_RAM", "CITROEN_TU3JP", "MRE_MIATA_NA6_MAP", "PROTEUS_MIATA_NB2", "MRE_M111", "HELLEN_NB2", "SUBARUEG33_DEFAULTS", "HELLEN_121_VAG", "HELLEN_121_NISSAN_6_CYL", "HELLEN_55_BMW", "HELLEN_88_BMW", "HELLEN_134_BMW", "HELLEN_154_VAG", "HELLEN_121_VAG_5_CYL", "HELLEN_121_VAG_V6_CYL", "HELLEN_121_VAG_VR6_CYL", "HELLEN_NA94", "HELLEN_121_VAG_8_CYL", "HELLEN_154_HYUNDAI", "INVALID", "HELLEN_121_NISSAN_4_CYL", "INVALID", "HELLEN_NB2_36", "INVALID", "HELLEN_128_MERCEDES_6_CYL", "HELLEN_128_MERCEDES_8_CYL", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "MINIMAL_PINS", "PROMETHEUS_DEFAULTS", "SUBARUEJ20G_DEFAULTS", "VAG_18_TURBO", "TEST_33816", "BMW_M73_MRE", "BMW_M73_MRE_SLAVE", "PROTEUS_ANALOG_PWM_TEST", "TEST_ROTARY", "TEST_108", "TEST_109", "TEST_110", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" engineSnifferRpmThreshold = scalar, S32, 4, "RPM", 1, 0, 0, 30000, 0 injector_flow = scalar, F32, 8, "cm3/min", 1, 0, 0, 99999, 2 injector_battLagCorrBins = array, F32, 12, [8], "volts", 1, 0, 0, 20, 2 @@ -497,7 +497,7 @@ multisparkMaxSparkingAngle = scalar, U08, 974, "deg", 1, 0, 0, 60, 0 multisparkMaxExtraSparkCount = scalar, U08, 975, "count", 1, 0, 1, 5, 0 clutchUpPinInverted = bits, U32, 976, [0:0], "false", "true" clutchDownPinInverted = bits, U32, 976, [1:1], "false", "true" -useHbridges = bits, U32, 976, [2:2], "false", "true" +useHbridgesToDriveIdleStepper = bits, U32, 976, [2:2], "false", "true" multisparkEnable = bits, U32, 976, [3:3], "false", "true" enableLaunchRetard = bits, U32, 976, [4:4], "false", "true" enableLaunchBoost = bits, U32, 976, [5:5], "false", "true" @@ -1391,7 +1391,7 @@ fsioTable4RpmBins = array, F32, 19968, [8], "RPM", 1, 0, 0, 25500, 2 multisparkMaxRpm = "Disable multispark above this engine speed." multisparkMaxSparkingAngle = "This parameter sets the latest that the last multispark can occur after the main ignition event. For example, if the ignition timing is 30 degrees BTDC, and this parameter is set to 45, no multispark will ever be fired after 15 degrees ATDC." multisparkMaxExtraSparkCount = "Configures the maximum number of extra sparks to fire (does not include main spark)" - useHbridges = "If enabled we use two H-bridges to drive stepper idle air valve" + useHbridgesToDriveIdleStepper = "If enabled we use two H-bridges to drive stepper idle air valve" enableCanVss = "Read VSS from OEM CAN bus according to selected CAN vehicle configuration." stftIgnoreErrorMagnitude = "If enabled, adjust at a constant rate instead of a rate proportional to the current lambda error. This mode may be easier to tune, and more tolerant of sensor noise. Use of this mode is required if you have a narrowband O2 sensor." consumeObdSensors = "This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors" @@ -4102,13 +4102,13 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "Idle Stepper Enable Pin Mode", stepperEnablePinMode dialog = idleStepper, "Stepper" - field = "Drive stepper with dual H bridges", useHbridges, useStepperIdle + field = "Drive stepper with dual H bridges", useHbridgesToDriveIdleStepper, useStepperIdle field = "Stepper reaction time", idleStepperReactionTime, useStepperIdle field = "Stepper total steps", idleStepperTotalSteps, useStepperIdle field = "Stepper parking extra steps, %", stepperParkingExtraSteps, useStepperIdle field = "Force parking every restart", stepperForceParkingEveryRestart, useStepperIdle - panel = idleStepperHw, { useStepperIdle && !useHbridges } - panel = hbridgeHardware, { useStepperIdle && useHbridges } + panel = idleStepperHw, { useStepperIdle && !useHbridgesToDriveIdleStepper } + panel = hbridgeHardware, { useStepperIdle && useHbridgesToDriveIdleStepper } dialog = idleHwType, "Idle Valve Hardware", border panel = idleSolenoid, West @@ -4848,7 +4848,8 @@ cmd_set_engine_type_default = "Z\x00\x31\x00\x00" field = "H-Bridge #2 function", etbFunctions2 ; we need the term about stepper idle in here, because there's a bug in TS that you can't have different visibility ; criteria for the same panel when used in multiple places - panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridges) } + ; todo: report bug to TS? + panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 0 || (useStepperIdle && useHbridgesToDriveIdleStepper) } dialog = etbAutotune, "PID Autotune" field = "First step: calibrate TPS and hit 'Burn'" 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 aef37eb8b6..6d985e4d1c 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 @@ -1,6 +1,6 @@ package com.rusefi.config.generated; -// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Sep 22 00:43:22 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sun Sep 26 21:55:32 UTC 2021 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -1529,7 +1529,7 @@ 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 2021.09.22.all.3378169541"; + public static final String TS_SIGNATURE = "rusEFI 2021.09.26.all.3613537957"; public static final char TS_SINGLE_WRITE_COMMAND = 'W'; public static final char TS_TEST_COMMAND = 't'; public static final int TT_TT_1_16 = 50; @@ -1687,7 +1687,7 @@ public class Fields { public static final int useFSIO4ForSeriousEngineWarning_offset = 1464; public static final int useFSIO5ForCriticalIssueEngineStop_offset = 1464; public static final int useFSIOTableForCanSniffingFiltering_offset = 76; - public static final int useHbridges_offset = 976; + public static final int useHbridgesToDriveIdleStepper_offset = 976; public static final int useIacPidMultTable_offset = 1476; public static final int useIacTableForCoasting_offset = 744; public static final int useIdleTimingPidControl_offset = 744; @@ -2167,7 +2167,7 @@ public class Fields { public static final Field MULTISPARKMAXEXTRASPARKCOUNT = Field.create("MULTISPARKMAXEXTRASPARKCOUNT", 975, FieldType.INT8); public static final Field CLUTCHUPPININVERTED = Field.create("CLUTCHUPPININVERTED", 976, FieldType.BIT, 0); public static final Field CLUTCHDOWNPININVERTED = Field.create("CLUTCHDOWNPININVERTED", 976, FieldType.BIT, 1); - public static final Field USEHBRIDGES = Field.create("USEHBRIDGES", 976, FieldType.BIT, 2); + public static final Field USEHBRIDGESTODRIVEIDLESTEPPER = Field.create("USEHBRIDGESTODRIVEIDLESTEPPER", 976, FieldType.BIT, 2); public static final Field MULTISPARKENABLE = Field.create("MULTISPARKENABLE", 976, FieldType.BIT, 3); public static final Field ENABLELAUNCHRETARD = Field.create("ENABLELAUNCHRETARD", 976, FieldType.BIT, 4); public static final Field ENABLELAUNCHBOOST = Field.create("ENABLELAUNCHBOOST", 976, FieldType.BIT, 5); @@ -3238,7 +3238,7 @@ public class Fields { MULTISPARKMAXEXTRASPARKCOUNT, CLUTCHUPPININVERTED, CLUTCHDOWNPININVERTED, - USEHBRIDGES, + USEHBRIDGESTODRIVEIDLESTEPPER, MULTISPARKENABLE, ENABLELAUNCHRETARD, ENABLELAUNCHBOOST, diff --git a/java_console/rusefi.xml b/java_console/rusefi.xml index b9caad1718..325d502a08 100644 --- a/java_console/rusefi.xml +++ b/java_console/rusefi.xml @@ -1,6 +1,6 @@ - +