| Line |
Branch |
Exec |
Source |
| 1 |
|
|
// Copyright (c) 2017, Joseph Mirabel |
| 2 |
|
|
// Authors: Joseph Mirabel (joseph.mirabel@laas.fr) |
| 3 |
|
|
|
| 4 |
|
|
#include <dynamic-graph/factory.h> |
| 5 |
|
|
|
| 6 |
|
|
#include <sot/core/event.hh> |
| 7 |
|
|
|
| 8 |
|
|
namespace dynamicgraph { |
| 9 |
|
|
namespace sot { |
| 10 |
|
|
|
| 11 |
|
✗ |
bool &Event::check(bool &ret, const int &time) { |
| 12 |
|
✗ |
const bool &val = conditionSIN(time); |
| 13 |
|
✗ |
ret = (val != lastVal_); |
| 14 |
|
✗ |
bool up = (!lastVal_ && val); |
| 15 |
|
✗ |
if (up) { |
| 16 |
|
✗ |
timeSinceUp_ = 0; |
| 17 |
|
✗ |
} else if (val) { |
| 18 |
|
✗ |
++timeSinceUp_; |
| 19 |
|
|
} |
| 20 |
|
|
// If repetition is activated, trigger again after given number of iterations |
| 21 |
|
✗ |
bool trigger = up || (repeatAfterNIterations_ > 0 && |
| 22 |
|
✗ |
timeSinceUp_ >= repeatAfterNIterations_); |
| 23 |
|
✗ |
if (ret) { |
| 24 |
|
✗ |
lastVal_ = val; |
| 25 |
|
|
} |
| 26 |
|
✗ |
if (trigger) { |
| 27 |
|
✗ |
for (Triggers_t::const_iterator _s = triggers.begin(); _s != triggers.end(); |
| 28 |
|
✗ |
++_s) |
| 29 |
|
✗ |
(*_s)->recompute(time); |
| 30 |
|
✗ |
timeSinceUp_ = 0; |
| 31 |
|
|
} |
| 32 |
|
✗ |
return ret; |
| 33 |
|
|
} |
| 34 |
|
|
|
| 35 |
|
✗ |
DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(Event, "Event"); |
| 36 |
|
|
} // namespace sot |
| 37 |
|
|
} // namespace dynamicgraph |
| 38 |
|
|
|