1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include "DriverOptions.hpp" 9 #include "NamespaceAdaptor.hpp" 10 11 #include <HalInterfaces.h> 12 13 #ifdef ARMNN_ANDROID_R 14 using namespace android::nn; 15 #endif 16 17 namespace V1_0 = ::android::hardware::neuralnetworks::V1_0; 18 namespace V1_1 = ::android::hardware::neuralnetworks::V1_1; 19 20 #ifdef ARMNN_ANDROID_NN_V1_2 // Using ::android::hardware::neuralnetworks::V1_2 21 namespace V1_2 = ::android::hardware::neuralnetworks::V1_2; 22 #endif 23 24 #ifdef ARMNN_ANDROID_NN_V1_3 // Using ::android::hardware::neuralnetworks::V1_3 25 namespace V1_2 = ::android::hardware::neuralnetworks::V1_2; 26 namespace V1_3 = ::android::hardware::neuralnetworks::V1_3; 27 #endif 28 29 namespace armnn_driver 30 { 31 32 template <typename Callback, typename Context> 33 struct CallbackContext 34 { 35 Callback callback; 36 Context ctx; 37 }; 38 39 template<typename HalPolicy> 40 class ArmnnDriverImpl 41 { 42 public: 43 using HalModel = typename HalPolicy::Model; 44 using HalGetSupportedOperations_cb = typename HalPolicy::getSupportedOperations_cb; 45 using HalErrorStatus = typename HalPolicy::ErrorStatus; 46 47 static Return<void> getSupportedOperations( 48 const armnn::IRuntimePtr& runtime, 49 const DriverOptions& options, 50 const HalModel& model, 51 HalGetSupportedOperations_cb); 52 53 static Return<V1_0::ErrorStatus> prepareModel( 54 const armnn::IRuntimePtr& runtime, 55 const armnn::IGpuAccTunedParametersPtr& clTunedParameters, 56 const DriverOptions& options, 57 const HalModel& model, 58 const android::sp<V1_0::IPreparedModelCallback>& cb, 59 bool float32ToFloat16 = false); 60 61 static Return<V1_0::DeviceStatus> getStatus(); 62 63 }; 64 65 } // namespace armnn_driver 66