X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=blobdiff_plain;f=tos%2Fplatforms%2Ftmirws%2Fsensors%2FAverageU16C.nc;h=0885614105b6d72e75b148e2b7986cd1f467f430;hp=85daac5c3b970c667e39078a4a75b86454c032bc;hb=31c5577e7d049bcb6dfc5e3d0a2c8bfd324ef25c;hpb=f54520e9a604b832eb3498102975f50f1494d1c3 diff --git a/tos/platforms/tmirws/sensors/AverageU16C.nc b/tos/platforms/tmirws/sensors/AverageU16C.nc index 85daac5c..08856141 100644 --- a/tos/platforms/tmirws/sensors/AverageU16C.nc +++ b/tos/platforms/tmirws/sensors/AverageU16C.nc @@ -35,11 +35,11 @@ #include "AeroVane.h" -generic module AverageU16(uint16_t samples) { - provides interface Average; +generic module AverageU16() { + provides interface Average; } 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; } }