The moving average purpose is to filter some data that comes from a source that may be unprecise. See more information about Moving Average here: http://en.wikipedia.org/wiki/Moving_average

Revision:
0:226202c7ea37
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MovingAverage.cpp	Sun Apr 14 01:02:39 2013 +0000
@@ -0,0 +1,51 @@
+/*****************************************************/
+/*           _                              _        */
+/*     /\   | |                            (_)       */
+/*    /  \  | | ___  __ _ _ __ _____      ___ _ __   */
+/*   / /\ \ | |/ _ \/ _` | '__/ _ \ \ /\ / / | '_ \  */
+/*  / ____ \| |  __/ (_| | | | (_) \ V  V /| | | | | */
+/* /_/    \_\_|\___|\__, |_|  \___/ \_/\_/ |_|_| |_| */
+/*                   __/ |                           */
+/*                  |___/                            */
+/*                          Created on April 2013    */
+/*****************************************************/
+
+
+/*
+
+for(int i = 0; i < FILTRE_RANGE; i++) {
+        FiltreMobile[i] = cmd[0];
+    }
+    
+    Temp = Temp - FiltreMobile[Temp_next]/FILTRE_RANGE + cmd[0]/FILTRE_RANGE;
+    FiltreMobile[Temp_next++] = cmd[0];
+
+    Temp_next = Temp_next&0x07;
+}*/
+#include "MovingAverage.h"
+
+template<class T>
+MovingAverage<T>::MovingAverage(unsigned char maxLength, T defaultValue){
+    MaxLength = maxLength;
+    
+    AverageFilter = new T[MaxLength];
+    
+    for(int i = 0; i<MaxLength;i++)
+    {
+        AverageFilter[i] = defaultValue;
+    }
+    Average = defaultValue;
+}
+
+template<class T>
+T MovingAverage<T>::GetAverage(){
+    return Average;
+}
+template<class T>
+void MovingAverage<T>::Insert(T value){
+    
+    Average = Average - AverageFilter[NextElement]/MaxLength + value/MaxLength;
+    FiltreMobile[NextElement++] = value;
+
+    NextElement = NextElement&MaxLength;
+}
\ No newline at end of file