From 1b521b5e06805f3a2ddff60270e2d5b8ae01c19e Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Fri, 10 May 2013 22:43:37 +0200 Subject: digital/io-hub/src/common-cc: rate limit obstacle report --- digital/io-hub/src/common-cc/obstacles.cc | 9 ++++++--- digital/io-hub/src/common-cc/obstacles.hh | 8 ++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/digital/io-hub/src/common-cc/obstacles.cc b/digital/io-hub/src/common-cc/obstacles.cc index 17161902..9d97ee6b 100644 --- a/digital/io-hub/src/common-cc/obstacles.cc +++ b/digital/io-hub/src/common-cc/obstacles.cc @@ -35,7 +35,7 @@ extern "C" { #endif Obstacles::Obstacles () - : changed_ (false) + : changed_ (false), report_rate_limit_cpt_ (0) { for (int i = 0; i < obstacles_nb_; i++) obstacles_[i].valid = 0; @@ -53,7 +53,7 @@ Obstacles::update () changed_ = true; } } - if (changed_) + if (changed_ && !report_rate_limit_cpt_) { vect_t o[obstacles_nb_]; int o_nb = 0; @@ -67,8 +67,11 @@ Obstacles::update () r.pos (o, o_nb, 0); #endif robot->lcd.obstacles (o, o_nb); + changed_ = false; + report_rate_limit_cpt_ = report_rate_limit_; } - changed_ = false; + if (report_rate_limit_cpt_) + report_rate_limit_cpt_--; } void diff --git a/digital/io-hub/src/common-cc/obstacles.hh b/digital/io-hub/src/common-cc/obstacles.hh index c8abd93f..92a9d199 100644 --- a/digital/io-hub/src/common-cc/obstacles.hh +++ b/digital/io-hub/src/common-cc/obstacles.hh @@ -79,6 +79,14 @@ class Obstacles static const int same_mm_ = 150; /// Set when changed since last update. bool changed_; + /// Change report rate limit. +#ifdef TARGET_host + static const int report_rate_limit_ = 0; +#else + static const int report_rate_limit_ = 125; +#endif + /// Change report rate limit counter. + int report_rate_limit_cpt_; /// Single obstacle. struct Obstacle { -- cgit v1.2.3