28 template <typename T, std::enable_if_t<std::is_integral<T>::value,
int> = 0>
32 !std::is_integral<T>::value,
33 "\n\nCbTimerCountdownLoop no longer accepts a tick count.\n"
34 "Pass a chrono duration literal instead:\n"
35 " configure_orthogonal<OrTimer, CbTimerCountdownLoop>(3s); // every 3 seconds\n"
36 " configure_orthogonal<OrTimer, CbTimerCountdownLoop>(500ms); // every 500 ms\n"
37 "Migration guide: https://smacc2.robosoft.ai/how-to/how-to-cl-ros2-timer.html\n");
43 auto clock = node->get_clock();
45 node, clock, std::chrono::nanoseconds(
loopDuration_.nanoseconds()),
49 postCountDownEvent_();
62 template <
typename TOrthogonal,
typename TSourceObject>
std::function< void()> postCountDownEvent_
rclcpp::Duration loopDuration_
CbTimerCountdownLoop(rclcpp::Duration loopDuration)
smacc2::SmaccSignal< void()> onTimerTick_
rclcpp::TimerBase::SharedPtr wallTimer_
smacc2::SmaccSignalConnection onTimerTick(void(T::*callback)(), T *object)
void onStateOrthogonalAllocation()
virtual rclcpp::Node::SharedPtr getNode() const
ISmaccStateMachine * getStateMachine()
smacc2::SmaccSignalConnection createSignalConnection(TSmaccSignal &signal, TMemberFunctionPrototype callback, TSmaccObjectType *object)
boost::signals2::connection SmaccSignalConnection