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