BeRTOS
mean.h
00001 #warning revise me!
00002 
00003 
00014 #define DECLARE_SMEAN(name, Type, SumType) \
00015     struct { \
00016         SumType sum; \
00017         Type result; \
00018         int count; \
00019     } name = { 0, 0, 0 }
00020 
00026 #define SMEAN_ADD(mean, sample, max_samples) \
00027     do { \
00028         (mean).sum += (sample); \
00029         if ((mean).count++ >= (max_samples)) \
00030         { \
00031             (mean).result = (mean).sum / (max_samples); \
00032             (mean).sum = 0; \
00033             (mean).count = 0; \
00034         } \
00035     } while (0)
00036 
00040 #define SMEAN_GET(mean)  ((mean).result)
00041