tmcl_ros_node.cpp
Go to the documentation of this file.
1 
6 #include <stdio.h>
7 #include <signal.h>
8 #include "tmcl_ros.h"
9 
10 /* Globals */
11 TmclROS *p_tmc = nullptr;
12 bool g_shutdown_signal = false;
13 
14 /* Function Prototypes */
15 void graceful_shutdown();
16 void signal_callback_handler(int signum);
17 
18 /* Locals */
20 {
21  ROS_INFO_STREAM("> Initiating graceful shutdown...");
22  if(p_tmc->deInit())
23  {
24  ROS_INFO_STREAM("> Successfully de-initialized TMC.");
25  }
26  delete p_tmc;
27  p_tmc = nullptr;
28 
29  ros::shutdown();
30 }
31 
35 void signal_callback_handler(int signum)
36 {
37  ROS_INFO_STREAM("> Caught signal: " << signum << ". Terminating...");
38  g_shutdown_signal = true;
39 }
40 
44 int main(int argc, char** argv)
45 {
46 #ifdef DEBUG
48  {
50  }
51 #endif
52 
53  /* Initialize ROS */
54  ros::init(argc, argv, "tmcl_ros_node", ros::init_options::NoSigintHandler);
55  ros::NodeHandle nh;
56 
57  try
58  {
59  ROS_INFO_STREAM("> Starting tmcl_ros ...");
60  signal(SIGINT, signal_callback_handler);
61  signal(SIGTERM, signal_callback_handler);
62  signal(SIGKILL, signal_callback_handler);
63 
64  ROS_INFO_STREAM("> Initializing tmcl_ros ...");
65  p_tmc = new TmclROS(&nh);
66 
67  /* Initialize TMC */
68  if(p_tmc->init())
69  {
70  ROS_INFO_STREAM("> Successfully initialized TMCL Protocol Interpreter.\n\n");
71  while(!g_shutdown_signal && nh.ok() && !p_tmc->getRetriesExceededStatus())
72  {
73  ros::spinOnce();
74  }
75  throw-1;
76  }
77  else
78  {
79  ROS_ERROR_STREAM("[ERROR] Initializing TMCL Protocol Interpreter failed!, restart node");
80  throw-1;
81  }
82  }
83  catch(...)
84  {
85  ROS_ERROR_STREAM("[ERROR] Exception encountered. Exiting...");
87  }
88 
89  return 0;
90 }
ROS_ERROR_STREAM
#define ROS_ERROR_STREAM(args)
TmclROS::deInit
bool deInit()
Definition: tmcl_ros.cpp:636
ros::init
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
tmcl_ros.h
ros::spinOnce
ROSCPP_DECL void spinOnce()
ros::shutdown
ROSCPP_DECL void shutdown()
ros::console::set_logger_level
ROSCONSOLE_DECL bool set_logger_level(const std::string &name, levels::Level level)
signal_callback_handler
void signal_callback_handler(int signum)
Definition: tmcl_ros_node.cpp:35
ros::console::levels::Debug
Debug
p_tmc
TmclROS * p_tmc
Definition: tmcl_ros_node.cpp:11
TmclROS::getRetriesExceededStatus
bool getRetriesExceededStatus()
Definition: tmcl_ros.cpp:677
g_shutdown_signal
bool g_shutdown_signal
Definition: tmcl_ros_node.cpp:12
ROS_INFO_STREAM
#define ROS_INFO_STREAM(args)
ros::NodeHandle::ok
bool ok() const
ros::console::notifyLoggerLevelsChanged
ROSCONSOLE_DECL void notifyLoggerLevelsChanged()
TmclROS::init
bool init()
Definition: tmcl_ros.cpp:39
ROSCONSOLE_DEFAULT_NAME
#define ROSCONSOLE_DEFAULT_NAME
TmclROS
Definition: tmcl_ros.h:35
main
int main(int argc, char **argv)
Definition: tmcl_ros_node.cpp:44
ros::init_options::NoSigintHandler
NoSigintHandler
ros::NodeHandle
graceful_shutdown
void graceful_shutdown()
Definition: tmcl_ros_node.cpp:19


adi_tmcl
Author(s):
autogenerated on Wed Apr 2 2025 02:43:01