From da6ef4d19d2163edc3d321cb6dec5fa7e062d1aa Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 12 Nov 2022 13:39:32 -0500 Subject: [PATCH] One SID per file --- .../rusefi/can/analysis/ByteRateOfChange.java | 6 +++++- .../com/rusefi/can/analysis/PerSidDump.java | 18 +++++++++++++++++- .../com/rusefi/can/writer/SteveWriter.java | 3 +++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/rusefi/can/analysis/ByteRateOfChange.java b/src/main/java/com/rusefi/can/analysis/ByteRateOfChange.java index f99519e..81cb003 100644 --- a/src/main/java/com/rusefi/can/analysis/ByteRateOfChange.java +++ b/src/main/java/com/rusefi/can/analysis/ByteRateOfChange.java @@ -53,7 +53,11 @@ public class ByteRateOfChange { } public static String dualSid(int sid) { - return String.format("%d/0x%x", sid, sid); + return dualSid(sid, "/"); + } + + public static String dualSid(int sid, String separator) { + return String.format("%d%s0x%x", sid, separator, sid); } public static class ByteStatistics { diff --git a/src/main/java/com/rusefi/can/analysis/PerSidDump.java b/src/main/java/com/rusefi/can/analysis/PerSidDump.java index aea1556..79c2277 100644 --- a/src/main/java/com/rusefi/can/analysis/PerSidDump.java +++ b/src/main/java/com/rusefi/can/analysis/PerSidDump.java @@ -1,12 +1,19 @@ package com.rusefi.can.analysis; import com.rusefi.can.CANPacket; +import com.rusefi.can.writer.SteveWriter; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintWriter; import java.util.List; import java.util.TreeSet; +import static com.rusefi.can.analysis.ByteRateOfChange.dualSid; + public class PerSidDump { - public static void handle(List packets, String simpleFileName) { + public static void handle(List packets, String simpleFileName) throws IOException { TreeSet sids = new TreeSet<>(); // todo: one day I will let streams into my heart for (CANPacket packet : packets) @@ -14,10 +21,19 @@ public class PerSidDump { // O(n*M) is not so bad for (int sid : sids) { + + PrintWriter pw = new PrintWriter(new FileOutputStream(simpleFileName + "_filtered_" + dualSid(sid, "_") + ".txt")); + for (CANPacket packet : packets) { if (packet.getId() != sid) continue; + + // no reason to use SteveWriter just need any human-readable writer here + SteveWriter.append(pw, packet); + + } + pw.close(); } } diff --git a/src/main/java/com/rusefi/can/writer/SteveWriter.java b/src/main/java/com/rusefi/can/writer/SteveWriter.java index a7b13ce..92bec17 100644 --- a/src/main/java/com/rusefi/can/writer/SteveWriter.java +++ b/src/main/java/com/rusefi/can/writer/SteveWriter.java @@ -6,6 +6,9 @@ import java.io.FileWriter; import java.io.IOException; import java.util.List; +/** + * This seems to be about https://github.com/brent-stone/CAN_Reverse_Engineering + */ public class SteveWriter implements CANTextWriter { private final String fileName;