MovingAverage template

Dependents:   trms_helloworld

Fork of MoyenneMobile by Alexandre Proulx

Revision:
1:b310d132db09
Parent:
0:226202c7ea37
Child:
4:0f6a72e290ad
--- a/MovingAverage.h	Sun Apr 14 01:02:39 2013 +0000
+++ b/MovingAverage.h	Mon Jul 07 12:27:57 2014 +0000
@@ -5,7 +5,7 @@
 class MovingAverage
 {
 private:
-    T AverageFilter[];
+    T* Element;
     T Average;
     
     unsigned char NextElement;
@@ -13,7 +13,35 @@
 public:
     MovingAverage(unsigned char maxLength, T defaultValue);
     T GetAverage();
+
     void Insert(T value);
 };
 
+template<class T>
+MovingAverage<T>::MovingAverage(unsigned char maxLength, T defaultValue){
+    MaxLength = maxLength;
+    
+    Element = new T[MaxLength];
+    
+    for(int i = 0; i<MaxLength;i++)
+    {
+        Element[i] = defaultValue;
+    }
+    Average = defaultValue;
+}
+
+template<class T>
+T MovingAverage<T>::GetAverage(){
+    return Average;
+}
+
+
+template<class T>
+void MovingAverage<T>::Insert(T value){
+    Average = value/MaxLength + Average - Element[++NextElement]/MaxLength;
+    Element[NextElement] = value;
+    if(NextElement>=(MaxLength-1))   
+        NextElement=0;
+    
+}
 #endif
\ No newline at end of file