From d6b3c06baafe50137125dbf87b032e9282f7202b Mon Sep 17 00:00:00 2001
From: armar-user <armar6@kit>
Date: Fri, 28 Jul 2023 09:42:34 +0200
Subject: [PATCH] add flag to (dis)enable requesting objects

Signed-off-by: rainer <rainer.kartmann@kit.edu>
---
 .../statecharts/ObjectMemoryGroup/ObjectMemoryGroup.scgxml  | 2 +-
 .../statecharts/ObjectMemoryGroup/RequestObjects.cpp        | 6 ++++++
 .../statecharts/ObjectMemoryGroup/RequestObjects.xml        | 3 +++
 .../ObjectMemoryGroup/test/RequestObjectsTest.xml           | 4 ++--
 4 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/source/RobotAPI/statecharts/ObjectMemoryGroup/ObjectMemoryGroup.scgxml b/source/RobotAPI/statecharts/ObjectMemoryGroup/ObjectMemoryGroup.scgxml
index 48baf4ecf..8f7d00053 100644
--- a/source/RobotAPI/statecharts/ObjectMemoryGroup/ObjectMemoryGroup.scgxml
+++ b/source/RobotAPI/statecharts/ObjectMemoryGroup/ObjectMemoryGroup.scgxml
@@ -4,7 +4,7 @@
 		<Proxy value="RobotAPIInterfaces.MemoryNameSystem"/>
 	</Proxies>
 	<Folder basename="test">
-		<State filename="RequestObjectsTest.xml"/>
+		<State filename="RequestObjectsTest.xml" visibility="public"/>
 	</Folder>
 	<State filename="RequestObjects.xml" visibility="public"/>
 </StatechartGroup>
diff --git a/source/RobotAPI/statecharts/ObjectMemoryGroup/RequestObjects.cpp b/source/RobotAPI/statecharts/ObjectMemoryGroup/RequestObjects.cpp
index 2142038a7..562ddabd5 100644
--- a/source/RobotAPI/statecharts/ObjectMemoryGroup/RequestObjects.cpp
+++ b/source/RobotAPI/statecharts/ObjectMemoryGroup/RequestObjects.cpp
@@ -28,6 +28,12 @@ namespace armarx::ObjectMemoryGroup
 
     void RequestObjects::run()
     {
+        if (not in.getEnable())
+        {
+            emitSuccess();
+            return;
+        }
+
         using Reader = armarx::armem::obj::instance::Reader;
 
         const std::string provider = in.isProviderSet() ? in.getProvider() : "";
diff --git a/source/RobotAPI/statecharts/ObjectMemoryGroup/RequestObjects.xml b/source/RobotAPI/statecharts/ObjectMemoryGroup/RequestObjects.xml
index 12a5c8bf4..8b32c2010 100644
--- a/source/RobotAPI/statecharts/ObjectMemoryGroup/RequestObjects.xml
+++ b/source/RobotAPI/statecharts/ObjectMemoryGroup/RequestObjects.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <State version="1.2" name="RequestObjects" uuid="9F09FB2F-CC0C-4B8A-A716-F130E04A7230" width="800" height="600" type="Normal State">
 	<InputParameters>
+		<Parameter name="Enable" type="::armarx::BoolVariantData" docType="bool" optional="no">
+			<DefaultValue value='{"type":"::armarx::SingleVariantBase","variant":{"typeName":"::armarx::BoolVariantData","value":true}}' docValue="True"/>
+		</Parameter>
 		<Parameter name="ObjectIds" type="::armarx::SingleTypeVariantListBase(::armarx::StringVariantData)" docType="List(string)" optional="no"/>
 		<Parameter name="Provider" type="::armarx::StringVariantData" docType="string" optional="yes"/>
 		<Parameter name="RelativeTimeoutMilliseconds" type="::armarx::IntVariantData" docType="int" optional="no"/>
diff --git a/source/RobotAPI/statecharts/ObjectMemoryGroup/test/RequestObjectsTest.xml b/source/RobotAPI/statecharts/ObjectMemoryGroup/test/RequestObjectsTest.xml
index fa73294aa..edb16e982 100644
--- a/source/RobotAPI/statecharts/ObjectMemoryGroup/test/RequestObjectsTest.xml
+++ b/source/RobotAPI/statecharts/ObjectMemoryGroup/test/RequestObjectsTest.xml
@@ -14,9 +14,9 @@
 	<OutputParameters/>
 	<LocalParameters/>
 	<Substates>
-		<EndState name="Failure" event="Failure" left="363.333" top="140.056" boundingSquareSize="99.6636"/>
+		<EndState name="Failure" event="Failure" left="363.167" top="140.056" boundingSquareSize="99.6636"/>
 		<LocalState name="RequestObjects" refuuid="9F09FB2F-CC0C-4B8A-A716-F130E04A7230" left="114.167" top="196.278" boundingSquareSize="99.6636"/>
-		<EndState name="Success" event="Success" left="363.333" top="250.53" boundingSquareSize="99.6636"/>
+		<EndState name="Success" event="Success" left="363.167" top="250.278" boundingSquareSize="99.6636"/>
 	</Substates>
 	<Events>
 		<Event name="Failure">
-- 
GitLab