Galaxis Codebase  1.0.0
Team Galaxis software stack for the Carolo Cup 2023 - ROS2 based software
ros_heartbeat.cpp
Go to the documentation of this file.
2 
3 using namespace galaxis;
4 
5 ROSHeartbeat::ROSHeartbeat(rclcpp::Node* p_nodePtr, std::string& p_nodeNameRef, unsigned int p_period) :
6  m_nodePtr(p_nodePtr) {
7  if(m_nodePtr == nullptr) {
9  }
10 
11  ::galaxis::ros::create_publisher(m_nodePtr, m_publisherSPtr);
12 
13  m_nodeName = p_nodeNameRef;
14 
15  // create timer for periodical heartbeating
16  if(p_period > _HEARTBEAT_MAXIMUM_PERIOD_TIME) {
17  RCLCPP_ERROR(m_nodePtr->get_logger(), "maximum heartbeat period time exceeded");
19  // throw galaxis::Errors::UNDEFINED_ERROR();
20  }
21 
22  m_period = std::chrono::milliseconds{ p_period };
23  m_periodicTimer = m_nodePtr->create_wall_timer(m_period, std::bind(&ROSHeartbeat::beat, this));
24 }
25 
27  m_periodicTimer->cancel();
28 }
29 
30 void ROSHeartbeat::beat(void) {
31  // RCLCPP_INFO(m_nodePtr->get_logger(), "[HEARTBEAT]");
32  auto messageUPtr = std::make_unique<HeartbeatMessageType>();
33  messageUPtr->node_name = m_nodeName;
34  messageUPtr->service_state.state = m_serviceState;
35  m_publisherSPtr->publish(std::move(messageUPtr));
36 }
37 
39  if(p_serviceState < 0 || p_serviceState >= ::galaxis::serviceStates::State::COUNT) {
40  RCLCPP_ERROR(m_nodePtr->get_logger(), "service state not implemented");
41  // throw galaxis::Errors::NOT_IMPLEMENTED_ERROR();
42  return;
43  }
44 
45  m_serviceState = p_serviceState;
46 }
galaxis::ROSHeartbeat::beat
void beat(void)
Definition: ros_heartbeat.cpp:30
galaxis::ROSHeartbeat::m_periodicTimer
rclcpp::TimerBase::SharedPtr m_periodicTimer
Definition: ros_heartbeat.hpp:19
galaxis::ROSHeartbeat::m_serviceState
::galaxis::serviceStates::State m_serviceState
Definition: ros_heartbeat.hpp:20
galaxis::ROSHeartbeat::ROSHeartbeat
ROSHeartbeat()=delete
galaxis::serviceStates::COUNT
@ COUNT
Definition: ServiceState.hpp:14
_HEARTBEAT_MAXIMUM_PERIOD_TIME
constexpr unsigned int _HEARTBEAT_MAXIMUM_PERIOD_TIME
Definition: ros_heartbeat.hpp:11
galaxis::Errors::POINTER_ERROR
Definition: Errors.hpp:18
galaxis::ROSHeartbeat::m_nodePtr
rclcpp::Node * m_nodePtr
Definition: ros_heartbeat.hpp:16
galaxis::ROSHeartbeat::set_service_state
void set_service_state(::galaxis::serviceStates::State const p_serviceState)
Definition: ros_heartbeat.cpp:38
galaxis
Definition: MapClasses.hpp:10
galaxis::ROSHeartbeat::m_nodeName
std::string m_nodeName
Definition: ros_heartbeat.hpp:21
galaxis::ROSHeartbeat::~ROSHeartbeat
~ROSHeartbeat()
Definition: ros_heartbeat.cpp:26
galaxis::ROSHeartbeat::m_publisherSPtr
rclcpp::Publisher< HeartbeatMessageType >::SharedPtr m_publisherSPtr
Definition: ros_heartbeat.hpp:17
galaxis::ROSHeartbeat::m_period
std::chrono::milliseconds m_period
Definition: ros_heartbeat.hpp:18
ros_heartbeat.hpp
galaxis::serviceStates::State
State
Definition: ServiceState.hpp:9