Skip to content
Snippets Groups Projects
Commit 11aec957 authored by Florent Lamiraux's avatar Florent Lamiraux Committed by Olivier Stasse
Browse files

[RosQueuedSubsribe] Add command listTopics

  to get the name of topics corresponding to each signal.
parent 3b9e412d
No related branches found
No related tags found
No related merge requests found
...@@ -3,3 +3,4 @@ from .ros import RosPublish as RosImport ...@@ -3,3 +3,4 @@ from .ros import RosPublish as RosImport
from .ros import RosSubscribe as RosExport from .ros import RosSubscribe as RosExport
from .ros_publish import RosPublish from .ros_publish import RosPublish
from .ros_subscribe import RosSubscribe from .ros_subscribe import RosSubscribe
from .ros_queued_subscribe import RosQueuedSubscribe
...@@ -13,7 +13,7 @@ BOOST_PYTHON_MODULE(wrap) ...@@ -13,7 +13,7 @@ BOOST_PYTHON_MODULE(wrap)
.def("rm", &dg::RosQueuedSubscribe::rm, "Remove a signal reading data from a ROS topic", .def("rm", &dg::RosQueuedSubscribe::rm, "Remove a signal reading data from a ROS topic",
bp::args("signal_name")) bp::args("signal_name"))
.def("list", &dg::RosQueuedSubscribe::list, "List signals reading data from a ROS topic") .def("list", &dg::RosQueuedSubscribe::list, "List signals reading data from a ROS topic")
.def("listTopics", &dg::RosQueuedSubscribe::listTopics, "List subscribed topics from ROS in the same order as list command")
.def("clearQueue", &dg::RosQueuedSubscribe::clearQueue, .def("clearQueue", &dg::RosQueuedSubscribe::clearQueue,
"Empty the queue of a given signal", bp::args("signal_name")) "Empty the queue of a given signal", bp::args("signal_name"))
.def("queueSize", &dg::RosQueuedSubscribe::queueSize, .def("queueSize", &dg::RosQueuedSubscribe::queueSize,
......
...@@ -99,6 +99,14 @@ std::vector<std::string> RosQueuedSubscribe::list() { ...@@ -99,6 +99,14 @@ std::vector<std::string> RosQueuedSubscribe::list() {
return result; return result;
} }
std::vector<std::string> RosQueuedSubscribe::listTopics()
{
std::vector<std::string> result(topics_.size());
std::transform(topics_.begin(), topics_.end(),
result.begin(), [](const auto& pair) { return pair.second; });
return result;
}
void RosQueuedSubscribe::clear() { void RosQueuedSubscribe::clear() {
std::map<std::string, bindedSignal_t>::iterator it = bindedSignal_.begin(); std::map<std::string, bindedSignal_t>::iterator it = bindedSignal_.begin();
for (; it != bindedSignal_.end();) { for (; it != bindedSignal_.end();) {
......
...@@ -137,6 +137,7 @@ class RosQueuedSubscribe : public dynamicgraph::Entity { ...@@ -137,6 +137,7 @@ class RosQueuedSubscribe : public dynamicgraph::Entity {
void rm(const std::string& signal); void rm(const std::string& signal);
std::vector<std::string> list(); std::vector<std::string> list();
std::vector<std::string> listTopics();
void clear(); void clear();
void clearQueue(const std::string& signal); void clearQueue(const std::string& signal);
void readQueue(int beginReadingAt); void readQueue(int beginReadingAt);
...@@ -146,6 +147,7 @@ class RosQueuedSubscribe : public dynamicgraph::Entity { ...@@ -146,6 +147,7 @@ class RosQueuedSubscribe : public dynamicgraph::Entity {
void add(const std::string& type, const std::string& signal, const std::string& topic); void add(const std::string& type, const std::string& signal, const std::string& topic);
std::map<std::string, bindedSignal_t>& bindedSignal() { return bindedSignal_; } std::map<std::string, bindedSignal_t>& bindedSignal() { return bindedSignal_; }
std::map<std::string, std::string>& topics() { return topics_; }
ros::NodeHandle& nh() { return nh_; } ros::NodeHandle& nh() { return nh_; }
...@@ -162,6 +164,7 @@ class RosQueuedSubscribe : public dynamicgraph::Entity { ...@@ -162,6 +164,7 @@ class RosQueuedSubscribe : public dynamicgraph::Entity {
static const std::string docstring_; static const std::string docstring_;
ros::NodeHandle& nh_; ros::NodeHandle& nh_;
std::map<std::string, bindedSignal_t> bindedSignal_; std::map<std::string, bindedSignal_t> bindedSignal_;
std::map<std::string, std::string> topics_;
int readQueue_; int readQueue_;
// Signal<bool, int> readQueue_; // Signal<bool, int> readQueue_;
......
...@@ -54,6 +54,7 @@ struct Add { ...@@ -54,6 +54,7 @@ struct Add {
RosQueuedSubscribe::bindedSignal_t bindedSignal(bs); RosQueuedSubscribe::bindedSignal_t bindedSignal(bs);
rosSubscribe.bindedSignal()[signal] = bindedSignal; rosSubscribe.bindedSignal()[signal] = bindedSignal;
rosSubscribe.topics()[signal] = topic;
} }
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment