From 2f3407ac20ce4941876c781e6c22bbd023767191 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Thu, 10 Nov 2022 14:16:03 +0100
Subject: [PATCH] Introduce and use constants for robot state memory IDs

---
 .../RobotStateMemory/RobotStateMemory.cpp     |  5 ++-
 .../armem_robot_state/CMakeLists.txt          |  2 +
 .../armem_robot_state/memory_ids.cpp          | 36 ++++++++++++++++++
 .../libraries/armem_robot_state/memory_ids.h  | 37 +++++++++++++++++++
 .../server/description/Segment.cpp            |  3 +-
 .../server/localization/Segment.cpp           |  3 +-
 .../server/proprioception/Segment.cpp         |  3 +-
 7 files changed, 84 insertions(+), 5 deletions(-)
 create mode 100644 source/RobotAPI/libraries/armem_robot_state/memory_ids.cpp
 create mode 100644 source/RobotAPI/libraries/armem_robot_state/memory_ids.h

diff --git a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
index 8233df3d6..e3f006eaf 100644
--- a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
+++ b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
@@ -21,13 +21,14 @@
  */
 
 #include "RobotStateMemory.h"
-#include "RobotAPI/libraries/armem/core/forward_declarations.h"
+#include <RobotAPI/libraries/armem/core/forward_declarations.h>
 
 #include <RobotAPI/interface/core/PoseBase.h>
 #include <RobotAPI/libraries/core/Pose.h>
 #include <RobotAPI/libraries/armem/core/Prediction.h>
 #include <RobotAPI/libraries/armem_robot_state/server/proprioception/aron_conversions.h>
 #include <RobotAPI/libraries/armem_robot_state/server/common/Visu.h>
+#include <RobotAPI/libraries/armem_robot_state/memory_ids.h>
 #include <RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h>
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
@@ -82,7 +83,7 @@ namespace armarx::armem::server::robot_state
 
         const std::string prefix = "mem.";
 
-        setMemoryName("RobotState");
+        setMemoryName(armem::robot_state::memoryID.memoryName);
 
         descriptionSegment.defineProperties(defs, prefix + "desc.");
         proprioceptionSegment.defineProperties(defs, prefix + "prop.");
diff --git a/source/RobotAPI/libraries/armem_robot_state/CMakeLists.txt b/source/RobotAPI/libraries/armem_robot_state/CMakeLists.txt
index aafe0978d..a9c0ceb1b 100644
--- a/source/RobotAPI/libraries/armem_robot_state/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem_robot_state/CMakeLists.txt
@@ -38,6 +38,7 @@ armarx_add_library(
         client/localization/TransformWriter.h
 
         aron_conversions.h
+        memory_ids.h
         utils.h
 
     SOURCES
@@ -52,6 +53,7 @@ armarx_add_library(
         client/localization/TransformWriter.cpp
 
         aron_conversions.cpp
+        memory_ids.cpp
         utils.cpp
 )
 
diff --git a/source/RobotAPI/libraries/armem_robot_state/memory_ids.cpp b/source/RobotAPI/libraries/armem_robot_state/memory_ids.cpp
new file mode 100644
index 000000000..926c2e843
--- /dev/null
+++ b/source/RobotAPI/libraries/armem_robot_state/memory_ids.cpp
@@ -0,0 +1,36 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::ArmarXObjects::armem_robot_state
+ * @author     Rainer Kartmann ( rainer dot kartmann at kit dot edu )
+ * @date       2022
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#include "memory_ids.h"
+
+
+namespace armarx::armem
+{
+
+    const MemoryID robot_state::memoryID { "RobotState" };
+
+    const MemoryID robot_state::descriptionSegmentID { memoryID.withCoreSegmentName("Description") };
+    const MemoryID robot_state::proprioceptionSegmentID { memoryID.withCoreSegmentName("Proprioception") };
+    const MemoryID robot_state::localizationSegmentID { memoryID.withCoreSegmentName("Localization") };
+
+
+}
diff --git a/source/RobotAPI/libraries/armem_robot_state/memory_ids.h b/source/RobotAPI/libraries/armem_robot_state/memory_ids.h
new file mode 100644
index 000000000..1d8008d4d
--- /dev/null
+++ b/source/RobotAPI/libraries/armem_robot_state/memory_ids.h
@@ -0,0 +1,37 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package    RobotAPI::ArmarXObjects::armem_robot_state
+ * @author     Rainer Kartmann ( rainer dot kartmann at kit dot edu )
+ * @date       2022
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#pragma once
+
+#include <RobotAPI/libraries/armem/core/MemoryID.h>
+
+
+namespace armarx::armem::robot_state
+{
+
+    extern const MemoryID memoryID;
+
+    extern const MemoryID descriptionSegmentID;
+    extern const MemoryID proprioceptionSegmentID;
+    extern const MemoryID localizationSegmentID;
+
+} // namespace armarx::armem::objects
diff --git a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp
index f6cba1d8c..ec68b2634 100644
--- a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp
@@ -20,13 +20,14 @@
 #include <RobotAPI/libraries/armem_robot/aron_conversions.h>
 #include <RobotAPI/libraries/armem_robot/robot_conversions.h>
 #include <RobotAPI/libraries/armem_robot_state/aron/Proprioception.aron.generated.h>
+#include <RobotAPI/libraries/armem_robot_state/memory_ids.h>
 
 
 namespace armarx::armem::server::robot_state::description
 {
 
     Segment::Segment(armem::server::MemoryToIceAdapter& memoryToIceAdapter) :
-        Base(memoryToIceAdapter, "Description", arondto::RobotDescription::ToAronType())
+        Base(memoryToIceAdapter, armem::robot_state::descriptionSegmentID.coreSegmentName, arondto::RobotDescription::ToAronType())
     {
     }
 
diff --git a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp
index c41908c9a..3cadfeccb 100644
--- a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp
@@ -27,13 +27,14 @@
 #include <RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.h>
 #include <RobotAPI/libraries/armem_robot_state/common/localization/types.h>
 #include <RobotAPI/libraries/armem_robot_state/client/common/constants.h>
+#include <RobotAPI/libraries/armem_robot_state/memory_ids.h>
 
 
 namespace armarx::armem::server::robot_state::localization
 {
 
     Segment::Segment(armem::server::MemoryToIceAdapter& memoryToIceAdapter) :
-        Base(memoryToIceAdapter, "Localization", arondto::Transform::ToAronType(), 1024)
+        Base(memoryToIceAdapter, armem::robot_state::localizationSegmentID.coreSegmentName, arondto::Transform::ToAronType(), 1024)
     {
     }
 
diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp
index 3351772f3..99c330e76 100644
--- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp
@@ -13,6 +13,7 @@
 #include <RobotAPI/libraries/armem/core/MemoryID.h>
 #include <RobotAPI/libraries/armem/util/prediction_helpers.h>
 #include <RobotAPI/libraries/armem_robot_state/aron/Proprioception.aron.generated.h>
+#include <RobotAPI/libraries/armem_robot_state/memory_ids.h>
 
 
 namespace armarx::armem::server::robot_state::proprioception
@@ -20,7 +21,7 @@ namespace armarx::armem::server::robot_state::proprioception
 
     Segment::Segment(armem::server::MemoryToIceAdapter& memoryToIceAdapter) :
         Base(memoryToIceAdapter,
-             "Proprioception",
+             armem::robot_state::proprioceptionSegmentID.coreSegmentName,
              arondto::Proprioception::ToAronType(),
              1024)
     {
-- 
GitLab