From fcb3584c6b98ca8bf1601b43e37b8dd1c318dc70 Mon Sep 17 00:00:00 2001
From: Mirko Waechter <mirko.waechter@kit.edu>
Date: Fri, 5 Oct 2018 16:53:09 +0200
Subject: [PATCH] added convenience function

---
 .../libraries/ArmarXEtherCAT/DeviceContainer.h     | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/source/RobotAPI/libraries/ArmarXEtherCAT/DeviceContainer.h b/source/RobotAPI/libraries/ArmarXEtherCAT/DeviceContainer.h
index d6146946e..dad5a4d22 100644
--- a/source/RobotAPI/libraries/ArmarXEtherCAT/DeviceContainer.h
+++ b/source/RobotAPI/libraries/ArmarXEtherCAT/DeviceContainer.h
@@ -35,7 +35,21 @@ namespace armarx
     {
     public:
         size_t load(const MultiNodeRapidXMLReader &rootNodeConfigs, const VirtualRobot::RobotPtr& robot);
+        template <typename Type>
+        std::vector<std::shared_ptr<Type>> getDevicesOfType() const
+        {
+            std::vector<std::shared_ptr<Type>> results;
+            for (auto& dev : devices)
+            {
+                auto castedDev = std::dynamic_pointer_cast<Type>(dev);
+                if(castedDev)
+                {
+                    results.push_back(castedDev);
+                }
 
+            }
+            return results;
+        }
         std::vector<AbstractFunctionalDevicePtr> getAllInitializedFunctionalDevices() const;
         std::vector<AbstractFunctionalDevicePtr> getAllUninitializedFunctionalDevices() const;
         virtual std::vector<AbstractFunctionalDevicePtr> getAllFunctionalDevices() const = 0;
-- 
GitLab