]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/platforms/tmirws/sensors/AverageU16C.nc
Redo Average interface.
[tinyos-2.x.git] / tos / platforms / tmirws / sensors / AverageU16C.nc
index 85daac5c3b970c667e39078a4a75b86454c032bc..0885614105b6d72e75b148e2b7986cd1f467f430 100644 (file)
  
 #include "AeroVane.h"
 
-generic module AverageU16(uint16_t samples) {
-  provides interface Average<aerovector_t>;
+generic module AverageU16() {
+  provides interface Average<uint16_t>;
 }
 implementation {
-  uint8_t m_count;
+  uint16_t m_count;
   uint16_t m_value;
 
   inline void init()
@@ -53,27 +53,25 @@ implementation {
     init();
   }
 
-  task void signalAverage()
+  command Average.submit(uint16_t value)
   {
-    uint16_t value;
-
-    value = (m_value + (m_count / 2)) / m_count;
-    init();
-
-    /* Inform the consumer of the vector */
-    signal Average.average(vector);
+    m_count++;
+    m_value += value;
   }
 
-  command Average.submit(uint16_t value)
+  command uint16_t Average.average()
   {
-    m_value += value;
-    if (++m_count == samples)
-      post signalAverage();
+    uint16_t value = 0;
+
+    if (m_count) {
+      value = (m_value + (m_count / 2)) / m_count;
+      init();
+    }
+    return value;
   }
 
-  command Average.null()
+  command uint16_t Average.count()
   {
-    if (++m_count == samples)
-      post signalAverage();
+    return m_count;
   }
 }