From 212ed28612f911f4a0dd1b541b7d0a4a94d529ad Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sat, 1 Jul 2023 18:39:10 -0700 Subject: [PATCH] flexibility for ptr vs. ref live data --- .../main/java/com/rusefi/ldmp/LiveDataProcessor.java | 10 +++++++--- .../java/com/rusefi/output/GetOutputValueConsumer.java | 3 ++- .../java/com/rusefi/output/SdCardFieldsContent.java | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/LiveDataProcessor.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/LiveDataProcessor.java index 3ecbc33be4..7cfd5ec1a7 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/LiveDataProcessor.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/LiveDataProcessor.java @@ -79,7 +79,7 @@ private void end() throws IOException { } interface EntryHandler { - void onEntry(String name, String javaName, String folder, String prepend, boolean withCDefines, String[] outputNames, String constexpr, String conditional) throws IOException; + void onEntry(String name, String javaName, String folder, String prepend, boolean withCDefines, String[] outputNames, String constexpr, String conditional, Boolean isPtr) throws IOException; } private int handleYaml(Map data) throws IOException { @@ -93,7 +93,7 @@ private int handleYaml(Map data) throws IOException { EntryHandler handler = new EntryHandler() { @Override - public void onEntry(String name, String javaName, String folder, String prepend, boolean withCDefines, String[] outputNames, String constexpr, String conditional) throws IOException { + public void onEntry(String name, String javaName, String folder, String prepend, boolean withCDefines, String[] outputNames, String constexpr, String conditional, Boolean isPtr) throws IOException { // TODO: use outputNames int startingPosition = outputsSections.sensorTsPosition; @@ -122,10 +122,12 @@ public void onEntry(String name, String javaName, String folder, String prepend, if (constexpr != null) { sdCardFieldsConsumer.home = constexpr; + sdCardFieldsConsumer.isPtr = isPtr; state.addDestination((state1, structure) -> sdCardFieldsConsumer.handleEndStruct(state1, structure)); outputValueConsumer.currentSectionPrefix = constexpr; outputValueConsumer.conditional = conditional; + outputValueConsumer.isPtr = isPtr; state.addDestination((state1, structure) -> outputValueConsumer.handleEndStruct(state1, structure)); } @@ -157,8 +159,10 @@ public void handleEndStruct(ReaderState readerState, ConfigStructure structure) String constexpr = (String) entry.get("constexpr"); String conditional = (String) entry.get("conditional_compilation"); Boolean withCDefines = (Boolean) entry.get("withCDefines"); + Boolean isPtr = (Boolean) entry.get("isPtr"); // Defaults to false if not specified withCDefines = withCDefines != null && withCDefines; + isPtr = isPtr != null && isPtr; Object outputNames = entry.get("output_name"); @@ -174,7 +178,7 @@ public void handleEndStruct(ReaderState readerState, ConfigStructure structure) nameList.toArray(outputNamesArr); } - handler.onEntry(name, java, folder, prepend, withCDefines, outputNamesArr, constexpr, conditional); + handler.onEntry(name, java, folder, prepend, withCDefines, outputNamesArr, constexpr, conditional, isPtr); String enumName = "LDS_" + name; String type = name + "_s"; // convention diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/GetOutputValueConsumer.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/GetOutputValueConsumer.java index 3f1a6f96af..4e89f47c2d 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/GetOutputValueConsumer.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/GetOutputValueConsumer.java @@ -30,6 +30,7 @@ public class GetOutputValueConsumer implements ConfigurationConsumer { public String currentSectionPrefix = "engine->outputChannels"; public String conditional; + public Boolean isPtr = false; public GetOutputValueConsumer(String fileName) { this.fileName = fileName; @@ -55,7 +56,7 @@ private String processOutput(ConfigField cf, String prefix) { } String userName = prefix + cf.getName(); - String javaName = currentSectionPrefix + "." + prefix; + String javaName = currentSectionPrefix + (isPtr ? "->" : ".") + prefix; getterPairs.add(new VariableRecord(userName, javaName + cf.getName(), null, conditional)); diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/output/SdCardFieldsContent.java b/java_tools/configuration_definition/src/main/java/com/rusefi/output/SdCardFieldsContent.java index 150496c1f2..2892ac487f 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/output/SdCardFieldsContent.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/output/SdCardFieldsContent.java @@ -13,6 +13,7 @@ public class SdCardFieldsContent { private final StringBuilder body = new StringBuilder(); public String home = "engine->outputChannels"; + public Boolean isPtr = false; public void handleEndStruct(ReaderState state, ConfigStructure structure) throws IOException { if (state.isStackEmpty()) { @@ -49,7 +50,7 @@ private String getLine(ConfigField configField, String prefix, String name) { categoryStr = ", " + categoryStr; } - return "\t{" + home + "." + name + + return "\t{" + home + (isPtr ? "->" : ".") + name + ", " + DataLogConsumer.getHumanGaugeName(prefix, configField) + ", " +