From ba11705db06f429aab9dcef1503894c5ad33c746 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Fri, 22 Mar 2024 12:01:05 -0400 Subject: [PATCH] filtered uses DBC --- .../can/analysis/ByteRateOfChangeReports.java | 22 +++++++++++-------- .../com/rusefi/can/analysis/PerSidDump.java | 11 ++++++---- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/reader/src/main/java/com/rusefi/can/analysis/ByteRateOfChangeReports.java b/reader/src/main/java/com/rusefi/can/analysis/ByteRateOfChangeReports.java index e32ebf0..da63711 100644 --- a/reader/src/main/java/com/rusefi/can/analysis/ByteRateOfChangeReports.java +++ b/reader/src/main/java/com/rusefi/can/analysis/ByteRateOfChangeReports.java @@ -15,13 +15,7 @@ public class ByteRateOfChangeReports { /** * sweet baby O(n^2) */ - public static void compareEachReportAgainstAllOthers(String reportDestinationFolder, List reports, CanMetaDataContext context) throws IOException { - - DbcFile dbc = null; - if (Launcher.dbcFileName != null) { - dbc = DbcFile.readFromFile(Launcher.dbcFileName); - } - + public static void compareEachReportAgainstAllOthers(DbcFile dbc, String reportDestinationFolder, List reports, CanMetaDataContext context) throws IOException { for (int i = 0; i < reports.size(); i++) { for (int j = i + 1; j < reports.size(); j++) compareTwoReports(dbc, reportDestinationFolder, reports.get(i), reports.get(j), context); @@ -113,6 +107,8 @@ public class ByteRateOfChangeReports { public static void scanInputFolder(String inputFolderName, String fileNameSuffix) throws IOException { String reportDestinationFolder = createOutputFolder(inputFolderName); + DbcFile dbc = getDbc(); + CanMetaDataContext context = CanMetaDataContext.read(inputFolderName); List reports = new ArrayList<>(); @@ -123,7 +119,7 @@ public class ByteRateOfChangeReports { List logFileContent = CANLineReader.getReader().readFile(fullInputFileName); - PerSidDump.handle(reportDestinationFolder, simpleFileName, logFileContent); + PerSidDump.handle(dbc, reportDestinationFolder, simpleFileName, logFileContent); // at the moment we overwrite counter detection report after we process each file CounterScanner.scanForCounters(reportDestinationFolder, simpleFileName, logFileContent); ChecksumScanner.scanForChecksums(reportDestinationFolder, simpleFileName, logFileContent); @@ -140,7 +136,15 @@ public class ByteRateOfChangeReports { System.out.println("Processing " + reports.size() + " report(s)"); - compareEachReportAgainstAllOthers(reportDestinationFolder, reports, context); + compareEachReportAgainstAllOthers(dbc, reportDestinationFolder, reports, context); + } + + private static DbcFile getDbc() throws IOException { + DbcFile dbc = null; + if (Launcher.dbcFileName != null) { + dbc = DbcFile.readFromFile(Launcher.dbcFileName); + } + return dbc; } static class ByteVariationDifference { diff --git a/reader/src/main/java/com/rusefi/can/analysis/PerSidDump.java b/reader/src/main/java/com/rusefi/can/analysis/PerSidDump.java index 3bc15f0..688be07 100644 --- a/reader/src/main/java/com/rusefi/can/analysis/PerSidDump.java +++ b/reader/src/main/java/com/rusefi/can/analysis/PerSidDump.java @@ -2,6 +2,8 @@ package com.rusefi.can.analysis; import com.rusefi.can.CANPacket; import com.rusefi.can.DualSid; +import com.rusefi.can.reader.dbc.DbcFile; +import com.rusefi.can.reader.dbc.DbcPacket; import com.rusefi.can.writer.SteveWriter; import java.io.File; @@ -16,7 +18,7 @@ import java.util.TreeSet; * Write a separate file for each unique packet ID */ public class PerSidDump { - public static void handle(String reportDestinationFolder, String simpleFileName, List packets) throws IOException { + public static void handle(DbcFile dbc, String reportDestinationFolder, String simpleFileName, List packets) throws IOException { String filteredDestinationFolder = reportDestinationFolder + File.separator + "filtered"; new File(filteredDestinationFolder).mkdirs(); @@ -50,8 +52,10 @@ public class PerSidDump { PrintWriter middle = new PrintWriter(new FileOutputStream(middleOutputFileName)); String decAndHex = middlePacket.getId() + "_" + Integer.toHexString(middlePacket.getId()); - String payloadVariableName = "payload" + decAndHex; - String variableName = "CAN_" + decAndHex; + DbcPacket packet = dbc.packets.get(middlePacket.getId()); + String payloadVariableName = "payload" + (packet == null ? decAndHex : packet.getName()); + String variableName = packet == null ? "CAN_" + decAndHex : packet.getName(); + String methodName = "on" + (packet == null ? ("Can" + decAndHex) : packet.getName()); StringBuilder payloadLine = middlePacket.asLua(payloadVariableName); @@ -62,7 +66,6 @@ public class PerSidDump { middle.println(); middle.println(counterVariable + " = 0"); - String methodName = "onMotor" + decAndHex; middle.println("function " + methodName + "(bus, id, dlc, data)"); middle.println("\t" + counterVariable + " = (" + counterVariable + " + 1) % 256"); middle.println("\t" + payloadVariableName + "[x] = " + counterVariable);