From 2183730ce595ab61435c3708814683d78fb214f1 Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Tue, 28 Jul 2020 13:12:43 +0000 Subject: [PATCH] Auto-generated configs and docs --- ...ngine_configuration_generated_structures.h | 10 +++++----- .../controllers/algo/rusefi_generated.h | 8 ++++---- ...ngine_configuration_generated_structures.h | 10 +++++----- .../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 | 8 ++++---- .../controllers/generated/signature_all.h | 4 ++-- .../generated/signature_frankenso_na6.h | 4 ++-- .../controllers/generated/signature_kin.h | 4 ++-- .../controllers/generated/signature_mre_f4.h | 4 ++-- .../controllers/generated/signature_mre_f7.h | 4 ++-- .../generated/signature_prometheus_405.h | 4 ++-- .../generated/signature_prometheus_469.h | 4 ++-- .../generated/signature_proteus_f4.h | 4 ++-- .../generated/signature_proteus_f7.h | 4 ++-- firmware/tunerstudio/generated/cache.zip | Bin 845045 -> 844946 bytes firmware/tunerstudio/generated/rusefi.ini | 14 +++++++------- .../generated/rusefi_frankenso_na6.ini | 14 +++++++------- .../tunerstudio/generated/rusefi_kinetis.ini | 14 +++++++------- .../tunerstudio/generated/rusefi_mre_f4.ini | 14 +++++++------- .../tunerstudio/generated/rusefi_mre_f7.ini | 14 +++++++------- .../generated/rusefi_prometheus_405.ini | 14 +++++++------- .../generated/rusefi_prometheus_469.ini | 14 +++++++------- .../generated/rusefi_proteus_f4.ini | 14 +++++++------- .../generated/rusefi_proteus_f7.ini | 14 +++++++------- .../com/rusefi/config/generated/Fields.java | 8 ++++---- java_console/rusefi.xml | 2 +- 29 files changed, 108 insertions(+), 108 deletions(-) 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 dd3fa64da6..8e9d809a92 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 Mon Jul 27 13:47:20 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Tue Jul 28 13:12:25 UTC 2020 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -832,7 +832,7 @@ struct engine_configuration_s { */ float knockBandCustom; /** - * On single-coil or wasted spark setups you have to lower dwell at high RPM + * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * offset 332 */ float sparkDwellRpmBins[DWELL_CURVE_SIZE]; @@ -892,7 +892,7 @@ struct engine_configuration_s { */ angle_t crankingTimingAngle; /** - * "One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle + * "Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle * set ignition_mode X * offset 440 */ @@ -2143,7 +2143,7 @@ struct engine_configuration_s { offset 1476 bit 14 */ bool useOnlyRisingEdgeForTrigger : 1; /** - * This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark). + * This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark). offset 1476 bit 15 */ bool twoWireBatchIgnition : 1; /** @@ -3533,4 +3533,4 @@ struct persistent_config_s { typedef struct persistent_config_s persistent_config_s; // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Mon Jul 27 13:47:20 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Tue Jul 28 13:12:25 UTC 2020 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 a16044703c..adf82e7b03 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -305,7 +305,7 @@ #define enableLaunchRetard_offset 976 #define enableVerboseCanTx_offset 744 #define engine_configuration_s_size 6000 -#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID" +#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID" #define ENGINE_MAKE_BMW "BMW" #define ENGINE_MAKE_GM "GM" #define ENGINE_MAKE_LADA "Lada" @@ -1075,8 +1075,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD kin -#define SIGNATURE_DATE 2020.07.27 -#define SIGNATURE_HASH 3345389999 +#define SIGNATURE_DATE 2020.07.28 +#define SIGNATURE_HASH 2529711359 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1344,7 +1344,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator true #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2020.07.27.kin.3345389999" +#define TS_SIGNATURE "rusEFI 2020.07.28.kin.2529711359" #define TS_SINGLE_WRITE_COMMAND 'W' #define tunerStudioSerialSpeed_offset 728 #define twoWireBatchIgnition_offset 1476 diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index a08202790d..6f3d882cea 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 Mon Jul 27 13:47:09 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:08 UTC 2020 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -832,7 +832,7 @@ struct engine_configuration_s { */ float knockBandCustom; /** - * On single-coil or wasted spark setups you have to lower dwell at high RPM + * On Single Coil or Wasted Spark setups you have to lower dwell at high RPM * offset 332 */ float sparkDwellRpmBins[DWELL_CURVE_SIZE]; @@ -892,7 +892,7 @@ struct engine_configuration_s { */ angle_t crankingTimingAngle; /** - * "One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle + * "Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle * set ignition_mode X * offset 440 */ @@ -2143,7 +2143,7 @@ struct engine_configuration_s { offset 1476 bit 14 */ bool useOnlyRisingEdgeForTrigger : 1; /** - * This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark). + * This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark). offset 1476 bit 15 */ bool twoWireBatchIgnition : 1; /** @@ -3533,4 +3533,4 @@ struct persistent_config_s { typedef struct persistent_config_s persistent_config_s; // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Mon Jul 27 13:47:09 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:08 UTC 2020 diff --git a/firmware/controllers/generated/fsio_enums_generated.def b/firmware/controllers/generated/fsio_enums_generated.def index 6f4c6a76e7..454ba06590 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 Mon Jul 27 13:47:09 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:08 UTC 2020 // by class com.rusefi.output.FileFsioSettingsConsumer FSIO_SETTING_FANONTEMPERATURE = 1000, diff --git a/firmware/controllers/generated/fsio_getters.def b/firmware/controllers/generated/fsio_getters.def index 04caf03810..06a179ea14 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 Mon Jul 27 13:47:09 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:08 UTC 2020 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_FANONTEMPERATURE: diff --git a/firmware/controllers/generated/fsio_names.def b/firmware/controllers/generated/fsio_names.def index a6ab3fe490..bc2202ffd5 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 Mon Jul 27 13:47:09 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:08 UTC 2020 // by class com.rusefi.output.FileFsioSettingsConsumer static LENameOrdinalPair lefanOnTemperature(FSIO_SETTING_FANONTEMPERATURE, "cfg_fanOnTemperature"); diff --git a/firmware/controllers/generated/fsio_strings.def b/firmware/controllers/generated/fsio_strings.def index 9e6aed85d0..92a23ce5f5 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 Mon Jul 27 13:47:09 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:08 UTC 2020 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_FANONTEMPERATURE: diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 87cda6cf84..acd035bf2c 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -305,7 +305,7 @@ #define enableLaunchRetard_offset 976 #define enableVerboseCanTx_offset 744 #define engine_configuration_s_size 6000 -#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID" +#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID" #define ENGINE_MAKE_BMW "BMW" #define ENGINE_MAKE_GM "GM" #define ENGINE_MAKE_LADA "Lada" @@ -1075,8 +1075,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD all -#define SIGNATURE_DATE 2020.07.27 -#define SIGNATURE_HASH 173557045 +#define SIGNATURE_DATE 2020.07.28 +#define SIGNATURE_HASH 1542883429 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1344,7 +1344,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2020.07.27.all.173557045" +#define TS_SIGNATURE "rusEFI 2020.07.28.all.1542883429" #define TS_SINGLE_WRITE_COMMAND 'W' #define tunerStudioSerialSpeed_offset 728 #define twoWireBatchIgnition_offset 1476 diff --git a/firmware/controllers/generated/signature_all.h b/firmware/controllers/generated/signature_all.h index 4626fe65f0..78bbf70a7f 100644 --- a/firmware/controllers/generated/signature_all.h +++ b/firmware/controllers/generated/signature_all.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD all #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 2435517493 -#define TS_SIGNATURE "rusEFI 2020.07.28.all.2435517493" +#define SIGNATURE_HASH 1542883429 +#define TS_SIGNATURE "rusEFI 2020.07.28.all.1542883429" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index 0df096261d..5b7f882663 100644 --- a/firmware/controllers/generated/signature_frankenso_na6.h +++ b/firmware/controllers/generated/signature_frankenso_na6.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD frankenso_na6 #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 1336697046 -#define TS_SIGNATURE "rusEFI 2020.07.28.frankenso_na6.1336697046" +#define SIGNATURE_HASH 2238833798 +#define TS_SIGNATURE "rusEFI 2020.07.28.frankenso_na6.2238833798" diff --git a/firmware/controllers/generated/signature_kin.h b/firmware/controllers/generated/signature_kin.h index 80d41de074..2d4d46d448 100644 --- a/firmware/controllers/generated/signature_kin.h +++ b/firmware/controllers/generated/signature_kin.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD kin #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 1544933551 -#define TS_SIGNATURE "rusEFI 2020.07.28.kin.1544933551" +#define SIGNATURE_HASH 2529711359 +#define TS_SIGNATURE "rusEFI 2020.07.28.kin.2529711359" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index 7640791cef..fee7bb8022 100644 --- a/firmware/controllers/generated/signature_mre_f4.h +++ b/firmware/controllers/generated/signature_mre_f4.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD mre_f4 #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 3637893819 -#define TS_SIGNATURE "rusEFI 2020.07.28.mre_f4.3637893819" +#define SIGNATURE_HASH 302538475 +#define TS_SIGNATURE "rusEFI 2020.07.28.mre_f4.302538475" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index 63777ac932..a80875d065 100644 --- a/firmware/controllers/generated/signature_mre_f7.h +++ b/firmware/controllers/generated/signature_mre_f7.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD mre_f7 #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 3637893819 -#define TS_SIGNATURE "rusEFI 2020.07.28.mre_f7.3637893819" +#define SIGNATURE_HASH 302538475 +#define TS_SIGNATURE "rusEFI 2020.07.28.mre_f7.302538475" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index 787785aa9b..5b72e1f00e 100644 --- a/firmware/controllers/generated/signature_prometheus_405.h +++ b/firmware/controllers/generated/signature_prometheus_405.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD prometheus_405 #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 1681380529 -#define TS_SIGNATURE "rusEFI 2020.07.28.prometheus_405.1681380529" +#define SIGNATURE_HASH 2934591713 +#define TS_SIGNATURE "rusEFI 2020.07.28.prometheus_405.2934591713" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index ee31f56abc..90548ab2f3 100644 --- a/firmware/controllers/generated/signature_prometheus_469.h +++ b/firmware/controllers/generated/signature_prometheus_469.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD prometheus_469 #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 1681380529 -#define TS_SIGNATURE "rusEFI 2020.07.28.prometheus_469.1681380529" +#define SIGNATURE_HASH 2934591713 +#define TS_SIGNATURE "rusEFI 2020.07.28.prometheus_469.2934591713" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index 0b09bfdb0d..cf3b47dae4 100644 --- a/firmware/controllers/generated/signature_proteus_f4.h +++ b/firmware/controllers/generated/signature_proteus_f4.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD proteus_f4 #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 481983994 -#define TS_SIGNATURE "rusEFI 2020.07.28.proteus_f4.481983994" +#define SIGNATURE_HASH 3597138346 +#define TS_SIGNATURE "rusEFI 2020.07.28.proteus_f4.3597138346" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index 64dbc5bac6..00e86821f0 100644 --- a/firmware/controllers/generated/signature_proteus_f7.h +++ b/firmware/controllers/generated/signature_proteus_f7.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD proteus_f7 #define SIGNATURE_DATE 2020.07.28 -#define SIGNATURE_HASH 481983994 -#define TS_SIGNATURE "rusEFI 2020.07.28.proteus_f7.481983994" +#define SIGNATURE_HASH 3597138346 +#define TS_SIGNATURE "rusEFI 2020.07.28.proteus_f7.3597138346" diff --git a/firmware/tunerstudio/generated/cache.zip b/firmware/tunerstudio/generated/cache.zip index 07ea1c4f890a0ca6a6e07f64204e511f22059e9e..05c73eb7837421dfc0a76ecb5fde4521eb6d1578 100644 GIT binary patch delta 170477 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 E3%3#`q5uE@ diff --git a/firmware/tunerstudio/generated/rusefi.ini b/firmware/tunerstudio/generated/rusefi.ini index f229b34c45..9dc2483b9f 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 2020.07.28.all.2435517493" + signature = "rusEFI 2020.07.28.all.1542883429" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.all.2435517493" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.all.1542883429" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:17 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:08 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" diff --git a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini index 17aa6be02a..4e441db4c1 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 2020.07.28.frankenso_na6.1336697046" + signature = "rusEFI 2020.07.28.frankenso_na6.2238833798" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.frankenso_na6.1336697046" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.frankenso_na6.2238833798" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:22 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:18 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" diff --git a/firmware/tunerstudio/generated/rusefi_kinetis.ini b/firmware/tunerstudio/generated/rusefi_kinetis.ini index 5dadacb8d5..dadc85ae83 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 2020.07.28.kin.1544933551" + signature = "rusEFI 2020.07.28.kin.2529711359" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.kin.1544933551" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.kin.2529711359" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:34 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Tue Jul 28 13:12:25 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f4.ini b/firmware/tunerstudio/generated/rusefi_mre_f4.ini index 6a50620d3b..e7613cd9f5 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 2020.07.28.mre_f4.3637893819" + signature = "rusEFI 2020.07.28.mre_f4.302538475" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.mre_f4.3637893819" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.mre_f4.302538475" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:20 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:17 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f7.ini b/firmware/tunerstudio/generated/rusefi_mre_f7.ini index f298b4eb64..a08d7cc599 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 2020.07.28.mre_f7.3637893819" + signature = "rusEFI 2020.07.28.mre_f7.302538475" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.mre_f7.3637893819" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.mre_f7.302538475" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:19 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:16 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini index ba5047d1c6..0299d55e77 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 2020.07.28.prometheus_405.1681380529" + signature = "rusEFI 2020.07.28.prometheus_405.2934591713" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.prometheus_405.1681380529" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.prometheus_405.2934591713" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:27 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:21 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini index 6ccea3c58d..45a479c303 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 2020.07.28.prometheus_469.1681380529" + signature = "rusEFI 2020.07.28.prometheus_469.2934591713" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.prometheus_469.1681380529" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.prometheus_469.2934591713" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:23 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:20 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini index 34147643a0..c417aec74f 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 2020.07.28.proteus_f4.481983994" + signature = "rusEFI 2020.07.28.proteus_f4.3597138346" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.proteus_f4.481983994" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.proteus_f4.3597138346" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:32 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:23 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini index cd6455ade0..36bd07cb6a 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 2020.07.28.proteus_f7.481983994" + signature = "rusEFI 2020.07.28.proteus_f7.3597138346" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.28.proteus_f7.481983994" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.28.proteus_f7.3597138346" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -76,7 +76,7 @@ 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 Tue Jul 28 02:58:31 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:22 UTC 2020 pageSize = 20000 page = 1 @@ -166,12 +166,12 @@ page = 1 cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2 sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0 rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2 - fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" + fuelAlgorithm = bits, U32, 420, [0:2], "MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID", "INVALID" crankingInjectionMode = bits, U32, 424, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" injectionMode = bits, U32, 428, [0:1], "Simultaneous", "Sequential", "Batch", "Single Point" extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2 crankingTimingAngle = scalar, F32, 436, "deg", 1, 0.0, -360, 360, 2 - ignitionMode = bits, U32, 440, [0:1], "One coil", "Individual Coils", "Wasted", "Two distributors" + ignitionMode = bits, U32, 440, [0:1], "Single Coil", "Individual Coils", "Wasted Spark", "Two Distributors" ignitionOffset = scalar, F32, 444, "RPM", 1, 0, 0, 3000.0, 0 timingMode = bits, U32, 448 [0:0], "dynamic", "fixed" fixedModeTiming = scalar, F32, 452, "RPM", 1, 0, 0, 3000.0, 0 @@ -1203,7 +1203,7 @@ page = 1 injectionMode = "This is where the fuel injection type is defined: "Simultaneous" means all injectors will fire together at once. "Sequential" fires the injectors on a per cylinder basis, which requires individually wired injectors. "Batched" will fire the injectors in groups. If your injectors are individually wired you will also need to enable "Two wire batch emulation". \nset injection_mode X\nSee also twoWireBatchInjection" extraInjectionOffset = "this is about deciding when the injector starts it's squirt\nSee also injectionPhase map\ntodo: do we need even need this since we have the map anyway?" crankingTimingAngle = "Ignition advance angle used during engine cranking, 5-10 degrees will work as a base setting for most engines.\nset cranking_timing_angle X" - ignitionMode = ""One Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" + ignitionMode = ""Single Coil" is for use on distributed ignition system. "Individual Coils" is to be used when you have one coil per cylinder (COP or similar). "Wasted Spark" means one coil is driving two spark plugs in two cylinders, with one of the sparks not doing anything since it's happening on the exhaust cycle\nset ignition_mode X" ignitionOffset = "this value could be used to offset the whole ignition timing table by a constant" timingMode = "Dynamic uses the timing map to decide the ignition timing, Static timing fixes the timing to the value set below (only use for checking static timing)." fixedModeTiming = "This value is the ignition timing used when in 'fixed timing' mode, i.e. constant timing\nThis mode is useful when adjusting distributor location." @@ -1285,7 +1285,7 @@ page = 1 verboseTriggerSynchDetails = "enable trigger_details" twoWireBatchInjection = "This is needed if your coils are individually wired and you wish to use batch injection.\nenable two_wire_batch_injection" useOnlyRisingEdgeForTrigger = "VR sensors are only precise on rising front\nenable trigger_only_front" - twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (wasted spark)." + twoWireBatchIgnition = "This is needed if your coils are individually wired (COP) and you wish to use batch ignition (Wasted Spark)." useSeparateAdvanceForCranking = "This activates a separate advance table for cranking conditions, this allows cranking advance to be RPM dependant." useAdvanceCorrectionsForCranking = "This enables the various ignition corrections during cranking (IAT, CLT, FSIO and PID idle)." useTPSAdvanceTable = "This flag allows to use TPS for ignition lookup while in Speed Density Fuel Mode" 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 e8a1e78445..5296ac51f7 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 Mon Jul 27 13:47:09 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 28 13:12:08 UTC 2020 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -1057,7 +1057,7 @@ public class Fields { public static final int servoOutputPins8_offset = 3147; public static final int showHumanReadableWarning_offset = 976; public static final int showSdCardWarning_offset = 76; - public static final int SIGNATURE_HASH = 173557045; + public static final int SIGNATURE_HASH = 1542883429; public static final int silentTriggerError_offset = 1464; public static final int slowAdcAlpha_offset = 2088; public static final int sparkDwellRpmBins_offset = 332; @@ -1304,7 +1304,7 @@ public class Fields { public static final int TS_RESPONSE_COMMAND_OK = 7; public static final int TS_RESPONSE_OK = 0; public static final char TS_SET_LOGGER_SWITCH = 'l'; - public static final String TS_SIGNATURE = "rusEFI 2020.07.27.all.173557045"; + public static final String TS_SIGNATURE = "rusEFI 2020.07.28.all.1542883429"; public static final char TS_SINGLE_WRITE_COMMAND = 'W'; public static final int tunerStudioSerialSpeed_offset = 728; public static final int twoWireBatchIgnition_offset = 1476; @@ -1506,7 +1506,7 @@ public class Fields { public static final Field CYLINDERBORE = Field.create("CYLINDERBORE", 408, FieldType.FLOAT); public static final Field SENSORSNIFFERRPMTHRESHOLD = Field.create("SENSORSNIFFERRPMTHRESHOLD", 412, FieldType.INT); public static final Field RPMHARDLIMIT = Field.create("RPMHARDLIMIT", 416, FieldType.INT); - public static final String[] engine_load_mode_e = {"MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge", "Alpha-N", "INVALID"}; + public static final String[] engine_load_mode_e = {"MAF", "Alpha-N/TPS", "INVALID", "Speed Density", "MAF Air Charge", "Alpha-N", "INVALID"}; public static final Field FUELALGORITHM = Field.create("FUELALGORITHM", 420, FieldType.INT, engine_load_mode_e); public static final Field CRANKINGINJECTIONMODE = Field.create("CRANKINGINJECTIONMODE", 424, FieldType.INT); public static final Field INJECTIONMODE = Field.create("INJECTIONMODE", 428, FieldType.INT); diff --git a/java_console/rusefi.xml b/java_console/rusefi.xml index 224a5aebc2..791997042b 100644 --- a/java_console/rusefi.xml +++ b/java_console/rusefi.xml @@ -1,6 +1,6 @@ - +