mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Merge "Handle case where NN AIDL callback is null in IDevice::prepareModel*" am: 5d4f1b70c2
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2072333 Change-Id: I0cd6b97aa6b0e2a2591b59bb4c13ff3ca05632cc Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -135,16 +135,26 @@ std::shared_ptr<PreparedModel> adaptPreparedModel(nn::SharedPreparedModel prepar
|
||||
return ndk::SharedRefBase::make<PreparedModel>(std::move(preparedModel));
|
||||
}
|
||||
|
||||
void notify(IPreparedModelCallback* callback, ErrorStatus status,
|
||||
const std::shared_ptr<IPreparedModel>& preparedModel) {
|
||||
if (callback != nullptr) {
|
||||
const auto ret = callback->notify(status, preparedModel);
|
||||
if (!ret.isOk()) {
|
||||
LOG(ERROR) << "IPreparedModelCallback::notify failed with " << ret.getDescription();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void notify(IPreparedModelCallback* callback, PrepareModelResult result) {
|
||||
if (!result.has_value()) {
|
||||
const auto& [message, status] = result.error();
|
||||
LOG(ERROR) << message;
|
||||
const auto aidlCode = utils::convert(status).value_or(ErrorStatus::GENERAL_FAILURE);
|
||||
callback->notify(aidlCode, nullptr);
|
||||
notify(callback, aidlCode, nullptr);
|
||||
} else {
|
||||
auto preparedModel = std::move(result).value();
|
||||
auto aidlPreparedModel = adaptPreparedModel(std::move(preparedModel));
|
||||
callback->notify(ErrorStatus::NONE, std::move(aidlPreparedModel));
|
||||
notify(callback, ErrorStatus::NONE, std::move(aidlPreparedModel));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,7 +294,7 @@ ndk::ScopedAStatus Device::prepareModel(const Model& model, ExecutionPreference
|
||||
if (!result.has_value()) {
|
||||
const auto& [message, code] = result.error();
|
||||
const auto aidlCode = utils::convert(code).value_or(ErrorStatus::GENERAL_FAILURE);
|
||||
callback->notify(aidlCode, nullptr);
|
||||
notify(callback.get(), aidlCode, nullptr);
|
||||
return ndk::ScopedAStatus::fromServiceSpecificErrorWithMessage(
|
||||
static_cast<int32_t>(aidlCode), message.c_str());
|
||||
}
|
||||
@@ -300,7 +310,7 @@ ndk::ScopedAStatus Device::prepareModelFromCache(
|
||||
if (!result.has_value()) {
|
||||
const auto& [message, code] = result.error();
|
||||
const auto aidlCode = utils::convert(code).value_or(ErrorStatus::GENERAL_FAILURE);
|
||||
callback->notify(aidlCode, nullptr);
|
||||
notify(callback.get(), aidlCode, nullptr);
|
||||
return ndk::ScopedAStatus::fromServiceSpecificErrorWithMessage(
|
||||
static_cast<int32_t>(aidlCode), message.c_str());
|
||||
}
|
||||
@@ -317,7 +327,7 @@ ndk::ScopedAStatus Device::prepareModelWithConfig(
|
||||
if (!result.has_value()) {
|
||||
const auto& [message, code] = result.error();
|
||||
const auto aidlCode = utils::convert(code).value_or(ErrorStatus::GENERAL_FAILURE);
|
||||
callback->notify(aidlCode, nullptr);
|
||||
notify(callback.get(), aidlCode, nullptr);
|
||||
return ndk::ScopedAStatus::fromServiceSpecificErrorWithMessage(
|
||||
static_cast<int32_t>(aidlCode), message.c_str());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user