From 18044cdc64c3104c3222e0e4a8ef95c3112acbf6 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sun, 7 Oct 2018 14:01:34 -0400 Subject: [PATCH] progress --- java_console/models/src/com/rusefi/CyclicBuffer.java | 6 ++++++ java_console/models/src/com/rusefi/DataBuffer.java | 7 +++++++ java_console/models/src/com/rusefi/TimeBasedBuffer.java | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/java_console/models/src/com/rusefi/CyclicBuffer.java b/java_console/models/src/com/rusefi/CyclicBuffer.java index 7141d2fb15..e36600ab16 100644 --- a/java_console/models/src/com/rusefi/CyclicBuffer.java +++ b/java_console/models/src/com/rusefi/CyclicBuffer.java @@ -15,6 +15,12 @@ public class CyclicBuffer implements DataBuffer { values = new double[maxSize]; } + @Override + public void clear() { + size = pointer = 0; + } + + @Override public void add(double value) { if (size < values.length) size++; diff --git a/java_console/models/src/com/rusefi/DataBuffer.java b/java_console/models/src/com/rusefi/DataBuffer.java index 9b0e74a68e..b140ba91c7 100644 --- a/java_console/models/src/com/rusefi/DataBuffer.java +++ b/java_console/models/src/com/rusefi/DataBuffer.java @@ -1,8 +1,15 @@ package com.rusefi; public interface DataBuffer { + void add(double value); + double[] getValues(); + /** + * Resets the buffer back to initial empty state + */ + void clear(); + static double sum(double[] values) { double result = 0; for (double value : values) diff --git a/java_console/models/src/com/rusefi/TimeBasedBuffer.java b/java_console/models/src/com/rusefi/TimeBasedBuffer.java index 2ebccbab42..983dee341f 100644 --- a/java_console/models/src/com/rusefi/TimeBasedBuffer.java +++ b/java_console/models/src/com/rusefi/TimeBasedBuffer.java @@ -8,6 +8,7 @@ import java.util.TreeMap; * This data structure holds only one value for each millisecond timestamp but that should be totally fine * for our purposes * + * @see ClosedLoopControlQualityMetric * @see EtbTestSequence */ public class TimeBasedBuffer implements DataBuffer { @@ -23,10 +24,16 @@ public class TimeBasedBuffer implements DataBuffer { values.headMap(now - duration).clear(); } + @Override + public synchronized void clear() { + values.clear(); + } + protected long currentTimeMillis() { return System.currentTimeMillis(); } + @Override public synchronized void add(double value) { values.put(currentTimeMillis(), value); }