From af4dcc10f2b7f5319f0a34d6d9bb302d920cc8bd Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 18 Jul 2020 19:30:49 -0400 Subject: [PATCH] STRING support for java fields --- firmware/integration/rusefi_config.txt | 1 - .../main/java/com/rusefi/config/Field.java | 6 ++++++ java_tools/ConfigDefinition.jar | Bin 1686784 -> 1687180 bytes .../com/rusefi/output/JavaFieldsConsumer.java | 5 ++++- .../rusefi/test/ConfigFieldParserTest.java | 2 +- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 0de2abaf12..e1af853833 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -803,7 +803,6 @@ custom maf_sensor_type_e 4 bits, S32, @OFFSET@, [0:1], @@maf_sensor_type_e_enum@ ! same length used for critical and soft error messages #define ERROR_BUFFER_SIZE 120 - custom vehicle_info_t @@VEHICLE_INFO_SIZE@@ string, ASCII, @OFFSET@, @@VEHICLE_INFO_SIZE@@ custom error_message_t @@ERROR_BUFFER_SIZE@@ string, ASCII, @OFFSET@, @@ERROR_BUFFER_SIZE@@ diff --git a/java_console/inifile/src/main/java/com/rusefi/config/Field.java b/java_console/inifile/src/main/java/com/rusefi/config/Field.java index 916fdf8cfd..58b442faef 100644 --- a/java_console/inifile/src/main/java/com/rusefi/config/Field.java +++ b/java_console/inifile/src/main/java/com/rusefi/config/Field.java @@ -18,6 +18,7 @@ public class Field { private final String name; private final int offset; + private final int stringSize; private final FieldType type; private final int bitOffset; private final String[] options; @@ -36,8 +37,13 @@ public class Field { } public Field(String name, int offset, FieldType type, int bitOffset, String[] options) { + this(name, offset, 0, type, bitOffset, options); + } + + public Field(String name, int offset, int stringSize, FieldType type, int bitOffset, String[] options) { this.name = name; this.offset = offset; + this.stringSize = stringSize; this.type = type; this.bitOffset = bitOffset; this.options = options; diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index 96110ee601052971dc0bc925f03239e2690b8c66..4da6b20e07eddd12d357ca53679d1fa138795c3e 100644 GIT binary patch delta 41770 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 S1Eb~D9!UW<4^IhTgB<`Ca3uu* delta 41874 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 RO)lFfDZsYJ9k@G)0RR}o@{#}m diff --git a/java_tools/configuration_definition/src/com/rusefi/output/JavaFieldsConsumer.java b/java_tools/configuration_definition/src/com/rusefi/output/JavaFieldsConsumer.java index b40d21f8bb..af5917b355 100644 --- a/java_tools/configuration_definition/src/com/rusefi/output/JavaFieldsConsumer.java +++ b/java_tools/configuration_definition/src/com/rusefi/output/JavaFieldsConsumer.java @@ -79,7 +79,10 @@ public abstract class JavaFieldsConsumer implements ConfigurationConsumer { writeJavaFieldName(nameWithPrefix, tsPosition); if (isStringField(configField)) { - javaFieldsWriter.write("FieldType.STRING"); + String custom = state.tsCustomLine.get(configField.getType()); + String[] tokens = custom.split(","); + String stringSize = tokens[3].trim(); + javaFieldsWriter.write(stringSize + ", FieldType.STRING"); } else if (configField.getElementSize() == 1) { javaFieldsWriter.write("FieldType.INT8"); } else if (configField.getElementSize() == 2) { 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 83bc7d5962..a5d8bd061c 100644 --- a/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java +++ b/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java @@ -115,7 +115,7 @@ public class ConfigFieldParserTest { JavaFieldsConsumer javaFieldsConsumer = new TestJavaFieldsConsumer(state); state.readBufferedReader(reader, Arrays.asList(javaFieldsConsumer)); - assertEquals("\tpublic static final Field VAR = Field.create(\"VAR\", 0, FieldType.STRING);\n" + + assertEquals("\tpublic static final Field VAR = Field.create(\"VAR\", 0, 120, FieldType.STRING);\n" + "\tpublic static final Field PERIODMS = Field.create(\"PERIODMS\", 120, FieldType.INT16);\n", javaFieldsConsumer.getJavaFieldsWriter());