This commit is contained in:
rusefi 2018-10-07 14:01:34 -04:00
parent 1fc9a3cbe2
commit fb38645fbc
3 changed files with 20 additions and 0 deletions

View File

@ -15,6 +15,12 @@ public class CyclicBuffer implements DataBuffer {
values = new double[maxSize]; values = new double[maxSize];
} }
@Override
public void clear() {
size = pointer = 0;
}
@Override
public void add(double value) { public void add(double value) {
if (size < values.length) if (size < values.length)
size++; size++;

View File

@ -1,8 +1,15 @@
package com.rusefi; package com.rusefi;
public interface DataBuffer { public interface DataBuffer {
void add(double value);
double[] getValues(); double[] getValues();
/**
* Resets the buffer back to initial empty state
*/
void clear();
static double sum(double[] values) { static double sum(double[] values) {
double result = 0; double result = 0;
for (double value : values) for (double value : values)

View File

@ -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 * This data structure holds only one value for each millisecond timestamp but that should be totally fine
* for our purposes * for our purposes
* *
* @see ClosedLoopControlQualityMetric
* @see EtbTestSequence * @see EtbTestSequence
*/ */
public class TimeBasedBuffer implements DataBuffer { public class TimeBasedBuffer implements DataBuffer {
@ -23,10 +24,16 @@ public class TimeBasedBuffer implements DataBuffer {
values.headMap(now - duration).clear(); values.headMap(now - duration).clear();
} }
@Override
public synchronized void clear() {
values.clear();
}
protected long currentTimeMillis() { protected long currentTimeMillis() {
return System.currentTimeMillis(); return System.currentTimeMillis();
} }
@Override
public synchronized void add(double value) { public synchronized void add(double value) {
values.put(currentTimeMillis(), value); values.put(currentTimeMillis(), value);
} }