Last year, we did a first attempt to describe and solve the issues users
are having with updateHook() semantics (
https://github.com/orocos-toolchain/rtt/pull/70 ). The major culprit was
that updateHook() is called 'any time the component's ExecutionEngine is
stepped' which is a highly unpredictable event.
Users expected that updateHook() is stepped at the component's period, or
when they did a trigger()/update() in case of non-periodic or slave
components. The same behavior was expected for RTT scripts or Lua rFSM
state machines. Also callbacks on event ports were not executed at the rate
of data arriving, but at the rate of (the unpredictable) updateHook().
https://github.com/orocos-toolchain/rtt/pull/91 offers what I believe the
first mergable candidate to solve these issues. To show how it works, two
drawings were made, included in this PR. We would make these part of the
Orocos Component Builder's manual once the PR is merged.
Please report back how this patch is affecting your applications in a
good/bad way.
Thanks,
Peter