IVGCVSW-3478 Refactor armnn to make new Lstm parameters available in android-nn-driver through ILayerSupport.h

!android-nn-driver:1506

Signed-off-by: Ferran Balaguer <ferran.balaguer@arm.com>
Change-Id: Ia9904bd355c72a84f07d0a26faf143a4d6aead9c
diff --git a/Android.mk b/Android.mk
index b9cc6e5..8ad790e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -137,6 +137,7 @@
         src/armnn/layers/SubtractionLayer.cpp \
         src/armnn/layers/SwitchLayer.cpp \
         src/armnn/layers/TransposeConvolution2dLayer.cpp \
+        src/armnn/BackendHelper.cpp \
         src/armnn/Descriptors.cpp \
         src/armnn/Exceptions.cpp \
         src/armnn/Graph.cpp \
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7c163dc..dbb212f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -323,6 +323,7 @@
     src/armnn/layers/TransposeConvolution2dLayer.cpp
     src/armnn/layers/TransposeConvolution2dLayer.hpp
     src/armnn/BackendSettings.hpp
+    src/armnn/BackendHelper.cpp
     src/armnn/CompatibleTypes.hpp
     src/armnn/Descriptors.cpp
     src/armnn/DeviceSpec.hpp
diff --git a/include/armnn/ArmNN.hpp b/include/armnn/ArmNN.hpp
index de5ea3e..884a3ca 100644
--- a/include/armnn/ArmNN.hpp
+++ b/include/armnn/ArmNN.hpp
@@ -9,7 +9,6 @@
 #include "Exceptions.hpp"
 #include "INetwork.hpp"
 #include "IRuntime.hpp"
-#include "LayerSupport.hpp"
 #include "LstmParams.hpp"
 #include "Optional.hpp"
 #include "Tensor.hpp"
diff --git a/include/armnn/BackendHelper.hpp b/include/armnn/BackendHelper.hpp
new file mode 100644
index 0000000..6a6c8b9
--- /dev/null
+++ b/include/armnn/BackendHelper.hpp
@@ -0,0 +1,17 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <armnn/BackendId.hpp>
+#include <armnn/ILayerSupport.hpp>
+
+namespace armnn
+{
+
+/// Convenience function to retrieve the ILayerSupport for a backend
+std::shared_ptr<ILayerSupport> GetILayerSupportByBackendId(const armnn::BackendId& backend);
+
+}
diff --git a/src/armnn/BackendHelper.cpp b/src/armnn/BackendHelper.cpp
new file mode 100644
index 0000000..2514038
--- /dev/null
+++ b/src/armnn/BackendHelper.cpp
@@ -0,0 +1,27 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <armnn/BackendHelper.hpp>
+#include "backendsCommon/BackendRegistry.hpp"
+#include "backendsCommon/IBackendInternal.hpp"
+
+namespace armnn
+{
+
+std::shared_ptr<ILayerSupport> GetILayerSupportByBackendId(const armnn::BackendId& backend)
+{
+    BackendRegistry& backendRegistry = armnn::BackendRegistryInstance();
+
+    if (!backendRegistry.IsBackendRegistered(backend))
+    {
+        return nullptr;
+    }
+
+    auto factoryFunc = backendRegistry.GetFactory(backend);
+    auto backendObject = factoryFunc();
+    return backendObject->GetLayerSupport();
+}
+
+}