From 713ee8059cb31e319b48c7bd58632c729aa733c3 Mon Sep 17 00:00:00 2001 From: Tully Foote Date: Tue, 5 Dec 2017 00:25:28 -0800 Subject: [PATCH] Mirror clock API from Node to LifecycleNode (#417) * Mirror clock API from Node to LifecycleNode Follow up to #407 * adding headers for completeness --- rclcpp/include/rclcpp/node.hpp | 2 ++ rclcpp/src/rclcpp/node.cpp | 2 -- .../rclcpp_lifecycle/lifecycle_node.hpp | 17 +++++++++++++ rclcpp_lifecycle/src/lifecycle_node.cpp | 25 +++++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/rclcpp/include/rclcpp/node.hpp b/rclcpp/include/rclcpp/node.hpp index 942e750..b312b1a 100644 --- a/rclcpp/include/rclcpp/node.hpp +++ b/rclcpp/include/rclcpp/node.hpp @@ -35,6 +35,7 @@ #include "rclcpp/callback_group.hpp" #include "rclcpp/client.hpp" +#include "rclcpp/clock.hpp" #include "rclcpp/context.hpp" #include "rclcpp/event.hpp" #include "rclcpp/logger.hpp" @@ -52,6 +53,7 @@ #include "rclcpp/publisher.hpp" #include "rclcpp/service.hpp" #include "rclcpp/subscription.hpp" +#include "rclcpp/time.hpp" #include "rclcpp/timer.hpp" #include "rclcpp/visibility_control.hpp" diff --git a/rclcpp/src/rclcpp/node.cpp b/rclcpp/src/rclcpp/node.cpp index 3e29a94..cdeab0e 100644 --- a/rclcpp/src/rclcpp/node.cpp +++ b/rclcpp/src/rclcpp/node.cpp @@ -216,7 +216,6 @@ Node::now() return node_clock_->get_clock()->now(); } - rclcpp::node_interfaces::NodeBaseInterface::SharedPtr Node::get_node_base_interface() { @@ -229,7 +228,6 @@ Node::get_node_clock_interface() return node_clock_; } - rclcpp::node_interfaces::NodeGraphInterface::SharedPtr Node::get_node_graph_interface() { diff --git a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp index 5453502..52c21a0 100644 --- a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp +++ b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp @@ -30,12 +30,14 @@ #include "rclcpp/callback_group.hpp" #include "rclcpp/client.hpp" +#include "rclcpp/clock.hpp" #include "rclcpp/context.hpp" #include "rclcpp/event.hpp" #include "rclcpp/logger.hpp" #include "rclcpp/macros.hpp" #include "rclcpp/message_memory_strategy.hpp" #include "rclcpp/node_interfaces/node_base_interface.hpp" +#include "rclcpp/node_interfaces/node_clock_interface.hpp" #include "rclcpp/node_interfaces/node_graph_interface.hpp" #include "rclcpp/node_interfaces/node_logging_interface.hpp" #include "rclcpp/node_interfaces/node_parameters_interface.hpp" @@ -46,6 +48,7 @@ #include "rclcpp/publisher.hpp" #include "rclcpp/service.hpp" #include "rclcpp/subscription.hpp" +#include "rclcpp/time.hpp" #include "rclcpp/timer.hpp" #include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp" @@ -326,11 +329,24 @@ public: rclcpp::event::Event::SharedPtr event, std::chrono::nanoseconds timeout); + RCLCPP_LIFECYCLE_PUBLIC + rclcpp::Clock::SharedPtr + get_clock(); + + RCLCPP_LIFECYCLE_PUBLIC + rclcpp::Time + now(); + /// Return the Node's internal NodeBaseInterface implementation. RCLCPP_LIFECYCLE_PUBLIC rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface(); + /// Return the Node's internal NodeClockInterface implementation. + RCLCPP_LIFECYCLE_PUBLIC + rclcpp::node_interfaces::NodeClockInterface::SharedPtr + get_node_clock_interface(); + /// Return the Node's internal NodeGraphInterface implementation. RCLCPP_LIFECYCLE_PUBLIC rclcpp::node_interfaces::NodeGraphInterface::SharedPtr @@ -480,6 +496,7 @@ private: rclcpp::node_interfaces::NodeTopicsInterface::SharedPtr node_topics_; rclcpp::node_interfaces::NodeServicesInterface::SharedPtr node_services_; rclcpp::node_interfaces::NodeParametersInterface::SharedPtr node_parameters_; + rclcpp::node_interfaces::NodeClockInterface::SharedPtr node_clock_; bool use_intra_process_comms_; diff --git a/rclcpp_lifecycle/src/lifecycle_node.cpp b/rclcpp_lifecycle/src/lifecycle_node.cpp index 4d9ec2f..0eae700 100644 --- a/rclcpp_lifecycle/src/lifecycle_node.cpp +++ b/rclcpp_lifecycle/src/lifecycle_node.cpp @@ -28,6 +28,7 @@ #include "rclcpp/logger.hpp" #include "rclcpp/node.hpp" #include "rclcpp/node_interfaces/node_base.hpp" +#include "rclcpp/node_interfaces/node_clock.hpp" #include "rclcpp/node_interfaces/node_graph.hpp" #include "rclcpp/node_interfaces/node_logging.hpp" #include "rclcpp/node_interfaces/node_parameters.hpp" @@ -66,6 +67,12 @@ LifecycleNode::LifecycleNode( node_topics_.get(), use_intra_process_comms )), + node_clock_(new rclcpp::node_interfaces::NodeClock( + node_base_, + node_topics_, + node_graph_, + node_services_ + )), use_intra_process_comms_(use_intra_process_comms), impl_(new LifecycleNodeInterfaceImpl(node_base_, node_services_)) { @@ -216,12 +223,30 @@ LifecycleNode::wait_for_graph_change( node_graph_->wait_for_graph_change(event, timeout); } +rclcpp::Clock::SharedPtr +LifecycleNode::get_clock() +{ + return node_clock_->get_clock(); +} + +rclcpp::Time +LifecycleNode::now() +{ + return node_clock_->get_clock()->now(); +} + rclcpp::node_interfaces::NodeBaseInterface::SharedPtr LifecycleNode::get_node_base_interface() { return node_base_; } +rclcpp::node_interfaces::NodeClockInterface::SharedPtr +LifecycleNode::get_node_clock_interface() +{ + return node_clock_; +} + rclcpp::node_interfaces::NodeGraphInterface::SharedPtr LifecycleNode::get_node_graph_interface() {