From 6f40414346871e0363ff0fcb9edcb592b7fcb640 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Sun, 26 Jul 2015 22:59:17 -0400 Subject: [PATCH] auto-sync --- .../models/src/com/rusefi/AverageAngles.java | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/java_console/models/src/com/rusefi/AverageAngles.java b/java_console/models/src/com/rusefi/AverageAngles.java index 94502c6cbd..36ba3acf84 100644 --- a/java_console/models/src/com/rusefi/AverageAngles.java +++ b/java_console/models/src/com/rusefi/AverageAngles.java @@ -18,7 +18,7 @@ public class AverageAngles { private static final int MAX_RPM_CHANGE = 20; private int rpmAtPrevChart; - Map> angleData = new TreeMap<>(); + Map> angleData = new TreeMap<>(); public AverageAngles() { clear(); @@ -50,19 +50,20 @@ public class AverageAngles { String v[] = line.split("\\|"); System.out.println("rpm " + rpm + ": " + v.length + " values"); - List current = new ArrayList<>(); + List current = new ArrayList<>(); for (int i = 0; i < v.length / 2; i++) { - Double value = Double.parseDouble(v[2 * i]); - if (Double.isNaN(value)) { + Double angle = Double.parseDouble(v[2 * i]); + int signal = (int)Double.parseDouble(v[2 * i + 1]); + if (Double.isNaN(angle)) { System.out.println("Skipping due to NaN"); return; } - current.add(value); + current.add(new AngleEvent(angle)); } for (int i = 0; i < current.size(); i++) { - List list = angleData.get(i); + List list = angleData.get(i); if (list == null) { list = new ArrayList<>(); angleData.put(i, list); @@ -80,12 +81,12 @@ public class AverageAngles { double prev = 0; - for (Map.Entry> e : angleData.entrySet()) { + for (Map.Entry> e : angleData.entrySet()) { int k = e.getKey(); - List v = e.getValue(); + List v = e.getValue(); double values[] = new double[v.size()]; for (int i = 0; i < v.size(); i++) - values[i] = v.get(i); + values[i] = v.get(i).getAngle(); Mean m = new Mean(); double mean = m.evaluate(values); @@ -108,4 +109,16 @@ public class AverageAngles { stream.append((delta + v) + "\r\n"); } } + + private static class AngleEvent { + private final double angle; + + public AngleEvent(double angle) { + this.angle = angle; + } + + public double getAngle() { + return angle; + } + } }