Galaxis Codebase  1.0.0
Team Galaxis software stack for the Carolo Cup 2023 - ROS2 based software
galaxis::ROSHeartbeat Class Reference

#include <ros_heartbeat.hpp>

Public Member Functions

 ROSHeartbeat ()=delete
 
 ROSHeartbeat (rclcpp::Node *p_nodePtr, std::string &p_nodeNameRef, unsigned int p_period)
 
 ~ROSHeartbeat ()
 
void beat (void)
 
void set_service_state (::galaxis::serviceStates::State const p_serviceState)
 

Private Attributes

rclcpp::Node * m_nodePtr = nullptr
 
rclcpp::Publisher< HeartbeatMessageType >::SharedPtr m_publisherSPtr
 
std::chrono::milliseconds m_period
 
rclcpp::TimerBase::SharedPtr m_periodicTimer
 
::galaxis::serviceStates::State m_serviceState = ::galaxis::serviceStates::State::BOOTSTRAP
 
std::string m_nodeName = "UNDEFINED"
 

Detailed Description

Definition at line 14 of file ros_heartbeat.hpp.

Constructor & Destructor Documentation

◆ ROSHeartbeat() [1/2]

galaxis::ROSHeartbeat::ROSHeartbeat ( )
delete

◆ ROSHeartbeat() [2/2]

ROSHeartbeat::ROSHeartbeat ( rclcpp::Node *  p_nodePtr,
std::string &  p_nodeNameRef,
unsigned int  p_period 
)

Definition at line 5 of file ros_heartbeat.cpp.

5  :
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 }

References _HEARTBEAT_MAXIMUM_PERIOD_TIME, beat(), m_nodeName, m_nodePtr, m_period, m_periodicTimer, and m_publisherSPtr.

Here is the call graph for this function:

◆ ~ROSHeartbeat()

ROSHeartbeat::~ROSHeartbeat ( )

Definition at line 26 of file ros_heartbeat.cpp.

26  {
27  m_periodicTimer->cancel();
28 }

References m_periodicTimer.

Member Function Documentation

◆ beat()

void ROSHeartbeat::beat ( void  )

Definition at line 30 of file ros_heartbeat.cpp.

30  {
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 }

References m_nodeName, m_publisherSPtr, and m_serviceState.

Referenced by ROSHeartbeat().

Here is the caller graph for this function:

◆ set_service_state()

void ROSHeartbeat::set_service_state ( ::galaxis::serviceStates::State const  p_serviceState)

Definition at line 38 of file ros_heartbeat.cpp.

38  {
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 }

References galaxis::serviceStates::COUNT, m_nodePtr, and m_serviceState.

Referenced by GalaxisNode::service_state_callback().

Here is the caller graph for this function:

Member Data Documentation

◆ m_nodeName

std::string galaxis::ROSHeartbeat::m_nodeName = "UNDEFINED"
private

Definition at line 21 of file ros_heartbeat.hpp.

Referenced by beat(), and ROSHeartbeat().

◆ m_nodePtr

rclcpp::Node* galaxis::ROSHeartbeat::m_nodePtr = nullptr
private

Definition at line 16 of file ros_heartbeat.hpp.

Referenced by ROSHeartbeat(), and set_service_state().

◆ m_period

std::chrono::milliseconds galaxis::ROSHeartbeat::m_period
private

Definition at line 18 of file ros_heartbeat.hpp.

Referenced by ROSHeartbeat().

◆ m_periodicTimer

rclcpp::TimerBase::SharedPtr galaxis::ROSHeartbeat::m_periodicTimer
private

Definition at line 19 of file ros_heartbeat.hpp.

Referenced by ROSHeartbeat(), and ~ROSHeartbeat().

◆ m_publisherSPtr

rclcpp::Publisher<HeartbeatMessageType>::SharedPtr galaxis::ROSHeartbeat::m_publisherSPtr
private

Definition at line 17 of file ros_heartbeat.hpp.

Referenced by beat(), and ROSHeartbeat().

◆ m_serviceState

::galaxis::serviceStates::State galaxis::ROSHeartbeat::m_serviceState = ::galaxis::serviceStates::State::BOOTSTRAP
private

Definition at line 20 of file ros_heartbeat.hpp.

Referenced by beat(), and set_service_state().


The documentation for this class was generated from the following files:
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::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::m_nodeName
std::string m_nodeName
Definition: ros_heartbeat.hpp:21
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