00001 #ifndef RATE_LIMITER_H 00002 #define RATE_LIMITER_H 00003 00004 #include <cmath> 00005 00006 class RateLimiter { 00007 00008 public: 00009 00010 RateLimiter(); 00011 ~RateLimiter(); 00012 00013 void setRateLimit(double lim); 00014 double getLimitedValue(double current, double previous); 00015 int getLimitedValue(int current, int previous); 00016 int getCompletionCondition(); 00017 00018 private: 00019 void setCompletionCondition(double diff, double lim); 00020 void setCompletionCondition(int diff, int lim); 00021 double rateLimit; 00022 int complete; // -1 idle, 0 false, 1 complete 00023 00024 }; 00025 00026 #endif