/* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "Callbacks.h" #include "Conversions.h" #include "PreparedModel.h" #include "Utils.h" #include #include #include #include #include #include #include #include #include #include #include // See hardware/interfaces/neuralnetworks/utils/README.md for more information on HIDL interface // lifetimes across processes and for protecting asynchronous calls across HIDL. namespace android::hardware::neuralnetworks::V1_0::utils { nn::GeneralResult> supportedOperationsCallback( ErrorStatus status, const hidl_vec& supportedOperations) { HANDLE_HAL_STATUS(status) << "get supported operations failed with " << toString(status); return supportedOperations; } nn::GeneralResult prepareModelCallback( ErrorStatus status, const sp& preparedModel) { HANDLE_HAL_STATUS(status) << "model preparation failed with " << toString(status); return NN_TRY(PreparedModel::create(preparedModel)); } nn::ExecutionResult, nn::Timing>> executionCallback( ErrorStatus status) { HANDLE_HAL_STATUS(status) << "execution failed with " << toString(status); return {}; } Return PreparedModelCallback::notify(ErrorStatus status, const sp& preparedModel) { mData.put(prepareModelCallback(status, preparedModel)); return Void(); } void PreparedModelCallback::notifyAsDeadObject() { mData.put(NN_ERROR(nn::ErrorStatus::DEAD_OBJECT) << "Dead object"); } PreparedModelCallback::Data PreparedModelCallback::get() { return mData.take(); } // ExecutionCallback methods begin here Return ExecutionCallback::notify(ErrorStatus status) { mData.put(executionCallback(status)); return Void(); } void ExecutionCallback::notifyAsDeadObject() { mData.put(NN_ERROR(nn::ErrorStatus::DEAD_OBJECT) << "Dead object"); } ExecutionCallback::Data ExecutionCallback::get() { return mData.take(); } } // namespace android::hardware::neuralnetworks::V1_0::utils