From 69a80c73f6dd39c0c7475fa877af7df35463096c Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 10 Jun 2019 13:38:25 -0400 Subject: [PATCH] input has sizes hard-coded #836 --- firmware/integration/rusefi_config.txt | 24 +++++++--------- java_tools/ConfigDefinition.jar | Bin 86603 -> 75182 bytes .../src/com/rusefi/ReaderState.java | 27 +++++++++++++++--- .../rusefi/test/ConfigFieldParserTest.java | 15 ++++++++++ 4 files changed, 49 insertions(+), 17 deletions(-) diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index c3ffefe410..b66ac5d9cb 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -124,26 +124,24 @@ struct_no_prefix engine_configuration_s #define MAF_DECODING_COUNT 256 -! please note that 1024 here is 4 * FUEL_RPM_COUNT * FUEL_LOAD_COUNT -custom fuel_table_t 1024 array, F32, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@],"ms", 1, 0, 0.0, 500.0, 2 -custom ve_table_t 1024 array, F32, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@],"%", 1, 0, 0, 999.0, 2 -custom afr_table_t 256 array, U08, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@],"deg", 0.1, 0, 0, 25.0, 1 +custom fuel_table_t 4*@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@ array, F32, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@],"ms", 1, 0, 0.0, 500.0, 2 +custom ve_table_t 4*@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@ array, F32, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@],"%", 1, 0, 0, 999.0, 2 +custom afr_table_t @@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@ array, U08, @OFFSET@, [@@FUEL_RPM_COUNT@@x@@FUEL_LOAD_COUNT@@],"deg", 0.1, 0, 0, 25.0, 1 -custom fsio_table_8x8_u8t 64 array, U08, @OFFSET@, [@@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@],"value", 1, 0, 0.0, 255.0, 0 -custom fsio_table_8x8_f32t 256 array, F32, @OFFSET@, [@@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@],"value", 1, 0, 0.0, 30000.0, 2 -custom tps_tps_table_t 256 array, F32, @OFFSET@, [@@TPS_TPS_ACCEL_TABLE@@x@@TPS_TPS_ACCEL_TABLE@@],"value", 1, 0, 0.0, 30000.0, 2 +custom fsio_table_8x8_u8t @@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@ array, U08, @OFFSET@, [@@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@],"value", 1, 0, 0.0, 255.0, 0 +custom fsio_table_8x8_f32t 4*@@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@ array, F32, @OFFSET@, [@@FSIO_TABLE_8@@x@@FSIO_TABLE_8@@],"value", 1, 0, 0.0, 30000.0, 2 +custom tps_tps_table_t 4*@@TPS_TPS_ACCEL_TABLE@@x@@TPS_TPS_ACCEL_TABLE@@ array, F32, @OFFSET@, [@@TPS_TPS_ACCEL_TABLE@@x@@TPS_TPS_ACCEL_TABLE@@],"value", 1, 0, 0.0, 30000.0, 2 ! todo support table size multiplocation -custom baro_corr_table_t 64 array, F32, @OFFSET@, [@@BARO_CORR_SIZE@@x@@BARO_CORR_SIZE@@],"%", 1, 0, 0, 999.0, 2 +custom baro_corr_table_t 4*@@BARO_CORR_SIZE@@x@@BARO_CORR_SIZE@@ array, F32, @OFFSET@, [@@BARO_CORR_SIZE@@x@@BARO_CORR_SIZE@@],"%", 1, 0, 0, 999.0, 2 -! please note that 1024 here is 4 * IGN_LOAD_COUNT * IGN_RPM_COUNT -custom ignition_table_t 1024 array, F32, @OFFSET@, [@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@],"deg", 1, 0, -20, 90, 2 -custom ignition_tps_table_t 512 array, S16, @OFFSET@, [@@IGN_RPM_COUNT@@x@@IGN_TPS_COUNT@@],"deg", 0.01, 0, -20, 90, 2 +custom ignition_table_t 4*@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@ array, F32, @OFFSET@, [@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@],"deg", 1, 0, -20, 90, 2 +custom ignition_tps_table_t 2*@@IGN_RPM_COUNT@@x@@IGN_TPS_COUNT@@ array, S16, @OFFSET@, [@@IGN_RPM_COUNT@@x@@IGN_TPS_COUNT@@],"deg", 0.01, 0, -20, 90, 2 -custom angle_table_t 1024 array, F32, @OFFSET@, [@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@],"deg", 1, 0, -720, 720, 2 -custom pedal_to_tps_t 64 array, U08, @OFFSET@, [@@PEDAL_TO_TPS_SIZE@@x@@PEDAL_TO_TPS_SIZE@@],"deg", 1, 0, -720, 720, 2 +custom angle_table_t 4*@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@ array, F32, @OFFSET@, [@@IGN_RPM_COUNT@@x@@IGN_LOAD_COUNT@@],"deg", 1, 0, -720, 720, 2 +custom pedal_to_tps_t @@PEDAL_TO_TPS_SIZE@@x@@PEDAL_TO_TPS_SIZE@@ array, U08, @OFFSET@, [@@PEDAL_TO_TPS_SIZE@@x@@PEDAL_TO_TPS_SIZE@@],"deg", 1, 0, -720, 720, 2 struct pid_s ! explicitly document which use-cases need 10e-7 parameters diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index bf5ee06837584fab9f19a2a9f361fd1fbb4cb91b..762b2d2c01b2b0036806a65f11e069d424d02808 100644 GIT binary patch delta 10467 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 Ik1yzd0R7l#^#A|> delta 20870 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 diff --git a/java_tools/configuration_definition/src/com/rusefi/ReaderState.java b/java_tools/configuration_definition/src/com/rusefi/ReaderState.java index 271dfbb46a..929db38d4e 100644 --- a/java_tools/configuration_definition/src/com/rusefi/ReaderState.java +++ b/java_tools/configuration_definition/src/com/rusefi/ReaderState.java @@ -61,14 +61,33 @@ public class ReaderState { String tunerStudioLine = line.substring(index).trim(); tunerStudioLine = VariableRegistry.INSTANCE.applyVariables(tunerStudioLine); - int size; + int size = parseSize(customSize, line); + state.tsCustomSize.put(name, size); + state.tsCustomLine.put(name, tunerStudioLine); + } + + public static int parseSize(String customSize, String line) { + customSize = VariableRegistry.INSTANCE.applyVariables(customSize); + customSize = customSize.replaceAll("x", "*"); + line = VariableRegistry.INSTANCE.applyVariables(line); + + int multPosition = customSize.indexOf('*'); + if (multPosition != -1) { + String firstPart = customSize.substring(0, multPosition); + int first; + try { + first = Integer.parseInt(firstPart); + } catch (NumberFormatException e) { + throw new IllegalStateException("Size in " + line); + } + return first * parseSize(customSize.substring(multPosition + 1), line); + } + try { - size = Integer.parseInt(customSize); + return Integer.parseInt(customSize); } catch (NumberFormatException e) { throw new IllegalStateException("Size in " + line); } - state.tsCustomSize.put(name, size); - state.tsCustomLine.put(name, tunerStudioLine); } void readBufferedReader(BufferedReader definitionReader, List consumers) throws IOException { diff --git a/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java b/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java index 165ef9a620..03ba7d6fbe 100644 --- a/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java +++ b/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java @@ -2,6 +2,7 @@ package com.rusefi.test; import com.rusefi.ConfigField; import com.rusefi.ReaderState; +import com.rusefi.VariableRegistry; import org.junit.Test; import static org.junit.Assert.*; @@ -71,4 +72,18 @@ public class ConfigFieldParserTest { assertEquals(cf.getComment(), "@see hasMapSensor\\n@see isMapAveragingEnabled"); } } + + @Test + public void testParseSize() { + assertEquals(4, ReaderState.parseSize("4", "")); + + assertEquals(12, ReaderState.parseSize("4*3", "")); + + VariableRegistry.INSTANCE.clear(); + + VariableRegistry.INSTANCE.register("var", 256); + + assertEquals(512, ReaderState.parseSize("2*@@var@@", "")); + assertEquals(512, ReaderState.parseSize("2x@@var@@", "")); + } }