4RunningAverageFilter<memory>::RunningAverageFilter() {
10RunningAverageFilter<memory>::RunningAverageFilter(float gain) {
15template<size_t memory>
16void RunningAverageFilter<memory>::SetGain(float gain) {
20template<size_t memory>
21float RunningAverageFilter<memory>::Filter(float value) {
24 float gainInverse = (1.0f - gain);
26 if (currentAmount < memory) {
27 values[currentAmount++] = value;
29 for (uint8_t i = 0; i < memory - 1; i++) {
30 values[i] = values[i + 1];
33 values[memory - 1] = value;
36 for (uint8_t i = 0; i < currentAmount; i++) {
40 if (currentAmount > 0) {
41 avg = sum / currentAmount;
44 return (gain * value) + (gainInverse * avg);