ros2_canopen  master
C++ ROS CANopen Library
driver_node.hpp
Go to the documentation of this file.
1 #ifndef DRIVER_NODE_HPP_
2 #define DRIVER_NODE_HPP_
3 
4 #include <rclcpp/rclcpp.hpp>
6 
7 namespace ros2_canopen
8 {
17 {
18 public:
26  virtual void init() = 0;
27 
38  virtual void set_master(
39  std::shared_ptr<lely::ev::Executor> exec,
40  std::shared_ptr<lely::canopen::AsyncMaster> master) = 0;
41 
50  virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() = 0;
51 
59  virtual void shutdown() = 0;
60 
70  virtual bool is_lifecycle() = 0;
71 
79  virtual std::shared_ptr<node_interfaces::NodeCanopenDriverInterface>
81 };
82 
90 class CanopenDriver : public CanopenDriverInterface, public rclcpp::Node
91 {
92 public:
93  std::shared_ptr<node_interfaces::NodeCanopenDriverInterface> node_canopen_driver_;
94  explicit CanopenDriver(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions())
95  : rclcpp::Node("canopen_driver", node_options)
96  {
97  node_canopen_driver_ = std::make_shared<node_interfaces::NodeCanopenDriver<rclcpp::Node>>(this);
98  }
99 
109  virtual void init() override;
110 
121  virtual void set_master(
122  std::shared_ptr<lely::ev::Executor> exec,
123  std::shared_ptr<lely::canopen::AsyncMaster> master) override;
124 
133  virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
134  {
135  return rclcpp::Node::get_node_base_interface();
136  }
137 
145  virtual void shutdown() override;
146 
152  virtual bool is_lifecycle() override { return false; }
153 
161  virtual std::shared_ptr<node_interfaces::NodeCanopenDriverInterface>
163  {
164  return node_canopen_driver_;
165  }
166 };
167 
175 class LifecycleCanopenDriver : public CanopenDriverInterface, public rclcpp_lifecycle::LifecycleNode
176 {
177 protected:
178  std::shared_ptr<node_interfaces::NodeCanopenDriverInterface> node_canopen_driver_;
179 
180 public:
181  explicit LifecycleCanopenDriver(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions())
182  : rclcpp_lifecycle::LifecycleNode("lifecycle_canopen_driver", node_options)
183  {
185  std::make_shared<node_interfaces::NodeCanopenDriver<rclcpp_lifecycle::LifecycleNode>>(this);
186  }
196  virtual void init() override;
197 
208  virtual void set_master(
209  std::shared_ptr<lely::ev::Executor> exec,
210  std::shared_ptr<lely::canopen::AsyncMaster> master) override;
211 
221  rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_configure(
222  const rclcpp_lifecycle::State & state);
232  rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_activate(
233  const rclcpp_lifecycle::State & state);
234 
244  rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_deactivate(
245  const rclcpp_lifecycle::State & state);
246 
256  rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_cleanup(
257  const rclcpp_lifecycle::State & state);
258 
268  rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_shutdown(
269  const rclcpp_lifecycle::State & state);
270 
279  rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
280  {
281  return rclcpp_lifecycle::LifecycleNode::get_node_base_interface();
282  }
283 
291  virtual void shutdown() override;
297  virtual bool is_lifecycle() override { return true; }
305  virtual std::shared_ptr<node_interfaces::NodeCanopenDriverInterface>
307  {
308  return node_canopen_driver_;
309  }
310 };
311 
312 } // namespace ros2_canopen
313 
314 #endif
Canopen Driver Interface.
Definition: driver_node.hpp:17
virtual void shutdown()=0
Shutdown the driver.
virtual std::shared_ptr< node_interfaces::NodeCanopenDriverInterface > get_node_canopen_driver_interface()=0
Get the node canopen driver interface object.
virtual void set_master(std::shared_ptr< lely::ev::Executor > exec, std::shared_ptr< lely::canopen::AsyncMaster > master)=0
Set the master object.
virtual void init()=0
Initialise the driver.
virtual bool is_lifecycle()=0
Check whether this is a LifecycleNode.
virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface()=0
Get the node base interface object.
Canopen Driver.
Definition: driver_node.hpp:91
std::shared_ptr< node_interfaces::NodeCanopenDriverInterface > node_canopen_driver_
Definition: driver_node.hpp:93
virtual std::shared_ptr< node_interfaces::NodeCanopenDriverInterface > get_node_canopen_driver_interface()
Get the node canopen driver interface object.
Definition: driver_node.hpp:162
CanopenDriver(const rclcpp::NodeOptions &node_options=rclcpp::NodeOptions())
Definition: driver_node.hpp:94
virtual void set_master(std::shared_ptr< lely::ev::Executor > exec, std::shared_ptr< lely::canopen::AsyncMaster > master) override
Set the master object.
virtual void shutdown() override
Shutdown the driver.
virtual void init() override
Initialise the driver.
virtual bool is_lifecycle() override
Check whether this is a LifecycleNode.
Definition: driver_node.hpp:152
virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
Get the node base interface object.
Definition: driver_node.hpp:133
Lifecycle Canopen Driver.
Definition: driver_node.hpp:176
rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
Get the node base interface object.
Definition: driver_node.hpp:279
virtual void init() override
Initialise the driver.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_shutdown(const rclcpp_lifecycle::State &state)
Deactivate Callback.
virtual bool is_lifecycle() override
Check whether this is a LifecycleNode.
Definition: driver_node.hpp:297
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_deactivate(const rclcpp_lifecycle::State &state)
Deactivate Callback.
virtual std::shared_ptr< node_interfaces::NodeCanopenDriverInterface > get_node_canopen_driver_interface()
Get the node canopen driver interface object.
Definition: driver_node.hpp:306
virtual void set_master(std::shared_ptr< lely::ev::Executor > exec, std::shared_ptr< lely::canopen::AsyncMaster > master) override
Set the master object.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_cleanup(const rclcpp_lifecycle::State &state)
Deactivate Callback.
virtual void shutdown() override
Shutdown the driver.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_configure(const rclcpp_lifecycle::State &state)
Configure Callback.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_activate(const rclcpp_lifecycle::State &state)
Activate Callback.
LifecycleCanopenDriver(const rclcpp::NodeOptions &node_options=rclcpp::NodeOptions())
Definition: driver_node.hpp:181
std::shared_ptr< node_interfaces::NodeCanopenDriverInterface > node_canopen_driver_
Definition: driver_node.hpp:178
Definition: configuration_manager.hpp:28