IVGCVSW-3181 Add HAL 1.2 support to android-nn-driver

 * Updated Android.mk to build HAL 1.2 driver
 * Added 1.2 HalPolicy and ArmnnDriver
 * Added 1.2 ArmnnPreparedModel
 * Updated converters and utilities to accept new HAL 1.2 operands and operand types.

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: I62856deab24e106f72cccce09468db4971756fa6
diff --git a/ArmnnPreparedModel.cpp b/ArmnnPreparedModel.cpp
index f183caf..3256836 100644
--- a/ArmnnPreparedModel.cpp
+++ b/ArmnnPreparedModel.cpp
@@ -12,7 +12,7 @@
 #include <log/log.h>
 #include <OperationsUtils.h>
 
-#if defined(ARMNN_ANDROID_P)
+#if defined(ARMNN_ANDROID_P) || defined(ARMNN_ANDROID_Q)
 // The headers of the ML framework have changed between Android O and Android P.
 // The validation functions have been moved into their own header, ValidateHal.h.
 #include <ValidateHal.h>
@@ -89,7 +89,7 @@
 {
 
 template<typename HalVersion>
-RequestThread<HalVersion> ArmnnPreparedModel<HalVersion>::m_RequestThread;
+RequestThread<ArmnnPreparedModel, HalVersion> ArmnnPreparedModel<HalVersion>::m_RequestThread;
 
 template<typename HalVersion>
 template <typename TensorBindingCollection>
@@ -318,4 +318,8 @@
 template class ArmnnPreparedModel<hal_1_1::HalPolicy>;
 #endif
 
+#ifdef ARMNN_ANDROID_NN_V1_2
+template class ArmnnPreparedModel<hal_1_1::HalPolicy>;
+template class ArmnnPreparedModel<hal_1_2::HalPolicy>;
+#endif
 } // namespace armnn_driver