From 62c0ab88d4b157cbfd7c5cde17d7960f21ddbf64 Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Tue, 21 Jul 2020 18:36:23 +0000 Subject: [PATCH] Auto-generated configs and docs --- .../controllers/generated/signature_all.h | 6 ++-- .../generated/signature_frankenso_na6.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 ++-- firmware/tunerstudio/generated/cache.zip | Bin 844883 -> 845909 bytes firmware/tunerstudio/generated/rusefi.ini | 27 ++++++++++-------- .../generated/rusefi_frankenso_na6.ini | 27 ++++++++++-------- .../tunerstudio/generated/rusefi_kinetis.ini | 27 ++++++++++-------- .../tunerstudio/generated/rusefi_mre_f4.ini | 27 ++++++++++-------- .../tunerstudio/generated/rusefi_mre_f7.ini | 27 ++++++++++-------- .../generated/rusefi_prometheus_405.ini | 27 ++++++++++-------- .../generated/rusefi_prometheus_469.ini | 27 ++++++++++-------- .../generated/rusefi_proteus_f4.ini | 27 ++++++++++-------- .../generated/rusefi_proteus_f7.ini | 27 ++++++++++-------- 19 files changed, 162 insertions(+), 135 deletions(-) diff --git a/firmware/controllers/generated/signature_all.h b/firmware/controllers/generated/signature_all.h index 4ed180ecfb..684a34ecc3 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 2020.07.19 -#define SIGNATURE_HASH 2760614588 -#define TS_SIGNATURE "rusEFI 2020.07.19.all.2760614588" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 3066610021 +#define TS_SIGNATURE "rusEFI 2020.07.21.all.3066610021" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index a663d4ba48..1097eb40e9 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 2020.07.19 -#define SIGNATURE_HASH 2047659615 -#define TS_SIGNATURE "rusEFI 2020.07.19.frankenso_na6.2047659615" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 1750052230 +#define TS_SIGNATURE "rusEFI 2020.07.21.frankenso_na6.1750052230" diff --git a/firmware/controllers/generated/signature_kin.h b/firmware/controllers/generated/signature_kin.h index 82bdbc029b..58182dda0f 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 2020.07.19 -#define SIGNATURE_HASH 1773501990 -#define TS_SIGNATURE "rusEFI 2020.07.19.kin.1773501990" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 2079727103 +#define TS_SIGNATURE "rusEFI 2020.07.21.kin.2079727103" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index 68b06b0897..3830679ff3 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 2020.07.19 -#define SIGNATURE_HASH 3983897650 -#define TS_SIGNATURE "rusEFI 2020.07.19.mre_f4.3983897650" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 4281735147 +#define TS_SIGNATURE "rusEFI 2020.07.21.mre_f4.4281735147" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index ffd2dcf731..f19ffcd8ff 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 2020.07.19 -#define SIGNATURE_HASH 3983897650 -#define TS_SIGNATURE "rusEFI 2020.07.19.mre_f7.3983897650" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 4281735147 +#define TS_SIGNATURE "rusEFI 2020.07.21.mre_f7.4281735147" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index d7ac8ccf95..c011b803ea 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 2020.07.19 -#define SIGNATURE_HASH 1368881720 -#define TS_SIGNATURE "rusEFI 2020.07.19.prometheus_405.1368881720" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 1137973729 +#define TS_SIGNATURE "rusEFI 2020.07.21.prometheus_405.1137973729" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index 187ab769b8..65c185621d 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 2020.07.19 -#define SIGNATURE_HASH 1368881720 -#define TS_SIGNATURE "rusEFI 2020.07.19.prometheus_469.1368881720" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 1137973729 +#define TS_SIGNATURE "rusEFI 2020.07.21.prometheus_469.1137973729" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index 460cc5c298..adc0307124 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 2020.07.19 -#define SIGNATURE_HASH 689623923 -#define TS_SIGNATURE "rusEFI 2020.07.19.proteus_f4.689623923" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 995733674 +#define TS_SIGNATURE "rusEFI 2020.07.21.proteus_f4.995733674" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index eb4b908979..593d88309f 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 2020.07.19 -#define SIGNATURE_HASH 689623923 -#define TS_SIGNATURE "rusEFI 2020.07.19.proteus_f7.689623923" +#define SIGNATURE_DATE 2020.07.21 +#define SIGNATURE_HASH 995733674 +#define TS_SIGNATURE "rusEFI 2020.07.21.proteus_f7.995733674" diff --git a/firmware/tunerstudio/generated/cache.zip b/firmware/tunerstudio/generated/cache.zip index 70bddf0f72720af083a9cdb1b54a812ede6069b4..82bfc805001cef3132bbfef78efa13f1aa3cd0db 100644 GIT binary patch delta 275600 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 delta 282324 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 diff --git a/firmware/tunerstudio/generated/rusefi.ini b/firmware/tunerstudio/generated/rusefi.ini index 149e790070..f962b0b120 100644 --- a/firmware/tunerstudio/generated/rusefi.ini +++ b/firmware/tunerstudio/generated/rusefi.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.all.2760614588" + signature = "rusEFI 2020.07.21.all.3066610021" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.all.2760614588" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.all.3066610021" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:31 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 21 18:35:44 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d" diff --git a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini index 685ca88d84..2c52971092 100644 --- a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini +++ b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.frankenso_na6.2047659615" + signature = "rusEFI 2020.07.21.frankenso_na6.1750052230" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.frankenso_na6.2047659615" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.frankenso_na6.1750052230" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:35 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 21 18:35:49 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d" diff --git a/firmware/tunerstudio/generated/rusefi_kinetis.ini b/firmware/tunerstudio/generated/rusefi_kinetis.ini index b6dff6b010..2aaca2b038 100644 --- a/firmware/tunerstudio/generated/rusefi_kinetis.ini +++ b/firmware/tunerstudio/generated/rusefi_kinetis.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.kin.1773501990" + signature = "rusEFI 2020.07.21.kin.2079727103" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.kin.1773501990" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.kin.2079727103" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:41 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Tue Jul 21 18:35:56 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f4.ini b/firmware/tunerstudio/generated/rusefi_mre_f4.ini index c243dada05..bdccd5db05 100644 --- a/firmware/tunerstudio/generated/rusefi_mre_f4.ini +++ b/firmware/tunerstudio/generated/rusefi_mre_f4.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.mre_f4.3983897650" + signature = "rusEFI 2020.07.21.mre_f4.4281735147" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.mre_f4.3983897650" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.mre_f4.4281735147" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:34 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 21 18:35:47 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d" diff --git a/firmware/tunerstudio/generated/rusefi_mre_f7.ini b/firmware/tunerstudio/generated/rusefi_mre_f7.ini index 0e7117ce5d..21b4bfcba4 100644 --- a/firmware/tunerstudio/generated/rusefi_mre_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_mre_f7.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.mre_f7.3983897650" + signature = "rusEFI 2020.07.21.mre_f7.4281735147" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.mre_f7.3983897650" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.mre_f7.4281735147" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:33 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 21 18:35:46 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini index aa5faf48e1..320f831126 100644 --- a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini +++ b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.prometheus_405.1368881720" + signature = "rusEFI 2020.07.21.prometheus_405.1137973729" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.prometheus_405.1368881720" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.prometheus_405.1137973729" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:38 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 21 18:35:51 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d" diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini index 30fd444986..bb1e477120 100644 --- a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini +++ b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.prometheus_469.1368881720" + signature = "rusEFI 2020.07.21.prometheus_469.1137973729" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.prometheus_469.1368881720" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.prometheus_469.1137973729" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:36 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 21 18:35:50 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini index d62e2d3e02..c552939446 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.proteus_f4.689623923" + signature = "rusEFI 2020.07.21.proteus_f4.995733674" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.proteus_f4.689623923" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.proteus_f4.995733674" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:40 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 21 18:35:54 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d" diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini index 239aa8a006..ffbd0cb01c 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini @@ -45,12 +45,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI 2020.07.19.proteus_f7.689623923" + signature = "rusEFI 2020.07.21.proteus_f7.995733674" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmwave version for title bar. - signature = "rusEFI 2020.07.19.proteus_f7.689623923" ; signature is expected to be 7 or more characters. + signature = "rusEFI 2020.07.21.proteus_f7.995733674" ; signature is expected to be 7 or more characters. [Constants] ; new packet serial format with CRC @@ -88,7 +88,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 Sun Jul 19 16:19:39 UTC 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Tue Jul 21 18:35:53 UTC 2020 pageSize = 20000 page = 1 @@ -1682,18 +1682,19 @@ page = 1 ; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields ; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID FSIO_1_7 CJ125 CAN TLE8888 Analog inputs 2 Boost Start Launcher ETB Autotune FSIO_8_14 FSIO_SPECIAL +; DBG_ALTERNATOR_PID DBG_TPS_ACCEL DBG_2 DBG_IDLE_CONTROL debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "fsio 1", "24:df1", "CJ125: output", "", "", "", "", "", "", "TPS1 Pri/Sec Diff", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude", "", "fsio 8", "idle offset","" debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "fsio 2", "24:df2", "CJ125: i-term", "", "", "", "", "", "", "TPS2 Pri/Sec Diff", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude", "", "fsio 9", "idle min", "" - debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" - debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" - debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" - debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" - debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" + debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "prev error", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "fsio 3", "24:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu", "", "fsio 10", "", "" + debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "I Gain", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "fsio 4", "24:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku", "", "fsio 11", "", "" + debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "D Gain", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "fsio 5", "24:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp", "", "fsio 12", "", "" + debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "D Term", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "fsio 6", "24:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki", "", "fsio 13", "", "" + debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "Max-Value", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "fsio 7", "24:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd", "", "fsio 14", "", "" - debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" - debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" - debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "P-Gain", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "24:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", "", "", "", "", "" + debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "Offset", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "24:di2", "", "write count","", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI3List = bits, U08, [0:7], "Reset Cnt", "", "", "Reset Cnt", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "24:di3", "", "write err", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", "", "", "", "", "" + debugFieldI4List = bits, U08, [0:7], "Period", "", "", "State", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "24:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", "", "", "", "", "" debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "", "di5", "di5", "di5", "di5", "S di5" "", "", "", "", "", "" [ConstantsExtensions] @@ -2411,6 +2412,8 @@ gaugeCategory = Sensors - Raw entry = AFRValue, "Air/Fuel Ratio", float, "%.2f" entry = VBatt, "VBatt", float, "%.2f" entry = engineLoad, "Engine Load", float, "%.1f" + entry = fuelingLoad, "fuel: load", float, "%.1f" + entry = ignitionLoad, "ign: load", float, "%.1f" entry = ignitionAdvance, "timing", float, "%.2f" entry = knockLevel, "knock: current level", float, "%.2f" entry = knockCount, "knock: counter", int, "%d"