-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlistener.cpp
97 lines (63 loc) · 1.5 KB
/
listener.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <ros/ros.h>
#include "std_msgs/String.h"
#include <systemc>
//#include "chattercallback.hpp"
#include <iostream>
using namespace std;
using namespace sc_core;
string temp;
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard: [%s]", msg->data.c_str());
temp = msg-> data.c_str();
}
SC_MODULE(listener)
{
void publish()
{
cout<<("Start Publisher in Listener\n");
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("receive", 1000);
ros::Rate loop_rate(1);
while (1)
{
std_msgs::String msg;
stringstream ss;
//ss << "hello world " << count;
ss << "-" << temp;
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
wait(SC_ZERO_TIME);
}
}
void subscribe()
{
cout<<("Start Subscriber in Listener\n");
ros::NodeHandle n;
ros::Subscriber sub ;
sub = n.subscribe("send", 1000, chatterCallback);
while (1)
{
//ros::spinOnce();
wait(SC_ZERO_TIME);
}
}
SC_CTOR(listener)
{
cout<<("Start CTOR Listener\n");
int argc;
char **argv;
ros::init(argc, argv, "listener");
SC_THREAD(publish);
SC_THREAD(subscribe);
}
};
int sc_main(int argc, char *argv[])
{
listener listener1("listener");
sc_start();
return 0;
}