15#ifndef NODE_CANOPEN_BASE_DRIVER
16#define NODE_CANOPEN_BASE_DRIVER
21#include "std_msgs/msg/string.hpp"
22#include "std_srvs/srv/trigger.hpp"
24#include "canopen_interfaces/msg/co_data.hpp"
25#include "canopen_interfaces/srv/co_read.hpp"
26#include "canopen_interfaces/srv/co_write.hpp"
30namespace node_interfaces
32template <
class NODETYPE>
36 std::is_base_of<rclcpp::Node, NODETYPE>::value ||
37 std::is_base_of<rclcpp_lifecycle::LifecycleNode, NODETYPE>::value,
38 "NODETYPE must derive from rclcpp::Node or rclcpp_lifecycle::LifecycleNode");
58 std::shared_ptr<ros2_canopen::SafeQueue<ros2_canopen::COEmcy>>
emcy_queue_;
59 std::shared_ptr<ros2_canopen::SafeQueue<ros2_canopen::COData>>
rpdo_queue_;
70 virtual void on_nmt(canopen::NmtState nmt_state);
92 virtual void init(
bool called_from_base);
96 virtual void activate(
bool called_from_base);
98 virtual void deactivate(
bool called_from_base);
100 virtual void cleanup(
bool called_from_base);
102 virtual void shutdown(
bool called_from_base);
Definition node_canopen_base_driver.hpp:34
uint32_t period_ms_
Definition node_canopen_base_driver.hpp:46
virtual ~NodeCanopenBaseDriver()
Definition node_canopen_base_driver.hpp:80
rclcpp::TimerBase::SharedPtr poll_timer_
Definition node_canopen_base_driver.hpp:60
uint32_t diagnostic_period_ms_
Definition node_canopen_base_driver.hpp:64
void register_emcy_cb(std::function< void(COEmcy, uint8_t)> emcy_cb)
Register a callback for EMCY.
Definition node_canopen_base_driver.hpp:133
void rdpo_listener()
Definition node_canopen_base_driver_impl.hpp:423
virtual void add_to_master()
Add the driver to master.
Definition node_canopen_base_driver_impl.hpp:265
std::shared_ptr< DiagnosticsCollector > diagnostic_collector_
Definition node_canopen_base_driver.hpp:66
void nmt_listener()
Definition node_canopen_base_driver_impl.hpp:365
virtual void configure(bool called_from_base)
Configure the driver.
std::thread nmt_state_publisher_thread_
Definition node_canopen_base_driver.hpp:41
std::shared_ptr< diagnostic_updater::Updater > diagnostic_updater_
Definition node_canopen_base_driver.hpp:65
virtual void on_rpdo(COData data)
Definition node_canopen_base_driver_impl.hpp:399
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:113
virtual void poll_timer_callback()
Definition node_canopen_base_driver_impl.hpp:450
std::atomic< bool > diagnostic_enabled_
Definition node_canopen_base_driver.hpp:63
std::shared_ptr< ros2_canopen::SafeQueue< ros2_canopen::COEmcy > > emcy_queue_
Definition node_canopen_base_driver.hpp:58
void register_rpdo_cb(std::function< void(COData, uint8_t)> rpdo_cb)
Register a callback for RPDO.
Definition node_canopen_base_driver.hpp:123
std::function< void(COData, uint8_t)> rpdo_cb_
Definition node_canopen_base_driver.hpp:54
std::thread emcy_publisher_thread_
Definition node_canopen_base_driver.hpp:43
std::mutex driver_mutex_
Definition node_canopen_base_driver.hpp:44
virtual void diagnostic_callback(diagnostic_updater::DiagnosticStatusWrapper &stat)
Definition node_canopen_base_driver_impl.hpp:525
int boot_timeout_ms_
Definition node_canopen_base_driver.hpp:48
int sdo_timeout_ms_
Definition node_canopen_base_driver.hpp:47
virtual void remove_from_master()
Remove the driver from master.
Definition node_canopen_base_driver_impl.hpp:340
void emcy_listener()
Definition node_canopen_base_driver_impl.hpp:497
std::thread rpdo_publisher_thread_
Definition node_canopen_base_driver.hpp:42
std::shared_ptr< ros2_canopen::SafeQueue< ros2_canopen::COData > > rpdo_queue_
Definition node_canopen_base_driver.hpp:59
std::function< void(canopen::NmtState, uint8_t)> nmt_state_cb_
Definition node_canopen_base_driver.hpp:52
bool polling_
Definition node_canopen_base_driver.hpp:49
std::function< void(COEmcy, uint8_t)> emcy_cb_
Definition node_canopen_base_driver.hpp:56
std::shared_ptr< ros2_canopen::LelyDriverBridge > lely_driver_
Definition node_canopen_base_driver.hpp:45
virtual void on_nmt(canopen::NmtState nmt_state)
Definition node_canopen_base_driver_impl.hpp:394
virtual void on_emcy(COEmcy emcy)
Definition node_canopen_base_driver_impl.hpp:404
Node Canopen Driver.
Definition node_canopen_driver.hpp:60
void shutdown()
Shutdown the driver.
Definition node_canopen_driver.hpp:344
void deactivate()
Deactivate the driver.
Definition node_canopen_driver.hpp:265
void cleanup()
Cleanup the driver.
Definition node_canopen_driver.hpp:305
void activate()
Activate the driver.
Definition node_canopen_driver.hpp:223
void init()
Initialise the driver.
Definition node_canopen_driver.hpp:127
NodeCanopenBaseDriver< rclcpp_lifecycle::LifecycleNode > NCBDLifecycleNode
Definition node_canopen_base_driver.hpp:139
NodeCanopenBaseDriver< rclcpp::Node > NCBDNode
Definition node_canopen_base_driver.hpp:138
Definition configuration_manager.hpp:28
Definition exchange.hpp:26
Definition exchange.hpp:34