Files
IronOS/workspace/TS100/Core/Inc/expMovingAverage.h
2019-10-08 21:50:50 +11:00

25 lines
416 B
C++

/*
* expMovingAverage.h
*
* Created on: 8 Oct 2019
* Author: ralim
*/
#ifndef INC_EXPMOVINGAVERAGE_H_
#define INC_EXPMOVINGAVERAGE_H_
// max size = 127
template<class T, uint8_t weighting>
struct expMovingAverage {
int32_t sum;
void update(T const val) {
sum = ((val * weighting) + (sum * (256 - weighting))) / 256;
}
T average() const {
return sum;
}
};
#endif /* INC_EXPMOVINGAVERAGE_H_ */