From 8e8283811d3e945973385bc585522e86f1310338 Mon Sep 17 00:00:00 2001
From: Markus Grotz <markus.grotz@kit.edu>
Date: Fri, 10 Jun 2016 14:17:31 +0200
Subject: [PATCH] added topic for automatic view selection status

---
 .../components/ViewSelection/ViewSelection.cpp    |  2 ++
 .../components/ViewSelection/ViewSelection.h      | 15 ++++++++++++++-
 .../components/ViewSelectionInterface.ice         |  9 ++++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/source/RobotAPI/components/ViewSelection/ViewSelection.cpp b/source/RobotAPI/components/ViewSelection/ViewSelection.cpp
index 4ee7ad2dd..30a85a193 100644
--- a/source/RobotAPI/components/ViewSelection/ViewSelection.cpp
+++ b/source/RobotAPI/components/ViewSelection/ViewSelection.cpp
@@ -40,6 +40,7 @@ void ViewSelection::onInitComponent()
     usingProxy(getProperty<std::string>("HeadIKUnitName").getValue());
 
     offeringTopic("DebugDrawerUpdates");
+    offeringTopic(getName() + "Observer");
 
     headIKKinematicChainName = getProperty<std::string>("HeadIKKinematicChainName").getValue();
     headFrameName = getProperty<std::string>("HeadFrameName").getValue();
@@ -105,6 +106,7 @@ void ViewSelection::onConnectComponent()
     headIKUnitProxy = getProxy<HeadIKUnitInterfacePrx>(getProperty<std::string>("HeadIKUnitName").getValue());
     headIKUnitProxy->request();
 
+    viewSelectionObserver = getTopic<ViewSelectionObserverPrx>(getName() + "Observer");
     drawer = getTopic<DebugDrawerInterfacePrx>("DebugDrawerUpdates");
 
     processorTask->start();
diff --git a/source/RobotAPI/components/ViewSelection/ViewSelection.h b/source/RobotAPI/components/ViewSelection/ViewSelection.h
index 40d200901..496e20250 100644
--- a/source/RobotAPI/components/ViewSelection/ViewSelection.h
+++ b/source/RobotAPI/components/ViewSelection/ViewSelection.h
@@ -154,15 +154,26 @@ namespace armarx
             boost::mutex::scoped_lock lock(manualViewTargetsMutex);
 
             ARMARX_INFO << "activating automatic view selection";
+
             doAutomaticViewSelection = true;
+            viewSelectionObserver->onActivateAutomaticViewSelection();
         }
 
         virtual void deactivateAutomaticViewSelection(const Ice::Current& c = Ice::Current())
         {
             boost::mutex::scoped_lock lock(manualViewTargetsMutex);
 
-            ARMARX_INFO << "DEactivating automatic view selection";
+            ARMARX_INFO << "deactivating automatic view selection";
+
             doAutomaticViewSelection = false;
+            viewSelectionObserver->onDeactivateAutomaticViewSelection();
+        }
+
+        virtual bool isEnabledAutomaticViewSelection(const Ice::Current& c = Ice::Current())
+        {
+            boost::mutex::scoped_lock lock(manualViewTargetsMutex);
+
+            return doAutomaticViewSelection;
         }
 
         void updateSaliencyMap(const SaliencyMapBasePtr& map, const Ice::Current& c = ::Ice::Current());
@@ -179,6 +190,8 @@ namespace armarx
         HeadIKUnitInterfacePrx headIKUnitProxy;
         DebugDrawerInterfacePrx drawer;
 
+        ViewSelectionObserverPrx viewSelectionObserver;
+
         std::string headIKKinematicChainName;
         std::string headFrameName;
         std::string cameraFrameName;
diff --git a/source/RobotAPI/interface/components/ViewSelectionInterface.ice b/source/RobotAPI/interface/components/ViewSelectionInterface.ice
index 4d1c04ed4..cb9a18032 100755
--- a/source/RobotAPI/interface/components/ViewSelectionInterface.ice
+++ b/source/RobotAPI/interface/components/ViewSelectionInterface.ice
@@ -35,7 +35,6 @@ module armarx
 
     const int DEFAULT_VIEWTARGET_PRIORITY = 50;
 
-
     ["cpp:virtual"]
     class ViewTargetBase
     {
@@ -76,11 +75,19 @@ module armarx
 
         void activateAutomaticViewSelection();
         void deactivateAutomaticViewSelection();
+        bool isEnabledAutomaticViewSelection();
 
         void updateSaliencyMap(SaliencyMapBase map);
     };
 
 
+
+    interface ViewSelectionObserver
+    {
+        void onActivateAutomaticViewSelection();
+        void onDeactivateAutomaticViewSelection();
+    };
+
 };
 
 #endif
-- 
GitLab