From 72bff25a42f13a24649fcc3cb6d42342871a9dd5 Mon Sep 17 00:00:00 2001
From: jvallve <jvallve@iri.upc.edu>
Date: Thu, 12 May 2022 13:30:28 +0200
Subject: [PATCH] adapted to new const-nonconst api

---
 include/publisher_gnss_accuracy.h     |  4 ++--
 include/publisher_gnss_fix.h          |  6 +++---
 include/publisher_gnss_tf.h           |  6 +++---
 include/publisher_tracker_gnss_info.h |  4 ++--
 src/publisher_gnss_accuracy.cpp       |  6 +++---
 src/publisher_gnss_fix.cpp            |  4 ++--
 src/publisher_gnss_tf.cpp             |  4 ++--
 src/publisher_tracker_gnss_info.cpp   | 17 +++--------------
 8 files changed, 20 insertions(+), 31 deletions(-)

diff --git a/include/publisher_gnss_accuracy.h b/include/publisher_gnss_accuracy.h
index 57ca6cf..c494fc4 100644
--- a/include/publisher_gnss_accuracy.h
+++ b/include/publisher_gnss_accuracy.h
@@ -42,13 +42,13 @@ class PublisherGnssAccuracy: public Publisher
 {
         visualization_msgs::Marker PL_marker_msg_;
         std_msgs::ColorRGBA marker_color_;
-        SensorBasePtr sensor_;
+        SensorBaseConstPtr sensor_;
         double k_H_, k_V_;
 
     public:
         PublisherGnssAccuracy(const std::string& _unique_name,
                               const ParamsServer& _server,
-                              const ProblemPtr _problem);
+                              ProblemConstPtr _problem);
         WOLF_PUBLISHER_CREATE(PublisherGnssAccuracy);
 
         virtual ~PublisherGnssAccuracy(){};
diff --git a/include/publisher_gnss_fix.h b/include/publisher_gnss_fix.h
index a4f0caf..4f2daad 100644
--- a/include/publisher_gnss_fix.h
+++ b/include/publisher_gnss_fix.h
@@ -45,15 +45,15 @@ class PublishGnssFix: public Publisher
         geometry_msgs::PoseArray pose_array_msg_;
         geometry_msgs::PoseStamped pose_msg_;
         visualization_msgs::Marker marker_msg_;
-        SensorBasePtr sensor_;
+        SensorBaseConstPtr sensor_;
         std::string frame_id_, map_frame_id_;
 
         ros::Publisher pub_pose_array_, pub_marker_, pub_pose_;
 
     public:
         PublishGnssFix(const std::string& _unique_name,
-                      const ParamsServer& _server,
-                      const ProblemPtr _problem);
+                       const ParamsServer& _server,
+                       ProblemConstPtr _problem);
         WOLF_PUBLISHER_CREATE(PublishGnssFix);
 
         virtual ~PublishGnssFix(){};
diff --git a/include/publisher_gnss_tf.h b/include/publisher_gnss_tf.h
index 6779049..6d49cbe 100644
--- a/include/publisher_gnss_tf.h
+++ b/include/publisher_gnss_tf.h
@@ -40,12 +40,12 @@ class PublisherGnssTf: public Publisher
         std::string map_frame_id_, enu_frame_id_, ecef_frame_id_;
         tf::StampedTransform T_enu_map_, T_ecef_enu_;
         tf::TransformBroadcaster tfb_;
-        SensorGnssPtr sensor_gnss_;
+        SensorGnssConstPtr sensor_gnss_;
 
     public:
         PublisherGnssTf(const std::string& _unique_name,
-                       const ParamsServer& _server,
-                       const ProblemPtr _problem);
+                        const ParamsServer& _server,
+                        ProblemConstPtr _problem);
         WOLF_PUBLISHER_CREATE(PublisherGnssTf);
 
         virtual ~PublisherGnssTf(){};
diff --git a/include/publisher_tracker_gnss_info.h b/include/publisher_tracker_gnss_info.h
index ce05728..19ccd90 100644
--- a/include/publisher_tracker_gnss_info.h
+++ b/include/publisher_tracker_gnss_info.h
@@ -42,13 +42,13 @@ class PublisherTrackerGnssInfo: public Publisher
 {
     protected:
 
-        ProcessorTrackerGnssPtr processor_tracker_gnss_;
+        ProcessorTrackerGnssConstPtr processor_tracker_gnss_;
         ros::Publisher publisher_untracked_;
 
     public:
         PublisherTrackerGnssInfo(const std::string& _unique_name,
                                  const ParamsServer& _server,
-                                 const ProblemPtr _problem);
+                                 ProblemConstPtr _problem);
         WOLF_PUBLISHER_CREATE(PublisherTrackerGnssInfo);
 
         virtual ~PublisherTrackerGnssInfo(){};
diff --git a/src/publisher_gnss_accuracy.cpp b/src/publisher_gnss_accuracy.cpp
index da18a60..f571410 100644
--- a/src/publisher_gnss_accuracy.cpp
+++ b/src/publisher_gnss_accuracy.cpp
@@ -31,9 +31,9 @@ namespace wolf
 {
 
 PublisherGnssAccuracy::PublisherGnssAccuracy(const std::string& _unique_name,
-                             const ParamsServer& _server,
-                             const ProblemPtr _problem) :
-        Publisher(_unique_name, _server, _problem)
+                                             const ParamsServer& _server,
+                                             ProblemConstPtr _problem) :
+    Publisher(_unique_name, _server, _problem)
 {
     Eigen::Vector4d col = _server.getParam<Eigen::Vector4d>(prefix_ + "/marker_color");
     marker_color_.r = col(0);
diff --git a/src/publisher_gnss_fix.cpp b/src/publisher_gnss_fix.cpp
index 814e870..5b4750c 100644
--- a/src/publisher_gnss_fix.cpp
+++ b/src/publisher_gnss_fix.cpp
@@ -28,8 +28,8 @@ namespace wolf
 {
 
 PublishGnssFix::PublishGnssFix(const std::string& _unique_name,
-                             const ParamsServer& _server,
-                             const ProblemPtr _problem) :
+                               const ParamsServer& _server,
+                               ProblemConstPtr _problem) :
         Publisher(_unique_name, _server, _problem)
 {
     sensor_     = _problem->findSensor(_server.getParam<std::string>(prefix_ + "/sensor"));
diff --git a/src/publisher_gnss_tf.cpp b/src/publisher_gnss_tf.cpp
index 9ec259e..da778fb 100644
--- a/src/publisher_gnss_tf.cpp
+++ b/src/publisher_gnss_tf.cpp
@@ -33,10 +33,10 @@ namespace wolf
 
 PublisherGnssTf::PublisherGnssTf(const std::string& _unique_name,
                                  const ParamsServer& _server,
-                                 const ProblemPtr _problem) :
+                                 ProblemConstPtr _problem) :
         Publisher(_unique_name, _server, _problem)
 {
-    sensor_gnss_ = std::static_pointer_cast<SensorGnss>(_problem->findSensor(_server.getParam<std::string>(prefix_ + "/sensor_gnss_name")));
+    sensor_gnss_ = std::static_pointer_cast<const SensorGnss>(_problem->findSensor(_server.getParam<std::string>(prefix_ + "/sensor_gnss_name")));
 
     T_enu_map_.setIdentity();
     T_enu_map_.frame_id_ = "ENU";
diff --git a/src/publisher_tracker_gnss_info.cpp b/src/publisher_tracker_gnss_info.cpp
index 1fc154f..4634a96 100644
--- a/src/publisher_tracker_gnss_info.cpp
+++ b/src/publisher_tracker_gnss_info.cpp
@@ -29,24 +29,13 @@ namespace wolf
 
 PublisherTrackerGnssInfo::PublisherTrackerGnssInfo(const std::string& _unique_name,
                                                    const ParamsServer& _server,
-                                                   const ProblemPtr _problem) :
+                                                   ProblemConstPtr _problem) :
         Publisher(_unique_name, _server, _problem),
         processor_tracker_gnss_(nullptr)
 {
     auto proc_name = _server.getParam<std::string>(prefix_ + "/processor_gnss");
-    for (auto sen : _problem->getHardware()->getSensorList())
-    {
-        for (auto proc : sen->getProcessorList())
-            if (proc_name == proc->getName())
-            {
-                processor_tracker_gnss_ = std::dynamic_pointer_cast<ProcessorTrackerGnss>(proc);
-                if (not processor_tracker_gnss_)
-                    throw std::runtime_error("PublisherTrackerGnssInfo: the processor with name " + proc_name + " is not of type ProcessorTrackerGnss.");
-                break;
-            }
-        if (processor_tracker_gnss_)
-            break;
-    }
+    processor_tracker_gnss_ = std::dynamic_pointer_cast<const ProcessorTrackerGnss>(problem_->findProcessor(proc_name));
+    
     if (not processor_tracker_gnss_)
         throw std::runtime_error("PublisherTrackerGnssInfo: the processor with name " + proc_name + " was not found.");
 }
-- 
GitLab