more MLG
This commit is contained in:
parent
31fdf3eff1
commit
da3c1688e2
|
@ -1,12 +1,15 @@
|
||||||
package com.rusefi.can;
|
package com.rusefi.can;
|
||||||
|
|
||||||
import com.rusefi.can.reader.CANLineReader;
|
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.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
public class ByteRateOfChange {
|
public class ByteRateOfChange {
|
||||||
|
|
||||||
|
@ -113,5 +116,22 @@ public class ByteRateOfChange {
|
||||||
public HashMap<ByteId, ByteStatistics> getStatistics() {
|
public HashMap<ByteId, ByteStatistics> getStatistics() {
|
||||||
return statistics;
|
return statistics;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void createMegaLogViewer() {
|
||||||
|
Map<ByteId, BinaryLogEntry> entries = new HashMap<>();
|
||||||
|
|
||||||
|
for (ByteId key : statistics.keySet()) {
|
||||||
|
entries.put(key, BinaryLogEntry.createFloatLogEntry(key.sid + "_" + key.index, Integer.toBinaryString(key.sid)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Double> values = new HashMap<>();
|
||||||
|
AtomicReference<Long> time = new AtomicReference<>();
|
||||||
|
BinarySensorLog<BinaryLogEntry> 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ConvertTrcToMegaLogViewerWithDBC {
|
public class ConvertTrcToMegaLogViewerWithDBC {
|
||||||
|
|
||||||
public static void doJob(String dbcFileName, String inputFolderName, String outputFolder) throws IOException {
|
public static void doJob(String dbcFileName, String inputFolderName, String outputFolder) throws IOException {
|
||||||
DbcFile dbc = DbcFile.readFromFile(dbcFileName);
|
DbcFile dbc = DbcFile.readFromFile(dbcFileName);
|
||||||
|
|
||||||
|
@ -18,7 +19,7 @@ public class ConvertTrcToMegaLogViewerWithDBC {
|
||||||
FolderUtil.FileAction fileAction = (simpleFileName, fullFileName) -> {
|
FolderUtil.FileAction fileAction = (simpleFileName, fullFileName) -> {
|
||||||
List<CANPacket> packets = CANLineReader.getReader().readFile(fullFileName);
|
List<CANPacket> 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);
|
LoggingStrategy.writeLog(dbc, packets, outputFileName);
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,8 +6,6 @@ import com.rusefi.can.reader.dbc.DbcPacket;
|
||||||
import com.rusefi.sensor_logs.BinaryLogEntry;
|
import com.rusefi.sensor_logs.BinaryLogEntry;
|
||||||
import com.rusefi.sensor_logs.BinarySensorLog;
|
import com.rusefi.sensor_logs.BinarySensorLog;
|
||||||
|
|
||||||
import java.io.DataOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -15,6 +13,7 @@ import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
public class LoggingStrategy {
|
public class LoggingStrategy {
|
||||||
|
public static final String MLG = ".mlg";
|
||||||
public static boolean LOG_ONLY_TRANSLATED_FIELDS;
|
public static boolean LOG_ONLY_TRANSLATED_FIELDS;
|
||||||
|
|
||||||
public static List<BinaryLogEntry> getFieldNameEntries(DbcFile dbc, boolean logOnlyTranslatedFields) {
|
public static List<BinaryLogEntry> getFieldNameEntries(DbcFile dbc, boolean logOnlyTranslatedFields) {
|
||||||
|
@ -23,46 +22,16 @@ public class LoggingStrategy {
|
||||||
for (DbcField field : packet.getFields()) {
|
for (DbcField field : packet.getFields()) {
|
||||||
if (logOnlyTranslatedFields && !field.isNiceName())
|
if (logOnlyTranslatedFields && !field.isNiceName())
|
||||||
continue;
|
continue;
|
||||||
entries.add(new BinaryLogEntry() {
|
entries.add(BinaryLogEntry.createFloatLogEntry(field.getName(), field.getCategory()));
|
||||||
@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();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writeLog(DbcFile dbc, List<CANPacket> packets, String outputFileName) {
|
public static void writeLog(DbcFile dbc, List<CANPacket> packets, String outputFileName) {
|
||||||
Map<String, Double> values = new HashMap<>();
|
|
||||||
List<BinaryLogEntry> entries = dbc.getFieldNameEntries();
|
List<BinaryLogEntry> entries = dbc.getFieldNameEntries();
|
||||||
|
|
||||||
|
Map<String, Double> values = new HashMap<>();
|
||||||
AtomicReference<Long> time = new AtomicReference<>();
|
AtomicReference<Long> time = new AtomicReference<>();
|
||||||
BinarySensorLog<BinaryLogEntry> log = new BinarySensorLog<>(o -> {
|
BinarySensorLog<BinaryLogEntry> log = new BinarySensorLog<>(o -> {
|
||||||
Double value = values.get(o.getName());
|
Double value = values.get(o.getName());
|
||||||
|
|
|
@ -4,6 +4,40 @@ import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
public interface BinaryLogEntry {
|
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 getName();
|
||||||
|
|
||||||
String getCategory();
|
String getCategory();
|
||||||
|
|
Loading…
Reference in New Issue