ros2_canopen  master
C++ ROS CANopen Library
master_node.hpp
Go to the documentation of this file.
1 #ifndef MASTER_NODE_HPP_
2 #define MASTER_NODE_HPP_
3 
4 #include <rclcpp/rclcpp.hpp>
6 
7 namespace ros2_canopen
8 {
16 {
17 public:
25  virtual void init() = 0;
34  virtual void shutdown() = 0;
44  virtual std::shared_ptr<lely::canopen::AsyncMaster> get_master() = 0;
54  virtual std::shared_ptr<lely::ev::Executor> get_executor() = 0;
55 
65  virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() = 0;
66 
73  virtual bool is_lifecycle() = 0;
74 };
75 
84 class CanopenMaster : public CanopenMasterInterface, public rclcpp::Node
85 {
86 public:
87  std::shared_ptr<node_interfaces::NodeCanopenMasterInterface> node_canopen_master_;
88  explicit CanopenMaster(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions())
89  : rclcpp::Node("canopen_master", node_options)
90  {
91  // node_canopen_master_ =
92  // std::make_shared<node_interfaces::NodeCanopenMaster<rclcpp::Node>>(this);
93  }
105  virtual void init() override;
106 
115  virtual void shutdown() override;
116 
126  virtual std::shared_ptr<lely::canopen::AsyncMaster> get_master() override;
136  virtual std::shared_ptr<lely::ev::Executor> get_executor() override;
146  virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
147  {
148  return rclcpp::Node::get_node_base_interface();
149  }
155  virtual bool is_lifecycle() { return false; }
156 };
157 
158 class LifecycleCanopenMaster : public CanopenMasterInterface, public rclcpp_lifecycle::LifecycleNode
159 {
160 protected:
161  std::shared_ptr<node_interfaces::NodeCanopenMasterInterface> node_canopen_master_;
162 
163 public:
164  LifecycleCanopenMaster(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions())
165  : rclcpp_lifecycle::LifecycleNode("lifecycle_canopen_master", node_options)
166  {
168  std::make_shared<node_interfaces::NodeCanopenMaster<rclcpp_lifecycle::LifecycleNode>>(this);
169  }
181  virtual void init() override;
182 
191  virtual void shutdown() override;
201  virtual std::shared_ptr<lely::canopen::AsyncMaster> get_master() override;
211  virtual std::shared_ptr<lely::ev::Executor> get_executor() override;
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);
243  rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_deactivate(
244  const rclcpp_lifecycle::State & state);
254  rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_cleanup(
255  const rclcpp_lifecycle::State & state);
265  rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_shutdown(
266  const rclcpp_lifecycle::State & state);
276  virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
277  {
278  return rclcpp_lifecycle::LifecycleNode::get_node_base_interface();
279  }
285  virtual bool is_lifecycle() { return true; }
286 };
287 
288 } // namespace ros2_canopen
289 
290 #endif
Canopen Master Interface.
Definition: master_node.hpp:16
virtual std::shared_ptr< lely::ev::Executor > get_executor()=0
Get the executor object.
virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface()=0
Get the node base interface object.
virtual bool is_lifecycle()=0
Check whether the node is a lifecycle node.
virtual void shutdown()=0
Shutdown the driver.
virtual std::shared_ptr< lely::canopen::AsyncMaster > get_master()=0
Get the master object.
virtual void init()=0
Initialise the master.
Canopen Master.
Definition: master_node.hpp:85
std::shared_ptr< node_interfaces::NodeCanopenMasterInterface > node_canopen_master_
Definition: master_node.hpp:87
virtual std::shared_ptr< lely::ev::Executor > get_executor() override
Get the executor object.
CanopenMaster(const rclcpp::NodeOptions &node_options=rclcpp::NodeOptions())
Definition: master_node.hpp:88
virtual void init() override
Initialises the driver.
virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
Get the node base interface object.
Definition: master_node.hpp:146
virtual std::shared_ptr< lely::canopen::AsyncMaster > get_master() override
Get the master object.
virtual void shutdown() override
Shuts the master down.
virtual bool is_lifecycle()
Check whether the node is a lifecycle node.
Definition: master_node.hpp:155
Definition: master_node.hpp:159
virtual void shutdown() override
Shuts the master down.
virtual std::shared_ptr< lely::ev::Executor > get_executor() override
Get the executor object.
virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
Get the node base interface object.
Definition: master_node.hpp:276
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_shutdown(const rclcpp_lifecycle::State &state)
Shutdown Transition Callback.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_activate(const rclcpp_lifecycle::State &state)
Activate Transition Callback.
virtual void init() override
Initialises the driver.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_cleanup(const rclcpp_lifecycle::State &state)
Cleanup Transition Callback.
std::shared_ptr< node_interfaces::NodeCanopenMasterInterface > node_canopen_master_
Definition: master_node.hpp:161
LifecycleCanopenMaster(const rclcpp::NodeOptions &node_options=rclcpp::NodeOptions())
Definition: master_node.hpp:164
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_deactivate(const rclcpp_lifecycle::State &state)
Deactivet Transition Callback.
virtual bool is_lifecycle()
Check whether the node is a lifecycle node.
Definition: master_node.hpp:285
virtual std::shared_ptr< lely::canopen::AsyncMaster > get_master() override
Get the master object.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_configure(const rclcpp_lifecycle::State &state)
Configure Transition Callback.
Definition: configuration_manager.hpp:28