diff --git a/src/main/java/com/rusefi/can/analysis/ByteRateOfChange.java b/src/main/java/com/rusefi/can/analysis/ByteRateOfChange.java index 7a2a008..5b19b10 100644 --- a/src/main/java/com/rusefi/can/analysis/ByteRateOfChange.java +++ b/src/main/java/com/rusefi/can/analysis/ByteRateOfChange.java @@ -59,7 +59,7 @@ public class ByteRateOfChange { for (int byteIndex = 0; byteIndex < packet.getData().length; byteIndex++) { ByteId key = new ByteId(packet.getId(), byteIndex); ByteStatistics stats = traceFileMetaIndex.statistics.computeIfAbsent(key, byteId -> new ByteStatistics(key)); - stats.uniqueValues.add((int) packet.getData()[byteIndex]); + stats.registerValue(packet.getData()[byteIndex]); } } return traceFileMetaIndex; @@ -78,9 +78,12 @@ public class ByteRateOfChange { } public static class ByteStatistics { - HashSet uniqueValues = new HashSet<>(); + private final HashSet uniqueValues = new HashSet<>(); + int totalTransitions; private final ByteId key; + private int previousValue; + public ByteStatistics(ByteId key) { this.key = key; } @@ -100,6 +103,16 @@ public class ByteRateOfChange { ", key=" + key + '}'; } + + public void registerValue(int value) { + if (!uniqueValues.isEmpty()) { + if (previousValue != value) + totalTransitions++; + } + + previousValue = value; + uniqueValues.add(value); + } } diff --git a/src/main/java/com/rusefi/can/analysis/ByteRateOfChangeReports.java b/src/main/java/com/rusefi/can/analysis/ByteRateOfChangeReports.java index 8191cc6..44c5022 100644 --- a/src/main/java/com/rusefi/can/analysis/ByteRateOfChangeReports.java +++ b/src/main/java/com/rusefi/can/analysis/ByteRateOfChangeReports.java @@ -53,7 +53,7 @@ public class ByteRateOfChangeReports { String msg = id + ": " + s1.getUniqueValuesCount() + " vs " + s2.getUniqueValuesCount(); int deltaCount = Math.abs(s1.getUniqueValuesCount() - s2.getUniqueValuesCount()); differences.add(new ByteVariationDifference(deltaCount, msg)); - report.println(msg + " delta=" + deltaCount); + report.println(msg + " delta=" + deltaCount + " / " + s1.totalTransitions + " vs " + s2.totalTransitions); } }