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