// Arduino Moving Average Library
// https://github.com/JChristensen/movingAvg
// Copyright (C) 2018 by Jack Christensen and licensed under
// GNU GPL v3.0, https://www.gnu.org/licenses/gpl.html

#ifndef MOVINGAVG_H_INCLUDED
#define MOVINGAVG_H_INCLUDED

class movingAvg
{
    public:
        movingAvg(int interval)
            : m_interval{interval}, m_nbrReadings{0}, m_sum{0}, m_next{0} {}
        void begin();
        int reading(int newReading);
        int getAvg();
        int getAvg(int nPoints);
        int getCount() {return m_nbrReadings;}
        void reset();
        int* getReadings() {return m_readings;}

    private:
        int m_interval;     // number of data points for the moving average
        int m_nbrReadings;  // number of readings
        long m_sum;         // sum of the m_readings array
        int m_next;         // index to the next reading
        int* m_readings;    // pointer to the dynamically allocated interval array
};
#endif
