From ffdfb23f76469ca5213bd7a6e21b001d268cc70c Mon Sep 17 00:00:00 2001
From: Markus Grotz <markus.grotz@kit.edu>
Date: Thu, 25 Nov 2021 09:37:23 +0100
Subject: [PATCH] (MG, FQ) add dependency flag to RobotStateMemory

- the RobotStateMemory requires a running RobotUnit.
---
 .../armem/server/RobotStateMemory/RobotStateMemory.cpp    | 8 ++++++++
 .../armem/server/RobotStateMemory/RobotStateMemory.h      | 2 ++
 2 files changed, 10 insertions(+)

diff --git a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
index 3901a510f..5128cd755 100644
--- a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
+++ b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
@@ -63,6 +63,9 @@ namespace armarx::armem::server::robot_state
 
         const std::string robotUnitPrefix = robotUnit.sensorValuePrefix;
 
+
+	defs->optional(robotUnit.waitForRobotUnit, "WaitForRobotUnit", "Add the robot unit as dependency to the component. This memory requires a running RobotUnit, therefore we should add it as explicit dependency.");
+
         defs->optional(robotUnit.reader.properties.sensorPrefix, robotUnitPrefix + "SensorValuePrefix",
                        "Prefix of all sensor values.");
         defs->optional(robotUnit.pollFrequency, robotUnitPrefix + "UpdateFrequency",
@@ -115,6 +118,11 @@ namespace armarx::armem::server::robot_state
             std::vector<std::string> projectIncludePaths = simox::alg::split(pathsString, ";,");
             includePaths.insert(includePaths.end(), projectIncludePaths.begin(), projectIncludePaths.end());
         }
+
+	if (robotUnit.waitForRobotUnit)
+	{
+		usingProxy(robotUnit.plugin->getRobotUnitName());
+	}
     }
 
 
diff --git a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h
index 6459b2aac..863c9b571 100644
--- a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h
+++ b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h
@@ -124,6 +124,8 @@ namespace armarx::armem::server::robot_state
             // queue
             std::queue<proprioception::RobotUnitData> dataQueue;
             std::mutex dataMutex;
+
+	    bool waitForRobotUnit = false;
         };
         RobotUnit robotUnit;
     };
-- 
GitLab