From fb2fa9aa62016e7c2069b94f73f485cb7d733ccf Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Tue, 29 Sep 2020 01:20:53 +0000 Subject: [PATCH] Auto-generated configs and docs --- .../controllers/algo/auto_generated_enums.cpp | 4 +++- ...ngine_configuration_generated_structures.h | 4 ++-- .../controllers/algo/rusefi_generated.h | 8 ++++---- .../controllers/algo/auto_generated_enums.cpp | 4 +++- ...ngine_configuration_generated_structures.h | 4 ++-- .../controllers/algo/rusefi_generated.h | 8 ++++---- .../controllers/algo/auto_generated_enums.cpp | 4 +++- ...ngine_configuration_generated_structures.h | 4 ++-- .../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 ++-- .../generated/signature_hellen_cypress.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 945959 -> 946019 bytes firmware/tunerstudio/generated/rusefi.ini | 8 ++++---- .../generated/rusefi_frankenso_na6.ini | 8 ++++---- .../generated/rusefi_hellen_cypress.ini | 8 ++++---- .../tunerstudio/generated/rusefi_kinetis.ini | 8 ++++---- .../tunerstudio/generated/rusefi_mre_f4.ini | 8 ++++---- .../tunerstudio/generated/rusefi_mre_f7.ini | 8 ++++---- .../generated/rusefi_prometheus_405.ini | 8 ++++---- .../generated/rusefi_prometheus_469.ini | 8 ++++---- .../generated/rusefi_proteus_f4.ini | 8 ++++---- .../generated/rusefi_proteus_f7.ini | 8 ++++---- .../com/rusefi/config/generated/Fields.java | 7 ++++--- java_console/rusefi.xml | 2 +- 36 files changed, 96 insertions(+), 89 deletions(-) diff --git a/firmware/config/boards/hellen/cypress/config/controllers/algo/auto_generated_enums.cpp b/firmware/config/boards/hellen/cypress/config/controllers/algo/auto_generated_enums.cpp index 587e87891a..39e5fa3a09 100644 --- a/firmware/config/boards/hellen/cypress/config/controllers/algo/auto_generated_enums.cpp +++ b/firmware/config/boards/hellen/cypress/config/controllers/algo/auto_generated_enums.cpp @@ -1,7 +1,7 @@ #include "global.h" #include "rusefi_enums.h" #include "rusefi_hw_enums.h" -// was generated automatically by rusEfi tool from rusefi_hw_enums.h // was generated automatically by rusEfi tool from rusefi_enums.h // by enum2string.jar tool on Mon Sep 28 20:34:07 UTC 2020 +// was generated automatically by rusEfi tool from rusefi_hw_enums.h // was generated automatically by rusEfi tool from rusefi_enums.h // by enum2string.jar tool on Tue Sep 29 01:20:11 UTC 2020 // see also gen_config_and_enums.bat @@ -1318,6 +1318,8 @@ const char *getTrigger_type_e(trigger_type_e value){ switch(value) { case Force_4_bytes_size_trigger_type: return "Force_4_bytes_size_trigger_type"; +case TT_1_16: + return "TT_1_16"; case TT_2JZ_1_12: return "TT_2JZ_1_12"; case TT_2JZ_3_34: 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 9224851b7f..cab51f7b5a 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 Tue Sep 29 01:07:25 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Tue Sep 29 01:20:34 UTC 2020 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -3724,4 +3724,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 hellen_cypress_gen_config.bat integration/rusefi_config.txt Tue Sep 29 01:07:25 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Tue Sep 29 01:20:34 UTC 2020 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 31c504d721..e36182f2d7 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 @@ -1171,7 +1171,7 @@ #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD hellen_cypress #define SIGNATURE_DATE 2020.09.29 -#define SIGNATURE_HASH 1241557610 +#define SIGNATURE_HASH 3472845326 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define solenoidPadding_offset 1198 @@ -1353,8 +1353,8 @@ #define TRIGGER_SIMULATOR_PIN_COUNT 3 #define trigger_todoRemoveMeOneDay0_offset 528 #define trigger_todoRemoveMeOneDay1_offset 528 -#define trigger_type_e_auto_enum "TT_TOOTHED_WHEEL", "TT_FORD_ASPIRE", "TT_DODGE_NEON_1995", "TT_MAZDA_MIATA_NA", "TT_MAZDA_MIATA_NB1", "TT_GM_7X", "TT_MINI_COOPER_R50", "TT_MAZDA_SOHC_4", "TT_TOOTHED_WHEEL_60_2", "TT_TOOTHED_WHEEL_36_1", "TT_HONDA_4_24_1", "TT_MITSUBISHI", "TT_HONDA_4_24", "TT_HONDA_1_4_24", "TT_DODGE_NEON_2003_CAM", "TT_MAZDA_DOHC_1_4", "TT_ONE_PLUS_ONE", "TT_VVT_JZ", "TT_ONE", "TT_DODGE_RAM", "TT_60_2_VW", "TT_HONDA_1_24", "TT_DODGE_STRATUS", "TT_36_2_2_2", "TT_NISSAN_SR20VE", "TT_2JZ_3_34", "TT_ROVER_K", "TT_GM_LS_24", "TT_HONDA_CBR_600", "TT_2JZ_1_12", "TT_HONDA_CBR_600_CUSTOM", "TT_3_1_CAM", "TT_DODGE_NEON_2003_CRANK", "TT_MIATA_VVT", "TT_HONDA_ACCORD_1_24_SHIFTED", "TT_MAZDA_MIATA_VVT_TEST", "TT_SUBARU_7_6", "TT_JEEP_18_2_2_2", "TT_NISSAN_SR20VE_360", "TT_DODGE_NEON_1995_ONLY_CRANK", "TT_JEEP_4_CYL", "TT_FIAT_IAW_P8", "TT_MAZDA_Z5", "TT_VVT_MIATA_NB2", "TT_RENIX_44_2_2", "TT_RENIX_66_2_2_2", "TT_HONDA_K_12_1", "TT_VVT_BOSCH_QUICK_START", "TT_TOOTHED_WHEEL_36_2", "TT_SUBARU_SVX", "TT_UNUSED" -#define trigger_type_e_enum "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID" +#define trigger_type_e_auto_enum "TT_TOOTHED_WHEEL", "TT_FORD_ASPIRE", "TT_DODGE_NEON_1995", "TT_MAZDA_MIATA_NA", "TT_MAZDA_MIATA_NB1", "TT_GM_7X", "TT_MINI_COOPER_R50", "TT_MAZDA_SOHC_4", "TT_TOOTHED_WHEEL_60_2", "TT_TOOTHED_WHEEL_36_1", "TT_HONDA_4_24_1", "TT_MITSUBISHI", "TT_HONDA_4_24", "TT_HONDA_1_4_24", "TT_DODGE_NEON_2003_CAM", "TT_MAZDA_DOHC_1_4", "TT_ONE_PLUS_ONE", "TT_VVT_JZ", "TT_ONE", "TT_DODGE_RAM", "TT_60_2_VW", "TT_HONDA_1_24", "TT_DODGE_STRATUS", "TT_36_2_2_2", "TT_NISSAN_SR20VE", "TT_2JZ_3_34", "TT_ROVER_K", "TT_GM_LS_24", "TT_HONDA_CBR_600", "TT_2JZ_1_12", "TT_HONDA_CBR_600_CUSTOM", "TT_3_1_CAM", "TT_DODGE_NEON_2003_CRANK", "TT_MIATA_VVT", "TT_HONDA_ACCORD_1_24_SHIFTED", "TT_MAZDA_MIATA_VVT_TEST", "TT_SUBARU_7_6", "TT_JEEP_18_2_2_2", "TT_NISSAN_SR20VE_360", "TT_DODGE_NEON_1995_ONLY_CRANK", "TT_JEEP_4_CYL", "TT_FIAT_IAW_P8", "TT_MAZDA_Z5", "TT_VVT_MIATA_NB2", "TT_RENIX_44_2_2", "TT_RENIX_66_2_2_2", "TT_HONDA_K_12_1", "TT_VVT_BOSCH_QUICK_START", "TT_TOOTHED_WHEEL_36_2", "TT_SUBARU_SVX", "TT_1_16", "TT_UNUSED" +#define trigger_type_e_enum "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID" #define trigger_type_offset 524 #define trigger_unusedBit_4_10_offset 528 #define trigger_unusedBit_4_11_offset 528 @@ -1481,7 +1481,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2020.09.29.hellen_cypress.1241557610" +#define TS_SIGNATURE "rusEFI 2020.09.29.hellen_cypress.3472845326" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 diff --git a/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.cpp b/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.cpp index aee117e9bf..c9f626c0cf 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.cpp +++ b/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.cpp @@ -1,7 +1,7 @@ #include "global.h" #include "rusefi_enums.h" #include "rusefi_hw_enums.h" -// was generated automatically by rusEfi tool from rusefi_hw_enums.h // was generated automatically by rusEfi tool from rusefi_enums.h // by enum2string.jar tool on Mon Sep 28 20:34:07 UTC 2020 +// was generated automatically by rusEfi tool from rusefi_hw_enums.h // was generated automatically by rusEfi tool from rusefi_enums.h // by enum2string.jar tool on Tue Sep 29 01:20:11 UTC 2020 // see also gen_config_and_enums.bat @@ -1114,6 +1114,8 @@ const char *getTrigger_type_e(trigger_type_e value){ switch(value) { case Force_4_bytes_size_trigger_type: return "Force_4_bytes_size_trigger_type"; +case TT_1_16: + return "TT_1_16"; case TT_2JZ_1_12: return "TT_2JZ_1_12"; case TT_2JZ_3_34: 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 3f2c08cb0e..43aa3e0f71 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 Tue Sep 29 01:07:24 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Tue Sep 29 01:20:32 UTC 2020 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -3724,4 +3724,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 Tue Sep 29 01:07:24 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Tue Sep 29 01:20:32 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 28e04d83f5..cbfbb3b0d4 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -1171,7 +1171,7 @@ #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD kin #define SIGNATURE_DATE 2020.09.29 -#define SIGNATURE_HASH 454856848 +#define SIGNATURE_HASH 2682474740 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define solenoidPadding_offset 1198 @@ -1353,8 +1353,8 @@ #define TRIGGER_SIMULATOR_PIN_COUNT 3 #define trigger_todoRemoveMeOneDay0_offset 528 #define trigger_todoRemoveMeOneDay1_offset 528 -#define trigger_type_e_auto_enum "TT_TOOTHED_WHEEL", "TT_FORD_ASPIRE", "TT_DODGE_NEON_1995", "TT_MAZDA_MIATA_NA", "TT_MAZDA_MIATA_NB1", "TT_GM_7X", "TT_MINI_COOPER_R50", "TT_MAZDA_SOHC_4", "TT_TOOTHED_WHEEL_60_2", "TT_TOOTHED_WHEEL_36_1", "TT_HONDA_4_24_1", "TT_MITSUBISHI", "TT_HONDA_4_24", "TT_HONDA_1_4_24", "TT_DODGE_NEON_2003_CAM", "TT_MAZDA_DOHC_1_4", "TT_ONE_PLUS_ONE", "TT_VVT_JZ", "TT_ONE", "TT_DODGE_RAM", "TT_60_2_VW", "TT_HONDA_1_24", "TT_DODGE_STRATUS", "TT_36_2_2_2", "TT_NISSAN_SR20VE", "TT_2JZ_3_34", "TT_ROVER_K", "TT_GM_LS_24", "TT_HONDA_CBR_600", "TT_2JZ_1_12", "TT_HONDA_CBR_600_CUSTOM", "TT_3_1_CAM", "TT_DODGE_NEON_2003_CRANK", "TT_MIATA_VVT", "TT_HONDA_ACCORD_1_24_SHIFTED", "TT_MAZDA_MIATA_VVT_TEST", "TT_SUBARU_7_6", "TT_JEEP_18_2_2_2", "TT_NISSAN_SR20VE_360", "TT_DODGE_NEON_1995_ONLY_CRANK", "TT_JEEP_4_CYL", "TT_FIAT_IAW_P8", "TT_MAZDA_Z5", "TT_VVT_MIATA_NB2", "TT_RENIX_44_2_2", "TT_RENIX_66_2_2_2", "TT_HONDA_K_12_1", "TT_VVT_BOSCH_QUICK_START", "TT_TOOTHED_WHEEL_36_2", "TT_SUBARU_SVX", "TT_UNUSED" -#define trigger_type_e_enum "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID" +#define trigger_type_e_auto_enum "TT_TOOTHED_WHEEL", "TT_FORD_ASPIRE", "TT_DODGE_NEON_1995", "TT_MAZDA_MIATA_NA", "TT_MAZDA_MIATA_NB1", "TT_GM_7X", "TT_MINI_COOPER_R50", "TT_MAZDA_SOHC_4", "TT_TOOTHED_WHEEL_60_2", "TT_TOOTHED_WHEEL_36_1", "TT_HONDA_4_24_1", "TT_MITSUBISHI", "TT_HONDA_4_24", "TT_HONDA_1_4_24", "TT_DODGE_NEON_2003_CAM", "TT_MAZDA_DOHC_1_4", "TT_ONE_PLUS_ONE", "TT_VVT_JZ", "TT_ONE", "TT_DODGE_RAM", "TT_60_2_VW", "TT_HONDA_1_24", "TT_DODGE_STRATUS", "TT_36_2_2_2", "TT_NISSAN_SR20VE", "TT_2JZ_3_34", "TT_ROVER_K", "TT_GM_LS_24", "TT_HONDA_CBR_600", "TT_2JZ_1_12", "TT_HONDA_CBR_600_CUSTOM", "TT_3_1_CAM", "TT_DODGE_NEON_2003_CRANK", "TT_MIATA_VVT", "TT_HONDA_ACCORD_1_24_SHIFTED", "TT_MAZDA_MIATA_VVT_TEST", "TT_SUBARU_7_6", "TT_JEEP_18_2_2_2", "TT_NISSAN_SR20VE_360", "TT_DODGE_NEON_1995_ONLY_CRANK", "TT_JEEP_4_CYL", "TT_FIAT_IAW_P8", "TT_MAZDA_Z5", "TT_VVT_MIATA_NB2", "TT_RENIX_44_2_2", "TT_RENIX_66_2_2_2", "TT_HONDA_K_12_1", "TT_VVT_BOSCH_QUICK_START", "TT_TOOTHED_WHEEL_36_2", "TT_SUBARU_SVX", "TT_1_16", "TT_UNUSED" +#define trigger_type_e_enum "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID" #define trigger_type_offset 524 #define trigger_unusedBit_4_10_offset 528 #define trigger_unusedBit_4_11_offset 528 @@ -1481,7 +1481,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator true #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2020.09.29.kin.454856848" +#define TS_SIGNATURE "rusEFI 2020.09.29.kin.2682474740" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index 69207a021c..f5f888e5de 100644 --- a/firmware/controllers/algo/auto_generated_enums.cpp +++ b/firmware/controllers/algo/auto_generated_enums.cpp @@ -1,7 +1,7 @@ #include "global.h" #include "rusefi_enums.h" #include "rusefi_hw_enums.h" -// was generated automatically by rusEfi tool from rusefi_hw_enums.h // was generated automatically by rusEfi tool from rusefi_enums.h // by enum2string.jar tool on Mon Sep 28 20:34:06 UTC 2020 +// was generated automatically by rusEfi tool from rusefi_hw_enums.h // was generated automatically by rusEfi tool from rusefi_enums.h // by enum2string.jar tool on Tue Sep 29 01:20:10 UTC 2020 // see also gen_config_and_enums.bat @@ -1252,6 +1252,8 @@ const char *getTrigger_type_e(trigger_type_e value){ switch(value) { case Force_4_bytes_size_trigger_type: return "Force_4_bytes_size_trigger_type"; +case TT_1_16: + return "TT_1_16"; case TT_2JZ_1_12: return "TT_2JZ_1_12"; case TT_2JZ_3_34: diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index ae7ef620a6..2d5df7e9a6 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 Tue Sep 29 01:07:04 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:12 UTC 2020 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -3724,4 +3724,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 Tue Sep 29 01:07:04 UTC 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:12 UTC 2020 diff --git a/firmware/controllers/generated/fsio_enums_generated.def b/firmware/controllers/generated/fsio_enums_generated.def index 566e42683e..773fa26746 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 Tue Sep 29 01:07:04 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:12 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 8d49246600..5dc2f545d8 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 Tue Sep 29 01:07:04 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:12 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 c58e203ba3..611d09d3aa 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 Tue Sep 29 01:07:04 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:12 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 790c4d58d2..4d34871bba 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 Tue Sep 29 01:07:04 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:12 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 dea8e6638e..3dc2d4dacc 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -1171,7 +1171,7 @@ #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD all #define SIGNATURE_DATE 2020.09.29 -#define SIGNATURE_HASH 4039617300 +#define SIGNATURE_HASH 1949854576 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define solenoidPadding_offset 1198 @@ -1353,8 +1353,8 @@ #define TRIGGER_SIMULATOR_PIN_COUNT 3 #define trigger_todoRemoveMeOneDay0_offset 528 #define trigger_todoRemoveMeOneDay1_offset 528 -#define trigger_type_e_auto_enum "TT_TOOTHED_WHEEL", "TT_FORD_ASPIRE", "TT_DODGE_NEON_1995", "TT_MAZDA_MIATA_NA", "TT_MAZDA_MIATA_NB1", "TT_GM_7X", "TT_MINI_COOPER_R50", "TT_MAZDA_SOHC_4", "TT_TOOTHED_WHEEL_60_2", "TT_TOOTHED_WHEEL_36_1", "TT_HONDA_4_24_1", "TT_MITSUBISHI", "TT_HONDA_4_24", "TT_HONDA_1_4_24", "TT_DODGE_NEON_2003_CAM", "TT_MAZDA_DOHC_1_4", "TT_ONE_PLUS_ONE", "TT_VVT_JZ", "TT_ONE", "TT_DODGE_RAM", "TT_60_2_VW", "TT_HONDA_1_24", "TT_DODGE_STRATUS", "TT_36_2_2_2", "TT_NISSAN_SR20VE", "TT_2JZ_3_34", "TT_ROVER_K", "TT_GM_LS_24", "TT_HONDA_CBR_600", "TT_2JZ_1_12", "TT_HONDA_CBR_600_CUSTOM", "TT_3_1_CAM", "TT_DODGE_NEON_2003_CRANK", "TT_MIATA_VVT", "TT_HONDA_ACCORD_1_24_SHIFTED", "TT_MAZDA_MIATA_VVT_TEST", "TT_SUBARU_7_6", "TT_JEEP_18_2_2_2", "TT_NISSAN_SR20VE_360", "TT_DODGE_NEON_1995_ONLY_CRANK", "TT_JEEP_4_CYL", "TT_FIAT_IAW_P8", "TT_MAZDA_Z5", "TT_VVT_MIATA_NB2", "TT_RENIX_44_2_2", "TT_RENIX_66_2_2_2", "TT_HONDA_K_12_1", "TT_VVT_BOSCH_QUICK_START", "TT_TOOTHED_WHEEL_36_2", "TT_SUBARU_SVX", "TT_UNUSED" -#define trigger_type_e_enum "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID" +#define trigger_type_e_auto_enum "TT_TOOTHED_WHEEL", "TT_FORD_ASPIRE", "TT_DODGE_NEON_1995", "TT_MAZDA_MIATA_NA", "TT_MAZDA_MIATA_NB1", "TT_GM_7X", "TT_MINI_COOPER_R50", "TT_MAZDA_SOHC_4", "TT_TOOTHED_WHEEL_60_2", "TT_TOOTHED_WHEEL_36_1", "TT_HONDA_4_24_1", "TT_MITSUBISHI", "TT_HONDA_4_24", "TT_HONDA_1_4_24", "TT_DODGE_NEON_2003_CAM", "TT_MAZDA_DOHC_1_4", "TT_ONE_PLUS_ONE", "TT_VVT_JZ", "TT_ONE", "TT_DODGE_RAM", "TT_60_2_VW", "TT_HONDA_1_24", "TT_DODGE_STRATUS", "TT_36_2_2_2", "TT_NISSAN_SR20VE", "TT_2JZ_3_34", "TT_ROVER_K", "TT_GM_LS_24", "TT_HONDA_CBR_600", "TT_2JZ_1_12", "TT_HONDA_CBR_600_CUSTOM", "TT_3_1_CAM", "TT_DODGE_NEON_2003_CRANK", "TT_MIATA_VVT", "TT_HONDA_ACCORD_1_24_SHIFTED", "TT_MAZDA_MIATA_VVT_TEST", "TT_SUBARU_7_6", "TT_JEEP_18_2_2_2", "TT_NISSAN_SR20VE_360", "TT_DODGE_NEON_1995_ONLY_CRANK", "TT_JEEP_4_CYL", "TT_FIAT_IAW_P8", "TT_MAZDA_Z5", "TT_VVT_MIATA_NB2", "TT_RENIX_44_2_2", "TT_RENIX_66_2_2_2", "TT_HONDA_K_12_1", "TT_VVT_BOSCH_QUICK_START", "TT_TOOTHED_WHEEL_36_2", "TT_SUBARU_SVX", "TT_1_16", "TT_UNUSED" +#define trigger_type_e_enum "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID" #define trigger_type_offset 524 #define trigger_unusedBit_4_10_offset 528 #define trigger_unusedBit_4_11_offset 528 @@ -1481,7 +1481,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2020.09.29.all.4039617300" +#define TS_SIGNATURE "rusEFI 2020.09.29.all.1949854576" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 diff --git a/firmware/controllers/generated/signature_all.h b/firmware/controllers/generated/signature_all.h index f79e59caad..a753fc2dde 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.09.29 -#define SIGNATURE_HASH 4039617300 -#define TS_SIGNATURE "rusEFI 2020.09.29.all.4039617300" +#define SIGNATURE_HASH 1949854576 +#define TS_SIGNATURE "rusEFI 2020.09.29.all.1949854576" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index f7e4ab67ab..44bc4122d7 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.09.29 -#define SIGNATURE_HASH 1465699631 -#define TS_SIGNATURE "rusEFI 2020.09.29.frankenso_na6.1465699631" +#define SIGNATURE_HASH 3550678347 +#define TS_SIGNATURE "rusEFI 2020.09.29.frankenso_na6.3550678347" diff --git a/firmware/controllers/generated/signature_hellen_cypress.h b/firmware/controllers/generated/signature_hellen_cypress.h index 27a9f1b9e8..303bf7d78c 100644 --- a/firmware/controllers/generated/signature_hellen_cypress.h +++ b/firmware/controllers/generated/signature_hellen_cypress.h @@ -4,5 +4,5 @@ #define SIGNATURE_BOARD hellen_cypress #define SIGNATURE_DATE 2020.09.29 -#define SIGNATURE_HASH 1241557610 -#define TS_SIGNATURE "rusEFI 2020.09.29.hellen_cypress.1241557610" +#define SIGNATURE_HASH 3472845326 +#define TS_SIGNATURE "rusEFI 2020.09.29.hellen_cypress.3472845326" diff --git a/firmware/controllers/generated/signature_kin.h b/firmware/controllers/generated/signature_kin.h index dba9584b88..4e0fdf03b5 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.09.29 -#define SIGNATURE_HASH 454856848 -#define TS_SIGNATURE "rusEFI 2020.09.29.kin.454856848" +#define SIGNATURE_HASH 2682474740 +#define TS_SIGNATURE "rusEFI 2020.09.29.kin.2682474740" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index 06115d517c..dffa00e0ad 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.09.29 -#define SIGNATURE_HASH 127685763 -#define TS_SIGNATURE "rusEFI 2020.09.29.mre_f4.127685763" +#define SIGNATURE_HASH 2204341479 +#define TS_SIGNATURE "rusEFI 2020.09.29.mre_f4.2204341479" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index 7e2a851957..3505877e48 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.09.29 -#define SIGNATURE_HASH 127685763 -#define TS_SIGNATURE "rusEFI 2020.09.29.mre_f7.127685763" +#define SIGNATURE_HASH 2204341479 +#define TS_SIGNATURE "rusEFI 2020.09.29.mre_f7.2204341479" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index 7d1994e2d1..d564395d87 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.09.29 -#define SIGNATURE_HASH 1172849255 -#define TS_SIGNATURE "rusEFI 2020.09.29.prometheus_405.1172849255" +#define SIGNATURE_HASH 3239543299 +#define TS_SIGNATURE "rusEFI 2020.09.29.prometheus_405.3239543299" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index 715389ad95..76f7bf9fc3 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.09.29 -#define SIGNATURE_HASH 1172849255 -#define TS_SIGNATURE "rusEFI 2020.09.29.prometheus_469.1172849255" +#define SIGNATURE_HASH 3239543299 +#define TS_SIGNATURE "rusEFI 2020.09.29.prometheus_469.3239543299" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index 4532eab5cd..05906e134f 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.09.29 -#define SIGNATURE_HASH 1688175889 -#define TS_SIGNATURE "rusEFI 2020.09.29.proteus_f4.1688175889" +#define SIGNATURE_HASH 3764405621 +#define TS_SIGNATURE "rusEFI 2020.09.29.proteus_f4.3764405621" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index 96e4bb4539..627cc1ff2f 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.09.29 -#define SIGNATURE_HASH 1688175889 -#define TS_SIGNATURE "rusEFI 2020.09.29.proteus_f7.1688175889" +#define SIGNATURE_HASH 3764405621 +#define TS_SIGNATURE "rusEFI 2020.09.29.proteus_f7.3764405621" diff --git a/firmware/tunerstudio/generated/cache.zip b/firmware/tunerstudio/generated/cache.zip index f5801b209c1f86ee8d6a22156ec2e5b6be3a54cf..f24db59d931609ce10e41f0ed5b0b12871153902 100644 GIT binary patch delta 282922 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 delta 283157 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

4cobk0?U?r=o5S2>skqm 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 Ezj-`7bpQYW diff --git a/firmware/tunerstudio/generated/rusefi.ini b/firmware/tunerstudio/generated/rusefi.ini index 50cd9d9c0a..4880e142ca 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.09.29.all.4039617300" + signature = "rusEFI 2020.09.29.all.1949854576" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.all.4039617300" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.all.1949854576" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:04 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:12 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "Disabled", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini index 230bbc5b04..3099d4af95 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.09.29.frankenso_na6.1465699631" + signature = "rusEFI 2020.09.29.frankenso_na6.3550678347" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.frankenso_na6.1465699631" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.frankenso_na6.3550678347" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:17 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:24 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "NONE","Analog 3O","Analog 3L","Analog 3M","Analog 3J","Analog 3I","INVALID","Analog 3H","Analog 3G","INVALID","INVALID","INVALID","Analog 3P","Analog 3Q","Analog 3N","Analog VBatt","Analog 3E", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini b/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini index 6d1c1a509f..abd05949c0 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 2020.09.29.hellen_cypress.1241557610" + signature = "rusEFI 2020.09.29.hellen_cypress.3472845326" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.hellen_cypress.1241557610" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.hellen_cypress.3472845326" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 hellen_cypress_gen_config.bat integration/rusefi_config.txt Tue Sep 29 01:07:25 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Tue Sep 29 01:20:34 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "Disabled", "P10 (B_0)", "P11 (B_1)", "P12 (B_2)", "P13 (B_3)", "P14 (B_4)", "P15 (B_5)", "P16 (B_6)", "P17 (B_7)", "P18 (B_8)", "P19 (B_9)", "P1A (B_10)", "P1B (B_11)", "P1C (B_12)", "P1D (B_13)", "P1E (B_14)", "P1F (B_15)", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "P2A (C_10)", "P29 (C_9)", "P28 (C_8)", "P27 (C_7)", "P25 (C_5)", "P24 (C_4)", "P23 (C_3)", "P22 (C_2)", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_kinetis.ini b/firmware/tunerstudio/generated/rusefi_kinetis.ini index 8331011585..2359fa259b 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.09.29.kin.454856848" + signature = "rusEFI 2020.09.29.kin.2682474740" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.kin.454856848" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.kin.2682474740" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:24 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Tue Sep 29 01:20:32 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "Disabled", "PA2", "PA3", "INVALID", "PD3", "INVALID", "INVALID", "INVALID", "PB12", "PB13", "INVALID", "PE2", "INVALID", "PC14", "PC15", "PC16", "PC17", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f4.ini b/firmware/tunerstudio/generated/rusefi_mre_f4.ini index 27a0af9114..1b7da37a37 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.09.29.mre_f4.127685763" + signature = "rusEFI 2020.09.29.mre_f4.2204341479" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.mre_f4.127685763" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.mre_f4.2204341479" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:15 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:22 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "NONE","18 - AN temp 1","23 - AN temp 2","24 - AN temp 3","22 - AN temp 4","28 - AN volt 10","INVALID","26 - AN volt 2","31 - AN volt 3","36 - AN volt 8","40 - AN volt 9","27 - AN volt 1","Battery Sense","19 - AN volt 4","20 - AN volt 5","32 - AN volt 6","30 - AN volt 7", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f7.ini b/firmware/tunerstudio/generated/rusefi_mre_f7.ini index 87f5c189ad..17d9a0bd48 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.09.29.mre_f7.127685763" + signature = "rusEFI 2020.09.29.mre_f7.2204341479" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.mre_f7.127685763" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.mre_f7.2204341479" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:14 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:18 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "NONE","18 - AN temp 1","23 - AN temp 2","24 - AN temp 3","22 - AN temp 4","28 - AN volt 10","INVALID","26 - AN volt 2","31 - AN volt 3","36 - AN volt 8","40 - AN volt 9","27 - AN volt 1","Battery Sense","19 - AN volt 4","20 - AN volt 5","32 - AN volt 6","30 - AN volt 7", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini index 44e60b45a3..de8bc596d7 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.09.29.prometheus_405.1172849255" + signature = "rusEFI 2020.09.29.prometheus_405.3239543299" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.prometheus_405.1172849255" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.prometheus_405.3239543299" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:20 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:27 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "NONE","Analog 3O","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini index 2300191ea9..39629a20bd 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.09.29.prometheus_469.1172849255" + signature = "rusEFI 2020.09.29.prometheus_469.3239543299" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.prometheus_469.1172849255" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.prometheus_469.3239543299" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:18 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:25 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "NONE","Analog 3O","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini index 416df13482..8dccbfcfc5 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.09.29.proteus_f4.1688175889" + signature = "rusEFI 2020.09.29.proteus_f4.3764405621" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.proteus_f4.1688175889" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.proteus_f4.3764405621" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:23 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:31 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "NONE","Analog Volt 5","Analog Volt 6","Analog Volt 7","Analog Volt 8","Analog Volt 9","Analog Volt 10","Analog Volt 11","Battery Sense","Analog Temp 3","Analog Temp 4","Analog Volt 1","Analog Volt 2","Analog Volt 3","Analog Volt 4","Analog Temp 1","Analog Temp 2", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini index ffad4d8c18..98075fe5c7 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.09.29.proteus_f7.1688175889" + signature = "rusEFI 2020.09.29.proteus_f7.3764405621" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.09.29.proteus_f7.1688175889" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.09.29.proteus_f7.3764405621" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -74,7 +74,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 Sep 29 01:07:21 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:29 UTC 2020 pageSize = 20000 page = 1 @@ -193,7 +193,7 @@ page = 1 tps2_1AdcChannel = bits, U08, 515, [0:5] "NONE","Analog Volt 5","Analog Volt 6","Analog Volt 7","Analog Volt 8","Analog Volt 9","Analog Volt 10","Analog Volt 11","Battery Sense","Analog Temp 3","Analog Temp 4","Analog Volt 1","Analog Volt 2","Analog Volt 3","Analog Volt 4","Analog Temp 1","Analog Temp 2", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" idle_derivativeFilterLoss = scalar, F32, 516, "x", 1.0, 0.0, -1000000, 1000000, 4 sensorChartFrequency = scalar, S32, 520, "index", 1.0, 0, 0, 300, 0 ; size 4 - trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + trigger_type = bits, U32, 524, [0:5], "custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" trigger_todoRemoveMeOneDay0= bits, U32, 528, [0:0], "false", "true" trigger_todoRemoveMeOneDay1= bits, U32, 528, [1:1], "false", "true" trigger_useOnlyFirstChannel= bits, U32, 528, [2:2], "false", "true" 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 7f163418ff..ee6cc544c2 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 Tue Sep 29 01:07:04 UTC 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Sep 29 01:20:12 UTC 2020 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -1126,6 +1126,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 = 1949854576; public static final int silentTriggerError_offset = 1464; public static final int slowAdcAlpha_offset = 2088; public static final int solenoidPadding_offset = 1198; @@ -1385,7 +1386,7 @@ public class Fields { public static final char TS_SD_R_COMMAND = 'r'; public static final char TS_SD_W_COMMAND = 'w'; public static final char TS_SET_LOGGER_SWITCH = 'l'; - public static final String TS_SIGNATURE = "rusEFI 2020.09.29.all.4039617300"; + public static final String TS_SIGNATURE = "rusEFI 2020.09.29.all.1949854576"; public static final char TS_SINGLE_WRITE_COMMAND = 'W'; public static final int TT_TT_60_2_VW = 20; public static final int TT_TT_ONE = 18; @@ -1637,7 +1638,7 @@ public class Fields { public static final Field TPS2_1ADCCHANNEL = Field.create("TPS2_1ADCCHANNEL", 515, FieldType.INT8, adc_channel_e); public static final Field IDLE_DERIVATIVEFILTERLOSS = Field.create("IDLE_DERIVATIVEFILTERLOSS", 516, FieldType.FLOAT); public static final Field SENSORCHARTFREQUENCY = Field.create("SENSORCHARTFREQUENCY", 520, FieldType.INT); - public static final String[] trigger_type_e = {"custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "trg50", "INVALID"}; + public static final String[] trigger_type_e = {"custom toothed wheel", "Ford Aspire", "Dodge Neon 1995", "Miata NA", "Miata NB", "GM_7X", "Cooper R50", "Mazda SOHC 4", "60/2", "36/1", "Honda 4+24+1", "Mitsubishi", "Honda 4+24", "Honda 1+4+24", "Dodge Neon 2003", "Mazda DOHC 1+4", "1+1", "INVALID", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Honda 1+24", "Dodge Stratus", "36_2_2_2", "Nissan Primera", "dev 2JZ 3/34 simulator", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "Dodge Neon 2003 crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "Jeep 18-2-2-2", "WIP", "Dodge Neon 1995 crank only", "Jeep XJ 4 cyl", "FiatIAQ_P8", "Mazda Z5", "trg43", "Renix 44-2-2", "Renix 66-2-2-2", "Honda K 12+1", "trg47", "36/2", "Subaru SVX", "1+16", "trg51", "trg52", "INVALID"}; public static final Field TRIGGER_TYPE = Field.create("TRIGGER_TYPE", 524, FieldType.INT, trigger_type_e); public static final Field TRIGGER_TODOREMOVEMEONEDAY0 = Field.create("TRIGGER_TODOREMOVEMEONEDAY0", 528, FieldType.BIT, 0); public static final Field TRIGGER_TODOREMOVEMEONEDAY1 = Field.create("TRIGGER_TODOREMOVEMEONEDAY1", 528, FieldType.BIT, 1); diff --git a/java_console/rusefi.xml b/java_console/rusefi.xml index 3ba2f68e94..c29eebf1c1 100644 --- a/java_console/rusefi.xml +++ b/java_console/rusefi.xml @@ -1,6 +1,6 @@ - +