1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include <HalInterfaces.h> 9 10 #include "../CacheDataHandler.hpp" 11 #include "../DriverOptions.hpp" 12 13 #include <armnn/ArmNN.hpp> 14 15 #include <NeuralNetworks.h> 16 17 #ifdef ARMNN_ANDROID_R 18 using namespace android::nn::hal; 19 #endif 20 21 #ifdef ARMNN_ANDROID_S 22 using namespace android::hardware; 23 #endif 24 25 namespace V1_0 = ::android::hardware::neuralnetworks::V1_0; 26 namespace V1_2 = ::android::hardware::neuralnetworks::V1_2; 27 28 namespace armnn_driver 29 { 30 namespace hal_1_2 31 { 32 33 class ArmnnDriverImpl 34 { 35 public: 36 using HidlToken = android::hardware::hidl_array<uint8_t, ANEURALNETWORKS_BYTE_SIZE_OF_CACHE_TOKEN>; 37 38 static Return<V1_0::ErrorStatus> prepareArmnnModel_1_2( 39 const armnn::IRuntimePtr& runtime, 40 const armnn::IGpuAccTunedParametersPtr& clTunedParameters, 41 const DriverOptions& options, 42 const V1_2::Model& model, 43 const android::hardware::hidl_vec<android::hardware::hidl_handle>& modelCacheHandle, 44 const android::hardware::hidl_vec<android::hardware::hidl_handle>& dataCacheHandle, 45 const HidlToken& token, 46 const android::sp<V1_2::IPreparedModelCallback>& cb, 47 bool float32ToFloat16 = false); 48 49 static Return<V1_0::ErrorStatus> prepareModelFromCache( 50 const armnn::IRuntimePtr& runtime, 51 const DriverOptions& options, 52 const android::hardware::hidl_vec<android::hardware::hidl_handle>& modelCacheHandle, 53 const android::hardware::hidl_vec<android::hardware::hidl_handle>& dataCacheHandle, 54 const HidlToken& token, 55 const android::sp<V1_2::IPreparedModelCallback>& cb, 56 bool float32ToFloat16 = false); 57 58 static Return<void> getCapabilities_1_2(const armnn::IRuntimePtr& runtime, 59 V1_2::IDevice::getCapabilities_1_2_cb cb); 60 }; 61 62 } // namespace hal_1_2 63 } // namespace armnn_driver