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

View File

@ -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++;

View File

@ -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)

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
* 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);
}