From d1ec77847c02026cdc4407d901edc725d04f1541 Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Sat, 12 Jun 2021 04:03:50 +0000 Subject: [PATCH] Auto-generated configs and docs --- .../controllers/algo/auto_generated_enums.cpp | 31 +++++++++++++++++- .../controllers/algo/auto_generated_enums.h | 3 +- ...ngine_configuration_generated_structures.h | 13 +++----- .../controllers/algo/rusefi_generated.h | 13 ++++---- .../controllers/algo/auto_generated_enums.cpp | 31 +++++++++++++++++- .../controllers/algo/auto_generated_enums.h | 3 +- ...ngine_configuration_generated_structures.h | 13 +++----- .../controllers/algo/rusefi_generated.h | 13 ++++---- .../controllers/algo/auto_generated_enums.cpp | 31 +++++++++++++++++- .../controllers/algo/auto_generated_enums.h | 3 +- ...ngine_configuration_generated_structures.h | 13 +++----- .../controllers/algo/rusefi_generated.h | 13 ++++---- .../controllers/algo/auto_generated_enums.cpp | 31 +++++++++++++++++- .../controllers/algo/auto_generated_enums.h | 3 +- ...ngine_configuration_generated_structures.h | 13 +++----- .../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 | 13 ++++---- .../controllers/generated/signature_all.h | 6 ++-- .../generated/signature_frankenso_na6.h | 6 ++-- .../generated/signature_hellen121nissan.h | 6 ++-- .../generated/signature_hellen121vag.h | 6 ++-- .../generated/signature_hellen128.h | 6 ++-- .../generated/signature_hellen72.h | 6 ++-- .../generated/signature_hellenNA6.h | 6 ++-- .../generated/signature_hellen_cypress.h | 6 ++-- .../controllers/generated/signature_kin.h | 6 ++-- .../controllers/generated/signature_mre_f4.h | 6 ++-- .../controllers/generated/signature_mre_f7.h | 6 ++-- .../generated/signature_prometheus_405.h | 6 ++-- .../generated/signature_prometheus_469.h | 6 ++-- .../generated/signature_proteus_f4.h | 6 ++-- .../generated/signature_proteus_f7.h | 6 ++-- .../generated/signature_subaru_eg33_f7.h | 6 ++-- firmware/tunerstudio/generated/cache.zip | Bin 1514595 -> 1515395 bytes firmware/tunerstudio/generated/rusefi.ini | 11 +++---- .../generated/rusefi_frankenso_na6.ini | 11 +++---- .../generated/rusefi_hellen121nissan.ini | 11 +++---- .../generated/rusefi_hellen121vag.ini | 11 +++---- .../generated/rusefi_hellen128.ini | 11 +++---- .../tunerstudio/generated/rusefi_hellen72.ini | 11 +++---- .../generated/rusefi_hellenNA6.ini | 11 +++---- .../generated/rusefi_hellen_cypress.ini | 11 +++---- .../tunerstudio/generated/rusefi_kinetis.ini | 11 +++---- .../tunerstudio/generated/rusefi_mre_f4.ini | 11 +++---- .../tunerstudio/generated/rusefi_mre_f7.ini | 11 +++---- .../generated/rusefi_prometheus_405.ini | 11 +++---- .../generated/rusefi_prometheus_469.ini | 11 +++---- .../generated/rusefi_proteus_f4.ini | 11 +++---- .../generated/rusefi_proteus_f7.ini | 11 +++---- .../generated/rusefi_subaru_eg33_f7.ini | 11 +++---- .../com/rusefi/config/generated/Fields.java | 21 +++++------- java_console/rusefi.xml | 2 +- 55 files changed, 318 insertions(+), 225 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 30d4b40afd..d62bf60e7c 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 Fri May 28 07:39:52 UTC 2021 +// 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 Sat Jun 12 04:02:41 UTC 2021 // see also gen_config_and_enums.bat @@ -1311,6 +1311,35 @@ case TCHARGE_MODE_RPM_TPS: } return NULL; } +const char *getTcu_role_e(tcu_role_e value){ +switch(value) { +case ROLE_DOWNSHIFT: + return "ROLE_DOWNSHIFT"; +case ROLE_DRIVE: + return "ROLE_DRIVE"; +case ROLE_GEAR_1: + return "ROLE_GEAR_1"; +case ROLE_GEAR_2: + return "ROLE_GEAR_2"; +case ROLE_GEAR_3: + return "ROLE_GEAR_3"; +case ROLE_LOW: + return "ROLE_LOW"; +case ROLE_MANUAL: + return "ROLE_MANUAL"; +case ROLE_NEUTRAL: + return "ROLE_NEUTRAL"; +case ROLE_PARK: + return "ROLE_PARK"; +case ROLE_PARK_NEUTRAL: + return "ROLE_PARK_NEUTRAL"; +case ROLE_REVERSE: + return "ROLE_REVERSE"; +case ROLE_UPSHIFT: + return "ROLE_UPSHIFT"; + } + return NULL; +} const char *getTiming_mode_e(timing_mode_e value){ switch(value) { case Internal_ForceMyEnumIntSize_timing_mode: diff --git a/firmware/config/boards/hellen/cypress/config/controllers/algo/auto_generated_enums.h b/firmware/config/boards/hellen/cypress/config/controllers/algo/auto_generated_enums.h index 10eba3e219..ab2eeafc5e 100644 --- a/firmware/config/boards/hellen/cypress/config/controllers/algo/auto_generated_enums.h +++ b/firmware/config/boards/hellen/cypress/config/controllers/algo/auto_generated_enums.h @@ -1,4 +1,4 @@ -// 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 Sat May 08 16:52:30 MSK 2021 +// 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 Sat Jun 12 04:02:41 UTC 2021 // see also gen_config_and_enums.bat @@ -47,6 +47,7 @@ const char *getSensor_chart_e(sensor_chart_e value); const char *getSpi_device_e(spi_device_e value); const char *getSpi_speed_e(spi_speed_e value); const char *getTChargeMode_e(tChargeMode_e value); +const char *getTcu_role_e(tcu_role_e value); const char *getTiming_mode_e(timing_mode_e value); const char *getTle8888_mode_e(tle8888_mode_e value); const char *getTrigger_event_e(trigger_event_e value); 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 67371b2999..309cfc1371 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 Fri Jun 11 10:26:53 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sat Jun 12 04:03:06 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1957,7 +1957,7 @@ struct engine_configuration_s { bool tcuEnabled : 1; /** offset 976 bit 29 */ - bool unusedBit_251_29 : 1; + bool tcuInputMode : 1; /** offset 976 bit 30 */ bool unusedBit_289_30 : 1; @@ -3790,13 +3790,10 @@ struct engine_configuration_s { */ uint16_t mc33_t_hold_tot; /** + units * offset 4514 */ - pin_input_mode_e tcuUpshiftButtonPinMode; - /** - * offset 4515 - */ - pin_input_mode_e tcuDownshiftButtonPinMode; + int8_t unused1551[2]; /** * offset 4516 */ @@ -4215,4 +4212,4 @@ struct persistent_config_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Fri Jun 11 10:26:53 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sat Jun 12 04:03:06 UTC 2021 diff --git a/firmware/config/boards/hellen/cypress/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/hellen/cypress/config/controllers/algo/rusefi_generated.h index eece08c340..3510bb15f1 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 @@ -1280,8 +1280,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD hellen_cypress -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 1279579099 +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 1015850303 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1384,6 +1384,7 @@ #define tChargeMode_e_enum "RPM+TPS (Default)", "Air Mass Interpolation" #define tChargeMode_offset 3884 #define TCU_GEAR_COUNT 10 +#define TCU_INPUT_COUNT 6 #define tcu_solenoid1_offset 1192 #define tcu_solenoid2_offset 1193 #define tcu_solenoid3_offset 1194 @@ -1397,12 +1398,12 @@ #define tcu_solenoid_mode4_offset 4520 #define tcu_solenoid_mode5_offset 4521 #define tcu_solenoid_mode6_offset 4522 +#define TCU_STATE_COUNT 8 #define tcuDownshiftButtonPin_offset 1819 -#define tcuDownshiftButtonPinMode_offset 4515 #define tcuEnabled_offset 976 +#define tcuInputMode_offset 976 #define tcuSolenoidTable_offset 15136 #define tcuUpshiftButtonPin_offset 1818 -#define tcuUpshiftButtonPinMode_offset 4514 #define tempHpfpDuration_offset 726 #define tempHpfpStart_offset 724 #define test557pin_offset 3101 @@ -1634,7 +1635,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.06.11.hellen_cypress.1279579099" +#define TS_SIGNATURE "rusEFI 2021.06.12.hellen_cypress.1015850303" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 @@ -1698,6 +1699,7 @@ #define unused1476b20_offset 1476 #define unused1476b3_offset 1476 #define unused1476b8_offset 1476 +#define unused1551_offset 4514 #define unused1708_offset 1708 #define unused1756_offset 1756 #define unused2260_offset 2260 @@ -1731,7 +1733,6 @@ #define unusedAuxVoltage1_TODO_332_offset 2713 #define unusedAuxVoltage2_TODO_332_offset 2714 #define unusedBit4_1476_offset 1476 -#define unusedBit_251_29_offset 976 #define unusedBit_289_30_offset 976 #define unusedBit_289_31_offset 976 #define unusedBit_34_31_offset 76 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 afc49432cd..93b7cbd95a 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 Fri May 28 07:39:52 UTC 2021 +// 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 Sat Jun 12 04:02:41 UTC 2021 // see also gen_config_and_enums.bat @@ -1107,6 +1107,35 @@ case TCHARGE_MODE_RPM_TPS: } return NULL; } +const char *getTcu_role_e(tcu_role_e value){ +switch(value) { +case ROLE_DOWNSHIFT: + return "ROLE_DOWNSHIFT"; +case ROLE_DRIVE: + return "ROLE_DRIVE"; +case ROLE_GEAR_1: + return "ROLE_GEAR_1"; +case ROLE_GEAR_2: + return "ROLE_GEAR_2"; +case ROLE_GEAR_3: + return "ROLE_GEAR_3"; +case ROLE_LOW: + return "ROLE_LOW"; +case ROLE_MANUAL: + return "ROLE_MANUAL"; +case ROLE_NEUTRAL: + return "ROLE_NEUTRAL"; +case ROLE_PARK: + return "ROLE_PARK"; +case ROLE_PARK_NEUTRAL: + return "ROLE_PARK_NEUTRAL"; +case ROLE_REVERSE: + return "ROLE_REVERSE"; +case ROLE_UPSHIFT: + return "ROLE_UPSHIFT"; + } + return NULL; +} const char *getTiming_mode_e(timing_mode_e value){ switch(value) { case Internal_ForceMyEnumIntSize_timing_mode: diff --git a/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.h b/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.h index cdf9c67a36..ab2eeafc5e 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/auto_generated_enums.h @@ -1,4 +1,4 @@ -// 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 Sat May 08 16:52:29 MSK 2021 +// 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 Sat Jun 12 04:02:41 UTC 2021 // see also gen_config_and_enums.bat @@ -47,6 +47,7 @@ const char *getSensor_chart_e(sensor_chart_e value); const char *getSpi_device_e(spi_device_e value); const char *getSpi_speed_e(spi_speed_e value); const char *getTChargeMode_e(tChargeMode_e value); +const char *getTcu_role_e(tcu_role_e value); const char *getTiming_mode_e(timing_mode_e value); const char *getTle8888_mode_e(tle8888_mode_e value); const char *getTrigger_event_e(trigger_event_e value); 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 34903daa32..ae0709b211 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 Fri Jun 11 10:26:51 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sat Jun 12 04:03:05 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1957,7 +1957,7 @@ struct engine_configuration_s { bool tcuEnabled : 1; /** offset 976 bit 29 */ - bool unusedBit_251_29 : 1; + bool tcuInputMode : 1; /** offset 976 bit 30 */ bool unusedBit_289_30 : 1; @@ -3784,13 +3784,10 @@ struct engine_configuration_s { */ uint16_t mc33_t_hold_tot; /** + units * offset 4486 */ - pin_input_mode_e tcuUpshiftButtonPinMode; - /** - * offset 4487 - */ - pin_input_mode_e tcuDownshiftButtonPinMode; + int8_t unused1551[2]; /** * offset 4488 */ @@ -4209,4 +4206,4 @@ struct persistent_config_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Fri Jun 11 10:26:51 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sat Jun 12 04:03:05 UTC 2021 diff --git a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h index 4f268e6833..964216e301 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -1264,8 +1264,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD kin -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 3017875239 +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 3274271171 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1368,6 +1368,7 @@ #define tChargeMode_e_enum "RPM+TPS (Default)", "Air Mass Interpolation" #define tChargeMode_offset 3856 #define TCU_GEAR_COUNT 10 +#define TCU_INPUT_COUNT 6 #define tcu_solenoid1_offset 1192 #define tcu_solenoid2_offset 1193 #define tcu_solenoid3_offset 1194 @@ -1381,12 +1382,12 @@ #define tcu_solenoid_mode4_offset 4492 #define tcu_solenoid_mode5_offset 4493 #define tcu_solenoid_mode6_offset 4494 +#define TCU_STATE_COUNT 8 #define tcuDownshiftButtonPin_offset 1819 -#define tcuDownshiftButtonPinMode_offset 4487 #define tcuEnabled_offset 976 +#define tcuInputMode_offset 976 #define tcuSolenoidTable_offset 15108 #define tcuUpshiftButtonPin_offset 1818 -#define tcuUpshiftButtonPinMode_offset 4486 #define tempHpfpDuration_offset 726 #define tempHpfpStart_offset 724 #define test557pin_offset 3073 @@ -1618,7 +1619,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator true #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.06.11.kin.3017875239" +#define TS_SIGNATURE "rusEFI 2021.06.12.kin.3274271171" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 @@ -1682,6 +1683,7 @@ #define unused1476b20_offset 1476 #define unused1476b3_offset 1476 #define unused1476b8_offset 1476 +#define unused1551_offset 4486 #define unused1708_offset 1708 #define unused1756_offset 1756 #define unused2260_offset 2252 @@ -1715,7 +1717,6 @@ #define unusedAuxVoltage1_TODO_332_offset 2685 #define unusedAuxVoltage2_TODO_332_offset 2686 #define unusedBit4_1476_offset 1476 -#define unusedBit_251_29_offset 976 #define unusedBit_289_30_offset 976 #define unusedBit_289_31_offset 976 #define unusedBit_34_31_offset 76 diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/auto_generated_enums.cpp b/firmware/config/boards/subaru_eg33/config/controllers/algo/auto_generated_enums.cpp index 697c3c6a9b..3a85576b07 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/auto_generated_enums.cpp +++ b/firmware/config/boards/subaru_eg33/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 Fri May 28 07:39:53 UTC 2021 +// 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 Sat Jun 12 04:02:42 UTC 2021 // see also gen_config_and_enums.bat @@ -1307,6 +1307,35 @@ case TCHARGE_MODE_RPM_TPS: } return NULL; } +const char *getTcu_role_e(tcu_role_e value){ +switch(value) { +case ROLE_DOWNSHIFT: + return "ROLE_DOWNSHIFT"; +case ROLE_DRIVE: + return "ROLE_DRIVE"; +case ROLE_GEAR_1: + return "ROLE_GEAR_1"; +case ROLE_GEAR_2: + return "ROLE_GEAR_2"; +case ROLE_GEAR_3: + return "ROLE_GEAR_3"; +case ROLE_LOW: + return "ROLE_LOW"; +case ROLE_MANUAL: + return "ROLE_MANUAL"; +case ROLE_NEUTRAL: + return "ROLE_NEUTRAL"; +case ROLE_PARK: + return "ROLE_PARK"; +case ROLE_PARK_NEUTRAL: + return "ROLE_PARK_NEUTRAL"; +case ROLE_REVERSE: + return "ROLE_REVERSE"; +case ROLE_UPSHIFT: + return "ROLE_UPSHIFT"; + } + return NULL; +} const char *getTiming_mode_e(timing_mode_e value){ switch(value) { case Internal_ForceMyEnumIntSize_timing_mode: diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/auto_generated_enums.h b/firmware/config/boards/subaru_eg33/config/controllers/algo/auto_generated_enums.h index 1e98561330..f928e49645 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/auto_generated_enums.h +++ b/firmware/config/boards/subaru_eg33/config/controllers/algo/auto_generated_enums.h @@ -1,4 +1,4 @@ -// 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 Sat May 08 16:45:49 MSK 2021 +// 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 Sat Jun 12 04:02:42 UTC 2021 // see also gen_config_and_enums.bat @@ -47,6 +47,7 @@ const char *getSensor_chart_e(sensor_chart_e value); const char *getSpi_device_e(spi_device_e value); const char *getSpi_speed_e(spi_speed_e value); const char *getTChargeMode_e(tChargeMode_e value); +const char *getTcu_role_e(tcu_role_e value); const char *getTiming_mode_e(timing_mode_e value); const char *getTle8888_mode_e(tle8888_mode_e value); const char *getTrigger_event_e(trigger_event_e value); diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h index a19f57d334..e5cf47a151 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Fri Jun 11 10:26:55 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:03:08 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1957,7 +1957,7 @@ struct engine_configuration_s { bool tcuEnabled : 1; /** offset 976 bit 29 */ - bool unusedBit_251_29 : 1; + bool tcuInputMode : 1; /** offset 976 bit 30 */ bool unusedBit_289_30 : 1; @@ -3790,13 +3790,10 @@ struct engine_configuration_s { */ uint16_t mc33_t_hold_tot; /** + units * offset 4514 */ - pin_input_mode_e tcuUpshiftButtonPinMode; - /** - * offset 4515 - */ - pin_input_mode_e tcuDownshiftButtonPinMode; + int8_t unused1551[2]; /** * offset 4516 */ @@ -4215,4 +4212,4 @@ struct persistent_config_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Fri Jun 11 10:26:55 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:03:08 UTC 2021 diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h index 57b5613f19..6b74710c0a 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h @@ -1280,8 +1280,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD subaru_eg33_f7 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 2741241373 +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 3551293689 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1384,6 +1384,7 @@ #define tChargeMode_e_enum "RPM+TPS (Default)", "Air Mass Interpolation" #define tChargeMode_offset 3884 #define TCU_GEAR_COUNT 10 +#define TCU_INPUT_COUNT 6 #define tcu_solenoid1_offset 1192 #define tcu_solenoid2_offset 1193 #define tcu_solenoid3_offset 1194 @@ -1397,12 +1398,12 @@ #define tcu_solenoid_mode4_offset 4520 #define tcu_solenoid_mode5_offset 4521 #define tcu_solenoid_mode6_offset 4522 +#define TCU_STATE_COUNT 8 #define tcuDownshiftButtonPin_offset 1819 -#define tcuDownshiftButtonPinMode_offset 4515 #define tcuEnabled_offset 976 +#define tcuInputMode_offset 976 #define tcuSolenoidTable_offset 15136 #define tcuUpshiftButtonPin_offset 1818 -#define tcuUpshiftButtonPinMode_offset 4514 #define tempHpfpDuration_offset 726 #define tempHpfpStart_offset 724 #define test557pin_offset 3101 @@ -1634,7 +1635,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port false -#define TS_SIGNATURE "rusEFI 2021.06.11.subaru_eg33_f7.2741241373" +#define TS_SIGNATURE "rusEFI 2021.06.12.subaru_eg33_f7.3551293689" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 @@ -1698,6 +1699,7 @@ #define unused1476b20_offset 1476 #define unused1476b3_offset 1476 #define unused1476b8_offset 1476 +#define unused1551_offset 4514 #define unused1708_offset 1708 #define unused1756_offset 1756 #define unused2260_offset 2260 @@ -1731,7 +1733,6 @@ #define unusedAuxVoltage1_TODO_332_offset 2713 #define unusedAuxVoltage2_TODO_332_offset 2714 #define unusedBit4_1476_offset 1476 -#define unusedBit_251_29_offset 976 #define unusedBit_289_30_offset 976 #define unusedBit_289_31_offset 976 #define unusedBit_34_31_offset 76 diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index e8bf8c819f..5f5b131c27 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 Fri May 28 07:39:51 UTC 2021 +// 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 Sat Jun 12 04:02:41 UTC 2021 // see also gen_config_and_enums.bat @@ -1283,6 +1283,35 @@ case TCHARGE_MODE_RPM_TPS: } return NULL; } +const char *getTcu_role_e(tcu_role_e value){ +switch(value) { +case ROLE_DOWNSHIFT: + return "ROLE_DOWNSHIFT"; +case ROLE_DRIVE: + return "ROLE_DRIVE"; +case ROLE_GEAR_1: + return "ROLE_GEAR_1"; +case ROLE_GEAR_2: + return "ROLE_GEAR_2"; +case ROLE_GEAR_3: + return "ROLE_GEAR_3"; +case ROLE_LOW: + return "ROLE_LOW"; +case ROLE_MANUAL: + return "ROLE_MANUAL"; +case ROLE_NEUTRAL: + return "ROLE_NEUTRAL"; +case ROLE_PARK: + return "ROLE_PARK"; +case ROLE_PARK_NEUTRAL: + return "ROLE_PARK_NEUTRAL"; +case ROLE_REVERSE: + return "ROLE_REVERSE"; +case ROLE_UPSHIFT: + return "ROLE_UPSHIFT"; + } + return NULL; +} const char *getTiming_mode_e(timing_mode_e value){ switch(value) { case Internal_ForceMyEnumIntSize_timing_mode: diff --git a/firmware/controllers/algo/auto_generated_enums.h b/firmware/controllers/algo/auto_generated_enums.h index cdf9c67a36..ab2eeafc5e 100644 --- a/firmware/controllers/algo/auto_generated_enums.h +++ b/firmware/controllers/algo/auto_generated_enums.h @@ -1,4 +1,4 @@ -// 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 Sat May 08 16:52:29 MSK 2021 +// 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 Sat Jun 12 04:02:41 UTC 2021 // see also gen_config_and_enums.bat @@ -47,6 +47,7 @@ const char *getSensor_chart_e(sensor_chart_e value); const char *getSpi_device_e(spi_device_e value); const char *getSpi_speed_e(spi_speed_e value); const char *getTChargeMode_e(tChargeMode_e value); +const char *getTcu_role_e(tcu_role_e value); const char *getTiming_mode_e(timing_mode_e value); const char *getTle8888_mode_e(tle8888_mode_e value); const char *getTrigger_event_e(trigger_event_e value); diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index 0302b99478..5d3facb01c 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 Fri Jun 11 10:26:25 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:42 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1957,7 +1957,7 @@ struct engine_configuration_s { bool tcuEnabled : 1; /** offset 976 bit 29 */ - bool unusedBit_251_29 : 1; + bool tcuInputMode : 1; /** offset 976 bit 30 */ bool unusedBit_289_30 : 1; @@ -3790,13 +3790,10 @@ struct engine_configuration_s { */ uint16_t mc33_t_hold_tot; /** + units * offset 4514 */ - pin_input_mode_e tcuUpshiftButtonPinMode; - /** - * offset 4515 - */ - pin_input_mode_e tcuDownshiftButtonPinMode; + int8_t unused1551[2]; /** * offset 4516 */ @@ -4215,4 +4212,4 @@ struct persistent_config_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Fri Jun 11 10:26:25 UTC 2021 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:42 UTC 2021 diff --git a/firmware/controllers/generated/fsio_enums_generated.def b/firmware/controllers/generated/fsio_enums_generated.def index 633cb5caf5..2196c366ff 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 Fri Jun 11 10:26:25 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:42 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer FSIO_SETTING_ACIDLEEXTRAOFFSET = 1000, diff --git a/firmware/controllers/generated/fsio_getters.def b/firmware/controllers/generated/fsio_getters.def index 84de2aedb7..3959b634d0 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 Fri Jun 11 10:26:25 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:42 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_ACIDLEEXTRAOFFSET: diff --git a/firmware/controllers/generated/fsio_names.def b/firmware/controllers/generated/fsio_names.def index 6b2dcf9eb9..a983c931c8 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 Fri Jun 11 10:26:25 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:42 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer static LENameOrdinalPair leacIdleExtraOffset(FSIO_SETTING_ACIDLEEXTRAOFFSET, "cfg_acIdleExtraOffset"); diff --git a/firmware/controllers/generated/fsio_strings.def b/firmware/controllers/generated/fsio_strings.def index a7170f2a1a..dc7620c9c4 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 Fri Jun 11 10:26:25 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:42 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_ACIDLEEXTRAOFFSET: diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index a969a8ad8e..32844dd990 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -1277,8 +1277,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD all -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 238553099 +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 2129690351 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1381,6 +1381,7 @@ #define tChargeMode_e_enum "RPM+TPS (Default)", "Air Mass Interpolation" #define tChargeMode_offset 3884 #define TCU_GEAR_COUNT 10 +#define TCU_INPUT_COUNT 6 #define tcu_solenoid1_offset 1192 #define tcu_solenoid2_offset 1193 #define tcu_solenoid3_offset 1194 @@ -1394,12 +1395,12 @@ #define tcu_solenoid_mode4_offset 4520 #define tcu_solenoid_mode5_offset 4521 #define tcu_solenoid_mode6_offset 4522 +#define TCU_STATE_COUNT 8 #define tcuDownshiftButtonPin_offset 1819 -#define tcuDownshiftButtonPinMode_offset 4515 #define tcuEnabled_offset 976 +#define tcuInputMode_offset 976 #define tcuSolenoidTable_offset 15136 #define tcuUpshiftButtonPin_offset 1818 -#define tcuUpshiftButtonPinMode_offset 4514 #define tempHpfpDuration_offset 726 #define tempHpfpStart_offset 724 #define test557pin_offset 3101 @@ -1631,7 +1632,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.06.11.all.238553099" +#define TS_SIGNATURE "rusEFI 2021.06.12.all.2129690351" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 @@ -1695,6 +1696,7 @@ #define unused1476b20_offset 1476 #define unused1476b3_offset 1476 #define unused1476b8_offset 1476 +#define unused1551_offset 4514 #define unused1708_offset 1708 #define unused1756_offset 1756 #define unused2260_offset 2260 @@ -1728,7 +1730,6 @@ #define unusedAuxVoltage1_TODO_332_offset 2713 #define unusedAuxVoltage2_TODO_332_offset 2714 #define unusedBit4_1476_offset 1476 -#define unusedBit_251_29_offset 976 #define unusedBit_289_30_offset 976 #define unusedBit_289_31_offset 976 #define unusedBit_34_31_offset 76 diff --git a/firmware/controllers/generated/signature_all.h b/firmware/controllers/generated/signature_all.h index 7d32a38417..aaaa9c0e3d 100644 --- a/firmware/controllers/generated/signature_all.h +++ b/firmware/controllers/generated/signature_all.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD all -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 238553099 -#define TS_SIGNATURE "rusEFI 2021.06.11.all.238553099" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 2129690351 +#define TS_SIGNATURE "rusEFI 2021.06.12.all.2129690351" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index bb750f347e..c2ce791157 100644 --- a/firmware/controllers/generated/signature_frankenso_na6.h +++ b/firmware/controllers/generated/signature_frankenso_na6.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD frankenso_na6 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 913737266 -#define TS_SIGNATURE "rusEFI 2021.06.11.frankenso_na6.913737266" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 1186918614 +#define TS_SIGNATURE "rusEFI 2021.06.12.frankenso_na6.1186918614" diff --git a/firmware/controllers/generated/signature_hellen121nissan.h b/firmware/controllers/generated/signature_hellen121nissan.h index aa5cfa967e..ed81903bb8 100644 --- a/firmware/controllers/generated/signature_hellen121nissan.h +++ b/firmware/controllers/generated/signature_hellen121nissan.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen121nissan -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 3327950904 -#define TS_SIGNATURE "rusEFI 2021.06.11.hellen121nissan.3327950904" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 3063215836 +#define TS_SIGNATURE "rusEFI 2021.06.12.hellen121nissan.3063215836" diff --git a/firmware/controllers/generated/signature_hellen121vag.h b/firmware/controllers/generated/signature_hellen121vag.h index d560ea69aa..94ffcb9590 100644 --- a/firmware/controllers/generated/signature_hellen121vag.h +++ b/firmware/controllers/generated/signature_hellen121vag.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen121vag -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 337071341 -#define TS_SIGNATURE "rusEFI 2021.06.11.hellen121vag.337071341" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 1692350985 +#define TS_SIGNATURE "rusEFI 2021.06.12.hellen121vag.1692350985" diff --git a/firmware/controllers/generated/signature_hellen128.h b/firmware/controllers/generated/signature_hellen128.h index 11df44c86a..0145cbad84 100644 --- a/firmware/controllers/generated/signature_hellen128.h +++ b/firmware/controllers/generated/signature_hellen128.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen128 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 4190510319 -#define TS_SIGNATURE "rusEFI 2021.06.11.hellen128.4190510319" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 2299423243 +#define TS_SIGNATURE "rusEFI 2021.06.12.hellen128.2299423243" diff --git a/firmware/controllers/generated/signature_hellen72.h b/firmware/controllers/generated/signature_hellen72.h index 97a785eac5..54f68771b6 100644 --- a/firmware/controllers/generated/signature_hellen72.h +++ b/firmware/controllers/generated/signature_hellen72.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen72 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 2697918336 -#define TS_SIGNATURE "rusEFI 2021.06.11.hellen72.2697918336" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 3490087268 +#define TS_SIGNATURE "rusEFI 2021.06.12.hellen72.3490087268" diff --git a/firmware/controllers/generated/signature_hellenNA6.h b/firmware/controllers/generated/signature_hellenNA6.h index ee872fa7a7..cb94ac7430 100644 --- a/firmware/controllers/generated/signature_hellenNA6.h +++ b/firmware/controllers/generated/signature_hellenNA6.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellenNA6 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 1093144470 -#define TS_SIGNATURE "rusEFI 2021.06.11.hellenNA6.1093144470" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 836794738 +#define TS_SIGNATURE "rusEFI 2021.06.12.hellenNA6.836794738" diff --git a/firmware/controllers/generated/signature_hellen_cypress.h b/firmware/controllers/generated/signature_hellen_cypress.h index 010a8782e7..fcce3474dc 100644 --- a/firmware/controllers/generated/signature_hellen_cypress.h +++ b/firmware/controllers/generated/signature_hellen_cypress.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD hellen_cypress -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 1279579099 -#define TS_SIGNATURE "rusEFI 2021.06.11.hellen_cypress.1279579099" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 1015850303 +#define TS_SIGNATURE "rusEFI 2021.06.12.hellen_cypress.1015850303" diff --git a/firmware/controllers/generated/signature_kin.h b/firmware/controllers/generated/signature_kin.h index a8a748ebb9..5d0c38cfce 100644 --- a/firmware/controllers/generated/signature_kin.h +++ b/firmware/controllers/generated/signature_kin.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD kin -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 3017875239 -#define TS_SIGNATURE "rusEFI 2021.06.11.kin.3017875239" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 3274271171 +#define TS_SIGNATURE "rusEFI 2021.06.12.kin.3274271171" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index d134f0864d..423fcbedfe 100644 --- a/firmware/controllers/generated/signature_mre_f4.h +++ b/firmware/controllers/generated/signature_mre_f4.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD mre_f4 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 2364182801 -#define TS_SIGNATURE "rusEFI 2021.06.11.mre_f4.2364182801" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 4230146037 +#define TS_SIGNATURE "rusEFI 2021.06.12.mre_f4.4230146037" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index 6572666676..b7f3553e15 100644 --- a/firmware/controllers/generated/signature_mre_f7.h +++ b/firmware/controllers/generated/signature_mre_f7.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD mre_f7 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 2364182801 -#define TS_SIGNATURE "rusEFI 2021.06.11.mre_f7.2364182801" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 4230146037 +#define TS_SIGNATURE "rusEFI 2021.06.12.mre_f7.4230146037" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index 0994dd933f..f40ca9c79e 100644 --- a/firmware/controllers/generated/signature_prometheus_405.h +++ b/firmware/controllers/generated/signature_prometheus_405.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD prometheus_405 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 481167933 -#define TS_SIGNATURE "rusEFI 2021.06.11.prometheus_405.481167933" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 1818655961 +#define TS_SIGNATURE "rusEFI 2021.06.12.prometheus_405.1818655961" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index 257bbb27ad..c23059257b 100644 --- a/firmware/controllers/generated/signature_prometheus_469.h +++ b/firmware/controllers/generated/signature_prometheus_469.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD prometheus_469 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 481167933 -#define TS_SIGNATURE "rusEFI 2021.06.11.prometheus_469.481167933" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 1818655961 +#define TS_SIGNATURE "rusEFI 2021.06.12.prometheus_469.1818655961" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index 9f868a4588..31bbdd9f4e 100644 --- a/firmware/controllers/generated/signature_proteus_f4.h +++ b/firmware/controllers/generated/signature_proteus_f4.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD proteus_f4 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 1737405712 -#define TS_SIGNATURE "rusEFI 2021.06.11.proteus_f4.1737405712" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 390513652 +#define TS_SIGNATURE "rusEFI 2021.06.12.proteus_f4.390513652" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index c9c9746825..402e696ad8 100644 --- a/firmware/controllers/generated/signature_proteus_f7.h +++ b/firmware/controllers/generated/signature_proteus_f7.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD proteus_f7 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 1737405712 -#define TS_SIGNATURE "rusEFI 2021.06.11.proteus_f7.1737405712" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 390513652 +#define TS_SIGNATURE "rusEFI 2021.06.12.proteus_f7.390513652" diff --git a/firmware/controllers/generated/signature_subaru_eg33_f7.h b/firmware/controllers/generated/signature_subaru_eg33_f7.h index bdb974b4c9..87c2e8cd96 100644 --- a/firmware/controllers/generated/signature_subaru_eg33_f7.h +++ b/firmware/controllers/generated/signature_subaru_eg33_f7.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD subaru_eg33_f7 -#define SIGNATURE_DATE 2021.06.11 -#define SIGNATURE_HASH 2741241373 -#define TS_SIGNATURE "rusEFI 2021.06.11.subaru_eg33_f7.2741241373" +#define SIGNATURE_DATE 2021.06.12 +#define SIGNATURE_HASH 3551293689 +#define TS_SIGNATURE "rusEFI 2021.06.12.subaru_eg33_f7.3551293689" diff --git a/firmware/tunerstudio/generated/cache.zip b/firmware/tunerstudio/generated/cache.zip index d01b28b568a6166ab917603ffeb23d4ff6ff3162..26a8c82a03b35571129a36460ffa68cee7fb3d73 100644 GIT binary patch delta 477075 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 LaoqY74Zr;d6QhVp delta 476382 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�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 a(HJlDCp#CH4Yv(<%r-8r>*uM=zy1&2ySsJ( diff --git a/firmware/tunerstudio/generated/rusefi.ini b/firmware/tunerstudio/generated/rusefi.ini index 7ea20b8adb..ff9cab33f0 100644 --- a/firmware/tunerstudio/generated/rusefi.ini +++ b/firmware/tunerstudio/generated/rusefi.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.all.238553099" + signature = "rusEFI 2021.06.12.all.2129690351" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.all.238553099" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.all.2129690351" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:25 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:42 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini index 21b23ebbc1..42395bca22 100644 --- a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini +++ b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.frankenso_na6.913737266" + signature = "rusEFI 2021.06.12.frankenso_na6.1186918614" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.frankenso_na6.913737266" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.frankenso_na6.1186918614" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:42 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:57 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini b/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini index 823d18d527..47de99bef2 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.hellen121nissan.3327950904" + signature = "rusEFI 2021.06.12.hellen121nissan.3063215836" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.hellen121nissan.3327950904" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.hellen121nissan.3063215836" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:32 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:49 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_hellen121vag.ini b/firmware/tunerstudio/generated/rusefi_hellen121vag.ini index b15dd2450b..957a3e1a8f 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen121vag.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen121vag.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.hellen121vag.337071341" + signature = "rusEFI 2021.06.12.hellen121vag.1692350985" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.hellen121vag.337071341" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.hellen121vag.1692350985" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 16:25:01 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:47 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_hellen128.ini b/firmware/tunerstudio/generated/rusefi_hellen128.ini index 2a5bddd90d..4637e43fc5 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen128.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen128.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.hellen128.4190510319" + signature = "rusEFI 2021.06.12.hellen128.2299423243" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.hellen128.4190510319" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.hellen128.2299423243" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:28 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:44 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_hellen72.ini b/firmware/tunerstudio/generated/rusefi_hellen72.ini index c65b6fc0e5..33bde6d17e 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen72.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen72.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.hellen72.2697918336" + signature = "rusEFI 2021.06.12.hellen72.3490087268" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.hellen72.2697918336" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.hellen72.3490087268" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:34 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:51 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_hellenNA6.ini b/firmware/tunerstudio/generated/rusefi_hellenNA6.ini index 7b8eded77c..ae2f62afab 100644 --- a/firmware/tunerstudio/generated/rusefi_hellenNA6.ini +++ b/firmware/tunerstudio/generated/rusefi_hellenNA6.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.hellenNA6.1093144470" + signature = "rusEFI 2021.06.12.hellenNA6.836794738" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.hellenNA6.1093144470" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.hellenNA6.836794738" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:36 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:52 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini b/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini index bca71156de..d88d485268 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.hellen_cypress.1279579099" + signature = "rusEFI 2021.06.12.hellen_cypress.1015850303" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.hellen_cypress.1279579099" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.hellen_cypress.1015850303" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:53 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sat Jun 12 04:03:06 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_kinetis.ini b/firmware/tunerstudio/generated/rusefi_kinetis.ini index c0f3aaeef6..7a23e4cb1b 100644 --- a/firmware/tunerstudio/generated/rusefi_kinetis.ini +++ b/firmware/tunerstudio/generated/rusefi_kinetis.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.kin.3017875239" + signature = "rusEFI 2021.06.12.kin.3274271171" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.kin.3017875239" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.kin.3274271171" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:51 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sat Jun 12 04:03:05 UTC 2021 pageSize = 19972 page = 1 @@ -562,7 +562,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PA16", "PA17", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PB16", "PB17", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PC16", "PC17", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PE16", "PE17", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1166,8 +1166,7 @@ mc33_t_peak_tot = scalar, U16, 4478, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4480, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4482, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4484, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4486, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4487, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4486, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4488, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4489, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4490, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f4.ini b/firmware/tunerstudio/generated/rusefi_mre_f4.ini index 0f5b246dea..055cc21332 100644 --- a/firmware/tunerstudio/generated/rusefi_mre_f4.ini +++ b/firmware/tunerstudio/generated/rusefi_mre_f4.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.mre_f4.2364182801" + signature = "rusEFI 2021.06.12.mre_f4.4230146037" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.mre_f4.2364182801" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.mre_f4.4230146037" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:40 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:56 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f7.ini b/firmware/tunerstudio/generated/rusefi_mre_f7.ini index ec4ebcbd93..676ee26133 100644 --- a/firmware/tunerstudio/generated/rusefi_mre_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_mre_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.mre_f7.2364182801" + signature = "rusEFI 2021.06.12.mre_f7.4230146037" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.mre_f7.2364182801" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.mre_f7.4230146037" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:38 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:54 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini index e7ff3459ab..85a9e8222b 100644 --- a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini +++ b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.prometheus_405.481167933" + signature = "rusEFI 2021.06.12.prometheus_405.1818655961" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.prometheus_405.481167933" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.prometheus_405.1818655961" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:45 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:03:00 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini index 39ea5dc117..7dc0a909b5 100644 --- a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini +++ b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.prometheus_469.481167933" + signature = "rusEFI 2021.06.12.prometheus_469.1818655961" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.prometheus_469.481167933" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.prometheus_469.1818655961" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:44 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:59 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini index aad5d7131b..90c95ba203 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.proteus_f4.1737405712" + signature = "rusEFI 2021.06.12.proteus_f4.390513652" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.proteus_f4.1737405712" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.proteus_f4.390513652" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:49 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:03:03 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini index 0b27d827cc..c3bc98f442 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.proteus_f7.1737405712" + signature = "rusEFI 2021.06.12.proteus_f7.390513652" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.proteus_f7.1737405712" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.proteus_f7.390513652" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 Fri Jun 11 10:26:47 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:03:02 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" diff --git a/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini b/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini index f58dc489c1..eadebdf3eb 100644 --- a/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2021.06.11.subaru_eg33_f7.2741241373" + signature = "rusEFI 2021.06.12.subaru_eg33_f7.3551293689" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.06.11.subaru_eg33_f7.2741241373" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.06.12.subaru_eg33_f7.3551293689" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -77,7 +77,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 config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Fri Jun 11 10:26:55 UTC 2021 +; this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:03:08 UTC 2021 pageSize = 20000 page = 1 @@ -565,7 +565,7 @@ knockBankCyl10 = bits, U32, 976, [25:25], "Channel 1", "Channel 2" knockBankCyl11 = bits, U32, 976, [26:26], "Channel 1", "Channel 2" knockBankCyl12 = bits, U32, 976, [27:27], "Channel 1", "Channel 2" tcuEnabled = bits, U32, 976, [28:28], "false", "true" -unusedBit_251_29 = bits, U32, 976, [29:29], "false", "true" +tcuInputMode = bits, U32, 976, [29:29], "Analog", "Digital" unusedBit_289_30 = bits, U32, 976, [30:30], "false", "true" unusedBit_289_31 = bits, U32, 976, [31:31], "false", "true" etbIo1_directionPin1 = bits, U08, 980, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15", "PI0","PI1","PI2","PI3","PI4","PI5","PI6","PI7","PI8","PI9","PI10","PI11","PI12","PI13","PI14","PI15", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -1182,8 +1182,7 @@ mc33_t_peak_tot = scalar, U16, 4506, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_bypass = scalar, U16, 4508, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_off = scalar, U16, 4510, "us", 1.0, 0.0, 0, 10000, 0 mc33_t_hold_tot = scalar, U16, 4512, "us", 1.0, 0.0, 0, 10000, 0 -tcuUpshiftButtonPinMode = bits, U08, 4514, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" -tcuDownshiftButtonPinMode = bits, U08, 4515, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" +unused1551 = array, S08, 4514, [2], "units", 1.0, 0, -20, 100, 0; acSwitchMode = bits, U08, 4516, [0:1], "DEFAULT", "PULLUP", "PULLDOWN", "INVALID" tcu_solenoid_mode1 = bits, U08, 4517, [0:1], "default", "default inverted", "open collector", "open collector inverted" tcu_solenoid_mode2 = bits, U08, 4518, [0:1], "default", "default inverted", "open collector", "open collector inverted" 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 441af54573..16bcb60c02 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 Fri Jun 11 10:26:25 UTC 2021 +// this file was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 12 04:02:42 UTC 2021 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -1232,7 +1232,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 = 238553099; + public static final int SIGNATURE_HASH = 2129690351; public static final int silentTriggerError_offset = 1464; public static final int slowAdcAlpha_offset = 2088; public static final int sparkDwellRpmBins_offset = 332; @@ -1331,6 +1331,7 @@ public class Fields { public static final int tChargeMinRpmMinTps_offset = 2232; public static final int tChargeMode_offset = 3884; public static final int TCU_GEAR_COUNT = 10; + public static final int TCU_INPUT_COUNT = 6; public static final int tcu_solenoid1_offset = 1192; public static final int tcu_solenoid2_offset = 1193; public static final int tcu_solenoid3_offset = 1194; @@ -1344,12 +1345,12 @@ public class Fields { public static final int tcu_solenoid_mode4_offset = 4520; public static final int tcu_solenoid_mode5_offset = 4521; public static final int tcu_solenoid_mode6_offset = 4522; + public static final int TCU_STATE_COUNT = 8; public static final int tcuDownshiftButtonPin_offset = 1819; - public static final int tcuDownshiftButtonPinMode_offset = 4515; public static final int tcuEnabled_offset = 976; + public static final int tcuInputMode_offset = 976; public static final int tcuSolenoidTable_offset = 15136; public static final int tcuUpshiftButtonPin_offset = 1818; - public static final int tcuUpshiftButtonPinMode_offset = 4514; public static final int tempHpfpDuration_offset = 726; public static final int tempHpfpStart_offset = 724; public static final int test557pin_offset = 3101; @@ -1534,7 +1535,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 2021.06.11.all.238553099"; + public static final String TS_SIGNATURE = "rusEFI 2021.06.12.all.2129690351"; public static final char TS_SINGLE_WRITE_COMMAND = 'W'; public static final int TT_TT_1_16 = 50; public static final int TT_TT_2JZ_1_12 = 29; @@ -1595,6 +1596,7 @@ public class Fields { public static final int unused1476b20_offset = 1476; public static final int unused1476b3_offset = 1476; public static final int unused1476b8_offset = 1476; + public static final int unused1551_offset = 4514; public static final int unused1708_offset = 1708; public static final int unused1756_offset = 1756; public static final int unused2260_offset = 2260; @@ -1628,7 +1630,6 @@ public class Fields { public static final int unusedAuxVoltage1_TODO_332_offset = 2713; public static final int unusedAuxVoltage2_TODO_332_offset = 2714; public static final int unusedBit4_1476_offset = 1476; - public static final int unusedBit_251_29_offset = 976; public static final int unusedBit_289_30_offset = 976; public static final int unusedBit_289_31_offset = 976; public static final int unusedBit_34_31_offset = 76; @@ -2218,7 +2219,7 @@ public class Fields { public static final Field KNOCKBANKCYL11 = Field.create("KNOCKBANKCYL11", 976, FieldType.BIT, 26); public static final Field KNOCKBANKCYL12 = Field.create("KNOCKBANKCYL12", 976, FieldType.BIT, 27); public static final Field TCUENABLED = Field.create("TCUENABLED", 976, FieldType.BIT, 28); - public static final Field UNUSEDBIT_251_29 = Field.create("UNUSEDBIT_251_29", 976, FieldType.BIT, 29); + public static final Field TCUINPUTMODE = Field.create("TCUINPUTMODE", 976, FieldType.BIT, 29); public static final Field UNUSEDBIT_289_30 = Field.create("UNUSEDBIT_289_30", 976, FieldType.BIT, 30); public static final Field UNUSEDBIT_289_31 = Field.create("UNUSEDBIT_289_31", 976, FieldType.BIT, 31); public static final Field ETBIO1_DIRECTIONPIN1 = Field.create("ETBIO1_DIRECTIONPIN1", 980, FieldType.INT8, brain_pin_e); @@ -2785,8 +2786,6 @@ public class Fields { public static final Field MC33_T_BYPASS = Field.create("MC33_T_BYPASS", 4508, FieldType.INT16); public static final Field MC33_T_HOLD_OFF = Field.create("MC33_T_HOLD_OFF", 4510, FieldType.INT16); public static final Field MC33_T_HOLD_TOT = Field.create("MC33_T_HOLD_TOT", 4512, FieldType.INT16); - public static final Field TCUUPSHIFTBUTTONPINMODE = Field.create("TCUUPSHIFTBUTTONPINMODE", 4514, FieldType.INT8, pin_input_mode_e); - public static final Field TCUDOWNSHIFTBUTTONPINMODE = Field.create("TCUDOWNSHIFTBUTTONPINMODE", 4515, FieldType.INT8, pin_input_mode_e); public static final Field ACSWITCHMODE = Field.create("ACSWITCHMODE", 4516, FieldType.INT8, pin_input_mode_e); public static final Field TCU_SOLENOID_MODE1 = Field.create("TCU_SOLENOID_MODE1", 4517, FieldType.INT8, pin_output_mode_e); public static final Field TCU_SOLENOID_MODE2 = Field.create("TCU_SOLENOID_MODE2", 4518, FieldType.INT8, pin_output_mode_e); @@ -3319,7 +3318,7 @@ public class Fields { KNOCKBANKCYL11, KNOCKBANKCYL12, TCUENABLED, - UNUSEDBIT_251_29, + TCUINPUTMODE, UNUSEDBIT_289_30, UNUSEDBIT_289_31, ETBIO1_DIRECTIONPIN1, @@ -3876,8 +3875,6 @@ public class Fields { MC33_T_BYPASS, MC33_T_HOLD_OFF, MC33_T_HOLD_TOT, - TCUUPSHIFTBUTTONPINMODE, - TCUDOWNSHIFTBUTTONPINMODE, ACSWITCHMODE, TCU_SOLENOID_MODE1, TCU_SOLENOID_MODE2, diff --git a/java_console/rusefi.xml b/java_console/rusefi.xml index 0486fb0517..883b1b2600 100644 --- a/java_console/rusefi.xml +++ b/java_console/rusefi.xml @@ -1,6 +1,6 @@ - +