Console logging is a mess #3930

This commit is contained in:
rusefillc 2022-02-12 16:16:11 -05:00
parent 1f97452359
commit f731a26391
22 changed files with 51 additions and 108 deletions

View File

@ -1,5 +1,6 @@
package com.rusefi;
import com.devexperts.logging.Logging;
import com.opensr5.Logger;
import com.rusefi.config.generated.Fields;
@ -14,6 +15,7 @@ import java.io.IOException;
* 2/15/2015
*/
public class AverageAnglesUtil {
private final static Logging log = Logging.getLogging(AverageAnglesUtil.class);
public static final String KEY = Fields.PROTOCOL_ANALOG_CHART;
public static final String ANALOG_CHART = KEY + ",";
@ -26,10 +28,10 @@ public class AverageAnglesUtil {
System.exit(-1);
}
String fileName = args[0];
runUtil(fileName, Logger.CONSOLE);
runUtil(fileName);
}
public static String runUtil(String fileName, Logger logger) throws IOException {
public static String runUtil(String fileName) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line;
@ -47,7 +49,7 @@ public class AverageAnglesUtil {
if (f.length > 3 && f[2].equals("rpm")) {
currentRpm = Integer.parseInt(f[3]);
logger.info("New rpm " + currentRpm);
log.info("New rpm " + currentRpm);
}
continue;
}
@ -60,7 +62,7 @@ public class AverageAnglesUtil {
line = p[0];
aa.add(currentRpm, line);
logger.info("Got " + line);
log.info("Got " + line);
}
String report = aa.getReport();

View File

@ -106,7 +106,7 @@ public class TestingUtils {
public static EngineChart nextChart(CommandQueue commandQueue) {
long start = System.currentTimeMillis();
EngineChart chart = EngineChartParser.unpackToMap(getNextWaveChart(commandQueue), FileLog.LOGGER);
EngineChart chart = EngineChartParser.unpackToMap(getNextWaveChart(commandQueue));
FileLog.MAIN.logLine("AUTOTEST nextChart() in " + (System.currentTimeMillis() - start));
return chart;
}

View File

@ -1,6 +1,7 @@
package com.rusefi.binaryprotocol;
import com.opensr5.Logger;
import com.rusefi.FileLog;
import com.rusefi.Timeouts;
import com.rusefi.composite.CompositeEvent;
import com.rusefi.composite.CompositeParser;
@ -66,7 +67,7 @@ public class BinaryProtocolLogger {
@NotNull
public static String getFileName(String prefix, String fileType) {
return Logger.DIR + prefix + Logger.getDate() + fileType;
return Logger.DIR + prefix + FileLog.getDate() + fileType;
}
public void compositeLogic(BinaryProtocol binaryProtocol) {

View File

@ -1,47 +1,10 @@
package com.opensr5;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Andrey Belomutskiy, (c) 2013-2020
* 3/7/2015
*/
public interface Logger {
Logger CONSOLE = new Logger() {
@Override
public void trace(String msg) {
System.out.println(new Date() + " " + msg);
}
@Override
public void info(String msg) {
System.out.println(new Date() + " " + msg);
}
@Override
public void error(String msg) {
System.err.println(new Date() + " " + msg);
}
@Override
public boolean isTradeEnabled() {
return false;
}
};
String DIR = "logs/";
String DATE_PATTERN = "yyyy-MM-dd_HH_mm_ss_SSS";
String END_OF_TIMESTAND_TAG = "<EOT>: ";
static String getDate() {
return new SimpleDateFormat(DATE_PATTERN).format(new Date());
}
void trace(String msg);
void info(String msg);
void error(String msg);
boolean isTradeEnabled();
}

View File

@ -7,6 +7,8 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* what the hell is this anyway? todo: migrate to log4j2
@ -20,28 +22,9 @@ public enum FileLog {
public static final String LOG_INFO_TEXT = "Writing logs to '" + Logger.DIR + "'";
public static final String OS_VERSION = "os.version";
public static final String DATE_PATTERN = "yyyy-MM-dd_HH_mm_ss_SSS";
private static final String WIKI_URL = "https://github.com/rusefi/rusefi/wiki/rusEFI-logs-folder";
public static String currentLogName;
public static final Logger LOGGER = new Logger() {
@Override
public void trace(String msg) {
}
@Override
public boolean isTradeEnabled() {
return false;
}
@Override
public void info(String msg) {
MAIN.logLine(msg);
}
@Override
public void error(String msg) {
MAIN.logLine(msg);
}
};
@Nullable
private OutputStream fileLog; // null if not opened yet or already closed
@ -50,6 +33,10 @@ public enum FileLog {
FileLog() {
}
public static String getDate() {
return new SimpleDateFormat(DATE_PATTERN).format(new Date());
}
public void start() {
if (fileLog != null)
return;
@ -88,7 +75,7 @@ public enum FileLog {
}
private FileOutputStream openLog() throws FileNotFoundException {
String date = Logger.getDate();
String date = getDate();
createFolderIfNeeded();
String shortFileName = name() + "_rfi_report_" + date;
Logging.configureLogFile(Logger.DIR + shortFileName + ".log");
@ -108,7 +95,7 @@ public enum FileLog {
}
public synchronized void logLine(String fullLine) {
String withDate = Logger.getDate() + Logger.END_OF_TIMESTAND_TAG + fullLine;
String withDate = getDate() + Logger.END_OF_TIMESTAND_TAG + fullLine;
System.out.println(withDate);
if (suspendLogging)
return;

View File

@ -6,7 +6,6 @@ import com.rusefi.config.generated.Fields;
import com.rusefi.io.LinkDecoder;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.util.*;
import static com.devexperts.logging.Logging.getLogging;
@ -86,24 +85,26 @@ public class EngineState {
* @return null in case of error, line message if valid packed ine
* @see #packString(String)
*/
public static String unpackString(String message, Logger logger) {
/*
public static String unpackString(String message) {
String prefix = "line" + PACKING_DELIMITER;
/**
* If we get this tag we have probably connected to the wrong port
* todo: as of 2019 this logic maybe makes no sense any more since pure text protocol was reduce/removed?
*/
/*
if (message.contains(Fields.PROTOCOL_TEST_RESPONSE_TAG)) {
JOptionPane.showMessageDialog(null, "Are you sure you are not connected to TS port?");
return null;
}
if (!message.startsWith(prefix)) {
logger.info("EngineState: unexpected header: " + message + " while looking for " + prefix);
log.info("EngineState: unexpected header: " + message + " while looking for " + prefix);
return null;
}
message = message.substring(prefix.length());
int delimiterIndex = message.indexOf(PACKING_DELIMITER);
if (delimiterIndex == -1) {
logger.info("Delimiter not found in: " + message);
log.info("Delimiter not found in: " + message);
return null;
}
String lengthToken = message.substring(0, delimiterIndex);
@ -111,18 +112,18 @@ public class EngineState {
try {
expectedLen = Integer.parseInt(lengthToken);
} catch (NumberFormatException e) {
logger.info("invalid len: " + lengthToken);
log.info("invalid len: " + lengthToken);
return null;
}
String response = message.substring(delimiterIndex + 1);
if (response.length() != expectedLen) {
logger.info("message len does not match header: " + message);
log.info("message len does not match header: " + message);
response = null;
}
return response;
}
*/
/**
* @param response input string
* @param listener obviously

View File

@ -15,7 +15,7 @@ public class EngineChartParser {
/**
* This method unpacks a mixed-key message into a Map of messages by key
*/
public static EngineChart unpackToMap(String value, Logger logger) {
public static EngineChart unpackToMap(String value) {
if (value == null)
throw new NullPointerException("value");

View File

@ -1,6 +1,5 @@
package com.rusefi.waves.test;
import com.opensr5.Logger;
import com.rusefi.config.generated.Fields;
import com.rusefi.waves.EngineChart;
import com.rusefi.waves.EngineReport;
@ -20,10 +19,10 @@ import static junit.framework.Assert.*;
public class EngineChartParserTest {
@Test
public void testMultiParser() {
EngineChart result = EngineChartParser.unpackToMap("", Logger.CONSOLE);
EngineChart result = EngineChartParser.unpackToMap("");
assertTrue(result.getMap().isEmpty());
result = EngineChartParser.unpackToMap("wave_chart,c1!u_154!0!c1!d_155!11!c1!u_156!24!spa5!u!36!c1!d_157!39!c1!u_158!49!c1!d_159!61!c1!u_160!74!c1!d_161!86!c1!u_162!99!c1!d_163!111!c1!u_164!124!", Logger.CONSOLE);
result = EngineChartParser.unpackToMap("wave_chart,c1!u_154!0!c1!d_155!11!c1!u_156!24!spa5!u!36!c1!d_157!39!c1!u_158!49!c1!d_159!61!c1!u_160!74!c1!d_161!86!c1!u_162!99!c1!d_163!111!c1!u_164!124!");
assertEquals(3, result.getMap().size());
String crankReport = result.get("c1").toString();
@ -41,7 +40,7 @@ public class EngineChartParserTest {
@Test
public void testDutyCycle() {
EngineChart result = EngineChartParser.unpackToMap("r!1199!64224414!crank2!u!64225149_3!Injector 2!u!64225149!Spark 1!u!64225249!Injector 2!d!64225303!Spark 1!d!64225649!crank2!d!64226105_4!crank!d!64226980_5!crank2!u!64227730_6!Injector 1!u!64227730!Spark 1!u!64227830!Injector 1!d!64227884!Spark 1!d!64228230!crank2!d!64228678_7!crank2!u!64230212_8!Injector 3!u!64230212!Spark 1!u!64230312!Injector 3!d!64230366!Spark 1!d!64230712!crank2!d!64231156_9!crank!u!64231982_0!crank2!u!64232672_1!Injector 4!u!64232672!Spark 1!u!64232772!Injector 4!d!64232826!Spark 1!d!64233172!crank2!d!64233626_2!r!1200!64234412!crank2!u!64235150_3!Injector 2!u!64235150!Spark 1!u!64235250!Injector 2!d!64235304!Spark 1!d!64235650!crank2!d!64236106_4!crank!d!64236981_5!crank2!u!64237730_6!Injector 1!u!64237730!Spark 1!u!64237830!Injector 1!d!64237884!Spark 1!d!64238230!crank2!d!64238677_7!crank2!u!64240213_8!Injector 3!u!64240213!Spark 1!u!64240313!Injector 3!d!64240367!Spark 1!d!64240713!crank2!d!64241158_9!crank!u!64241982_0!crank2!u!64242674_1!Injector 4!u!64242674!Spark 1!u!64242774!Injector 4!d!64242828!Spark 1!d!64243174!crank2!d!64243625_2!r!1200!64244412!crank2!u!64245149_3!Injector 2!u!64245149!Spark 1!u!64245249!Injector 2!d!64245303!Spark 1!d!64245649!crank2!d!64246106_4!crank!d!64246980_5!crank2!u!64247728_6!Injector 1!u!64247728!Spark 1!u!64247828!Injector 1!d!64247882!Spark 1!d!64248228!crank2!d!64248679_7!crank2!u!64250212_8!Injector 3!u!64250212!Spark 1!u!64250312!Injector 3!d!64250366!Spark 1!d!64250712!crank2!d!64251158_9!crank!u!64251982_0!crank2!u!64252674_1!Injector 4!u!64252674!Spark 1!u!64252774!Injector 4!d!64252828!Spark 1!d!64253174!crank2!d!64253625_2!r!1200!64254412!crank2!u!64255150_3!Injector 2!u!64255150!Spark 1!u!64255250!Injector 2!d!64255304!Spark 1!d!64255650!crank2!d!64256106_4!crank!d!64256982_5!crank2!u!64257728_6!Injector 1!u!64257728!Spark 1!u!64257828!Injector 1!d!64257882!Spark 1!d!64258228!crank2!d!64258678_7!crank2!u!64260214_8!Injector 3!u!64260214!Spark 1!u!64260314!Injector 3!d!64260368!Spark 1!d!64260714!,", Logger.CONSOLE);
EngineChart result = EngineChartParser.unpackToMap("r!1199!64224414!crank2!u!64225149_3!Injector 2!u!64225149!Spark 1!u!64225249!Injector 2!d!64225303!Spark 1!d!64225649!crank2!d!64226105_4!crank!d!64226980_5!crank2!u!64227730_6!Injector 1!u!64227730!Spark 1!u!64227830!Injector 1!d!64227884!Spark 1!d!64228230!crank2!d!64228678_7!crank2!u!64230212_8!Injector 3!u!64230212!Spark 1!u!64230312!Injector 3!d!64230366!Spark 1!d!64230712!crank2!d!64231156_9!crank!u!64231982_0!crank2!u!64232672_1!Injector 4!u!64232672!Spark 1!u!64232772!Injector 4!d!64232826!Spark 1!d!64233172!crank2!d!64233626_2!r!1200!64234412!crank2!u!64235150_3!Injector 2!u!64235150!Spark 1!u!64235250!Injector 2!d!64235304!Spark 1!d!64235650!crank2!d!64236106_4!crank!d!64236981_5!crank2!u!64237730_6!Injector 1!u!64237730!Spark 1!u!64237830!Injector 1!d!64237884!Spark 1!d!64238230!crank2!d!64238677_7!crank2!u!64240213_8!Injector 3!u!64240213!Spark 1!u!64240313!Injector 3!d!64240367!Spark 1!d!64240713!crank2!d!64241158_9!crank!u!64241982_0!crank2!u!64242674_1!Injector 4!u!64242674!Spark 1!u!64242774!Injector 4!d!64242828!Spark 1!d!64243174!crank2!d!64243625_2!r!1200!64244412!crank2!u!64245149_3!Injector 2!u!64245149!Spark 1!u!64245249!Injector 2!d!64245303!Spark 1!d!64245649!crank2!d!64246106_4!crank!d!64246980_5!crank2!u!64247728_6!Injector 1!u!64247728!Spark 1!u!64247828!Injector 1!d!64247882!Spark 1!d!64248228!crank2!d!64248679_7!crank2!u!64250212_8!Injector 3!u!64250212!Spark 1!u!64250312!Injector 3!d!64250366!Spark 1!d!64250712!crank2!d!64251158_9!crank!u!64251982_0!crank2!u!64252674_1!Injector 4!u!64252674!Spark 1!u!64252774!Injector 4!d!64252828!Spark 1!d!64253174!crank2!d!64253625_2!r!1200!64254412!crank2!u!64255150_3!Injector 2!u!64255150!Spark 1!u!64255250!Injector 2!d!64255304!Spark 1!d!64255650!crank2!d!64256106_4!crank!d!64256982_5!crank2!u!64257728_6!Injector 1!u!64257728!Spark 1!u!64257828!Injector 1!d!64257882!Spark 1!d!64258228!crank2!d!64258678_7!crank2!u!64260214_8!Injector 3!u!64260214!Spark 1!u!64260314!Injector 3!d!64260368!Spark 1!d!64260714!,");
assertFalse(result.getMap().isEmpty());
StringBuilder revolutions = result.get(Fields.TOP_DEAD_CENTER_MESSAGE);

View File

@ -1,6 +1,5 @@
package com.rusefi;
import com.opensr5.Logger;
import com.rusefi.core.MessagesCentral;
import com.rusefi.core.Sensor;
import com.rusefi.core.SensorCentral;
@ -77,7 +76,7 @@ public class EcuStimulator {
// if (1 == 1)
// return;
String csvFileName = "table_" + inputs.getRpmStep() + "_" + inputs.getEngineLoadStep() + Logger.getDate() + ".csv";
String csvFileName = "table_" + inputs.getRpmStep() + "_" + inputs.getEngineLoadStep() + FileLog.getDate() + ".csv";
FileLog.MAIN.logLine("Wring to " + csvFileName);
final BufferedWriter csv;
@ -118,7 +117,7 @@ public class EcuStimulator {
throw new IllegalStateException(e);
}
TableGenerator.writeAsC(data, C_PREFIX, "map" + Logger.getDate() + ".c");
TableGenerator.writeAsC(data, C_PREFIX, "map" + FileLog.getDate() + ".c");
}
private void buildTable(ResultListener listener, Sensor dwellSensor) {

View File

@ -1,6 +1,5 @@
package com.rusefi;
import com.opensr5.Logger;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.config.generated.Fields;
import com.rusefi.tracing.Entry;
@ -33,7 +32,7 @@ public class PerformanceTraceHelper {
List<Entry> data = Entry.parseBuffer(packet);
int rpm = RpmModel.getInstance().getValue();
String fileName = Logger.getDate() + "_rpm_" + rpm + "_rusEFI_trace" + ".json";
String fileName = FileLog.getDate() + "_rpm_" + rpm + "_rusEFI_trace" + ".json";
JsonOutput.writeToStream(data, new FileOutputStream(fileName));

View File

@ -1,6 +1,5 @@
package com.rusefi;
import com.opensr5.Logger;
import com.rusefi.config.generated.Fields;
import com.rusefi.ui.RpmLabel;
import com.rusefi.ui.RpmModel;
@ -78,7 +77,7 @@ public class SensorSnifferPane {
@Override
public void actionPerformed(ActionEvent e) {
int rpm = RpmModel.getInstance().getValue();
String fileName = Logger.getDate() + "_rpm_" + rpm + "_sensor" + ".png";
String fileName = FileLog.getDate() + "_rpm_" + rpm + "_sensor" + ".png";
UiUtils.saveImageWithPrompt(fileName, upperPanel, canvas);
}

View File

@ -1,6 +1,5 @@
package com.rusefi.models;
import com.opensr5.Logger;
import com.rusefi.FileLog;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -27,7 +26,7 @@ public class XYData {
private double maxYValue;
private double minYValue;
String date = Logger.getDate();
String date = FileLog.getDate();
public XYData() {
clear();

View File

@ -55,7 +55,7 @@ public class BinarySensorLog implements SensorLog {
public void writeSensorLogLine() {
if (stream == null) {
FileLog.createFolderIfNeeded();
fileName = Logger.DIR + "rusEFI_gauges_" + Logger.getDate() + ".mlg";
fileName = Logger.DIR + "rusEFI_gauges_" + FileLog.getDate() + ".mlg";
try {
stream = new DataOutputStream(new FileOutputStream(fileName));

View File

@ -41,14 +41,14 @@ public class PlainTextSensorLog implements SensorLog {
private void startSensorLogFile() {
FileLog.createFolderIfNeeded();
String fileName = Logger.DIR + "rusEFI_gauges_" + Logger.getDate() + ".msl";
String fileName = Logger.DIR + "rusEFI_gauges_" + FileLog.getDate() + ".msl";
fileStartTime = System.currentTimeMillis();
try {
logFile = new FileWriter(fileName);
logFile.write("\"rusEFI console" + Launcher.CONSOLE_VERSION + " firmware " + Launcher.firmwareVersion.get() + "\"\r\n");
logFile.write("Captured " + Logger.getDate() + "\r\n");
logFile.write("Captured " + FileLog.getDate() + "\r\n");
int debugMode = -1;
BinaryProtocol bp = uiContext.getLinkManager().getCurrentStreamState();

View File

@ -1,6 +1,6 @@
package com.rusefi.ui;
import com.opensr5.Logger;
import com.rusefi.FileLog;
import com.rusefi.models.Range;
import com.rusefi.models.XYData;
import com.rusefi.ui.util.UiUtils;
@ -40,7 +40,7 @@ public class ChartHelper {
saveImageButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String fileName = Logger.getDate() + "_3d.png";
String fileName = FileLog.getDate() + "_3d.png";
UiUtils.saveImageWithPrompt(fileName, result, jsp);
}

View File

@ -258,7 +258,7 @@ public class FuelTunePane {
private DataOutputStream getTuneLogStream() {
if (dos == null) {
String fileName = Logger.DIR + "tune_" + Logger.getDate() + ".txt";
String fileName = Logger.DIR + "tune_" + FileLog.getDate() + ".txt";
try {
dos = new DataOutputStream(new FileOutputStream(fileName));
} catch (FileNotFoundException e) {

View File

@ -1,8 +1,6 @@
package com.rusefi.ui;
import com.opensr5.Logger;
import com.rusefi.FileLog;
import com.rusefi.PaneSettings;
import com.rusefi.core.Sensor;
import com.rusefi.ui.storage.Node;
import com.rusefi.ui.util.UiUtils;
@ -13,7 +11,6 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@ -221,7 +218,7 @@ public class GaugesPanel {
private JButton createSaveImageButton() {
JButton saveImageButton = UiUtils.createSaveImageButton();
saveImageButton.addActionListener(e -> {
String fileName = Logger.getDate() + "_gauges.png";
String fileName = FileLog.getDate() + "_gauges.png";
UiUtils.saveImageWithPrompt(fileName, content, gauges.panel);
});

View File

@ -1,6 +1,6 @@
package com.rusefi.ui;
import com.opensr5.Logger;
import com.rusefi.FileLog;
import com.rusefi.core.EngineState;
import com.rusefi.core.MessagesCentral;
import com.rusefi.io.CommandQueue;
@ -14,8 +14,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
public class MessagesView {
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(Logger.DATE_PATTERN);
private static final int MAX_SIZE = 50000;
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(FileLog.DATE_PATTERN);
private final Style bold;
private final Style italic;

View File

@ -1,7 +1,7 @@
package com.rusefi.ui;
import com.devexperts.logging.Logging;
import com.rusefi.AverageAnglesUtil;
import com.rusefi.FileLog;
import com.rusefi.autoupdate.AutoupdateUtil;
import com.rusefi.config.generated.Fields;
import com.rusefi.core.MessagesCentral;
@ -28,6 +28,8 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
*/
public class RecentCommands {
private final static Logging log = Logging.getLogging(RecentCommands.class);
private final static int NUMBER_OF_COMMANDS = 40;
private static final String KEY = "recent_commands";
private static final String DELIMETER = "|";
@ -293,7 +295,7 @@ public class RecentCommands {
String fileName = fc.getSelectedFile().getAbsolutePath();
String report;
try {
report = AverageAnglesUtil.runUtil(fileName, FileLog.LOGGER);
report = AverageAnglesUtil.runUtil(fileName);
} catch (IOException e) {
throw new IllegalStateException(e);
}

View File

@ -1,6 +1,5 @@
package com.rusefi.ui.engine;
import com.opensr5.Logger;
import com.rusefi.FileLog;
import com.rusefi.config.generated.Fields;
import com.rusefi.core.EngineState;
@ -191,7 +190,7 @@ public class EngineSnifferPanel {
}
public void displayChart(String value) {
EngineChart map = EngineChartParser.unpackToMap(value, FileLog.LOGGER);
EngineChart map = EngineChartParser.unpackToMap(value);
StringBuilder revolutions = map.get(Fields.TOP_DEAD_CENTER_MESSAGE);
@ -265,7 +264,7 @@ public class EngineSnifferPanel {
private void saveImage() {
int rpm = RpmModel.getInstance().getValue();
double maf = SensorCentral.getInstance().getValue(Sensor.MAF);
String fileName = Logger.getDate() + "rpm_" + rpm + "_maf_" + maf + ".png";
String fileName = FileLog.getDate() + "rpm_" + rpm + "_maf_" + maf + ".png";
UiUtils.saveImageWithPrompt(fileName, mainPanel, imagePanel);
}

View File

@ -20,8 +20,6 @@ import static com.rusefi.TestHelper.assertLatch;
import static org.junit.Assert.assertEquals;
public class TcpCommunicationIntegrationTest {
private static final Logger LOGGER = Logger.CONSOLE;
// todo: implement & test TCP connector restart!
@Test
public void testConnectionFailed() throws InterruptedException {

View File

@ -1,6 +1,5 @@
package com.rusefi.ui.engine.test;
import com.rusefi.FileLog;
import com.rusefi.config.generated.Fields;
import com.rusefi.ui.test.WavePanelSandbox;
import com.rusefi.waves.EngineChart;
@ -22,7 +21,7 @@ public class UpDownSandbox {
public UpDownSandbox() {
String report = "t1!u_9425!0!t2!u_9426!202!t2!d_9427!604!t2!u_9428!956!t2!d_9429!1382!t2!u_9430!1750!t2!d_9431!2204!t2!u_9432!2573!t2!d_9433!3032!t1!d_9434!3160!t2!u_9435!3427!t2!d_9436!3870!t2!u_9437!4251!t2!d_9438!4730!t2!u_9439!5101!t2!d_9440!5593!t2!u_9441!5972!t1!u_9442!6114!t2!d_9443!8007!t2!u_9444!8392!t2!d_9445!8712!t2!u_9446!9031!t2!d_9447!9397!t2!u_9448!9693!t2!d_9449!10077!t2!u_9450!10388!t2!d_9451!10768!t2!u_9452!11067!t2!d_9453!11478!t2!u_9454!11828!t2!d_9455!12218!t2!u_9456!12566!t2!d_9457!12998!t2!u_9458!13438!t2!d_9459!13836!t2!u_9460!14200!t2!d_9461!14655!t2!u_9462!15036!t2!d_9463!15445!t2!u_9464!15815!t2!d_9465!16283!t2!u_9466!16745!t2!d_9467!17099!t1!d_9468!17420!t2!u_9469!17482!t2!d_9470!17958!t2!u_9471!18336!t2!d_9472!18813!t2!u_9473!19194!t2!d_9474!19683!t2!u_9475!20069!t2!d_9476!20463!t1!u_9477!20626!t2!u_9478!22327!t2!d_9479!22775!t2!u_9480!23091!t1!d_9481!23274!t2!d_9482!23452!t2!u_9483!23738!t2!d_9484!24123!t2!u_9485!24424!t2!d_9486!24803!t2!u_9487!25101!t2!d_9488!25502!t1!u_9489!25642!t2!u_9490!25861!t2!d_9491!26230!t2!u_9492!26611!t2!d_9493!26997!t2!u_9494!27434!t2!d_9495!27818!t2!u_9496!28199!t1!d_9497!28486!t2!d_9498!28656!t2!u_9499!29043!t2!d_9500!29444!t2!u_9501!29834!t2!d_9502!30274!t2!u_9503!30646!t1!u_9504!31000!t2!d_9505!31096!t2!u_9506!31532!t2!d_9507!31951!t2!u_9508!32349!t2!d_9509!32809!t2!u_9510!33185!t2!d_9511!33683!t2!u_9512!34087!t1!d_9513!34091!t2!d_9514!36081!t2!u_9515!36401!t2!d_9516!36775!t2!u_9517!37086!t2!d_9518!37447!t2!u_9519!37749!t2!d_9520!38114!t2!u_9521!38419!t2!d_9522!38787!t2!u_9523!39085!t2!d_9524!39476!t2!u_9525!39836!t2!d_9526!40191!t2!u_9527!40517!t2!d_9528!40941!t2!u_9529!41289!t2!d_9530!41747!t2!u_9531!42152!t2!d_9532!42599!t2!u_9533!42956!t2!d_9534!43386!t2!u_9535!43750!t2!d_9536!44203!t2!u_9537!44572!t1!u_9538!44764!t2!d_9539!45040!t2!u_9540!45404!t2!d_9541!45875!t2!u_9542!46253!t2!d_9543!46746!t2!u_9544!47127!t2!d_9545!47602!t2!u_9546!47986!t1!d_9547!48321!t2!d_9548!48388!t2!u_9549!50288!t2!d_9550!50739!t1!u_9551!50785!t2!u_9552!51035!t2!d_9553!51418!t2!u_9554!51759!t2!d_9555!52090!t2!u_9556!52400!t2!d_9557!52769!t2!u_9558!53090!t2!d_9559!53464!t1!d_9560!53565!t2!u_9561!53773!t2!d_9562!54187!t2!u_9563!54529!t2!d_9564!54946!t2!u_9565!55284!t2!d_9566!55755!t1!u_9567!56041!t2!u_9568!56158!t2!d_9569!56599!t2!u_9570!56965!t2!d_9571!57377!t2!u_9572!57753!t2!d_9573!58201!t2!u_9574!58589!t2!d_9575!59025!t1!d_9576!59229!t2!u_9577!59388!t2!d_9578!59866!t2!u_9579!60244!t2!d_9580!60723!t2!u_9581!61085!t2!d_9582!61585!t2!u_9583!61980!t1!u_9584!62170!t2!d_9585!63992!t2!u_9586!64329!t2!d_9587!64694!t2!u_9588!64993!t2!d_9589!65376!t2!u_9590!65707!t2!d_9591!66055!t2!u_9592!66378!t2!d_9593!66745!t2!u_9594!67049!t2!d_9595!67452!t2!u_9596!67799!t2!d_9597!68190!t2!u_9598!68515!t2!d_9599!68967!t2!u_9600!69412!t2!d_9601!69803!t2!u_9602!70196!t2!d_9603!70629!t2!u_9604!70963!t2!d_9605!71415!t2!u_9606!71862!t2!d_9607!72252!t2!u_9608!72636!t2!d_9609!73068!t2!u_9610!73423!t1!d_9611!73453!t2!d_9612!73923!t2!u_9613!74303!t2!d_9614!74780!t2!u_9615!75160!t2!d_9616!75646!t2!u_9617!76090!t2!d_9618!76424!t1!u_9619!76624!t2!u_9620!78352!t2!d_9621!78744!t2!u_9622!79047!t1!d_9623!79265!t2!d_9624!79422!t2!u_9625!79752!t2!d_9626!80096!t2!u_9627!80393!t2!d_9628!80781!t2!u_9629!81089!t2!d_9630!81483!t1!u_9631!81634!t2!u_9632!81861!t2!d_9633!82216!t2!u_9634!82544!t2!d_9635!82988!t2!u_9636!83335!t2!d_9637!83814!t2!u_9638!84194!t1!d_9639!84534!t2!d_9640!84646!t2!u_9641!84990!t2!d_9642!85429!t2!u_9643!85801!t2!d_9644!86260!t2!u_9645!86621!t1!u_9646!87022!t2!d_9647!87080!t2!u_9648!87435!t2!d_9649!87935!t2!u_9650!88312!t2!d_9651!88789!t2!u_9652!89183!t2!d_9653!89663!t2!u_9654!90043!t1!d_9655!90125!t2!d_9656!92056!t2!u_9657!92381!t2!d_9658!92750!t2!u_9659!93053!t2!d_9660!93423!t2!u_9661!93715!t2!d_9662!94088!t2!u_9663!94426!t2!d_9664!94761!t2!u_9665!95090!t2!d_9666!95450!t2!u_9667!95759!t2!d_9668!96166!t2!u_9669!96526!t2!d_9670!96918!t2!u_9671!97282!t2!d_9672!97721!t2!u_9673!98092!t2!d_9674!98574!t2!u_9675!98930!t2!d_9676!99358!t2!u_9677!99736!t2!d_9678!100183!t2!u_9679!100565!t1!u_9680!100720!t2!d_9681!101010!t2!u_9682!101374!t2!d_9683!101852!t2!u_9684!102239!t2!d_9685!102717!t2!u_9686!103089!t2!d_9687!103578!t2!u_9688!104089!t1!d_9689!104293!t2!d_9690!104365!t2!u_9691!106238!t2!d_9692!106687!t1!u_9693!106763!t2!u_9694!106988!t2!d_9695!107362!t2!u_9696!107719!t2!d_9697!108029!t2!u_9698!108360!t2!d_9699!108704!t2!u_9700!108995!t2!d_9701!109394!t1!d_9702!109509!t2!u_9703!109755!t2!d_9704!110112!t2!u_9705!110422!t2!d_9706!110864!t2!u_9707!111221!t2!d_9708!111657!t1!u_9709!111915!t2!u_9710!112088!t2!d_9711!112486!t2!u_9712!112858!t2!d_9713!113332!t2!u_9714!113762!t2!d_9715!114199!t2!u_9716!114762!t2!d_9717!115104!t1!d_9718!115284!t2!u_9719!115508!t2!d_9720!116034!t2!u_9721!116458!t2!d_9722!116998!t2!u_9723!117426!t2!d_9724!118003!t2!u_9725!118428!t1!u_9726!118667!t2!d_9727!120774!t2!u_9728!121118!t2!d_9729!121561!t2!u_9730!122095!t2!d_9731!122321!t2!u_9732!122761!t2!d_9733!123078!";
EngineChart r = EngineChartParser.unpackToMap(report, FileLog.LOGGER);
EngineChart r = EngineChartParser.unpackToMap(report);
EngineReport wr = new EngineReport(r.get(Fields.PROTOCOL_CRANK1).toString());