From 4c75ebde214a3a8ef60c22c34e9469b74a3bc80a Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 1 Jun 2019 17:15:01 -0400 Subject: [PATCH] Usability: TS project rework #811 trying to address encoding nightmare --- ...ngine_configuration_generated_structures.h | 6 +-- firmware/integration/rusefi_config.txt | 2 +- firmware/tunerstudio/rusefi.input | 44 +++++++++--------- java_tools/ConfigDefinition.jar | Bin 79587 -> 80157 bytes .../src/com/rusefi/ConfigDefinition.java | 5 +- .../src/com/rusefi/util/LazyFile.java | 13 ++++-- 6 files changed, 39 insertions(+), 31 deletions(-) diff --git a/firmware/controllers/algo/engine_configuration_generated_structures.h b/firmware/controllers/algo/engine_configuration_generated_structures.h index f2e3abb223..97c620356b 100644 --- a/firmware/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by ConfigDefinition.jar based on integration\rusefi_config.txt Wed May 29 23:53:28 EDT 2019 +// this section was generated automatically by ConfigDefinition.jar based on integration\rusefi_config.txt Sat Jun 01 17:13:22 EDT 2019 // begin #ifndef CONTROLLERS_ALGO_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H #define CONTROLLERS_ALGO_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H @@ -2635,7 +2635,7 @@ struct persistent_config_s { float cltIdleCorr[CLT_CURVE_SIZE]; /** * kg/hour value. - * By the way 2.081989116 kg/h = 1 ft�/m + * By the way 2.081989116 kg/h = 1 ft3/m * offset 10784 */ float mafDecoding[MAF_DECODING_COUNT]; @@ -2788,4 +2788,4 @@ typedef struct persistent_config_s persistent_config_s; #endif // end -// this section was generated automatically by ConfigDefinition.jar based on integration\rusefi_config.txt Wed May 29 23:53:28 EDT 2019 +// this section was generated automatically by ConfigDefinition.jar based on integration\rusefi_config.txt Sat Jun 01 17:13:22 EDT 2019 diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 02de13db1b..44b357283c 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -1080,7 +1080,7 @@ float[IAT_CURVE_SIZE] iatFuelCorr;;"Ratio", 1, 0, 0.0, 10.0, float[CLT_CURVE_SIZE] cltIdleCorrBins;CLT-based idle position multiplier for simple manual idle controller;"C", 1, 0, -100.0, 250.0, 2 float[CLT_CURVE_SIZE] cltIdleCorr; CLT-based idle position multiplier for simple manual idle controller;"%", 1, 0, 0.0, 1000.0, 2 -float[MAF_DECODING_COUNT] mafDecoding;kg/hour value.\nBy the way 2.081989116 kg/h = 1 ft�/m;"kg/hour", 1, 0, -500.0, 4000.0, 2 +float[MAF_DECODING_COUNT] mafDecoding;kg/hour value.\nBy the way 2.081989116 kg/h = 1 ft3/m;"kg/hour", 1, 0, -500.0, 4000.0, 2 float[MAF_DECODING_COUNT] mafDecodingBins;; "V", 1, 0, -5.0, 150.0, 2 angle_table_t ignitionIatCorrTable; diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 4205837ddc..9f933f4237 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -158,14 +158,14 @@ fileVersion = { 20171101 } ; RPMValue = scalar, U32, 0, "RPM", 1, 0.00000 #if CELSIUS - coolant = scalar, F32, 4, "°C", 1, 0.0 + coolant = scalar, F32, 4, "°C", 1, 0.0 #else - coolant = scalar, F32, 4, "°F", {9/5}, 17.77777 + coolant = scalar, F32, 4, "°F", {9/5}, 17.77777 #endif #if CELSIUS - intake = scalar, F32, 8, "°C", 1, 0.0 + intake = scalar, F32, 8, "°C", 1, 0.0 #else - intake = scalar, F32, 8, "°F", {9/5}, 17.77777 + intake = scalar, F32, 8, "°F", {9/5}, 17.77777 #endif TPSValue = scalar, F32, 12, "%", 1, 0 MAFValue = scalar, F32, 16, "V", 1, 0 @@ -215,14 +215,14 @@ fileVersion = { 20171101 } ind_hasFatalError=bits, U32, 80, [6:6], "true", "false"; ind_isWarnNow =bits, U32, 80, [7:7], "true", "false"; firmwareTsVersion = scalar,U32, 84, "version_p", 1, 0 - egt1 = scalar, S16, 88, "°C", 1, 0 - egt2 = scalar, S16, 90, "°C", 1, 0 - egt3 = scalar, S16, 92, "°C", 1, 0 - egt4 = scalar, S16, 94, "°C", 1, 0 - egt5 = scalar, S16, 96, "°C", 1, 0 - egt6 = scalar, S16, 98, "°C", 1, 0 - egt7 = scalar, S16, 100, "°C", 1, 0 - egt8 = scalar, S16, 102, "°C", 1, 0 + egt1 = scalar, S16, 88, "°C", 1, 0 + egt2 = scalar, S16, 90, "°C", 1, 0 + egt3 = scalar, S16, 92, "°C", 1, 0 + egt4 = scalar, S16, 94, "°C", 1, 0 + egt5 = scalar, S16, 96, "°C", 1, 0 + egt6 = scalar, S16, 98, "°C", 1, 0 + egt7 = scalar, S16, 100, "°C", 1, 0 + egt8 = scalar, S16, 102, "°C", 1, 0 rpmAcceleration = scalar, F32, 104, "dRpm", 1, 0 massAirFlowValue= scalar, F32, 108, "Kg/h", 1, 0 veValue = scalar, F32, 112, "ratio", 1, 0 @@ -780,14 +780,14 @@ gaugeCategory = Debug gaugeCategory = Sensors RPMGauge = RPMValue, "Engine Speed", "RPM", 0, 15000, 200, 500, 6000, 6000, 0, 0 #if CELSIUS - CLTGauge = coolant, "Coolant Temp", "°C", -40, 140, -15, 1, 95, 110, 1, 1 + CLTGauge = coolant, "Coolant Temp", "°C", -40, 140, -15, 1, 95, 110, 1, 1 #else - CLTGauge = coolant, "Coolant Temp", "°F", -40, 285, 5, 35, 205, 230, 1, 1 + CLTGauge = coolant, "Coolant Temp", "°F", -40, 285, 5, 35, 205, 230, 1, 1 #endif #if CELSIUS - IATGauge = intake, "Intake Air Temp", "°C", -40, 140, -15, 1, 95, 110, 1, 1 + IATGauge = intake, "Intake Air Temp", "°C", -40, 140, -15, 1, 95, 110, 1, 1 #else - IATGauge = intake, "Intake Air Temp", "°F", -40, 285, 5, 35, 205, 230, 1, 1 + IATGauge = intake, "Intake Air Temp", "°F", -40, 285, 5, 35, 205, 230, 1, 1 #endif TPSGauge = TPSValue, "Throttle Position", "%", 0, 100, 0, 0, 100, 100, 2, 2 afr1Gauge = AFRValue, "Air:Fuel Ratio 1", "", 10, 19.4, 12, 13, 15, 16, 2, 2 @@ -825,9 +825,9 @@ gaugeCategory = Accel Data gaugeCategory = Fuel Data ;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld #if CELSIUS - tChargeGauge = tCharge, @@GAUGE_NAME_FUEL_CHARGE_TEMP@@, "°C", -40, 140, -15, 1, 95, 110, 1, 1 + tChargeGauge = tCharge, @@GAUGE_NAME_FUEL_CHARGE_TEMP@@, "°C", -40, 140, -15, 1, 95, 110, 1, 1 #else - tChargeGauge = tCharge, @@GAUGE_NAME_FUEL_CHARGE_TEMP@@, "°F", -40, 285, 5, 35, 205, 230, 1, 1 + tChargeGauge = tCharge, @@GAUGE_NAME_FUEL_CHARGE_TEMP@@, "°F", -40, 285, 5, 35, 205, 230, 1, 1 #endif baroCorrectionGauge = baroCorrection,"BaroCorr", "%", 0, 120, 10, 10, 100, 100, 1, 1 crankingFuelGauge = crankingFuelMs, @@GAUGE_NAME_FUEL_CRANKING@@, "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1 @@ -1445,7 +1445,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" ; Sensors->AUX1 Thermistor Sensor Setting dialog = auxTempSensor1Sensor, "aux1 Thermistor Settings" field = "#Here is three pairs of thermistor temperature and resistance." - field = "#Typical temperatures is -40°C, 0°C and 100°C" + field = "#Typical temperatures is -40°C, 0°C and 100°C" field = "" field = "Lowest temperature", auxTempSensor1_tempC_1 field = "Resistance @ LT", auxTempSensor1_resistance_1 @@ -1459,7 +1459,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" ; Sensors->AUX2 Thermistor Sensor Setting dialog = auxTempSensor2Sensor, "aux2 Thermistor Settings" field = "#Here is three pairs of thermistor temperature and resistance." - field = "#Typical temperatures is -40°C, 0°C and 100°C" + field = "#Typical temperatures is -40°C, 0°C and 100°C" field = "" field = "Lowest temperature", auxTempSensor2_tempC_1 field = "Resistance @ LT", auxTempSensor2_resistance_1 @@ -1701,7 +1701,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" ; Sensors->CLT sensor dialog = clt_thermistor, "CLT sensor" field = "#Here is three pairs of thermistor temperature and resistance." - field = "#Typical temperatures is -40°C, 0°C and 100°C" + field = "#Typical temperatures is -40°C, 0°C and 100°C" field = "" field = "Lowest temperature", clt_tempC_1 field = "Resistance @ LT", clt_resistance_1 @@ -1721,7 +1721,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" ; Sensors->IAT sensor dialog = iat_thermistor, "IAT sensor" field = "#Here is three pairs of thermistor temperature and resistance." - field = "#Typical temperatures is -40°C, 0°C and 100°C" + field = "#Typical temperatures is -40°C, 0°C and 100°C" field = "" field = "Lowest temperature", iat_tempC_1 field = "Resistance @ LT", iat_resistance_1 diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index c37f614d3e9aa3b1b57ec5515af963635fa63420..1411b9961afb9bd5e06980f72ca2b99a6e834238 100644 GIT binary patch delta 11794 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ⅈ z${&5iBX}SV5g=VL(~%{K4?JBfw2(Hw+m)>v1r_6^1`-yjpFM>H&nVXGCNabM^{tdoP{BRlx)P{SU_)D z?U9vM|OCQyx-J0e5VE{ablY@fL2-@zgV32K%;)2W|imMT15-c*j2`FEj~XL26Ho= zL>``>PLENq&GeawUf4zc9Oq!0S2ls*jXi%FNBmSiLZHYFD+rC3wLq?5{)j|^_y(NS z#?o&YYQDL+gTU*RRDNfk^y>aG6Gu1av3Q?9a=29f-UBxqRrI^3gtwV`&kRQ8cRg&d z(6~85kH@;m?jyz!Zl5~4CPN~#+iRGT6NQsLM(om;oeHqHLP!*k1K3IKS4$?--~W`U zly3dd^^9?=IV7&qn|@1IKs*=%VjH1(wELR*)c^U*c}+3~yvW=x6T)ZvgYU%K@=?Wf6`5t8fspLWT%I0YAZ(2o)e94287sqdrG0fb!mETphvsIPy z!huNO6uoW&>v&t#Emk!Ha18rSB=1D>P9*O{@=hf0MDk7~??m!WB=1D>P9*O{@=hf0 zMDk7~??m!WB=1D>P9*O{@;@Sp{Qne54OIY;?B0K_O?IeZ{kI0j!v3d+S!DyT{=H3E zkHZd#2L2Dd#AI;*On@K=8i4x{ll2%N46LF1S8T)y5C<+W{VOi!1jqo#nbDctRG36T zfB^7<>u=10X%YhvVl24;^Z-uG11LZRK!W+g1yBXz38PDe*)UJJ0bD?FarCk{Jtq2} zxJM5CTAmft#`*WNEp7lkuoZ^E;Q_#aKUFcyLI7o;fd=|kg9X#Z^EY{25B&^4hr#0o zJOP+t#)JXtK-4P?lL$Zy=xY1V6N0(r1;_(DFk>PB1Q6l&&pR^o19ysl4`3?#cYwD@ zOrR*h2%v`1Jo#y`nM=^K4 diff --git a/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java b/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java index d0225bf8b9..71c9ffee7c 100644 --- a/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java +++ b/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java @@ -8,6 +8,8 @@ import com.rusefi.util.LazyFile; import java.io.*; import java.math.BigInteger; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; @@ -21,6 +23,7 @@ import java.util.List; @SuppressWarnings("StringConcatenationInsideStringBufferAppend") public class ConfigDefinition { public static final String EOL = "\n"; + public static final Charset CHARSET = StandardCharsets.ISO_8859_1; public static final String GENERATED_AUTOMATICALLY_TAG = "was generated automatically by ConfigDefinition.jar based on "; public static String MESSAGE; @@ -95,7 +98,7 @@ public class ConfigDefinition { if (prependFile != null) readPrependValues(prependFile); - BufferedReader definitionReader = new BufferedReader(new FileReader(definitionInputFile)); + BufferedReader definitionReader = new BufferedReader(new InputStreamReader(new FileInputStream(definitionInputFile), CHARSET.name())); ReaderState state = new ReaderState(); List destinations = new ArrayList<>(); diff --git a/java_tools/configuration_definition/src/com/rusefi/util/LazyFile.java b/java_tools/configuration_definition/src/com/rusefi/util/LazyFile.java index 10b3908850..fdfbb66be1 100644 --- a/java_tools/configuration_definition/src/com/rusefi/util/LazyFile.java +++ b/java_tools/configuration_definition/src/com/rusefi/util/LazyFile.java @@ -3,6 +3,8 @@ package com.rusefi.util; import com.rusefi.ConfigDefinition; import java.io.*; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Paths; import java.util.Scanner; import java.util.regex.Pattern; @@ -43,10 +45,14 @@ public class LazyFile { for (int i = 0; i < Math.min(fileContent.length(), newContent.length()); i++) { if (fileContent.charAt(i) != newContent.charAt(i)) { System.out.println(getClass().getSimpleName() + " " + filename + ": Not same at " + i); + if (i > 15) { + System.out.println("file " + fileContent.substring(i - 15, i + 5)); + System.out.println("newContent " + newContent.substring(i - 15, i + 5)); + } break; } } - FileWriter fw = new FileWriter(filename); + Writer fw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(filename), ConfigDefinition.CHARSET)); fw.write(content.toString()); fw.close(); } @@ -58,10 +64,9 @@ public class LazyFile { private String readCurrentContent(String filename) throws IOException { if (!new File(filename).exists()) return ""; - BufferedReader br = new BufferedReader(new FileReader(filename)); - Scanner in = new Scanner(Paths.get(filename), "UTF-8"); - String line; + Scanner in = new Scanner(Paths.get(filename), ConfigDefinition.CHARSET.name()); Pattern pat = Pattern.compile(".*\\R|.+\\z"); + String line; StringBuffer sb = new StringBuffer(); while ((line = in.findWithinHorizon(pat, 0)) != null) { if (!line.contains(ConfigDefinition.GENERATED_AUTOMATICALLY_TAG))