using packet names from dbc

This commit is contained in:
rusefillc 2024-03-02 20:44:35 -05:00
parent 8f7dd55311
commit f6b5408bab
1 changed files with 20 additions and 4 deletions

View File

@ -3,6 +3,8 @@ package com.rusefi.can.analysis;
import com.rusefi.can.CANPacket; import com.rusefi.can.CANPacket;
import com.rusefi.can.Launcher; import com.rusefi.can.Launcher;
import com.rusefi.can.reader.CANLineReader; import com.rusefi.can.reader.CANLineReader;
import com.rusefi.can.reader.dbc.DbcFile;
import com.rusefi.can.reader.dbc.DbcPacket;
import com.rusefi.util.FolderUtil; import com.rusefi.util.FolderUtil;
import java.io.*; import java.io.*;
@ -12,14 +14,20 @@ public class ByteRateOfChangeReports {
/** /**
* sweet baby O(n^2) * sweet baby O(n^2)
*/ */
public static void compareEachReportAgainstAllOthers(String reportDestinationFolder, List<ByteRateOfChange.TraceReport> reports, CanMetaDataContext context) throws FileNotFoundException { public static void compareEachReportAgainstAllOthers(String reportDestinationFolder, List<ByteRateOfChange.TraceReport> reports, CanMetaDataContext context) throws IOException {
DbcFile dbc = null;
if (Launcher.dbcFileName != null) {
dbc = DbcFile.readFromFile(Launcher.dbcFileName);
}
for (int i = 0; i < reports.size(); i++) { for (int i = 0; i < reports.size(); i++) {
for (int j = i + 1; j < reports.size(); j++) for (int j = i + 1; j < reports.size(); j++)
compareTwoReports(reportDestinationFolder, reports.get(i), reports.get(j), context); compareTwoReports(dbc, reportDestinationFolder, reports.get(i), reports.get(j), context);
} }
} }
private static void compareTwoReports(String reportDestinationFolder, ByteRateOfChange.TraceReport traceReport1, ByteRateOfChange.TraceReport traceReport2, CanMetaDataContext context) throws FileNotFoundException { private static void compareTwoReports(DbcFile dbc, String reportDestinationFolder, ByteRateOfChange.TraceReport traceReport1, ByteRateOfChange.TraceReport traceReport2, CanMetaDataContext context) throws FileNotFoundException {
Set<ByteRateOfChange.ByteId> allKeys = new TreeSet<>(); Set<ByteRateOfChange.ByteId> allKeys = new TreeSet<>();
allKeys.addAll(traceReport1.getStatistics().keySet()); allKeys.addAll(traceReport1.getStatistics().keySet());
allKeys.addAll(traceReport2.getStatistics().keySet()); allKeys.addAll(traceReport2.getStatistics().keySet());
@ -42,6 +50,14 @@ public class ByteRateOfChangeReports {
// skipping byte with a known counter // skipping byte with a known counter
continue; continue;
} }
String prefix = "";
if (dbc != null) {
DbcPacket packet = dbc.packets.get(id.sid);
if (packet != null) {
prefix = packet.getName() + " ";
}
}
if (id.getByteIndex() == 7 && context.withChecksum.contains(id.sid)) { if (id.getByteIndex() == 7 && context.withChecksum.contains(id.sid)) {
// skipping known checksum byte // skipping known checksum byte
continue; continue;
@ -51,7 +67,7 @@ public class ByteRateOfChangeReports {
ByteRateOfChange.ByteStatistics s2 = traceReport2.getStatistics().computeIfAbsent(id, ByteRateOfChange.ByteStatistics::new); ByteRateOfChange.ByteStatistics s2 = traceReport2.getStatistics().computeIfAbsent(id, ByteRateOfChange.ByteStatistics::new);
if (s1.getUniqueValuesCount() != s2.getUniqueValuesCount()) { if (s1.getUniqueValuesCount() != s2.getUniqueValuesCount()) {
String msg = id + ": count=" + s1.getUniqueValuesCount() + " vs " + s2.getUniqueValuesCount(); String msg = prefix + id + ": count=" + s1.getUniqueValuesCount() + " vs " + s2.getUniqueValuesCount();
int deltaCount = Math.abs(s1.getUniqueValuesCount() - s2.getUniqueValuesCount()); int deltaCount = Math.abs(s1.getUniqueValuesCount() - s2.getUniqueValuesCount());
differences.add(new ByteVariationDifference(deltaCount, msg)); differences.add(new ByteVariationDifference(deltaCount, msg));
report.println(msg + " delta=" + deltaCount + " / transitions=" + s1.totalTransitions + " vs " + s2.totalTransitions); report.println(msg + " delta=" + deltaCount + " / transitions=" + s1.totalTransitions + " vs " + s2.totalTransitions);