From da3c1688e2d333f9ee7a39a0386665a7304cbe7a Mon Sep 17 00:00:00 2001 From: rusefillc Date: Thu, 10 Nov 2022 23:38:46 -0500 Subject: [PATCH] more MLG --- .../java/com/rusefi/can/ByteRateOfChange.java | 20 ++++++++++ .../can/ConvertTrcToMegaLogViewerWithDBC.java | 3 +- .../java/com/rusefi/can/LoggingStrategy.java | 37 ++----------------- .../rusefi/sensor_logs/BinaryLogEntry.java | 34 +++++++++++++++++ 4 files changed, 59 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/rusefi/can/ByteRateOfChange.java b/src/main/java/com/rusefi/can/ByteRateOfChange.java index a974e14..3bdbb66 100644 --- a/src/main/java/com/rusefi/can/ByteRateOfChange.java +++ b/src/main/java/com/rusefi/can/ByteRateOfChange.java @@ -1,12 +1,15 @@ package com.rusefi.can; import com.rusefi.can.reader.CANLineReader; +import com.rusefi.sensor_logs.BinaryLogEntry; +import com.rusefi.sensor_logs.BinarySensorLog; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; public class ByteRateOfChange { @@ -113,5 +116,22 @@ public class ByteRateOfChange { public HashMap getStatistics() { return statistics; } + + public void createMegaLogViewer() { + Map entries = new HashMap<>(); + + for (ByteId key : statistics.keySet()) { + entries.put(key, BinaryLogEntry.createFloatLogEntry(key.sid + "_" + key.index, Integer.toBinaryString(key.sid))); + } + + Map values = new HashMap<>(); + AtomicReference time = new AtomicReference<>(); + BinarySensorLog log = new BinarySensorLog<>(o -> { + Double value = values.get(o.getName()); + if (value == null) + return 0.0; + return value; + }, entries.values(), time::get, "haha" + LoggingStrategy.MLG); + } } } diff --git a/src/main/java/com/rusefi/can/ConvertTrcToMegaLogViewerWithDBC.java b/src/main/java/com/rusefi/can/ConvertTrcToMegaLogViewerWithDBC.java index 3efd099..9334f6b 100644 --- a/src/main/java/com/rusefi/can/ConvertTrcToMegaLogViewerWithDBC.java +++ b/src/main/java/com/rusefi/can/ConvertTrcToMegaLogViewerWithDBC.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.util.List; public class ConvertTrcToMegaLogViewerWithDBC { + public static void doJob(String dbcFileName, String inputFolderName, String outputFolder) throws IOException { DbcFile dbc = DbcFile.readFromFile(dbcFileName); @@ -18,7 +19,7 @@ public class ConvertTrcToMegaLogViewerWithDBC { FolderUtil.FileAction fileAction = (simpleFileName, fullFileName) -> { List packets = CANLineReader.getReader().readFile(fullFileName); - String outputFileName = outputFolder + File.separator + simpleFileName + ".mlg"; + String outputFileName = outputFolder + File.separator + simpleFileName + LoggingStrategy.MLG; LoggingStrategy.writeLog(dbc, packets, outputFileName); }; diff --git a/src/main/java/com/rusefi/can/LoggingStrategy.java b/src/main/java/com/rusefi/can/LoggingStrategy.java index 41c4c93..bb78b97 100644 --- a/src/main/java/com/rusefi/can/LoggingStrategy.java +++ b/src/main/java/com/rusefi/can/LoggingStrategy.java @@ -6,8 +6,6 @@ import com.rusefi.can.reader.dbc.DbcPacket; import com.rusefi.sensor_logs.BinaryLogEntry; import com.rusefi.sensor_logs.BinarySensorLog; -import java.io.DataOutputStream; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -15,6 +13,7 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicReference; public class LoggingStrategy { + public static final String MLG = ".mlg"; public static boolean LOG_ONLY_TRANSLATED_FIELDS; public static List getFieldNameEntries(DbcFile dbc, boolean logOnlyTranslatedFields) { @@ -23,46 +22,16 @@ public class LoggingStrategy { for (DbcField field : packet.getFields()) { if (logOnlyTranslatedFields && !field.isNiceName()) continue; - entries.add(new BinaryLogEntry() { - @Override - public String getName() { - return field.getName(); - } - - @Override - public String getCategory() { - return field.getCategory(); - } - - @Override - public String getUnit() { - return "x"; - } - - @Override - public int getByteSize() { - return 4; - } - - @Override - public void writeToLog(DataOutputStream dos, double value) throws IOException { - dos.writeFloat((float) value); - } - - @Override - public String toString() { - return getName(); - } - }); + entries.add(BinaryLogEntry.createFloatLogEntry(field.getName(), field.getCategory())); } } return entries; } public static void writeLog(DbcFile dbc, List packets, String outputFileName) { - Map values = new HashMap<>(); List entries = dbc.getFieldNameEntries(); + Map values = new HashMap<>(); AtomicReference time = new AtomicReference<>(); BinarySensorLog log = new BinarySensorLog<>(o -> { Double value = values.get(o.getName()); diff --git a/src/main/java/com/rusefi/sensor_logs/BinaryLogEntry.java b/src/main/java/com/rusefi/sensor_logs/BinaryLogEntry.java index e769197..72f1b4c 100644 --- a/src/main/java/com/rusefi/sensor_logs/BinaryLogEntry.java +++ b/src/main/java/com/rusefi/sensor_logs/BinaryLogEntry.java @@ -4,6 +4,40 @@ import java.io.DataOutputStream; import java.io.IOException; public interface BinaryLogEntry { + static BinaryLogEntry createFloatLogEntry(final String name, final String category) { + return new BinaryLogEntry() { + @Override + public String getName() { + return name; + } + + @Override + public String getCategory() { + return category; + } + + @Override + public String getUnit() { + return "x"; + } + + @Override + public int getByteSize() { + return 4; + } + + @Override + public void writeToLog(DataOutputStream dos, double value) throws IOException { + dos.writeFloat((float) value); + } + + @Override + public String toString() { + return getName(); + } + }; + } + String getName(); String getCategory();