IVGCVSW-1806 Refactored Android-NN-Driver, added common "getCapabilities",
"getSupportedOperations" and "prepareModel" implementations
* Added common base ArmnnDriverImpl class
* Added common template implementation of the driver's "getCapabilities",
"getSupportedOperations" and "prepareModel" methods
* Refactored ArmnnPreparedModel and RequestThread to support HAL
v1.1 models
* Moved "getStatus" to the common base class, as it is shared by both
HAL implementations
* Refactored the code where necessary
Change-Id: I747334730026d63b4002662523fb93608f67c899
diff --git a/RequestThread.hpp b/RequestThread.hpp
index 2448dbe..41ad213 100644
--- a/RequestThread.hpp
+++ b/RequestThread.hpp
@@ -11,6 +11,7 @@
#include <condition_variable>
#include "ArmnnDriver.hpp"
+#include "ArmnnDriverImpl.hpp"
#include <CpuExecutor.h>
#include <armnn/ArmNN.hpp>
@@ -18,8 +19,10 @@
namespace armnn_driver
{
+template<typename HalVersion>
class ArmnnPreparedModel;
+template<typename HalVersion>
class RequestThread
{
public:
@@ -35,7 +38,7 @@
/// @param[in] inputTensors pointer to the input tensors for the request
/// @param[in] outputTensors pointer to the output tensors for the request
/// @param[in] callback the android notification callback
- void PostMsg(armnn_driver::ArmnnPreparedModel* model,
+ void PostMsg(armnn_driver::ArmnnPreparedModel<HalVersion>* model,
std::shared_ptr<std::vector<::android::nn::RunTimePoolInfo>>& memPools,
std::shared_ptr<armnn::InputTensors>& inputTensors,
std::shared_ptr<armnn::OutputTensors>& outputTensors,
@@ -48,7 +51,7 @@
/// storage for a prepared model and args for the asyncExecute call
struct AsyncExecuteData
{
- AsyncExecuteData(ArmnnPreparedModel* model,
+ AsyncExecuteData(ArmnnPreparedModel<HalVersion>* model,
std::shared_ptr<std::vector<::android::nn::RunTimePoolInfo>>& memPools,
std::shared_ptr<armnn::InputTensors>& inputTensors,
std::shared_ptr<armnn::OutputTensors>& outputTensors,
@@ -61,7 +64,7 @@
{
}
- armnn_driver::ArmnnPreparedModel* m_Model;
+ armnn_driver::ArmnnPreparedModel<HalVersion>* m_Model;
std::shared_ptr<std::vector<::android::nn::RunTimePoolInfo>> m_MemPools;
std::shared_ptr<armnn::InputTensors> m_InputTensors;
std::shared_ptr<armnn::OutputTensors> m_OutputTensors;