// ----------------------------------------------------------------------------- // Aggregator Moving Average // ----------------------------------------------------------------------------- #pragma once #include #include "AggregatorBase.h" class AggregatorMovingAverage : public AggregatorBase { public: AggregatorMovingAverage(unsigned char size) { _size = size; for (unsigned char i=0; ipush_back(0); } } virtual void add(double value) { _sum = _sum + value - _data->at(_pointer); _data->at(_pointer) = value; _pointer = (_pointer + 1) % _size; } virtual void reset() { // Nothing to do } virtual double result() { return _sum; } protected: unsigned char _size = 0; unsigned char _pointer = 0; double _sum = 0; };