1 #ifndef NODE_CANOPEN_BASE_DRIVER
2 #define NODE_CANOPEN_BASE_DRIVER
6 #include "std_msgs/msg/string.hpp"
7 #include "std_srvs/srv/trigger.hpp"
9 #include "canopen_interfaces/msg/co_data.hpp"
10 #include "canopen_interfaces/srv/co_read.hpp"
11 #include "canopen_interfaces/srv/co_write.hpp"
15 namespace node_interfaces
17 template <
class NODETYPE>
21 std::is_base_of<rclcpp::Node, NODETYPE>::value ||
22 std::is_base_of<rclcpp_lifecycle::LifecycleNode, NODETYPE>::value,
23 "NODETYPE must derive from rclcpp::Node or rclcpp_lifecycle::LifecycleNode");
41 std::shared_ptr<ros2_canopen::SafeQueue<ros2_canopen::COEmcy>>
emcy_queue_;
42 std::shared_ptr<ros2_canopen::SafeQueue<ros2_canopen::COData>>
rpdo_queue_;
46 virtual void on_nmt(canopen::NmtState nmt_state);
67 virtual void init(
bool called_from_base);
71 virtual void activate(
bool called_from_base);
73 virtual void deactivate(
bool called_from_base);
75 virtual void cleanup(
bool called_from_base);
77 virtual void shutdown(
bool called_from_base);
Definition: node_canopen_base_driver.hpp:19
uint32_t period_ms_
Definition: node_canopen_base_driver.hpp:31
virtual ~NodeCanopenBaseDriver()
Definition: node_canopen_base_driver.hpp:55
rclcpp::TimerBase::SharedPtr poll_timer_
Definition: node_canopen_base_driver.hpp:43
void register_emcy_cb(std::function< void(COEmcy, uint8_t)> emcy_cb)
Register a callback for EMCY.
Definition: node_canopen_base_driver.hpp:108
void rdpo_listener()
Definition: node_canopen_base_driver_impl.hpp:216
virtual void add_to_master()
Add the driver to master.
Definition: node_canopen_base_driver_impl.hpp:111
void nmt_listener()
Definition: node_canopen_base_driver_impl.hpp:172
virtual void configure(bool called_from_base)
Configure the driver.
std::thread nmt_state_publisher_thread_
Definition: node_canopen_base_driver.hpp:23
virtual void on_rpdo(COData data)
Definition: node_canopen_base_driver_impl.hpp:206
void register_nmt_state_cb(std::function< void(canopen::NmtState, uint8_t)> nmt_state_cb)
Register a callback for NMT state change.
Definition: node_canopen_base_driver.hpp:88
virtual void poll_timer_callback()
Definition: node_canopen_base_driver_impl.hpp:243
std::shared_ptr< ros2_canopen::SafeQueue< ros2_canopen::COEmcy > > emcy_queue_
Definition: node_canopen_base_driver.hpp:41
void register_rpdo_cb(std::function< void(COData, uint8_t)> rpdo_cb)
Register a callback for RPDO.
Definition: node_canopen_base_driver.hpp:98
NodeCanopenBaseDriver(NODETYPE *node)
Definition: node_canopen_base_driver_impl.hpp:9
std::function< void(COData, uint8_t)> rpdo_cb_
Definition: node_canopen_base_driver.hpp:37
std::thread emcy_publisher_thread_
Definition: node_canopen_base_driver.hpp:28
std::mutex driver_mutex_
Definition: node_canopen_base_driver.hpp:29
virtual void remove_from_master()
Remove the driver from master.
Definition: node_canopen_base_driver_impl.hpp:153
void emcy_listener()
Definition: node_canopen_base_driver_impl.hpp:290
std::thread rpdo_publisher_thread_
Definition: node_canopen_base_driver.hpp:27
std::shared_ptr< ros2_canopen::SafeQueue< ros2_canopen::COData > > rpdo_queue_
Definition: node_canopen_base_driver.hpp:42
std::function< void(canopen::NmtState, uint8_t)> nmt_state_cb_
Definition: node_canopen_base_driver.hpp:35
bool polling_
Definition: node_canopen_base_driver.hpp:32
std::function< void(COEmcy, uint8_t)> emcy_cb_
Definition: node_canopen_base_driver.hpp:39
std::shared_ptr< ros2_canopen::LelyDriverBridge > lely_driver_
Definition: node_canopen_base_driver.hpp:30
virtual void on_nmt(canopen::NmtState nmt_state)
Definition: node_canopen_base_driver_impl.hpp:201
virtual void on_emcy(COEmcy emcy)
Definition: node_canopen_base_driver_impl.hpp:211
Node Canopen Driver.
Definition: node_canopen_driver.hpp:46
void shutdown()
Shutdown the driver.
Definition: node_canopen_driver.hpp:323
void deactivate()
Deactivate the driver.
Definition: node_canopen_driver.hpp:251
void cleanup()
Cleanup the driver.
Definition: node_canopen_driver.hpp:291
void activate()
Activate the driver.
Definition: node_canopen_driver.hpp:209
void init()
Initialise the driver.
Definition: node_canopen_driver.hpp:113
NodeCanopenBaseDriver< rclcpp_lifecycle::LifecycleNode > NCBDLifecycleNode
Definition: node_canopen_base_driver.hpp:114
NodeCanopenBaseDriver< rclcpp::Node > NCBDNode
Definition: node_canopen_base_driver.hpp:113
Definition: configuration_manager.hpp:28
Definition: exchange.hpp:26
Definition: exchange.hpp:34