refactoring

This commit is contained in:
rusefillc 2022-04-17 13:50:50 -04:00
parent b445c70853
commit 5ddbd5ef2f
4 changed files with 33 additions and 31 deletions

View File

@ -218,6 +218,11 @@ public class ConfigDefinition {
*/ */
if (tsOutputsDestination != null) { if (tsOutputsDestination != null) {
/**
* we have one JVM instance produce output section based on model fragments, and then
* we have '-readfile OUTPUTS_SECTION' in one of .sh files in order to template rusefi.input
* Same with '-readfile DATALOG_SECTION'
*/
state.destinations.add(new OutputsSectionConsumer(tsOutputsDestination + File.separator + "generated/output_channels.ini", state)); state.destinations.add(new OutputsSectionConsumer(tsOutputsDestination + File.separator + "generated/output_channels.ini", state));
state.destinations.add(new DataLogConsumer(tsOutputsDestination + File.separator + "generated/data_logs.ini")); state.destinations.add(new DataLogConsumer(tsOutputsDestination + File.separator + "generated/data_logs.ini"));
state.destinations.add(new GaugeConsumer(tsOutputsDestination + File.separator + "generated/gauges.ini", state)); state.destinations.add(new GaugeConsumer(tsOutputsDestination + File.separator + "generated/gauges.ini", state));

View File

@ -11,7 +11,7 @@ public class OutputsSectionConsumer implements ConfigurationConsumer {
private final String tsOutputsSectionFileName; private final String tsOutputsSectionFileName;
private final TsOutput tsOutput; private final TsOutput tsOutput;
private final ReaderState state; private final ReaderState state;
private final CharArrayWriter tsWriter = new CharArrayWriter(); private final StringBuilder tsWriter = new StringBuilder();
public OutputsSectionConsumer(String tsOutputsSectionFileName, ReaderState state) { public OutputsSectionConsumer(String tsOutputsSectionFileName, ReaderState state) {
this.tsOutputsSectionFileName = tsOutputsSectionFileName; this.tsOutputsSectionFileName = tsOutputsSectionFileName;
@ -19,8 +19,8 @@ public class OutputsSectionConsumer implements ConfigurationConsumer {
this.state = state; this.state = state;
} }
public CharArrayWriter getTsWriter() { public String getContent() {
return tsWriter; return tsWriter.toString();
} }
@Override @Override
@ -32,7 +32,7 @@ public class OutputsSectionConsumer implements ConfigurationConsumer {
if (tsOutputsSectionFileName != null) { if (tsOutputsSectionFileName != null) {
FileWriter fos = new FileWriter(tsOutputsSectionFileName); FileWriter fos = new FileWriter(tsOutputsSectionFileName);
fos.write(tsWriter.toCharArray()); fos.write(tsWriter.toString());
fos.close(); fos.close();
} }
} }

View File

@ -6,7 +6,6 @@ import com.rusefi.ReaderState;
import com.rusefi.TypesHelper; import com.rusefi.TypesHelper;
import java.io.IOException; import java.io.IOException;
import java.io.Writer;
import static com.rusefi.ToolUtil.EOL; import static com.rusefi.ToolUtil.EOL;
@ -28,15 +27,15 @@ public class TsOutput {
return settingContextHelp; return settingContextHelp;
} }
private int writeTunerStudio(FieldIterator it, String prefix, Writer tsHeader, int tsPosition) throws IOException { private int writeTunerStudio(FieldIterator it, String prefix, Appendable tsHeader, int tsPosition) throws IOException {
ConfigField configField = it.cf; ConfigField configField = it.cf;
ConfigField next = it.next; ConfigField next = it.next;
int bitIndex = it.bitState.get(); int bitIndex = it.bitState.get();
String nameWithPrefix = prefix + configField.getName(); String nameWithPrefix = prefix + configField.getName();
if (configField.isDirective() && configField.getComment() != null) { if (configField.isDirective() && configField.getComment() != null) {
tsHeader.write(configField.getComment()); tsHeader.append(configField.getComment());
tsHeader.write(EOL); tsHeader.append(EOL);
return tsPosition; return tsPosition;
} }
@ -52,13 +51,13 @@ public class TsOutput {
} }
if (configField.isBit()) { if (configField.isBit()) {
tsHeader.write(nameWithPrefix + " = bits, U32,"); tsHeader.append(nameWithPrefix + " = bits, U32,");
tsHeader.write(" " + tsPosition + ", ["); tsHeader.append(" " + tsPosition + ", [");
tsHeader.write(bitIndex + ":" + bitIndex); tsHeader.append(bitIndex + ":" + bitIndex);
tsHeader.write("]"); tsHeader.append("]");
if (isConstantsSection) if (isConstantsSection)
tsHeader.write(", \"" + configField.getFalseName() + "\", \"" + configField.getTrueName() + "\""); tsHeader.append(", \"" + configField.getFalseName() + "\", \"" + configField.getTrueName() + "\"");
tsHeader.write(EOL); tsHeader.append(EOL);
tsPosition += configField.getSize(next); tsPosition += configField.getSize(next);
return tsPosition; return tsPosition;
@ -71,46 +70,46 @@ public class TsOutput {
} }
bits = bits.replaceAll("@OFFSET@", "" + tsPosition); bits = bits.replaceAll("@OFFSET@", "" + tsPosition);
tsHeader.write(nameWithPrefix + " = " + bits); tsHeader.append(nameWithPrefix + " = " + bits);
if (!configField.getName().equals(next.getName())) if (!configField.getName().equals(next.getName()))
tsPosition += configField.getState().tsCustomSize.get(configField.getType()); tsPosition += configField.getState().tsCustomSize.get(configField.getType());
} else if (configField.getTsInfo() == null) { } else if (configField.getTsInfo() == null) {
throw new IllegalArgumentException("Need TS info for " + configField.getName() + " at " + prefix); throw new IllegalArgumentException("Need TS info for " + configField.getName() + " at " + prefix);
} else if (configField.getArraySizes().length == 0) { } else if (configField.getArraySizes().length == 0) {
tsHeader.write(nameWithPrefix + " = scalar, "); tsHeader.append(nameWithPrefix + " = scalar, ");
tsHeader.write(TypesHelper.convertToTs(configField.getType()) + ","); tsHeader.append(TypesHelper.convertToTs(configField.getType()) + ",");
tsHeader.write(" " + tsPosition + ","); tsHeader.append(" " + tsPosition + ",");
tsHeader.write(" " + handleTsInfo(configField.getTsInfo(), 1)); tsHeader.append(" " + handleTsInfo(configField.getTsInfo(), 1));
if (!configField.getName().equals(next.getName())) if (!configField.getName().equals(next.getName()))
tsPosition += configField.getSize(next); tsPosition += configField.getSize(next);
} else if (configField.getSize(next) == 0) { } else if (configField.getSize(next) == 0) {
// write nothing for empty array // write nothing for empty array
// TS does not like those // TS does not like those
} else { } else {
tsHeader.write(nameWithPrefix + " = array, "); tsHeader.append(nameWithPrefix + " = array, ");
tsHeader.write(TypesHelper.convertToTs(configField.getType()) + ","); tsHeader.append(TypesHelper.convertToTs(configField.getType()) + ",");
tsHeader.write(" " + tsPosition + ","); tsHeader.append(" " + tsPosition + ",");
tsHeader.write(" ["); tsHeader.append(" [");
boolean first = true; boolean first = true;
for (int size : configField.getArraySizes()) { for (int size : configField.getArraySizes()) {
if (first) { if (first) {
first = false; first = false;
} else { } else {
tsHeader.write("x"); tsHeader.append("x");
} }
tsHeader.write(Integer.toString(size)); tsHeader.append(Integer.toString(size));
} }
tsHeader.write("], " + handleTsInfo(configField.getTsInfo(), 1)); tsHeader.append("], " + handleTsInfo(configField.getTsInfo(), 1));
if (!configField.getName().equals(next.getName())) if (!configField.getName().equals(next.getName()))
tsPosition += configField.getSize(next); tsPosition += configField.getSize(next);
} }
tsHeader.write(EOL); tsHeader.append(EOL);
return tsPosition; return tsPosition;
} }
protected int writeTunerStudio(ConfigStructure configStructure, String prefix, Writer tsHeader, int tsPosition) throws IOException { protected int writeTunerStudio(ConfigStructure configStructure, String prefix, Appendable tsHeader, int tsPosition) throws IOException {
FieldIterator iterator = new FieldIterator(configStructure.tsFields); FieldIterator iterator = new FieldIterator(configStructure.tsFields);
for (int i = 0; i < configStructure.tsFields.size(); i++) { for (int i = 0; i < configStructure.tsFields.size(); i++) {
iterator.start(i); iterator.start(i);

View File

@ -6,8 +6,6 @@ import com.rusefi.output.*;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@ -60,7 +58,7 @@ public class OutputsTest {
"unusedBit_4_29 = bits, U32, 5, [29:29]\n" + "unusedBit_4_29 = bits, U32, 5, [29:29]\n" +
"unusedBit_4_30 = bits, U32, 5, [30:30]\n" + "unusedBit_4_30 = bits, U32, 5, [30:30]\n" +
"unusedBit_4_31 = bits, U32, 5, [31:31]\n" + "unusedBit_4_31 = bits, U32, 5, [31:31]\n" +
"alignmentFill_at_9 = array, U08, 9, [3], \"units\", 1, 0\n", new String(tsProjectConsumer.getTsWriter().toCharArray())); "alignmentFill_at_9 = array, U08, 9, [3], \"units\", 1, 0\n", new String(tsProjectConsumer.getContent()));
} }