mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
This CL modifies the canonical/AIDL adapter to use IExecution object
if available.
Bug: 202405342
Bug: 202431255
Test: NNT_static
Test: CtsNNAPITestCases
Test: VtsHalNeuralnetworksTargetTest
Change-Id: I6aac3c57f97ac87a5ba3f78cfd843fcc403decff
Merged-In: I6aac3c57f97ac87a5ba3f78cfd843fcc403decff
(cherry picked from commit 7f5c7d293c)
64 lines
2.2 KiB
C++
64 lines
2.2 KiB
C++
/*
|
|
* Copyright (C) 2021 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 "ProtectCallback.h"
|
|
#include "Utils.h"
|
|
|
|
#include <nnapi/IPreparedModel.h>
|
|
#include <nnapi/Result.h>
|
|
#include <nnapi/Types.h>
|
|
|
|
#include <utility>
|
|
|
|
// See hardware/interfaces/neuralnetworks/utils/README.md for more information on AIDL interface
|
|
// lifetimes across processes and for protecting asynchronous calls across AIDL.
|
|
|
|
namespace aidl::android::hardware::neuralnetworks::utils {
|
|
namespace {
|
|
|
|
// Converts the results of IDevice::prepareModel* to the NN canonical format. On success, this
|
|
// function returns with a non-null nn::SharedPreparedModel with a feature level of
|
|
// nn::kVersionFeatureLevel5. On failure, this function returns with the appropriate
|
|
// nn::GeneralError.
|
|
nn::GeneralResult<nn::SharedPreparedModel> prepareModelCallback(
|
|
ErrorStatus status, const std::shared_ptr<IPreparedModel>& preparedModel,
|
|
nn::Version featureLevel) {
|
|
HANDLE_STATUS_AIDL(status) << "model preparation failed with " << toString(status);
|
|
return NN_TRY(PreparedModel::create(preparedModel, featureLevel));
|
|
}
|
|
|
|
} // namespace
|
|
|
|
ndk::ScopedAStatus PreparedModelCallback::notify(
|
|
ErrorStatus status, const std::shared_ptr<IPreparedModel>& preparedModel) {
|
|
mData.put(prepareModelCallback(status, preparedModel, kFeatureLevel));
|
|
return ndk::ScopedAStatus::ok();
|
|
}
|
|
|
|
void PreparedModelCallback::notifyAsDeadObject() {
|
|
mData.put(NN_ERROR(nn::ErrorStatus::DEAD_OBJECT) << "Dead object");
|
|
}
|
|
|
|
PreparedModelCallback::Data PreparedModelCallback::get() {
|
|
return mData.take();
|
|
}
|
|
|
|
} // namespace aidl::android::hardware::neuralnetworks::utils
|