ros_thread.cpp
Go to the documentation of this file.
1 // *****************************************************************************
2 //
3 // Copyright (c) 2015, Southwest Research Institute® (SwRI®)
4 // All rights reserved.
5 //
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are met:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of Southwest Research Institute® (SwRI®) nor the
14 // names of its contributors may be used to endorse or promote products
15 // derived from this software without specific prior written permission.
16 //
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 // ARE DISCLAIMED. IN NO EVENT SHALL Southwest Research Institute® BE LIABLE
21 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
27 // DAMAGE.
28 //
29 // *****************************************************************************
30 
31 #include <QCoreApplication>
33 
34 using namespace swri_console;
35 
36 RosThread::RosThread(int argc, char** argv) :
37  is_connected_(false),
38  is_running_(true)
39 {
40  ros::init(argc, argv, "swri_console",
44 }
45 
47 {
48  while (is_running_)
49  {
50  bool master_status = ros::master::check();
51 
52  if (!is_connected_ && master_status) {
53  startRos();
54  } else if (is_connected_ && !master_status) {
55  stopRos();
56  } else if (is_connected_ && master_status) {
57  ros::spinOnce();
58  Q_EMIT spun();
59  }
60  msleep(50);
61  }
62 }
63 
64 
66 {
67  is_running_ = false;
68  if (ros::isStarted())
69  {
70  ros::shutdown();
72  }
73 }
74 
76 {
77  ros::start();
78  is_connected_ = true;
79 
80  ros::NodeHandle nh;
81  rosout_sub_ = nh.subscribe("/rosout_agg", 10000,
83  this);
84  Q_EMIT connected(true);
85 }
86 
88 {
89  ros::shutdown();
90  is_connected_ = false;
91  Q_EMIT connected(false);
92 }
93 
94 void RosThread::handleRosout(const rosgraph_msgs::LogConstPtr &msg)
95 {
96  Q_EMIT logReceived(msg);
97 }
ros::init_options::AnonymousName
AnonymousName
ros::init_options::NoRosout
NoRosout
swri_console::RosThread::handleRosout
void handleRosout(const rosgraph_msgs::LogConstPtr &msg)
Definition: ros_thread.cpp:94
ros::master::check
ROSCPP_DECL bool check()
swri_console::RosThread::shutdown
void shutdown()
Definition: ros_thread.cpp:65
ros::init
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
swri_console::RosThread::RosThread
RosThread(int argc, char **argv)
Definition: ros_thread.cpp:36
ros::spinOnce
ROSCPP_DECL void spinOnce()
ros::shutdown
ROSCPP_DECL void shutdown()
swri_console::RosThread::spun
void spun()
swri_console::RosThread::run
void run()
Definition: ros_thread.cpp:46
swri_console::RosThread::startRos
void startRos()
Definition: ros_thread.cpp:75
ros::NodeHandle::subscribe
Subscriber subscribe(const std::string &topic, uint32_t queue_size, const boost::function< void(C)> &callback, const VoidConstPtr &tracked_object=VoidConstPtr(), const TransportHints &transport_hints=TransportHints())
ros::isStarted
ROSCPP_DECL bool isStarted()
ros::start
ROSCPP_DECL void start()
swri_console
Definition: bag_reader.h:40
ros_thread.h
swri_console::RosThread::rosout_sub_
ros::Subscriber rosout_sub_
Definition: ros_thread.h:77
ros::waitForShutdown
ROSCPP_DECL void waitForShutdown()
console_generator.msg
msg
Definition: console_generator.py:58
swri_console::RosThread::connected
void connected(bool)
swri_console::RosThread::is_running_
volatile bool is_running_
Definition: ros_thread.h:76
swri_console::RosThread::stopRos
void stopRos()
Definition: ros_thread.cpp:87
swri_console::RosThread::is_connected_
bool is_connected_
Definition: ros_thread.h:75
ros::init_options::NoSigintHandler
NoSigintHandler
ros::NodeHandle
swri_console::RosThread::logReceived
void logReceived(const rosgraph_msgs::LogConstPtr &msg)


swri_console
Author(s): P. J. Reed , Jerry Towler , David Anthony
autogenerated on Sat Sep 23 2023 02:55:36