diff --git a/java_console/inifile/src/main/java/com/opensr5/ini/IniFileModel.java b/java_console/inifile/src/main/java/com/opensr5/ini/IniFileModel.java index 281c0e4632..ca65b5a476 100644 --- a/java_console/inifile/src/main/java/com/opensr5/ini/IniFileModel.java +++ b/java_console/inifile/src/main/java/com/opensr5/ini/IniFileModel.java @@ -198,6 +198,7 @@ public class IniFileModel { private void handleZBins(LinkedList list) { list.removeFirst(); String zBins = list.removeFirst(); + addField(zBins); if (currentXBins == null || currentYBins == null) throw new IllegalStateException("X or Y missing for " + zBins); xBinsByZBins.put(zBins, currentXBins); @@ -236,7 +237,6 @@ public class IniFileModel { private void handleTable(LinkedList list) { list.removeFirst(); String tableName = list.removeFirst(); - addField(tableName); } private void handleFieldDefinition(LinkedList list, RawIniFile.Line line) { diff --git a/java_console/inifile/src/test/java/com/opensr5/ini/test/IniFileReaderTest.java b/java_console/inifile/src/test/java/com/opensr5/ini/test/IniFileReaderTest.java index 40266d634d..7299dfb11c 100644 --- a/java_console/inifile/src/test/java/com/opensr5/ini/test/IniFileReaderTest.java +++ b/java_console/inifile/src/test/java/com/opensr5/ini/test/IniFileReaderTest.java @@ -146,6 +146,9 @@ public class IniFileReaderTest { IniFileModel model = new IniFileModel().readIniFile(lines); assertEquals(3, model.allIniFields.size()); assertEquals(3, model.fieldsInUiOrder.size()); + assertTrue(model.fieldsInUiOrder.containsKey("tpsTpsAccelToRpmBins")); + assertFalse(model.fieldsInUiOrder.containsKey("tpsTpsAccelTbl")); + assertTrue(model.fieldsInUiOrder.containsKey("tpsTpsAccelTable")); } @Test diff --git a/java_tools/tune-tools/src/main/java/com/rusefi/tools/tune/HoHo.java b/java_tools/tune-tools/src/main/java/com/rusefi/tools/tune/HoHo.java new file mode 100644 index 0000000000..95993b7bb2 --- /dev/null +++ b/java_tools/tune-tools/src/main/java/com/rusefi/tools/tune/HoHo.java @@ -0,0 +1,7 @@ +package com.rusefi.tools.tune; + +public interface HoHo { + String getCsourceMethod(String reference); + + String getCinvokeMethod(); +} diff --git a/java_tools/tune-tools/src/main/java/com/rusefi/tools/tune/TableData.java b/java_tools/tune-tools/src/main/java/com/rusefi/tools/tune/TableData.java new file mode 100644 index 0000000000..57573d487b --- /dev/null +++ b/java_tools/tune-tools/src/main/java/com/rusefi/tools/tune/TableData.java @@ -0,0 +1,58 @@ +package com.rusefi.tools.tune; + +import com.opensr5.ini.IniFileModel; +import com.opensr5.ini.field.ArrayIniField; +import org.jetbrains.annotations.NotNull; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.Arrays; + +public class TableData { + @NotNull + public static float[][] readTable(String msqFileName, String tableName, IniFileModel model) throws IOException { + ArrayIniField field = (ArrayIniField) model.allIniFields.get(tableName); + + if (field.getRows() != field.getCols()) + throw new UnsupportedOperationException("Not square table not supported yet"); + // todo: replace with loadCount & rpmCount + int size = field.getRows(); + + float[][] table = new float[size][]; + for (int i = 0; i < size; i++) { + table[i] = new float[size]; + } + + BufferedReader reader = TS2C.readAndScroll(msqFileName, tableName); + readTable(table, reader, size); + return table; + } + + private static void readTable(float[][] table, BufferedReader r, int size) throws IOException { + int index = 0; + + while (index < size) { + String line = r.readLine(); + if (line == null) + throw new IOException("End of file?"); + line = line.trim(); + if (line.isEmpty()) + continue; + + String[] values = line.split("\\s"); + if (values.length != size) + throw new IllegalStateException("Expected " + size + " but got " + Arrays.toString(values) + ". Unexpected line: " + line); + + for (int i = 0; i < size; i++) { + String str = values[i]; + try { + table[index][i] = Float.parseFloat(str); + } catch (NumberFormatException e) { + throw new IllegalStateException("While reading " + str, e); + } + } + System.out.println("Got line " + index + ": " + Arrays.toString(table[index])); + index++; + } + } +}