]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/platforms/tmirws/sensors/AveragePolarP.nc
Redo Average interface.
[tinyos-2.x.git] / tos / platforms / tmirws / sensors / AveragePolarP.nc
index cf49de690e72c20ceff8e07689914c3b462c644c..4031078d052b77012a551429ac16393326b5b50e 100644 (file)
 generic module AveragePolarC(uint16_t samples) {
   provides interface Average<aerovector_t>;
   uses {
-    interface Average<int16_t> as AverageAngle;
+    interface Average<uint16_t> as AverageAngle;
     interface Average<uint16_t> as AverageSpeed;
   }
 }
 implementation {
   int m_count;
-  aerovector_t vector;
 
   command void Average.reset()
   {
@@ -54,29 +53,24 @@ implementation {
     AverageSpeed.init();
   }
 
-  event void AverageAngle.average(uint16_t angle)
+  command uint16_t Average.submit(aerovector_t vector)
   {
-    vector.dir = angle;
-    if (++m_count == 2)
-      signal Average.average(vector);
+    call AverageAngle.submit(vector.dir);
+    call AverageSpeed.submit(vector.speed);
   }
 
-  event void AverageSpeed.average(uint16_t speed)
+  command aerovector_t Average.average()
   {
-    vector.speed = speed;
-    if (++m_count == 2)
-      signal Average.average(vector);
-  }
+    aerovector_t vector;
 
-  command void Average.submit(aerovector_t vector)
-  {
-    call AverageAngle.submit(vector.dir);
-    call AverageSpeed.submit(vector.speed);
+    vector.dir = call AverageAngle.average();
+    vector.speed = call AverageSpeed.average();
+    init();
+    return vector;
   }
 
-  command void Average.null()
+  command uint16_t Average.count()
   {
-    call AverageAngle.submit(vector.dir);
-    call AverageSpeed.submit(vector.speed);
+    return call AverageAngle.count();
   }
 }