ros2_canopen master
C++ ROS CANopen Library
Loading...
Searching...
No Matches
master_node.hpp
Go to the documentation of this file.
1// Copyright 2022 Christoph Hellmann Santos
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14#ifndef MASTER_NODE_HPP_
15#define MASTER_NODE_HPP_
16
17#include <rclcpp/rclcpp.hpp>
19
20namespace ros2_canopen
21{
29{
30public:
38 virtual void init() = 0;
47 virtual void shutdown() = 0;
57 virtual std::shared_ptr<lely::canopen::AsyncMaster> get_master() = 0;
67 virtual std::shared_ptr<lely::ev::Executor> get_executor() = 0;
68
78 virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() = 0;
79
86 virtual bool is_lifecycle() = 0;
87};
88
97class CanopenMaster : public CanopenMasterInterface, public rclcpp::Node
98{
99public:
100 std::shared_ptr<node_interfaces::NodeCanopenMasterInterface> node_canopen_master_;
101 explicit CanopenMaster(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions())
102 : rclcpp::Node("canopen_master", node_options)
103 {
104 // node_canopen_master_ =
105 // std::make_shared<node_interfaces::NodeCanopenMaster<rclcpp::Node>>(this);
106 }
118 virtual void init() override;
119
128 virtual void shutdown() override;
129
139 virtual std::shared_ptr<lely::canopen::AsyncMaster> get_master() override;
149 virtual std::shared_ptr<lely::ev::Executor> get_executor() override;
159 virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
160 {
161 return rclcpp::Node::get_node_base_interface();
162 }
168 virtual bool is_lifecycle() { return false; }
169};
170
171class LifecycleCanopenMaster : public CanopenMasterInterface, public rclcpp_lifecycle::LifecycleNode
172{
173protected:
174 std::shared_ptr<node_interfaces::NodeCanopenMasterInterface> node_canopen_master_;
175
176public:
177 LifecycleCanopenMaster(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions())
178 : rclcpp_lifecycle::LifecycleNode("lifecycle_canopen_master", node_options)
179 {
181 std::make_shared<node_interfaces::NodeCanopenMaster<rclcpp_lifecycle::LifecycleNode>>(this);
182 }
194 virtual void init() override;
195
204 virtual void shutdown() override;
214 virtual std::shared_ptr<lely::canopen::AsyncMaster> get_master() override;
224 virtual std::shared_ptr<lely::ev::Executor> get_executor() override;
234 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_configure(
235 const rclcpp_lifecycle::State & state);
245 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_activate(
246 const rclcpp_lifecycle::State & state);
256 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_deactivate(
257 const rclcpp_lifecycle::State & state);
267 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_cleanup(
268 const rclcpp_lifecycle::State & state);
278 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_shutdown(
279 const rclcpp_lifecycle::State & state);
289 virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
290 {
291 return rclcpp_lifecycle::LifecycleNode::get_node_base_interface();
292 }
298 virtual bool is_lifecycle() { return true; }
299};
300
301} // namespace ros2_canopen
302
303#endif
Canopen Master Interface.
Definition master_node.hpp:29
virtual std::shared_ptr< lely::canopen::AsyncMaster > get_master()=0
Get the master 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::ev::Executor > get_executor()=0
Get the executor object.
virtual void init()=0
Initialise the master.
Canopen Master.
Definition master_node.hpp:98
virtual std::shared_ptr< lely::canopen::AsyncMaster > get_master() override
Get the master object.
virtual std::shared_ptr< lely::ev::Executor > get_executor() override
Get the executor object.
std::shared_ptr< node_interfaces::NodeCanopenMasterInterface > node_canopen_master_
Definition master_node.hpp:100
CanopenMaster(const rclcpp::NodeOptions &node_options=rclcpp::NodeOptions())
Definition master_node.hpp:101
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:159
virtual void shutdown() override
Shuts the master down.
virtual bool is_lifecycle()
Check whether the node is a lifecycle node.
Definition master_node.hpp:168
Definition master_node.hpp:172
virtual void shutdown() override
Shuts the master down.
virtual rclcpp::node_interfaces::NodeBaseInterface::SharedPtr get_node_base_interface() override
Get the node base interface object.
Definition master_node.hpp:289
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 std::shared_ptr< lely::canopen::AsyncMaster > get_master() override
Get the master object.
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:174
virtual std::shared_ptr< lely::ev::Executor > get_executor() override
Get the executor object.
LifecycleCanopenMaster(const rclcpp::NodeOptions &node_options=rclcpp::NodeOptions())
Definition master_node.hpp:177
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:298
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_configure(const rclcpp_lifecycle::State &state)
Configure Transition Callback.
Definition configuration_manager.hpp:28