summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas Schodet2013-05-10 22:43:37 +0200
committerNicolas Schodet2013-05-10 22:43:37 +0200
commit1b521b5e06805f3a2ddff60270e2d5b8ae01c19e (patch)
treed06dc5965eed3906458f88f49b00e0ecdba08bac
parent942431057123c641caf9f672c2cddd2dedfcc2be (diff)
digital/io-hub/src/common-cc: rate limit obstacle report
-rw-r--r--digital/io-hub/src/common-cc/obstacles.cc9
-rw-r--r--digital/io-hub/src/common-cc/obstacles.hh8
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
{