connection_daemon.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2022 Technical University of Munich, Chair of Materials Handling,
3  * Material Flow, Logistics – All Rights Reserved
4  *
5  * You may use, distribute and modify this code under the terms of the 3-clause
6  * BSD license. You should have received a copy of that license with this file.
7  * If not, please write to {kontakt.fml@ed.tum.de}.
8  */
9 
11 #include <iostream>
12 #include <vector>
13 
14 /*
15  * TODO: update documentation
16  *
17  */
18 
19 ConnectionDaemon::ConnectionDaemon(float heartbeat) : Daemon(&(this->nh), "connection_daemon")
20 {
21  LinkSubscriptionTopics(&(this->nh));
22 
23  connectionPublisher=this->nh.advertise<vda5050_msgs::Connection>(createPublishTopic(),1000);
24  updateInterval=ros::Duration(heartbeat);
26 }
27 
29 {
30  std::map<std::string,std::string>topicList = GetTopicSubscriberList();
31  for(const auto& elem : topicList)
32  {
33  if (CheckTopic(elem.first,"connectionState"))
34  subscribers[elem.first]=nh->subscribe(elem.second,1000,&ConnectionDaemon::ROSConnectionStateCallback, this);
35  }
36 }
37 
39 {
40  std::stringstream ss;
41  ss << getTopicStructurePrefix() << "/connection";
42  return (ss.str());
43 }
44 
46 {
48  return(passedTime >= updateInterval ? true:false);
49 }
50 
52 {
53  vda5050_msgs::Header header=GetHeader();
54  connectionMessage.headerId=header.headerId;
55  connectionMessage.timestamp=header.timestamp;
56  connectionMessage.version=header.version;
57  connectionMessage.manufacturer=header.manufacturer;
58  connectionMessage.serialNumber=header.serialNumber;
61 }
62 
64 {
65  if (CheckPassedTime() == true and ! connectionMessage.connectionState.empty())
66  {
68  }
69 }
70 
71 void ConnectionDaemon::ROSConnectionStateCallback(const std_msgs::Bool::ConstPtr& msg)
72 {
73  std::string connectionState;
74  if (msg->data)
75  connectionState="ONLINE";
76  else
77  connectionState="OFFLINE";
78  connectionMessage.connectionState=connectionState;
79 
80 }
81 
82 int main(int argc, char **argv)
83 {
84  ros::init(argc, argv, "action_deamon");
85 
86  float heartbeat = 15.0;
87 
88  ConnectionDaemon connectionDaemon(heartbeat);
89 
90  while(ros::ok())
91  {
92  connectionDaemon.UpdateConnection();
93  ros::spinOnce();
94  }
95  return 0;
96 }
97 
98 
99 
100 
101 
102 
103 
104 
105 
Daemon::GetHeader
vda5050_msgs::Header GetHeader()
Definition: src/daemon.cpp:106
main
int main(int argc, char **argv)
Definition: connection_daemon.cpp:82
ros::init
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
Daemon::subscribers
std::map< std::string, ros::Subscriber > subscribers
Definition: daemon.h:59
ros::spinOnce
ROSCPP_DECL void spinOnce()
ConnectionDaemon::lastUpdateTimestamp
ros::Time lastUpdateTimestamp
Definition: connection_daemon.h:43
ros::Publisher::publish
void publish(const boost::shared_ptr< M > &message) const
ros::NodeHandle::advertise
Publisher advertise(AdvertiseOptions &ops)
ros::ok
ROSCPP_DECL bool ok()
Daemon::getTopicStructurePrefix
std::string getTopicStructurePrefix()
Definition: src/daemon.cpp:95
Daemon::GetTopicSubscriberList
std::map< std::string, std::string > GetTopicSubscriberList()
Definition: src/daemon.cpp:51
ConnectionDaemon::ROSConnectionStateCallback
void ROSConnectionStateCallback(const std_msgs::Bool::ConstPtr &msg)
Definition: connection_daemon.cpp:71
ConnectionDaemon::LinkSubscriptionTopics
void LinkSubscriptionTopics(ros::NodeHandle *nh)
Definition: connection_daemon.cpp:28
ConnectionDaemon::PublishConnection
void PublishConnection()
Definition: connection_daemon.cpp:51
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())
ConnectionDaemon::UpdateConnection
void UpdateConnection()
Definition: connection_daemon.cpp:63
Daemon::nh
ros::NodeHandle nh
Definition: daemon.h:67
Daemon
Definition: daemon.h:29
ConnectionDaemon::connectionPublisher
ros::Publisher connectionPublisher
Definition: connection_daemon.h:32
ConnectionDaemon
Definition: connection_daemon.h:26
connection_daemon.h
header
const std::string header
ConnectionDaemon::updateInterval
ros::Duration updateInterval
Definition: connection_daemon.h:38
ros::Duration
ConnectionDaemon::CheckPassedTime
bool CheckPassedTime()
Definition: connection_daemon.cpp:45
ConnectionDaemon::connectionMessage
vda5050_msgs::Connection connectionMessage
Definition: connection_daemon.h:29
ConnectionDaemon::createPublishTopic
std::string createPublishTopic()
Definition: connection_daemon.cpp:38
ros::NodeHandle
Daemon::CheckTopic
bool CheckTopic(std::string str1, std::string str2)
Definition: src/daemon.cpp:117
ConnectionDaemon::ConnectionDaemon
ConnectionDaemon(float heartbeat)
Definition: connection_daemon.cpp:19
ros::Time::now
static Time now()


vda5050_connector
Author(s): Florian Rothmeyer , Florian Spiegel
autogenerated on Wed Mar 22 2023 02:38:56