From fb0be82beab0efd7209c2a7bd7015ce80b7c6a78 Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Wed, 17 Feb 2021 22:46:18 +0000 Subject: [PATCH] Auto-generated configs and docs --- ...ngine_configuration_generated_structures.h | 16 +++++++++++++--- .../controllers/algo/rusefi_generated.h | 11 +++++++---- ...ngine_configuration_generated_structures.h | 16 +++++++++++++--- .../controllers/algo/rusefi_generated.h | 11 +++++++---- ...ngine_configuration_generated_structures.h | 16 +++++++++++++--- .../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 | 11 +++++++---- .../controllers/generated/signature_all.h | 6 +++--- .../generated/signature_frankenso_na6.h | 6 +++--- .../generated/signature_hellen72.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 1151540 -> 1153232 bytes firmware/tunerstudio/generated/rusefi.ini | 10 ++++++---- .../generated/rusefi_frankenso_na6.ini | 10 ++++++---- .../tunerstudio/generated/rusefi_hellen72.ini | 10 ++++++---- .../generated/rusefi_hellen_cypress.ini | 10 ++++++---- .../tunerstudio/generated/rusefi_kinetis.ini | 10 ++++++---- .../tunerstudio/generated/rusefi_mre_f4.ini | 10 ++++++---- .../tunerstudio/generated/rusefi_mre_f7.ini | 10 ++++++---- .../generated/rusefi_prometheus_405.ini | 10 ++++++---- .../generated/rusefi_prometheus_469.ini | 10 ++++++---- .../generated/rusefi_proteus_f4.ini | 10 ++++++---- .../generated/rusefi_proteus_f7.ini | 10 ++++++---- .../generated/rusefi_subaru_eg33_f7.ini | 10 ++++++---- .../com/rusefi/config/generated/Fields.java | 10 +++++++--- java_console/rusefi.xml | 2 +- 37 files changed, 180 insertions(+), 113 deletions(-) diff --git a/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/hellen/cypress/config/controllers/algo/engine_configuration_generated_structures.h index 22b46e3461..a071dca4c0 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 Mon Feb 15 03:37:49 UTC 2021 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Wed Feb 17 22:45:51 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -3262,9 +3262,19 @@ struct engine_configuration_s { */ linear_sensor_s lowPressureFuel; /** + * CLT-based target RPM for hard limit depending on CLT like on Lexus LFA * offset 3328 */ - uint8_t unused3328[536]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + /** + * See idleRpmPid + * offset 3332 + */ + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + /** + * offset 3340 + */ + uint8_t unused3328[524]; /** * offset 3864 */ @@ -3854,4 +3864,4 @@ struct persistent_config_s { typedef struct persistent_config_s persistent_config_s; // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Mon Feb 15 03:37:49 UTC 2021 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Wed Feb 17 22:45:51 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 fc08a5155c..81fee13cab 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 @@ -204,6 +204,7 @@ #define clt_config_offset 252 #define CLT_CRANKING_CURVE_SIZE 8 #define CLT_CURVE_SIZE 16 +#define CLT_LIMITER_CURVE_SIZE 4 #define clt_offset 252 #define clt_resistance_1_offset 264 #define clt_resistance_2_offset 268 @@ -220,6 +221,8 @@ #define cltIdleCorrBins_offset 10656 #define cltIdleRpm_offset 1960 #define cltIdleRpmBins_offset 1896 +#define cltRevLimitRpm_offset 3332 +#define cltRevLimitRpmBins_offset 3328 #define cltTimingBins_offset 2352 #define cltTimingExtra_offset 2384 #define clutchDownPin_offset 664 @@ -1238,8 +1241,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD hellen_cypress -#define SIGNATURE_DATE 2021.02.15 -#define SIGNATURE_HASH 4272151618 +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 327658260 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1573,7 +1576,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.02.15.hellen_cypress.4272151618" +#define TS_SIGNATURE "rusEFI 2021.02.17.hellen_cypress.327658260" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 @@ -1645,7 +1648,7 @@ #define unused244_3_offset 2428 #define unused2508_offset 2508 #define unused2536_offset 2536 -#define unused3328_offset 3328 +#define unused3328_offset 3340 #define unused3942_offset 3992 #define unused3988_offset 3988 #define unused4028_offset 4028 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 3bebe80dab..39ce7bc48c 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Mon Feb 15 03:37:47 UTC 2021 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Wed Feb 17 22:45:49 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -3257,9 +3257,19 @@ struct engine_configuration_s { */ linear_sensor_s lowPressureFuel; /** + * CLT-based target RPM for hard limit depending on CLT like on Lexus LFA * offset 3300 */ - uint8_t unused3328[536]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + /** + * See idleRpmPid + * offset 3304 + */ + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + /** + * offset 3312 + */ + uint8_t unused3328[524]; /** * offset 3836 */ @@ -3849,4 +3859,4 @@ struct persistent_config_s { typedef struct persistent_config_s persistent_config_s; // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Mon Feb 15 03:37:47 UTC 2021 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Wed Feb 17 22:45:49 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 acf3df1f0d..18e1afaae0 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -188,6 +188,7 @@ #define clt_config_offset 252 #define CLT_CRANKING_CURVE_SIZE 8 #define CLT_CURVE_SIZE 16 +#define CLT_LIMITER_CURVE_SIZE 4 #define clt_offset 252 #define clt_resistance_1_offset 264 #define clt_resistance_2_offset 268 @@ -204,6 +205,8 @@ #define cltIdleCorrBins_offset 10628 #define cltIdleRpm_offset 1960 #define cltIdleRpmBins_offset 1896 +#define cltRevLimitRpm_offset 3304 +#define cltRevLimitRpmBins_offset 3300 #define cltTimingBins_offset 2344 #define cltTimingExtra_offset 2376 #define clutchDownPin_offset 664 @@ -1222,8 +1225,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD kin -#define SIGNATURE_DATE 2021.02.15 -#define SIGNATURE_HASH 17174718 +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 3961677800 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1557,7 +1560,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator true #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.02.15.kin.17174718" +#define TS_SIGNATURE "rusEFI 2021.02.17.kin.3961677800" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 @@ -1629,7 +1632,7 @@ #define unused244_3_offset 2420 #define unused2508_offset 2500 #define unused2536_offset 2528 -#define unused3328_offset 3300 +#define unused3328_offset 3312 #define unused3942_offset 3964 #define unused3988_offset 3960 #define unused4028_offset 4000 diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index 0414711ffe..8f5458ce43 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Mon Feb 15 03:37:24 UTC 2021 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:29 UTC 2021 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -3262,9 +3262,19 @@ struct engine_configuration_s { */ linear_sensor_s lowPressureFuel; /** + * CLT-based target RPM for hard limit depending on CLT like on Lexus LFA * offset 3328 */ - uint8_t unused3328[536]; + int8_t cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]; + /** + * See idleRpmPid + * offset 3332 + */ + uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]; + /** + * offset 3340 + */ + uint8_t unused3328[524]; /** * offset 3864 */ @@ -3854,4 +3864,4 @@ struct persistent_config_s { typedef struct persistent_config_s persistent_config_s; // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Mon Feb 15 03:37:24 UTC 2021 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:29 UTC 2021 diff --git a/firmware/controllers/generated/fsio_enums_generated.def b/firmware/controllers/generated/fsio_enums_generated.def index 00fa534389..939647925c 100644 --- a/firmware/controllers/generated/fsio_enums_generated.def +++ b/firmware/controllers/generated/fsio_enums_generated.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Mon Feb 15 03:37:24 UTC 2021 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:29 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer FSIO_SETTING_FANONTEMPERATURE = 1000, diff --git a/firmware/controllers/generated/fsio_getters.def b/firmware/controllers/generated/fsio_getters.def index 09ae4cad39..351efe3e8d 100644 --- a/firmware/controllers/generated/fsio_getters.def +++ b/firmware/controllers/generated/fsio_getters.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Mon Feb 15 03:37:24 UTC 2021 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:29 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_FANONTEMPERATURE: diff --git a/firmware/controllers/generated/fsio_names.def b/firmware/controllers/generated/fsio_names.def index 443493017a..e1f3093c6e 100644 --- a/firmware/controllers/generated/fsio_names.def +++ b/firmware/controllers/generated/fsio_names.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Mon Feb 15 03:37:24 UTC 2021 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:29 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer static LENameOrdinalPair lefanOnTemperature(FSIO_SETTING_FANONTEMPERATURE, "cfg_fanOnTemperature"); diff --git a/firmware/controllers/generated/fsio_strings.def b/firmware/controllers/generated/fsio_strings.def index 40ab0dfa21..1a147fb89c 100644 --- a/firmware/controllers/generated/fsio_strings.def +++ b/firmware/controllers/generated/fsio_strings.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Mon Feb 15 03:37:24 UTC 2021 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:29 UTC 2021 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_FANONTEMPERATURE: diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 27a9ceb620..20e06d695d 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -202,6 +202,7 @@ #define clt_config_offset 252 #define CLT_CRANKING_CURVE_SIZE 8 #define CLT_CURVE_SIZE 16 +#define CLT_LIMITER_CURVE_SIZE 4 #define clt_offset 252 #define clt_resistance_1_offset 264 #define clt_resistance_2_offset 268 @@ -218,6 +219,8 @@ #define cltIdleCorrBins_offset 10656 #define cltIdleRpm_offset 1960 #define cltIdleRpmBins_offset 1896 +#define cltRevLimitRpm_offset 3332 +#define cltRevLimitRpmBins_offset 3328 #define cltTimingBins_offset 2352 #define cltTimingExtra_offset 2384 #define clutchDownPin_offset 664 @@ -1235,8 +1238,8 @@ #define showHumanReadableWarning_offset 976 #define showSdCardWarning_offset 76 #define SIGNATURE_BOARD all -#define SIGNATURE_DATE 2021.02.15 -#define SIGNATURE_HASH 3168733074 +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 1375432900 #define silentTriggerError_offset 1464 #define slowAdcAlpha_offset 2088 #define sparkDwellRpmBins_offset 332 @@ -1570,7 +1573,7 @@ #define ts_show_spi true #define ts_show_trigger_comparator false #define ts_show_tunerstudio_port true -#define TS_SIGNATURE "rusEFI 2021.02.15.all.3168733074" +#define TS_SIGNATURE "rusEFI 2021.02.17.all.1375432900" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' // 0x74 @@ -1642,7 +1645,7 @@ #define unused244_3_offset 2428 #define unused2508_offset 2508 #define unused2536_offset 2536 -#define unused3328_offset 3328 +#define unused3328_offset 3340 #define unused3942_offset 3992 #define unused3988_offset 3988 #define unused4028_offset 4028 diff --git a/firmware/controllers/generated/signature_all.h b/firmware/controllers/generated/signature_all.h index db539f184a..4f30bfeafa 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.02.16 -#define SIGNATURE_HASH 1841462752 -#define TS_SIGNATURE "rusEFI 2021.02.16.all.1841462752" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 1375432900 +#define TS_SIGNATURE "rusEFI 2021.02.17.all.1375432900" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index 44309305c4..9d7901cbe0 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.02.16 -#define SIGNATURE_HASH 3921170547 -#define TS_SIGNATURE "rusEFI 2021.02.16.frankenso_na6.3921170547" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 3582025047 +#define TS_SIGNATURE "rusEFI 2021.02.17.frankenso_na6.3582025047" diff --git a/firmware/controllers/generated/signature_hellen72.h b/firmware/controllers/generated/signature_hellen72.h index eb4b5056cc..3238f004f3 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.02.16 -#define SIGNATURE_HASH 395767137 -#define TS_SIGNATURE "rusEFI 2021.02.16.hellen72.395767137" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 732946501 +#define TS_SIGNATURE "rusEFI 2021.02.17.hellen72.732946501" diff --git a/firmware/controllers/generated/signature_hellen_cypress.h b/firmware/controllers/generated/signature_hellen_cypress.h index c7634367b2..4bd5f30425 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.02.16 -#define SIGNATURE_HASH 801023536 -#define TS_SIGNATURE "rusEFI 2021.02.16.hellen_cypress.801023536" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 327658260 +#define TS_SIGNATURE "rusEFI 2021.02.17.hellen_cypress.327658260" diff --git a/firmware/controllers/generated/signature_kin.h b/firmware/controllers/generated/signature_kin.h index 3c8d7bcf7e..4e99249a90 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.02.16 -#define SIGNATURE_HASH 3491457740 -#define TS_SIGNATURE "rusEFI 2021.02.16.kin.3491457740" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 3961677800 +#define TS_SIGNATURE "rusEFI 2021.02.17.kin.3961677800" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index abfa22c071..94938b6ba3 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.02.16 -#define SIGNATURE_HASH 1124339466 -#define TS_SIGNATURE "rusEFI 2021.02.16.mre_f4.1124339466" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 2134704686 +#define TS_SIGNATURE "rusEFI 2021.02.17.mre_f4.2134704686" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index f185b9e2f6..5e4b762c72 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.02.16 -#define SIGNATURE_HASH 1124339466 -#define TS_SIGNATURE "rusEFI 2021.02.16.mre_f7.1124339466" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 2134704686 +#define TS_SIGNATURE "rusEFI 2021.02.17.mre_f7.2134704686" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index 9b464f0db8..6e4f95013c 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.02.16 -#define SIGNATURE_HASH 2136244182 -#define TS_SIGNATURE "rusEFI 2021.02.16.prometheus_405.2136244182" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 1131246322 +#define TS_SIGNATURE "rusEFI 2021.02.17.prometheus_405.1131246322" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index 0be5d76271..39d25fa37a 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.02.16 -#define SIGNATURE_HASH 2136244182 -#define TS_SIGNATURE "rusEFI 2021.02.16.prometheus_469.2136244182" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 1131246322 +#define TS_SIGNATURE "rusEFI 2021.02.17.prometheus_469.1131246322" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index fe61ff1776..dbb905e2dd 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.02.16 -#define SIGNATURE_HASH 183743951 -#define TS_SIGNATURE "rusEFI 2021.02.16.proteus_f4.183743951" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 919255275 +#define TS_SIGNATURE "rusEFI 2021.02.17.proteus_f4.919255275" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index 0ff1231e19..09bfb6d510 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.02.16 -#define SIGNATURE_HASH 183743951 -#define TS_SIGNATURE "rusEFI 2021.02.16.proteus_f7.183743951" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 919255275 +#define TS_SIGNATURE "rusEFI 2021.02.17.proteus_f7.919255275" diff --git a/firmware/controllers/generated/signature_subaru_eg33_f7.h b/firmware/controllers/generated/signature_subaru_eg33_f7.h index 79016d1f60..a8d96006e7 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.02.16 -#define SIGNATURE_HASH 819661567 -#define TS_SIGNATURE "rusEFI 2021.02.16.subaru_eg33_f7.819661567" +#define SIGNATURE_DATE 2021.02.17 +#define SIGNATURE_HASH 216139739 +#define TS_SIGNATURE "rusEFI 2021.02.17.subaru_eg33_f7.216139739" diff --git a/firmware/tunerstudio/generated/cache.zip b/firmware/tunerstudio/generated/cache.zip index d3678587b82b810d349a0e3fa25b0e2229672a44..3be756dd90c506c717f0832ea2d0ed93ce6869b9 100644 GIT binary patch delta 347220 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

B@T85mRU}whc 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 X03PNp41rk3{2?+zAc|Fyn1B6$@a0%* delta 345814 zcmV)HK)t`vu|~9{Mu3C?gaU*Ev;>PL695PZ0ARCFQhLlJWJh%X0A!m1m!2jBCkwSk zEMT=pEMT=pEVs}m1PTX#aZVq$9iB=o(r)5GkIS7T8&E~FN>JTe^S0J$Y->Z-&nQ*a zc4gJ96tu3}i8Fe6XJ6Mo+vok(KWoYia)P8keaJ@^Y5 zDyMey*>1Kk+QZtFeOtT2X%cm{y_eoCD(kimdF{@REkxm4Cb)Umy1Lqum%WGLo-aD~ zRktSBMcb#C)9+n>#~E=BL4&)#*Y3!CORw18p4+;BpRShIt(CpMLw|0w=x=2e*cE6n9(ND8)BjRtdNV+YP!9fBppuCP9orp=(p# z%$rkl+q!Hw;4HK|=UqV-Ys-9o11%=zG?9~Bhxm@{b_YY3VlMQhXkMKe6`Jp!vf3z~Qc0?UyRneQBXr7N}XSgD!UH@6!S2zy5JI>BNA^{6ycycwK z&Tx?63oM*_Z;TTnr*BJZFot+@b+3S=Xr+ra+qXusP_+21-~wXfw-ivVf)WQ1h|hzQ z1=G5OnMK;)cjw4*z~>He?vOafB21JT4v=*2d>(Hp=#Ov5e_p>e7$Cu3DrV$fwl6N@ zB4$<*z>tj=(>58o!`3wv;3vUGiCVLnC{WI7;d%g|Wo6XP`$>W-&bq2y*PFEzrq^mB zIiascoF&#}Tf^720UU~}?wvjtcr3G)+e(zMGD_$(LPvjhGl{X=jq{7_72(lye)%|~ z0AVN`N&)~ve}}_b9Zvj-j$s&0(v5SXVI?iuJW3!r%DHY0FS|{feh*s1Aq>aJP2s_7 zhi-&eAh*3d0U=5guGmplfA)wfj_=Hadz(0&J8H^%T(3Iu?!CyF%esjL#Q(1~0M!ck zl9Z^-L4qO9!D~)lKb>x;rN2MwwLV@y{r(0KcU?ONfArkwHtDWsYXI=esuVljs9XkcRMi z#u5pyO!)4~0N$fBU%T=^nwe+Ls)(5_ZUJ;!vZ4=k_}&U@=DGVLU@ajrk-`wsGPLRc z1-e5>Gp-6=z^wG$aKEdmuNZ~e9wTQJ*yCWeN+7)C1w}ollXk=Zh6Vs?VwmbE&tin9 zf1va3Sy-Q#=ERehnod4{UxV%S`Z~HuPUeAyh?zeu1*YTQ&)t6=7>^N1ga6gG?9!b8 zeG>(|ZvhKzye_GujMUxu;LXkO1-A(>A*~{R#E8pt#`e;i*o*Z%B5*fYdps|jsk^~_ zb2GcZg}XU9xuYNmBeex!wvuzKFvopLBjC?!@Io%rm zl_NkF|9_u>AXZZ&QAF!SuXlHy%~Ij4EIth92%3F>RJoX$`{nX!p-oAu2^vni$9PK8 z(&e|-|1EFiChO=$$B(pZMJ1&QqiJN1;dO71r}uWa_rdd{6F}h$=eahSRI4~Ee?(In z>SDmjLL6JccC_++cM&|gP-V0H0Trh5Yp7rzK@F5dHUz7O`pJdv7%CPE0#^LX;97gG zKd~9&B;+ACC?IH0=5F7;2W;P8E~@)=caFM3C_aRl$`iZAgCfR?${-in8Al$#oP&IV zc?UBmo9?&NjaW>8(tUJStF?a>e>jr_AS^yJ=8(<+1zd0wCYTT`mCH-yu|fW9bnE%O z;K^Nar!|zJZs~N1#j?75f2R}InT#ACI=n++?RYL2>PQf{uuMQ4=Z&Sa4qcgqnsWvV zvr(_ci?+X{bNA%(4e zP4ln4h?L`gGq6l!dLLG^Fb9$ZfHAOZ=?(RLZAN?>`Ddo9(Z}1sa_vo0YGz%zdLY&2T%B`cSQvoL=I4u z&TZ|g-PC_dVnOf7e<%wLvjLL$2@NxgG|V=jLixSe=;M{+qin-gs$n5)eBO5>Cv?x( z?i^4Ls(&t=Q0b|{LLZD@=AKWgkx<6){C~pvgyT9{lYWnESmJS($NI6d?}%j`NO*h8 zxrfqM6eu*VhIy26=8-3AK$CgWr|}+HxfZ6`nXAT)<$4Z~e?57VXjb^**HBS3417}O zQz&MMbB+BU6&LpixiLp1K)>V|ptAe?gJFrRGG-WmLoJ5!_z-^QQJ1WQ^;Oq6YQRN{ zd$noOw?;*7ZF5iVy%iE2G#_vTSwf8xsJXZBV7>{#vpy{5v>G=sG}a|c_Dgy)^4ZEq zHjg@d-dN}@fAfUHt9uOvOO@h5xl)9_3&t0p^aJIpLz?k9rfo6?kvO1Pdw$}M*7r6n zYpgI@o5Ljf4&W?ADY$=eEm1je?h0Ko*I&Uf@v_EjqDyI?BkctwU$hG5_}${G0m&7t zKNt0=NufB@fHC5>#Wd#FH}Qtep(q{SS|)zn-U8+)f1W#@Ffn>+1!kUqHR!fEpxcJ# z7_S@&|LtIae+EsUM^;Gt!+GzY}S_EvP*1Ejd=A8!{ z8`gv-qH#kL21{H%Q8-xN_zDNZe>WSPmf{Z;Lc|+KMOUPHe2kK(sO>Y&O;hF}^T!wl zK{SH}Lh{GBbmmji$-el7pz~0{vs1S=%CoVEEM5;n*n9t2d*cU#Rss{tho;=b$7+Bv ze?&@&*~of&%X=m@0vz0TMvV<676B3F!}c{G82Hzse@m>|+rB;}IkePpBrSfU-MCTu zxDMSsjhQ#{x&t7@NkpyW(x&krfVxQ)K-jwA>%v(gARFFz#dxxSN)1;XJswW+#U8f9QB~ zylho73+H9zs>Y@;J-ZrXrGdX2b5t4+*GiQG;f)W*Xytf5OHA!0{F3Jb<(+hEX_zO0 zg?crU|5*H|l)_TIT7~}{@tnfM0}Xz>Zu1C+rEtkkB}a2PVoHy-@p$rrXC z@OX-pRT9#!c!3I)I3SZ>g7r$8=#7n00Plhr9t~XTE8K(Rj9zfBW;#Kcl5p z^1{=uy2O8(_a59hMR}w%uf1Na9Ou7!?LiZIb0&8Ozbvt~@Us;EEXP0j+UwQh>UA^z zX~jP?uDxEJA*wS(b%v^kLlkN`uCLn#U8~af`2UjQ{q2m{!__GPDieH zPUX+3_&Jq6r^4q{_Pj#>QfKGX**SG~e#*5(WvibGn4NHWhADZ*A(WO}(|LxArO5 z5|z0&_txg#+T2@ve}f?X?{$Yr+_;HBbrkt;-1u+Y_;1|!Z`}C*FWi_Uu-{EuCx~j% z)FzsJTZ>!Jv(D$#>F-VQ_TL!%-x&Pg82sND{Od6Ib)!@|J+^Fdq~)iT{46Cu%gN75 z^7AP9d7S(_5x7BqpQgSgqKOmCbb^&mD5Vop0GcTX%@l}ce+owPB=voonw?_mJ3V`J z;)F0zPObd3lAopIXF2&@EQy`it z80FNe@6*)m6jR^n*-K5IRnn*0Dkr`wiLax?*Ky*D(Cr&36R31#m5bWC(x;XDEG0k7 z$Md&5oK)D7o(4U8A9W;2#9jso4I7 zs-{A`e~w<-(-!LUR`=Ue$?OBcBg z2?fx3BxzNl6E5y=^h)+=^<70W$@!!0pW@yt50 z1~IPIuJKa0()Hn^d#Mz)}&L`Fxu?@nzqRJjR2^_4u#gFo_)GCp=rOV zYX57>=;Jq3I24Tu9lvigUq~3K@RTHxn6y>%R_MJfM5PX?dx|~=HBG6T4Q`qr<6viQjzPOyvbL1;nkN*NVZvFn z`=RFu{J^Q?u_dhL9+t|2KXEz_%6K+Uurdo%BTmeC+4zq`d9Cj$Re_mXopdus6S z>YhB?rQeb$=N;%K!@>bw7Nlm;e>fYhJa>v&h67idL#8!J7m+kEzb1XA{f3_WmUAdv zL#;!BZ+0Or^F(MBTW@KwnhBRIBHU?{b!;BB$^pMs*=ltYfCFi-D*o#IYrfuM0PZ}0 z5LizXKebEJ}i0kS;=W;qDiazb@fW`t_QQ`p{e26g>h7K z-PvN>(ZVZnM{VnyYM0(qTbc-sJSVid5u}jOiTA;JX~-0TyQJ0%DXYArmkjhVC+i`( z!_+1bMn#-VUa?loV9u!Hf5TP`_u<=7oS274lkHLIzZ~Ict}ILyrJs%1LOD)>(<58K z*^({AZeNuBQnD4YxhiHiWc^{_Slx{Z!KJ2l;P z-)45*)Lhna{>8O@{8{rq%Bjs-`?5A1-01!$wdMxh%Z6Pxj&}{hJ}TOlX6v0*q;zDP z#%Zbuk+gQ%w#txcrl*2)P0BaS?9nz6JSbwA>2clO4(%U*Nw`6zbo3TwreVba*td6Z z{s&Mhu(~%oF$k#Ks9hVSjm<{;2n~oz>ER7-;1zOX zAKOPpDLsxKTdkgLo`{(#r3XXVWxMh7mF|^J+xml{d0aHge^$n7%AIW)CL-)kTmB*AjquPii<-mN`h|`EpL86G3-C?N zwy$mY-=Ix|bFbSbC#B!iVhiwKw|UXB>0ND}o>q)RrjC_M8yW4+6*>n#(y*k=Y7H9Q zK1}-1Fw1)80M=%pA6ZDdy|Zie8hS(365(vt`dy<`f6)`K`z^UMT0fd6`Z0st`t_ZC zeO$87^&^%XA#x7bbu#Yvbkp*NIkInS=LyHOdj4q{{lDobGg-ZEQNC&J%0Jf;x5%$| zn?Ix9=wZKmrQ=qSjjs8ItpOg&TED4dG*N&;M`#5$01)i+fpN4Ab{IOsesr{vZJYLzI!)wA|FGvc`^f1r5nf7@9{fn>HMTjH-FvL_Im05TDg0}z=! zc@Ka?{E7QqSk9JzkGyE^{_WcF*UtP0HrutaCL0`U?HZr=&>UJM4Sb3?)n6`#GkC3F zu$`(f`VBctgb^6I%7=!|YF;fDdJh@R?Y3`@ZTk()<&7t7M`Irl@b8nb+=l@owiY$la16)cQL^zI_H=er%V>~`wc<{DI2Y+K@3{M>oDC`v()fJ^eo*ti^n8tq^pXQ^(+3Nc*er6_j@%){EVjom+s+p~^&Byp}f5ym(qATaV5v*3kFM(CDF&>1iW^?Y`8&|ap zTCilQbc+kQRsEf`v0@tYTe+Eg2Vm6&iiXe+$;geKT-T3Rkz|`_-^l)H&}j`>S%#Vm zi!Gp3Vvl$Fb0^+Ks+YYz4AbO==fP_1PTKxtO+HPkl+0nmYzrU@QLeO+Qr<|ZY@{4*q#SRgoJa`BdR%}}6#}O5KOyar(+*Ewaqr;i zg#O6)0^l8}c1-+UeNx; z7mQ#7T#onD2Xk^L(w`N1q@yU5TI*vir&XQcW4dx zfXM6!Uizv}*&Blm`1ffrX*jFNokJ1*s)>EE+T0iY_wI`?{#6h>gvQ)^a1GcJD+*H- z%WYvm>-$+=mKVYCD43jzf9}M&ET4nol%Z6f+Ya-kK+8ExI;+XO_M`c%gVi9&&jif z3cE-Fb{?Jadc7dF95pp3uL{EHLW@rAggb$6Or zGtB7_Q_f-0MmUE!A6!UyDnkNQI))aqVR>@-{++5~f-gCBygA8tRkei!upzOau5NUG zLy|i5&q7`bdIPmlf6&(iLj@D!_%tvKvE-q-zuM>Yz#?R7ou*St#f=m*p9?)(1So(> z^__{MKCAcwWgB~RW`;2hnAMKhLd1|1F&E>&rOJ=qGQ39Z3wCjWK?KPwN!~CCtpRZW z?;ry?ts&_Zh&Y>24Ibk)#mr+u3;lYc3nn0|*wacDSq1c|e^pXsl@5pVT-`rkQ(Omz z;*C8z&+q9`?~=4enxqecn<)sch?GO`LZm`6ky$^GQilS}_$w)l_~@Pi152=P9ia69 z>C`AJSt$H2D9<(+D+2wWrd!562o=!N+>(62{dJ3A!epI=jcMB$!=-mW`}#qk1oO`u z1+nE#Q;lOUf78j7azZ3TAQ)H;z6R)xFKP-2*md|0F^+V%CiI`kKaGa5psgE$4-nT2 zzmim{Nj|G&L7cH+|E8t;F3S{=BxN{qJg|3H_by8=_wVTPRL+||v3IAjLxcemrbwsA zcp`9oC#zujJw^kei`JQs5!=I^PQG?1G9Mg03ZnJ}f1Y0VK)b+84{resSt70v5y3Cy zP;cx@k7$XM^QSQZYO~DovnFKBa@0nSpbFYkX)jBHj9M^f7Tp`Sos|zlW!1*rSs^>)2y$|FB zPTY;?fB&;4$Qlgj*LNRtA*U3gZGjDkc4?H9ra6(o!e==xxtNSeZ`*`$`&iKjo2=1sy%QhTy1Mpu7R$W+q3E3L-{CPan3mSyB(>3@JbQEr=cc zG08S2Dpqn|^t3$3KaF5-Aqo+fwOpi-Jg`-BS38i0ncn-7b)^~s90IMNXZQ_ITANy8 zn$8t;2Zi9~FXxR)-Z;t|$9dxfu#k2P^a% zIKxovUE4(Viuh@lY|Ab~LP;i^*g)LbM|QojC^MiOB$goQC=R5cHJ|BLEIAov zoQy6kS3^LHgE9|F2jv5ce_HUfBvavoe^%h*DE>UbLXc27IM(Y`WKC#|tB5@Me*^HB zXaq7OFCBAEJf^nj{4N>@2$L6y7U*!)LK+ z_l0_)d{s$)ZIV0tcIGQxV^HG~?!YU&h>?Sc2{x)&+k7{Fe)laKJ7;AcG%D4m9PPd4 zGik8I7|u-?rbnLAb11K=c`JiSJxr<1mow*}lT-pt@#nRkcWA*{I*UFHe{9U6*Be95 zKy7{>tbkO~{EJ3HeGgdxq3|n8Ooabh<5NF+i5=U>%2GwXphd?Z)+L6=colTCp2!U} z=W{f9q`w|{4*7npI}tm36gMk5!p-e%bRvn=w#-21i!lS9{Its~eDMM$asMKH&kBdq zq!?H*C>kF!D-PRn4M9f|f3ZVsET(u0A_R4~zQ5%x+VXff!~I zg?K8A{12%ffcSNM^6sa2$04&drXIy8y?0R^2dRv}AG?LbJX0BclCW}sF%5N}w@7Yz zu#UVjgd22xG!Uf5o}161dR=5>eD3 zQ5L=knJ&1^xuN8Uj<9pXU94H9EGPZhCRfAwtg{rJf;*^6V5{}t6R}j7m!gup>=}Ds z`OhV9gcEn{k&TElKu|IR+F{5k{Rmrz9H9qVEZHtDQ+nguir}pG*i~Gs4Xmt-KMs^9=!cf2Des-;4T>J$$)@FxPWu^?e~VAc1F8 zWyDDE-X+)kPXRwVjOBcNPX`;56kVL>r#V&?Ucsp}Go>d1t24jAwniOo+ShbWX3lcy z5>F!F)8szSe;imsXc*qo;ymj!iUMP~iDgFOr1BG2g(Y1J!4CVmXE7=eEb+P+yzvCD z7+(2~3Mi{lD{o?g$T(fRlV80cixh6<#dj9$8hJ{5^Sxws{^HHkxf5S=c;!al z7ve>tQ6c<{YQ$xz?6oqW)%G*&vX9h&$oeQO!n^{C&c!l`JYl6rn}i9M>3Yu1a4-;T zdJ>;ic%P3Q5kumA>nw+MKMzLET(}-594dDreJEMcFjxY;=uC`;i#pK8r(v`4J&6(6 zi9L$je?-7zx&qLiuSc@8M`hWD{J)USR`}wNXTJA4yH00+_99vav`fwU?mc@Mex(|R z-+)?Q{K8Lu@We4V$XPMMPu_%aCUv)mVvUH$!bAs_W%i;A6u*mS8_Gkg0>$$**C(HKRO@ircp7FrA$je<+TVOQH|m&<~~e^n!Jr&Dk2A=_fVkHb71$4NK^WW}ra zt3n7EDnSRl64N3(Er^jh)KBWyT? zENj51mywTEzoqTbBQl5eaVCjhVvkF_E2W~LGFD7+mh*__NvuU@UQCBjS&?PM?v!VT zf42p^IYzMJYalE+6!*QezDKGAsXze=o6x>KM2<8XU)(~oMvwI|b^NYBjKk=_V>SrL z$_H}DD)a!6MqB^|9sC~63saLYVQTUgZd7p_B-80DpiHNKJS=iv1aq0*p11+T`s*7U zXjeZ(CTgfy(IGumdE3XP!=C`0%iq7}f8CfUnl~O6hqG6g&f3bqb9~z$jbF9v%yk0c z)L)pa-_|a220f*JY1WMXXX3HcukVQDvWk}YG+J!Td5NCX`Q;e%>{Q?It1}vtq8d?{ zPE0u<(u428+;x{d8J?z5>x>Y`&4>lgQET9gXsSMMaPf6DlX z4IWtBfv=9Svk;7xjqFsOCGs}Qg)fT*g=dfuY4S!3wwe0!>G9j8nQWqWMd~xW=~uGPDnb+g(`=RVrR$-@1~&g#7k` z@yZZ|OW)-R9wDL)%yI-pBM?2_e*h|A0>9b#ktc3`7p&0(|@iNQnI8XavN?0-6ECbQl;6!(HX} z5{<#fIsL9OXKwUz?yVN+>EIUD2$j}Q`ZIB#Q_Q_|c&8+P@3KjQrieY?f6~CrMXK|? zEu;;V()tEfR)kW*^HDH)$qRCgcVWR$?|YJw_k_Yz+(ycfm+o<`hr}(uTm@q{WK%iB z*yI&smb#babv^c0<29*_B>YU|1@Xb=M^|hFEE7jXx9F)h(J1h*C#UNQi z{JvXBwiy7qxujNNNkz1j#G1xhanf%{$d7a-XAa<&U$LSp)19$TL+S$2fl@e_z}o=G zH1Cm)7Ha`r1z}j-FBVK5+Id z@`;V1Z1|Dr60Zi3)5NHSOSsMOvl&d_jC5RBQ#4y4{Kg2rrv0wx$a#Z(%%Ro-#PLR- z{YsFt2LtW=48p@lf5k(hLP|#*9On`h1&s2(Ro*wb$tYZpym00vbK@^_Uw&)QNoN(@ z9op?-Ig%0Wr$adCVSM6d`f&Y2*&_+0aeJrtsrNWQ&N%VmaU5*zgt;9r41tR6tuTxX z+LOYY?9s4({KY68mdYGJ#t}}R`gB44#4~4H4GevVje6fWe`4Pn(g1HG(-ep>wC{exhy;4@1vu*YaaPehH3F?V%1}@ zjVulH!R=?Uf96N}fE4|ABq~?f``*eMI!yk;8sMTIT7T!}9s=m^+<8O+j;y09Cjzp> z?5e~$dt2=yM!bu``E3f8@;Rkg=@4n&W5hR@{s~Dyesy z*4}`3__wyGi+(rovq*?3L3Bz6hu9mZJ)EW2lb#;%wx!)eJ~`>HCH|Jg-vlk1{Sz+V zM6W`ZXt4B}l%zRJLX}&0a_uZ*J>Dc&Q1TsF7m=T_6PCCV5kay{p)>@`9u}&xCH!vB z01^Z?e{QIht#^18NYWMyXPO`^gqquw2_pG$XXY0Q92+WVZB^rn;b?3vzV7GD*Y~DT zfAZxiXb%AJc07Kcmw_X#rIKuD;XG3;LqJ4L_r40Ba0lSE3r9n8fq<-(avzN7wH~n| zGWkyPQj(-EKJj5mKMR?_x#orolLS$s$BO^3e-T9G*GBEyZg+Y&!@))zUuQu)L7=u8 z&Vp1U1?`x`46aAKOJZ%&OOWMSOA^i{bX*C6NX!8Z0tQpc_MShUuP3hd1V_QwM^s*Q zRxckVqRFGo#Y=;L-QGGYkK_&%<5BWf17DY;jKw%mVm9nHyT)IRjx;A<>AA3%7{u4V zf7j-s$0=3Rd6fQ>rm?$@9lkiWx#F;){=bAfj@o(ueMjX_^u_URSYnj^0aiv|5?r6X z)Qd~LS$f$o&8ik@R6TE4b6dS{`0YBD>hy@SGF#{C#n3(kERqt&29 zI^<*o0_T-mFb-m`ZOGjU<|tSdTvTCs5GHa2-TH5m}s)Z-#ndZH^7vGIO8fnS1Qe~n= z%KD0IIfxcC!rYgwph+&d#Tlh+cd6E}_|wvPbsbHe4`5}q0tLRJ9TmQF<@(NoWO?HH z8_0)Xf4Shzm(I|AmSSBrmy&)~e@PmJx;xGb#cy4%g2{T!`T$fN%0PLIr=aOEv}b!;Pj^X#AOwVf143y^rIr! ztoAD0l0nBKD`PS$Z>cgFRkr3FZOu7OcXYoD?bS1WR5vpsnUTO!NOJeqizOql&AHI> z#pRK#zi{T$wNF!uN;zY(HG$$Jrm7$%Nf9E?n^UVn`fgN(OB9USoKD0D9yJdk>F?p? zGJ@w~Aq%=Ky>DIFsiQ4we{voi#^G6aBha;w)C``e2;FpJXBDz?kt6TID3HT(1^1Y$ z39^IZ5lhbnKs7)4DF_@D8or^>bmkzk3Th)x`14MHE*DVS8NW8$7wukmm_A7p@7{}$ z28vK|G9X>)20UWfA8;mEt|GZ4-GKK@#sPX71(z=LLi+@%BeHt7e`l0N)DgynOkP}A zq7f!5jKjEa;;{`cw32yJsf5~VJ8{`zuyMh@9lZEsdJ5(C-*#BIN*m%wZ(9P;PN{ymlGhW8W5L-PBnd^ME3}pF3fcWLj*vt6M)~ zA*Q`dTk~Fb!x}{}fB$_q1R8HV`;R8dGJ+*VGpDy>rcB9tO{OGBYavw16k=Gf2r*u5 z?e zoODZQg#1+v?R{|X14+=k^sXkhCp-r8#$COeH(D26cr+*vfAJ`sqgMh&rALi!#4Vca z2(|H_0IjZxko)tbMp=xNVZVKG(dsipA&cA)G!gL?1gWxliUsGd5pKD7B4<47Qo=TT zpD3~A688K)`fkYxr$A077#|Z$-*0Rf-lc@Q);WSvyIwegEqhz<%!i?&t0LLApId>RVwV& zUg)=2Nd=evKT5+Tj!*D}YQy)iB_t{#mjd!ME8TcijO5hhaG>zT{~3+|Q2!%%ej!=l ze~eR-Yp^2#(p*;Wx*| ze|LbHm1wchHI-VDsqD;2ItUWxS>Z&v01GEVXiK8D<8paamQ~rTJn4`~=3O%NkV=)V z&(uRu355A{_kvXvCovzA9XBNmAcZd|k}oEu#Oi6wb&W+pL9JpWiHn)e7TzE*gb!7TPs5g@1tpsh2%ghjP#ZS3%4M*0-c=Hwxj29f71D! zn83%V;Vk$y2M@Tu7s8f6UHz4Zb`j|Q2}U5%7d(C7ZFBEt*5d|+?)_^}OWmn-Vbf!0e>%POTn=I!IAjk)a_M!XnogV*F`Hr9Se2<#GS*T^ z3znBWZmj)yJ%t4hnF3N1p+lx*()xhjd~swfx(L|Xy`auR+Zij@S_0-2l)^{_!9n%| zntCk-h10Gzq}`$b4)+pM+o5vdvT`Tuu^P(=?r64bq+#H#2iq76%7vYyf0ehiVq{+! z_cK&ora#CfBV!QS^0jpo93VlDs7Sc*lSAtSu%}>pL&275y2vhx@fucPo2i~R5vY(7(A$)q{HgJ6-OaFOL>xwVgcQY&&MBoWR(vrne**S7BRm2MZ0xP1 zH(IPJryYK_eYj-EP2n6jmp9fgmYTcxjF+m5A*DX1(>_X6U9!+g57a`V_BD^~gt7jYb$Vdtg&j95)W8CI z6QY>m{+Jl;ruKk&RQG$`0m5f8!RH0X9f}`Wvi)QfKV+lYGkl^!`NzzMLz!O=$MlHU zdzD#1PuMI@1>h(0K=f{2MN$wjK4)RXes?K)=sOdSu7Ai8e-@!A_=65I1q7l2G4)yG zKDudy{d0X?>on8*=zi%1TPXXT^>DfrpDL7|%5amzdl1i8GAih=t&8Edtt>hC#2SxP zsn>9mZ)oyu3!W;u-8Z%V(3C$c`J;p?dh%J#OtP3oG-%@0HNg`_v8N=H2z|u>jps3U zIo#?6Pd!A7e_}@^+0QyVLTEZ<2q<)yaGSaXMD@@)Zfc_YEER*yqO>)-LTy7SYzXIi z>dnGcSqv9nl+GMEXD{+?mIjUHW}vA~kl~Zi;zjgKeX>FblFAeE-+Q23>?*`g2z~EE zhCq%0!%M!tjv`jRNRoT5CK{8z?H0}w4sLyo_s|uLe}=4Vh}W=V4XtusYOuzfByZAm z=}@x|)@7)9{;9_yH)ElJSnGU>;y{~iG-7pW&}=CB*B!u^g0rE)BM4|oJ0o_&R~Dki zT`egi?gVpb8JdbAgg8z*71eb#(hR9Y9p`yR9a%;A(nW_!a@M5hq8Kk0H+rIVl|;Pa ze_cyue@u_n6j+a4?15^ILEFW`f~nBhR|&l;rbNlVXphyQkOSrU2_+6Xs)QsCjL=7q zB$8z%E@FJ)kq6-kIZ1cc~vqYn>!X=AVW3{4%cfTSEHBh0mjsL*= za)da7?Kqbn?K)i9R9tPyGP7fAQ%-h#ZOD-^w$mAwYAhpbTWi*~)=FDJE2+jdvoc#7 ze@_-t%7)5R&d6xM6rmdnI9YFBXyf02+w zpPMKQm=h%v-$&z>N3N^|r8SL&tLg=E8}0#ts0cd!ez$MeZ_dw&>;Fp&<5>gnVnzf_ z2xQkZ0DO6NcH6paH?CTCyK~;9@@HpgZcf~x+Mv;H>(i83JZ_vovIR)g`UW(+ThA!2 z8V8`!QX5|W)H1*zQSw!*b1}T!f8BCM@#L%JH6$;zgM{G)VR>XE!JK>H%$*?f1w}s! zErrbH5RPS*9jM7d#BE3(hBUn`oe$r^^T>r3(0izPxt>Uha)IKh{rl{dM^ASrPm2Yi#s z&?lD%q5!)?N1sMg0+W6;5p!ORgIU@-TZ>~{uvhKP^m-6TaR)o$77xez3+*($Lc{TI z!%$CY`+fi~BloHyL}nQ4f8=t#aQr?z8?l54c_Kvs)2My#2P>Dz-D?MxZ`Tty8O=gC z-a)gj*wqzLPAG0dMUG$!S(LI|1+?Rcb0VC1jn^v_eacukgn$Z$5i>#;6!^$+ozP>C z<|s1H3w9#8mBau5>^ezUHxUCE8o3FDI)KJh70yJ`@-&}hp(G0Je_FA2S}YhmJw6(l zW{4v9~WB&87jJU$||Kpx5kgOfH{!&yM#0Z~NNdp9dt%0m2b zy>PoDflfmC>{+4kDtggG85Ar4=_Vmk1CnakxJK@H9sl_Amsq%#Zk0Qe-p?NzFLN`W zllC=mIji4huDV&)e|ksR(mTqQ-%+;mjlvM28-d-{&DX7N3R-?MV&YfBf6 z*9loSpNhH{*;d80ty5&?kU`9^tzkWV{kqYp9qh3)=)_}rg!oL;s@}g-YEV*oAQ@I! zkLgr(zMZg>j2l*PH)_ltVy@hlqKsM-C8;RB(L?UE=S`}Lf3TsHVcIZ#t1F2vO8%~b zU`Z|xM1ULmre5^c)Nh8BeA-a=Pm63zs@*K5y$_PeObk)DLQ)jD2qHx^0r{L@8bf^x zTL7xoVT#*L13ji^?ZEa_!i}A%_I%r9TX$Rjf)r~%S9h!q@lw^43$QrT_%VO$fM^Kmo%7g5)w%|zF*xp zY8})j6zh#>P4dTWaLOCG!N~@Rcx$es7nmpb*C4-Lf6DzK2 zLrfL4j?U=~$bZEReQ86FHU?d&0jVB#@P)O-TZV68B(r8>66ZFNN4ldDyrFXXmihgTL|hBW*&*cnN(-J)oKEf9*WLyd~Uf*01mK#s$$$jhXuhSBx8d z@%ycRf84bDttRVCGJ)0gDTZBk%MId`BwD^2nAj@0aeGI5;vGqq;@%; zAer=j@o$CaL^2ngIm#Kc@BNo%4@&L>UPzo1BXR;aSO#Pluu6aXk^uPV-9tUDcpyw=oPR#xOuGZrIb9|wMKQnw?cd;9(JrC zoMeisr6OIMx6EKk#E^k7H$z?3EFby+FA zy~2r-y~nX5QASosq3ji9L}U~)G76Cr`tg3hKc6ps`~0rY@AvmZ*Yk3@dfcDm^?JU} z;aumuZqBPsD|rQ}d!^PUZl?)?-?REP6R*?EUPdwtKNN8Z3D&%*a`9blXMnaHX640v zo%(Ji0z%bW+Y6lc+)&D2J~gA6UlkCs36toojfG#?n^>4IH-1rJk9Rr@7muILF8IY_ zV9CjoElfJ81nWu~+B3q61$|-$)6aBuFiYr*`!G@FuZo0^bNWxmzb;9w8s>iYP2NrM z2Ni{0ejQcL<0!-Pso4)zd3adfX=CCc`QAte^QmH+vM`aVynCnSD(iM}@XU1bLX^$@ zMxNQmYBCMRdmbMphX*cKb`2#J)7;y$y%Q{8FF`2DN;&yGUV1R1TZhN(3)%Vnjyh5*RYh>E2#b0}r=EIfMs7hB` z+|j7Xez)6_@9CEak%lBqaVx(wX--`m5loB2C1FCSHu=YPKlKH5bLBJmldsQ&M|y4ln zrWWJQegn$O^%0vt{pyz`R7xy#P7 z`>SpWH>!p9E8o+zc3%8^7KLY@HFP{Lmg0(}-IY)D92XRhD02%M&~&CJLlR-p!KpO7D^-7QkE917HLS??}|uK&(P+Y za*Z&@r|&MRRH&TzSe|L>z!`dnsM6g#nWDl@`trPfP{bvgQ|#?J_(rlC1_`$_3pohH zF0Tf9_7iyFaLG(_Te!d3<+>Fv-#WuuDM}Ojws^!6W%1!^&s-;!CLwKU_JflJ3~}r8 z!AAF%HS?`5ImG0S8pT~YW`)HeyFRzD;kt2xU9hN$>T6z@HFB!x_C+~8p`_tkifzWC zq56SM=GloQ%odrK1Suz38YsH0#iK44^whhQq`&>M zY&`uBk{VR9p7VJE{OPvZfR~beT@hT&k&(2=sd1Oxe0y_K3xsbMil3bVj}-O^A1CU7N1eqrbyv=D&6_c+pk|VM9b^ z-(o_%jK)jSDGV|SH^=YrSekF}`}XYO^Iv8%p* zM>k1wV~)&wN>jE+A|>mYGQpxN;qJRDy#?eoyty?PhPj(E()5qIWSnp+P7m#lJ+HdP zs@^$=tl1oyak<7<#O^q$8yOnn*xgO@Tq4*^+%HPu+ivNZINY5?ru5~X!6zOFF;I%A z#r<+2@kZgW{A_siohPu)S&n{Px}!tMM2G&nMke(o`5_MF$nmLgLOhS@oZgC?XXPor zo@>@>{5Tes=YrItf33XCbXxO0WBUUy$5e4T{Z&%(bkPc1bWo_iwqewjoRj5N$|;MpgKFl_RaHAX+i8&6uBG~VH?(CotI4T?4h?T!Q0wi8_8@YwTfpEz#WKk0MMu zf+?JMYL(mgwr^h~lor-1Q<<4%FtPAxcYnj%f2ZT}$FpAR7rfS8z1B6n)~{Q;6{co6 zES8dvr`|=KS`G9bl>AkuiZRl+i);7u*pD5CFmL9~5}x|hKGE>L6A6Ta$^=#2!hRZ` zPz{;qu(BQUwBJ3+K6UxM&*`q0dZ|>WBrtv!mYxy7R>GF4q&AixUa*o>4{=U-lZ|)l zL7U@Mf)v^-f%4I0@}2(ieyhGLudHlO*JhJ+s|??4l0u=#J30(6;Mm^YxNdpw-9?4( zK7G#w>*W+F@$VoEjHUWZSTnEIRX>c5XD<3#9hQe`oupzhc-KT>rahf@EBU1<&6L7v zw%!~Y?+?a6NWw>&xLZHcP<3He4Nx}CCB65YTB%#TQ%>1|&qc56 zoms+w&C$7sVxJCJ&$4zFc51A1lWZW!zT)ZhmZUj#HQ8g~lkzFF{A_@cRIrJznPAEn zM-{2)^F8m)^90;ZWUDK@pPE`4W>zyCQ&d*p<~{phhlHBTCqdRQ46C8K0V{<*^%+(_ zV|1nQ?5@^X=EAV6x7|Z!N7-=p$X@wWKYMwnMH7c)pb=FU-J9y=yCb48bD_C1x8p}q zF#mNi^%+H1)0udkMvUvtRrDA22PSX$@(1eB$4>YXx18an=5US(k|HTy9!=VGrJdQy zcSx~)Qt$Zy&s}7*gvoq-UhFy1WYG0e`v#N+yOR44`-b6;>gC4?o6a9IXf>W>yG$CZ zDZPF)b&TB!Ra0xRl&p&6a@oI&32Q%7#)s9tmTpRsM$W4*WAxlLYo@3Z4JB$XQB1Ai zocgrsLb6I>fI*RT?s?(H3)K4S$%BveeKEsH|Mhye^^@cNr~96cJU@?fLR2iq{Z9A> z@>58D3^twAhhJ+7jvMw_ci&|Z*0~P8a10+T3eFc)ifBL;N;tJ%>JRo_n353weulNk z!Wq#)AFnrz@%GjCiu=nYPZZf))M^wH??@}Rq|n*uW~w)ug$_MxpGec1ie{ON?`TV$ zSR}6;d%)GfD7myKYs5zJAiU>F_$4(rTz{^d!jKPFWblSifcXG|C)4 z^*hQw?ZFimD9k!5ZjLi#mt`khgpHHWIEfZ5k|_O*5l24>irUR7z2)7W8+M~NhIY%* zb?WrC`VZ>ef?>}Iay=#FV$A^dj^JelvXxdbMzvsbwc?n<`Bz+ug;*wbxibN&J@=0r z*s~R2KR78JkZWRj&6pSEAEC(3)u0j z<6MDThU0`7Y@**uXimv6+IEj=ocneA_)VhXdwRJ5e^;4ZcjOK($jwE=kQ{kb5(W&*;w#?cQ4xm%wTc zMH9}eV)H1@Vk-{2*ygBf(R8lxa&Z{nx@;BYxP;1y=DN_n8MJXX*A3&urn~F; z1}}yEdn$<#bza5TqB!@t)YxsHLaupJnb2G>O!0MwB3IP7=DkX5MnchzqWxESF!ay9 zawW|975H&MF9IdT`7lJ9Q^2yRoa%%!34U2Hz7q3Fq3fxKTo||2i15E}jFfuf^D}-C z`s{W#dzwJi4%OOxDV$*mN0Ms%%*bbtbPr{o+x)(?=`8U)g=8MTLS&;VjjvEAkVPNd z!lt}V)vKjsl@5XVI*+8N?w+elgPHxss>l`M@>_GHg`RuW`!}Rg{k6A$KPqDO8ArZd z2Jhk5_g~Rj+g(wf+3Xd`^c_@JDj%KgyC-}}cl~0ZqvuJ~yR4LnPc^uYuvb(yaou(< z?}iI}Gf+ubdr>|e+Y(zywys#j@+z@v`IdOz+$7J}(bW4~?-6hH8`L>2q|pxJo9L{S z_0+B29JgY~f2w9QEq`h2j8LNan9`{E=Bsbl0u7r-sThkhW}o8i<&v$+YD#p7$=f9w zk0FDN6j^U2okT_VzsoqUTy&psFte7(=oZ^7-}S_aNsp{9!JsdfF=WD6B=4&dhVox& z$vWlTpGUxVlIyS~lk?}xLv z&n_;7E9BpDd0?Eq&i}Xomj`LS)|TMm+J|d`{mZO(qP=OZ1{;~+n}IF8ZK1M;UB8Qv zABkkWj&ofIPqSGu>PiL;Q?4(yNYR-7S-!YiG25osJT}$8t0X23CgQ3F8;gG`;)zVO zc3ek!OR#ceIiP&LRcMB=mxg_;eeGY8A9d2aSx}a5aN1oVY)j}o-4%wU$obIK^S6@I zb>2LV@d)oeZk9LdEpgdu-DJ|fCT@6yXlCBT`I_VRg7(dh&>~&YBC!*=0#=lU{ZG)c z=J)8DC03=fo!)7Fr?!^m-kwusjtDMLuPyDNFR3l5r_akkUCcDj?++3!e)(CL@!Fy+ z{?Ld{eTnBRzjF}N3mhk7K?^J)4=EQll@>;VM`vcX3E%Ng5vgYg(j50i8&yU&_9EBuxRFfO zfVXXT?&7ZUMU+UCa?!@68#=s(y?j$Qb@4VnFluN9Og#~(Fq_6JnNBSbC)N&ivyQOK z-CCZD*?6k{RG^H~bb3N<%wbAeeg1jEj`bSHPY>nli)$Yg^`E~YbjaW_<~#P3-N)iJ z8=QNx?_Eb^cOg|-w`oyS3nt|b}B0< zHRE3D47XgRcv>t@m5Pc@?-d=rnCNGsiQ33Knt&_kTZMypL$7GfD_OMR#u|^cR2bmQ zh_jGV1#Ybg>-H;f&(%p|_~jT#;68bxBunY`h&D7=4I8O|y-JNyZ}QH|fg{ARAW3I! z_!(wv*_W0r0aPl3&iLiQ{A8u*fsfq{Hxg=UXp8go&ZMqyETvC8>w1pyMlZt*zo>LM zXtI*d!7H!h>BE`5D;in!*DZw^OdG@-Rs0wBYV*e&mdA#Pl6mbDT^*lip1J?})z!20 zUs+XbUcM-Hb@O;wLfoamla{Gl@`c-Q&&8)!@imJnhUu43)D$aK)3jNuLKJ<@!!5hs zH@l7Yo7KWy}{H$TS5Mu_p<=3+*SLXT#l)+ZFxb&7pm| zY%R3XPphV~WidI6$qyhC#=QF;CGxiV>)u_NQQFTfkHoi0 zUq=aC-5qUGagp**zFx5DS(CdR;2P$xYzXx8PvJC!*Bte?58Y41Y-+4!aL3LGie&wxY!xuSke1 z&d|-J6v{a(QqhOE`CV!Oa3+m@LgQ!F|_SH?Ci zC$T&xz=DmbrDL8J79z$U{=hwdz2a&RyIDJz4YtREq}vPBdu{Ve)AK<(F_`5J>)m#w z_6?VRi4UAol1%%K6HKq==lZe7Gw%{dpCCctq*1y`Fa;IUmE()mryo_daTf1b_(XgT z2}?=K-NF^UF2;B+YaqaeY5egE&3uEKUc?SRO*rUro9cSc&AV?5IGncpK>lgK70V;A zzX>&6c5?hS<9SqjVM0nCBWr3J=F034Nief;Gxr9>=;ZjA|))i*rljRPj>vVA>y2k6DX3?Q30V1@NHL5W51SS{AAREss(%wluEWUjN}{c_-1Pu_ zdiRqIn-3)HjZ(kq&Z|jt^$|@mJ-YYvCC-i%yMX@gh?Q?^xBVht7j@=*nR5_BVIT$3 zc=HYOn=fu;d>*$LB<{@9Z5aN+(=a1y_WA57r8vg?dryt}3AWDj6MsKzs0eyKX2@*<0i%>uiK4x8iGh}N#$@ndo8$Cdj7i!wkCT) zn@NNHn?9Y*Q6r%;>EWKqz}io0pE7b4OxsB=HQcIPzOaW_j#xgOi}&2hBo~{}r7JV> ze(seCOR*cDG<61wi#EU4(K&~j37nG@QruFRL_NyV-=S)oevGpC>8F(E!nD?wNIhGz zs-srrj2=yMUP)@jSkCpCwRR`7ot{b450+B+rQ&`(kFB6u{xS2=M>j;*^PsxbkIqxR zh;RiP+1D%ihLm>+gYJt9`v!*yy85O|Uh;BT5MFXD@17T=z+RONE7W8Pj$OJ<5PpaK ztH;^X#cFAzee3L~Rt<-1$-RT(%e=$kNy1Lo>@L2jpxj(ik2s^SMMqgc)UA6TlSM*| z*`d2g57}i*SJUL`Yfy0N=by`Kgh>|&l1c#GPJ&S*HPGBkKaL#xKHfBSd87bMe+0*=_br|cE-0?%oVz$a122e2ztnrF zRglKIUEb2wJL4ie!WCh!VcYyNGzF!uN>51>yKSY*c4tL^muy_-Lmz9&P&1*yPp^pM ztcFW#U*AxQR+XFO;^k7-#Vp)?k#x4~&67zTvlGK?;rbZS4fh85^D`FaVv??lW7R)Y zdp%0K-BDNnxXk`8YQ=p6V`Nb@P&TpOA|k!0V!fgx#)ZRtmZp55pHIB zBZMoIE?aDFQghHhi`3nax;QC`AvkZ~d+fHR>spFgno}JcPcicy_Cr=#Ls%1!TtZeTI8O_|ajKmBvH`Ga9y!8E@; zy>Uvg{V5xJ`+Ubo$u%{XBaFtHn@`wFST9)J@JRA|Su8|%>F3Gid_OOY^_koB+)Cc0 z-E!p~SiZcTJLC#Xs9Klw>#C$rt1nV%6Q9}@a80|E+~W9Bgg$*VytG;;#AU-<4&Osr zXGg2ySd3{4wu7x8+vD4+IR+>1zrG!3ifgHr;VG&)E9$<>&-9}px*){sQ}s(nHHzW4 zr;*Hk-A1-%HT~?EZ=|n&)4bN;=b_bP?l-A8nw_29UCg`LIr0v5qUu{^bj*b9=gn^= zatw+~W31Bs>3q9L1Sj3jwJE+|{j16E3C*mlQlI|p!6x9bWm{s>=DYJzroOhoxKJb3 zD$do<{Bp$O_r#Xx9!!6GYN1!iAeetfo%5=r-?ZrjCu5^f72o@`L~9WlfjHDti_C=9 z0Uja&W^E(mZ|$RXNR)J&yw+&rQ2LWS;C?38wg z@cS2P$n9OSYgj1hRwId)V>4|R*L2P=zSxzt-E^+I-YlTJ6Pn?n03 z9vk|HbUn`%JcMtPN5nClh#LCIO&!CsbN_SEn}Xz%Gs;Q!A{|Y0C@Y68SF*-P+V?n! z8_V})#Dt}pE9R!ZP32$=4ELAY?1@KlPOpkIHx0>|5WKnld8D&WK$MWLYuuzOQRR#2 zdji={M9xDs{#+Xpb*vQ|qp`f?#?AU;OGuNi_%frEsnNdd+4a}lp2shm#iDK&N3Mk@ zr72s`-&&O4E)o^5zK9CiIYCXyz&a&pdAB)Fij^Oy$fNA`1ANJ_^6_6vcDGt0GZsjv zj%&XX;HS}(Vkv8NPK#VQ=e5G`eQqU*i*{gMmP{K<+?Q!J-AZcQLCmjrO*;Z7wNHRL z{av%tYc9VUpXWiERalwaZq%`Qae`#y8hlZ+LS=O?8hF zCmi>w^54axlMapVAXW?x;%R>n`m@ELhW|>2TbH1=c*KJ^8SP8%A8C%8-%r$#>`J=k zA6)!d$fKjot1>^fpbj;PTM%%LnRoJj65XdgaRh2PuXObRXR$Ks{I;f$#anF}I>(7t z1z!pEs;|^fp4r%BnB2`;;TY?GUgYqJ?NRF;&$`J{;@0aQQ{yOK<$gZ1>@IIEpYM4$ zwxK9sZFHK(#ddQ7=OYVzr}}~>qIbmf z2@;ZRZzy?(D0cJi3dJ=E5YbmU*Cgl?=bL@9{p6bHBCV1*@NPFti@?=iRB=X>Xklw^ z%~43W_o~$sTZJcj*23{9(aWm8T>b9p_zqZJBk0f0u8$ANSWrouTzT>!qM2<*iX@@4 z?i8kRE-m)QWYeBw^odt937jhxB)-kL&j+ab&|>j@u}-mNe=3?1H#gYqI}+GS=A@n6 z7SE0!UnyaJI=UkoH#T(M68U9EuwQGwE=NOI9g32Ex<{-c!Q}UH zCOf`FtvYMeqCPX{YF)xVB^ z?Q&ADQE&Oe#6XA)6Xq!DQ)RoivC_iRuJWh3{k)i;eqh}}Zoi+K8Z{^z{@(TcImWY6 zugNF$^T%y$esP(xo7qvHi5BwinR#-rIEq7Brp7c)E&t2jJI(efcAt}>W@jwI*xyT8 z(SK)|yZv18ik(EJ%R`;b`Oa&UETJ+fWm6|in=Y2xk#&`1BdtSRAKymhO#G-A8sYpJ zAIunatE)S~;A|pY_HDjd1?lDcnt04NKK4s<)3mqoUJ<-jw(79|)}hX|Q_rvzaiplO zQp?+P{y zDF)3hFW1}12Z7%crI?SLAs{n#mBSL2*7FSL2GkWy2@(z4P02f1pPN9E15hMY&m z^wX1+={|RJmbXx{@-BYwiQ>NQ%ww|Ovps`sSaJS|J56)PmZ|4Hm#?n+c!!P6YT7Xb z=^Qnl=DAbc?>8O?>yt>^I%=xLOB=Ou)(hBo6b;|R8nTqmVQRT2WEhW+3Ov0xu1%{i zI=!JKVDl{SdrjK+@+US6){?On+@f={d~=+q{A@}C18nMM+58zM3{?0!y1%(@3b%dG zE*@8sr8S%oyzo}rr3TfofKlNre$qZmd&!QBjhmNa$aEy0#F)IsCeiTJ;?@xP4yIUB zu;}CacZa8~DbBt1Rj(?~4@XUZCkP9ZO)vdgUT~>-_3+LWZ{WLkCq0T6*=D=fg}V z8MFsd44ufWj6EEb5qh)YwC^N6MkBSv#0zI849qbxY=zfel0R|$^l+UXRk7r}@G3x{ ze0tJb{H7~3ey!%l; z#7tzrn;WoyuV~II3HKM2{j`a#WeEKXg{6qIPG1_=?po4o$9Glb zy#L7t^yLTdos6A6g%T$uX0xNbH{7bK(bmNme)^u{((+!ew~V#ky7CP#r0taxkDGX) zd98DlvcV;XVG4~g#^j!f^OgpAlPe^5wvRoS6EACaeu@+AgV!n5Nu$AV>2Z4Sa*>fe zr~J9PU1=%$Z^yVVyM;yxHgAQ=G?wEf}FMKBv>QnQ$MxL7)f7LV$L4kpD9ofFriBc$|a6gXKgs|FbzAuLp zn}{8ff%9sSke=7GZ_2BK-a6j98&p|LrUg_dy>s09d@-W%4;epYYZ~ZR# zG3Q*_BE{Yin~GE|Bak2KExwE@AY&XGR@p0i`C5aZ%ET*X)Qt5LitwgrB#QE;Gv%^< z--HvUS4O(%b&ThXF=NBxuP$&>vJd?{%T4YOJ~%jtnaFVSa=+`2-{+D3V$&b5pR(H( zEo`>ZU1#DE`D#xQMYKUfK|=eyOFfD&c88gjV(6WJo32V$(MDQPetwA=Daxw8eT+Up zJk{AXpf|d1P@n$6ZJKvaY8q~EM%|*Q9*dpzYbbP#82-uGc=7T2T>IlkR%RhDYOhhu zgukqPlA!qgm;UDxhgvUQ+BRK>qQvE(SfULzbv$VGp`$z7$YQcc*1a+a5PXH5HkTNYU-f+ zt*q*%rt{TnZ7cR0enmehgSIS;9?ylR=WdML*VS@9Mt?SDai_pDnIYxZd0y12*p9>_ zjR5w0ZDq8W^&dv1O6iW>Cu&VJ<&V_~^dVC65_<35G3iFNBiCzU;5?>I9yqxZVcOtg z6E_iFI>b&5r z1<76FZmGkayk2 z>ipvNZ>1(B&G4Po$s|Sp=^%4DlTk8?2etjmK;h0KKijDhs~=CayA=XWE^oD*N2zah z-uC!4j{j+Im100jgtbA=ThULh^|qd@x<}P3dEH z&n7xNPOM)9)LI?kNi>or-q@Kmsy-rx7S*=@@g@5bTIs0)JW|fE7*NC;!9G97(7!-V#Z9S6K8ATG%7sH92RrU$xX}y`;JS2b=+6APpgw z!|}jWqb$x7wIxr>mGT*{3Cr@{%PE>eHM3HaM2Ac_=Ip&Rl#a$^t8131{ltH6SGWr2 z*VXNS*b2LmFNO56{xqVJY(+-WdlPTePcie{X))yWQq|}VXejAzN{O5{wExIso=?*= zV6QDSa@@?QU4XgH{grq@#a;HtG!N`w8Md5F>Rg$oQnG!%XX&uW{ezjM*E*3!YyTy- zX6NNEDnieMylBi60?s`yAlM_TSl;MuuBUDxOVy6_w-4}We_tZJU54K!5YI5Bcu&p?DU2YH3$eCv9-Lm11Qm0M~AXBgWRT5((FsE#d+XqgirztxVc^jvy1 z;S;RLcdQGOq1SSU3?gK)Ffj(St~1uYaY|mwfA9rc`PR zLFi|7F9jT8Bf%cUEPIEXn6`MX@a_^OFY+&#Rup8*X`aY_gC=yq8zSnjDqu(bPd%B--XO2u^A?7u%Q}i9P!t^w$ z(;w!>%+$4}c%BK=YBP5B_*E|}+BzpINs?bH#Jjdr(@A`c8TaCC=daI*=44A`%#w^W ze?>$wdSL&I@OjAUBH~oLV43iG)Pa_2Hu_8Y&K~MhUjgm+`NtPdJ1Eho5`;`tM<)|p zQEQScuU=hy%j%(@TW7P;IPhd~CHUS0Za^?~BonUv7#X~Je_=H|o-7A`Iv8D9k@N0Pb8hzSfmh(JWQpNKOAJ;S7aSO|DT3xu@ai*OX zhc9sWe?HOj-OHamdbbbrR>bp8(sx=Vd-wEi=Et=64{@wh$X)WT-O+4He`HG$_Lh~U zFJk*gst)}E=jWEyj($WLzP{Anm4ac_^dvTf`yjIlYE8`k?rEU`Jsx4^#nfW2SkJyM zyA$YdKmAx4D-)g#Ue~=_uKnc4*u~*bL#USlW>zK>oR^;T`bF<0f4RkORkm9oOkbaO zO|zfzXYP&O$uy)fb9Ru}&}l4oigm6H*HHao8ZRm-JaXc38no?bvWdMW5pHevoli!> zrlJKIlvhxfNU8b+iG{n?e?Mq*CbU_ zO6wVH)gQHkst+Pg%FjRG>$GrbGnD(a^H`O1iP$KBPK&%=jNzt}NCx7rWPpvbk8pMl zORJO;!V|?mbW?_|sX1^Rcd>;jr%u&F^xR|H)V9x-%AVh%9$G99yk!h@B`pv7HY&Cw zPSnpBcYpii5c6+_6;Kbbw3;A%JZYQlgE%ld!+VXT-P15paJj{a33OBULk2_=56j-+D_yzYE_N)vEj(=yzr6e?w zIcYCn`U;79sFEQm>^)1rSrY9)9`odSDqRVic>#ufdFf40(iT6=;X%RMQwtjW_6;}Q zs>GPJ*F zb^nrb_t~+|7r#w$MtR^%<@;~NEBaVC^L7y|Q`lc#d!mTe`A+6jeSZ9~w!LmV;nEr5 z&<$-5yh+jgy-VGh@!X%6+V*#PuY7{U^NX~@?8>q^oP$5ID7@v~ENKt;%qgreXZqn6 zv3-9;Q8Gg7Mj;WVGka5lFtcKb(rIwUxwTJwKEfVZi}zJ-iAV z@o8chb~tByrwvasA+(8hn968{T{~w^Nm^4m_nRyUn>mS}s8HIysuFf#yCkib{7oRK z(ETCwtltZ)>!{kjh@P&-sH&6t4{}{b1Ydk`*yJ6IzuB!HT%-NS!8D~o(o?a`edf(I zuA1iD*t;4Uxj1YU0W`;WizCakiBE^6Ruf$Hyv1V8D0P*=B)FRjVdI0Ugk$2EW3 zm|#9`gQTOWVngDDr999jHGQYHV;6*aX4PXL{yqEV!ZzsH}G5o93>BtpqI);O{TarFPPG@xXWAjE$|hRo#3+y~LEfJ; zLTCus#&j1N*k)-NZ>M^Q(&h(G2n^S8BJ=MGy?w&#RD$D^TX_mSx$@SYzkNeiwb9Sl z{^a*Bb4#V2DD+){N0Ua2b*P#R<%PF2ym8|aTB#H6PCT`}DYe<{icvI{cY`o5r7`Z` znV|hdRnBdNg0@-_!TzhitkihklZu944-}Xg8K>f|5!v<-OxNL_q^N)HS5RDLxTz=I z`lV=r&=Zm8EFndpb!#Y4UuB0`=NuL`CE{OJ9zoxjzhXQ#0&!Oa9i55Id&J6X&csf_ zrafGK!>(b$01JVLJcd9p$H!BmZ~9|W9LZGVVjE*I9L@+Mxbjpo5s1QROau)Ai9k2e z5ilOfSma}?XCD7o#_Bi1uTKF-i17J7;rCAi!Vd^PApC&v1HumoKOp>o@B_jR2tOeF zfbavt4+uXX{Qjl*0pSOP9}s>(_yOSugdY%oK==XS2ZSFGen9vE;Rl2t5Pm@T0pSOP z9}s>(_yOSugdY%oK==XS2ZSFGen9vE;Rl2t5Pm@T0pSOP9}s>(_yOSugdY%oK==XS z2ZSFGen9vE;Rl2t5Pm@T0pSOP9}s>(_yOSugdY%oK==XS2ZSFGen9vE;Rl2t5Pm@T z0pSOP9}s>(_yOSugdY%oK==XS2ZSFGen9vE;Rl2t5Pm@T0pSOP9}s>(_yOSugdY%o zK==XS2ZSFGen9vE;Rl2t5PttH;dfx=kse0*xDiM+hCh-TeKQP6MM8|gJq+jlW%K>p z^E=31IL9q9k3b-jFcAn5bU6_=E1HQI8y{U=heLMQ+(Y-(;Vd2z`VOgn=&5=fzQff| z{sR4u4CL3tZmH&pKv-sAAlMUM5K*HAauJ-Oq}pgHQImh*zSLn{BqtL<2hXYx8z6v zufDDK`#vK1?Q4TSBamDNj$hNhKXClO@dL*X96xaU!0`je z4;(*m{J`-8$IoceC2wtOnFJg^aQwjW1IG^>KXClO@dL*X96xaU!0`je4;(*m{J`-8 z#}6DoaQwjW1IG^>KXClO@dL*X96xaU!0`je4;(*m{J`-8#}6DoaQwjW1IG^>KXClO z@dL*X96xaU!0`je4;(*m{J`-8#}6DoaQwjW1IG^>KXClO@dL*X96xaU!0`je4;(*m z{J`-8#}6DoaQwjW1IG^>KXClO@dL*X96xaU!0`je4;(*m{J`-8#}6DoaQwjW1IG^> zKXClO@dL*X96xaU!0`je4;;V$*6}+a^9cUO@k5`P#}y_#Y~}r>_Z<=T{zvaaAo%x% zJz)dn2{h9ZF4^JSQOECK6k!Bco=PSHQ8Hd)5yIb8j>5RTcgw%h z!S4gV5Bxsx`@ru5zYqLA@cY2;1HTXaKJfd%?*qRN{66se!0!XU5Bxsx`@ru5zYqLA z@cY2;1HTXaKJfd%?*qRN{66se!0!XU5Bxsx`@ru5zYqLA@cY2;1HTXaKJfd%?*qRN z{66se!0!XU5Bxsx`@ru5zYqLA@cY2;1HTXaKJfd%?*qRN{66se!0!XU5Bxsx`@ru5 zzYqLA@cY2;1HTXaKJfd%?*qRN{66se!0!XU5Bxsx`@ru5zYqLA@cY2;1HTXaKJfeg zTfgss$|L?CzYl>BNW`F{M1P1vGLaA?a1X0_e@T8+SlE;Z1RfsZAgJ{1Si1lMfjEzD z!o-(3OzffYvG9eCczlQXKJ)$mJY4-Z-$(neu5FLK=A{`4-`L8{6O&o#SaueQ2apg1H}&%KT!NY@yn?RB6$<@5(gAN zQ2apg1H}&%KT!NY@dL#V6hBb>K=A{`4-`L8{6O&o#SaueQ2apg1H}&%KT!NY@dL#V z6hBb>K=A{`4-`L8{6O&o#SaueQ2apg1H}&%KT!NY@dL#V6hBb>K=A{`4-`L8{6O&o z#SaueQ2apg1H}&%KT!NY@dL#V6hBb>K=A{`4-`L8{6O&o#SaueQ2apg1H}&%KT!NY z@dL#V6hBb>K=A{`4-`L8{6O&o#SaueQ2apg1H}&%KT!NY@dL#V6hBb>K=J!;6~6;9 z?}*}e65UTrK!s+ZCSW~c<{dTs4q|hoi#iVbh94T;OG_YkxEOt$j==ffhTlQ$VZ-kc z9f9!S>c0)YBjtWQ?3QYt2!v$@2Kveqg42X;`+DC$4fH?*qLL^ghu0K<@*+5A;6J`#|plz0YAgNtWMt!vOR?(EC8|1HBLQKG6F>?*qLL z^ghu0K<@*+5A;6J`#|ply$|$0(EC8|1HBLQKG6F>?*qLL^ghu0K<@*+5A;6J`#|pl zy$|$0(EC8|1HBLQKG6F>?*qLL^ghu0K<@*+5A;6J`#|ply$|$0(EC8|1HBLQKG6F> z?*qLL^ghu0K<@*+5A;6J`#|ply$|$0(EC8|1HBLQKG6F>?*qLL^ghu0K<@*+5A;6J z`#|ply$|$0(EC8|1HBLQKG6F>?*qLL^ghu0{{Qv9#3@!Pw37fK>k%^VFT9Ty3!4&w zz{5iv!Ta_Bzf=1m7PL+fCjH^iUx?q4%pt@N!Ijw0!j$+q9eFtNx8(Ql%=LZv?~vq& z;7)vgf(|VhkE9?WM&P#ZlYaj+ApL;!1JVyjKOp^p^aIilNIxL`fb;{>4@f^C{ebiX z(ho>KApL;!1JVyjKOp@Ke^#Dm7+=@}(ho>KApL;!1JVyjKOp^p^aIilNIxL`fb;{> z4@f^C{ebiX(ho>KApL;!1JVyjKOp^p^aIilNIxL`fb;{>4@f^C{ebiX(ho>KApL;! z1JVyjKOp^p^aIilNIxL`fb;{>4@f^C{ebiX(ho>KApL;!1JVyjKOp^p^aIilNIxL` zfb;{>4@f^C{ebiX(ho>KApL;!1JVyjKOp^p^aIilNIxL`fb;{>4@f^C{ebiX(ho>K zApL;!1JVyjKOp^p^aIlGza{++&^&@0b`1*#SO`SqF?5bHkr?4&EAOb~cToO|LW`qf z-|?fxL?HMRNjTZjOdd$$-;6!BA{6O*p$qytyko-XM1IZ60Kal)D@&m~aBtMY+ zK=K304{<@+DW?@;cjKXClO@dL*X96xaU!13Gi7+k+|rqUT4KXClO@dL*X96xaU z!0`je4;(*m{J`-8#}6DoaQwjW1IG^>KXClO@dL*X96xaU!0`je4;(*m{J`-8#}6Do zaQwjW1IG^>KXClO@dL*X96xaU!0`je4;(*m{J`-8#}6DoaQwjW1IG^>KXClO@dL*X z96xaU!0`je4;(*m{J`-8#}6DoaQwjW1IG^>KXClO@dL*X96xaU!0`je4;(*m{J`-8 z#}6DoaQwjW1IG^>KXClO@dL*X96xaU!14Qkar{Vc*flH|U?C8Z#}J5<`(~cYEhGav zE(uBXJDm5wQNPzER?H;`1Y#Zofe=Lpa$vKdqrFKO2oG_4=qhiLGTOsN-yzZu!G-?9 zip_*JPezjbKH5>-&wk$m^y^`_RP#h2EHf|=9QzY}uY;sQJL6+f6TaN%{r+jd`vLC< zydUs>!21F32fQEfe!%+y?+3ge@P5Gi0q+OAAMk#_`vLC!21F32fQEfe)YDW z_g3Dmy#?M6ct7C%fcFF54|qS|{ebra-Vb;`;QfI21KtmKKj8g<_XFM!ct7C%fcFF5 z4|qS|{ebra-Vb;`;QfI21KtmKKj8g<_XFM!ct7C%fcFF54|qS|{ebra-Vb;`;QfI2 z1KtmKKj8g<_XFM!ct7C%fcFF54|qS|{ebra-Vb;`;QfI21KtmKKj8g<_XFM!ct7C% zfcFF54|qS|{ebra-Vb;`;QfI21KtmKKj8g<_XFM!ct7C%fcFF54|u=-miIeA^9cTj z_e1kXl8PL$@{Wpr2jx3G`M-)V5eOPG1VT1}kQU8y5lM>np}{6W$E6^N50JjY*q&T0 z=_5?~f9ZY)9URvESoV>={uCtJ@2S6NzvKT(IUJ?^&`(a1ohIzr7ybTeAo_vm2cjQ{ zejxgR=m(-7h<+gYf#?UKABcV+`hn;Nq92HUAo_vm2cjQ{ejxgR=m(-7h<+gYRaIQ2 z`)c$w4MaZ>{Xp~s(GNsF5dA>(1JMseKM?&u^aIfkL_ZMyK=cFA4@5r@{Xp~s(GNsF z5dA>(1JMseKM?&u^aIfkL_ZMyK=cFA4@5r@{Xp~s(GNsF5dA>(1JMseKM?&u^aIfk zL_ZMyK=cFA4@5r@{Xp~s(GNsF5dA>(1JMseKM?&u^aIfkL_ZMyK=cFA4@5r@{Xp~s z(GNsF5dA>(1JMseKM?&u^aIfkL_ZMyK=cFA4@5r@{Xp~s(GNtw|5o%nu=0riNAyD= zPNMsdVKbp);*nGb%HCl%?4n@te5IW}$ z^L&R;KQwb8neY*w?=Q{o$zv7doIE)K4-a8}#PdTJ-$9-htlsDRbk1R5QX(i3|ElR5 z^H+?=Mj-BrAP~$5{D0fM?(Zf3BZFr2qZJ~Mr^No0I<$v=JKd`T#}JNgR%o4MB&*QxQS0B%)X`Pmaz<}Q zAo+xwep}!{>OU`#aTXUXJCDmFy1&3bCI9mRUoPOHg$NyZ z#y#<;q|I*&@(>D#e(f&KG$e!mGH83iAK7LGG} zH1R|pLNu!|AqCn=fRO1wRsJTQ zn=rBQ1kK+UfBSFKJ%}E@Hh7Ojb>xZAjn|Mg=(wc)$F@IY(NE*|k0hotQ6d@V{&nDi zB>Q6(L&AO)i3$>UT6*67m#9 z*Z-dU-y2=hi3II(Yk#Bvb*%qXR+qGY6jxnI&^I~upXH;yNoWst%%3X%+A+V}NYHDn z*bILiZ=v7I4tUMTQVWf#ue4PIlgUN*cP*_rC zJ?8NI_mh7gZQ*P(bOkOp1zHGqUo$>}`9oLegL8uEcMlzwiabg8cLC0^{Rdsd`u;!siwFdj9CH7s{{!JhPv`&u diff --git a/firmware/tunerstudio/generated/rusefi.ini b/firmware/tunerstudio/generated/rusefi.ini index 78f10725e6..428f575b37 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.02.16.all.1841462752" + signature = "rusEFI 2021.02.17.all.1375432900" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.all.1841462752" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.all.1375432900" ; 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 Tue Feb 16 22:27:00 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:29 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini index 712d734030..bd8be9f27d 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.02.16.frankenso_na6.3921170547" + signature = "rusEFI 2021.02.17.frankenso_na6.3582025047" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.frankenso_na6.3921170547" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.frankenso_na6.3582025047" ; 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 Tue Feb 16 22:27:13 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:38 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_hellen72.ini b/firmware/tunerstudio/generated/rusefi_hellen72.ini index 0407b2eb82..a1d3abb379 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.02.16.hellen72.395767137" + signature = "rusEFI 2021.02.17.hellen72.732946501" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.hellen72.395767137" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.hellen72.732946501" ; 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 Tue Feb 16 22:27:03 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:33 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini b/firmware/tunerstudio/generated/rusefi_hellen_cypress.ini index 18478e4097..736974e954 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.02.16.hellen_cypress.801023536" + signature = "rusEFI 2021.02.17.hellen_cypress.327658260" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.hellen_cypress.801023536" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.hellen_cypress.327658260" ; 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 Tue Feb 16 22:27:23 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Wed Feb 17 22:45:51 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_kinetis.ini b/firmware/tunerstudio/generated/rusefi_kinetis.ini index 1f95b1b485..df157a08eb 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.02.16.kin.3491457740" + signature = "rusEFI 2021.02.17.kin.3961677800" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.kin.3491457740" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.kin.3961677800" ; 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 Tue Feb 16 22:27:22 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Wed Feb 17 22:45:49 UTC 2021 pageSize = 19972 page = 1 @@ -1041,7 +1041,9 @@ lowPressureFuel_v1 = scalar, F32, 3284, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3288, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3292, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3296, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3300, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3300, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3304, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3312, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3836, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3840, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3844, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_mre_f4.ini b/firmware/tunerstudio/generated/rusefi_mre_f4.ini index c5bc50c149..7dfebdc065 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.02.16.mre_f4.1124339466" + signature = "rusEFI 2021.02.17.mre_f4.2134704686" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.mre_f4.1124339466" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.mre_f4.2134704686" ; 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 Tue Feb 16 22:27:12 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:36 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_mre_f7.ini b/firmware/tunerstudio/generated/rusefi_mre_f7.ini index 1cbc51728e..f6b67c8129 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.02.16.mre_f7.1124339466" + signature = "rusEFI 2021.02.17.mre_f7.2134704686" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.mre_f7.1124339466" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.mre_f7.2134704686" ; 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 Tue Feb 16 22:27:11 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:35 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini index f6012498cd..54e6a7f9ec 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.02.16.prometheus_405.2136244182" + signature = "rusEFI 2021.02.17.prometheus_405.1131246322" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.prometheus_405.2136244182" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.prometheus_405.1131246322" ; 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 Tue Feb 16 22:27:16 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:41 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini index 613370778d..bf71f63718 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.02.16.prometheus_469.2136244182" + signature = "rusEFI 2021.02.17.prometheus_469.1131246322" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.prometheus_469.2136244182" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.prometheus_469.1131246322" ; 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 Tue Feb 16 22:27:15 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:40 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini index 2fd980ace6..b20eae8d7f 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.02.16.proteus_f4.183743951" + signature = "rusEFI 2021.02.17.proteus_f4.919255275" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.proteus_f4.183743951" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.proteus_f4.919255275" ; 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 Tue Feb 16 22:27:19 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:45 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini index a71f0a3793..3646f140a7 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.02.16.proteus_f7.183743951" + signature = "rusEFI 2021.02.17.proteus_f7.919255275" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.proteus_f7.183743951" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.proteus_f7.919255275" ; 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 Tue Feb 16 22:27:18 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:43 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 diff --git a/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini b/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini index b145c9b800..b5f6420364 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.02.16.subaru_eg33_f7.819661567" + signature = "rusEFI 2021.02.17.subaru_eg33_f7.216139739" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2021.02.16.subaru_eg33_f7.819661567" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2021.02.17.subaru_eg33_f7.216139739" ; 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 Tue Feb 16 22:27:21 UTC 2021 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:47 UTC 2021 pageSize = 20000 page = 1 @@ -1057,7 +1057,9 @@ lowPressureFuel_v1 = scalar, F32, 3312, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value1 = scalar, F32, 3316, "kPa", 1.0, 0.0, 0, 1000000.0, 2 lowPressureFuel_v2 = scalar, F32, 3320, "volts", 1.0, 0.0, 0, 10.0, 2 lowPressureFuel_value2 = scalar, F32, 3324, "kPa", 1.0, 0.0, 0, 1000000.0, 2 -unused3328 = array, U08, 3328, [536], "units", 1.0, 0, -20, 100, 0 +cltRevLimitRpmBins = array, S08, 3328, [4], "C", 1.0, 0, -70, 120, 0 +cltRevLimitRpm = array, U16, 3332, [4], "", 1.0, 0, 0, 8000, 0 +unused3328 = array, U08, 3340, [524], "units", 1.0, 0, -20, 100, 0 tChargeAirCoefMin = scalar, F32, 3864, "Min tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirCoefMax = scalar, F32, 3868, "Max tCharge Coeff.", 1.0, 0, 0.0, 1.0, 4 tChargeAirFlowMax = scalar, F32, 3872, "Max Air Flow (kg/h)", 1.0, 0, 0.0, 1000.0, 1 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 46b7a04b7c..e24447f394 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java @@ -1,6 +1,6 @@ package com.rusefi.config.generated; -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Mon Feb 15 03:37:24 UTC 2021 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Wed Feb 17 22:45:29 UTC 2021 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -192,6 +192,7 @@ public class Fields { public static final int clt_config_offset = 252; public static final int CLT_CRANKING_CURVE_SIZE = 8; public static final int CLT_CURVE_SIZE = 16; + public static final int CLT_LIMITER_CURVE_SIZE = 4; public static final int clt_offset = 252; public static final int clt_resistance_1_offset = 264; public static final int clt_resistance_2_offset = 268; @@ -208,6 +209,8 @@ public class Fields { public static final int cltIdleCorrBins_offset = 10656; public static final int cltIdleRpm_offset = 1960; public static final int cltIdleRpmBins_offset = 1896; + public static final int cltRevLimitRpm_offset = 3332; + public static final int cltRevLimitRpmBins_offset = 3328; public static final int cltTimingBins_offset = 2352; public static final int cltTimingExtra_offset = 2384; public static final int clutchDownPin_offset = 664; @@ -1190,6 +1193,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 = 1375432900; public static final int silentTriggerError_offset = 1464; public static final int slowAdcAlpha_offset = 2088; public static final int sparkDwellRpmBins_offset = 332; @@ -1473,7 +1477,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.02.15.all.3168733074"; + public static final String TS_SIGNATURE = "rusEFI 2021.02.17.all.1375432900"; 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; @@ -1542,7 +1546,7 @@ public class Fields { public static final int unused244_3_offset = 2428; public static final int unused2508_offset = 2508; public static final int unused2536_offset = 2536; - public static final int unused3328_offset = 3328; + public static final int unused3328_offset = 3340; public static final int unused3942_offset = 3992; public static final int unused3988_offset = 3988; public static final int unused4028_offset = 4028; diff --git a/java_console/rusefi.xml b/java_console/rusefi.xml index 79e6ac0f13..373f03012c 100644 --- a/java_console/rusefi.xml +++ b/java_console/rusefi.xml @@ -1,6 +1,6 @@ - +