Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cca3e20e authored by Michael Butler's avatar Michael Butler
Browse files

Cleanup how transport errors are handled in NN utils

Prior to this change, whenever the NN utility code encountered a HIDL
transport error, the error message would display the file and line
number of the "handleTransportError" function itself. This change
introduces a new macro "HANDLE_TRANSPORT_FAILURE" that handles the
transport error in a similar way but now the error message displays
the file and line number of where the macro is called.

Bug: N/A
Test: mma
Change-Id: I35b34f8f5be52b7fcff0fbb58a37ab2b8c7dd8bb
Merged-In: I35b34f8f5be52b7fcff0fbb58a37ab2b8c7dd8bb
(cherry picked from commit 61f508e0)
parent 6547b2ac
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ nn::GeneralResult<nn::Capabilities> initCapabilities(V1_0::IDevice* device) {
    };

    const auto ret = device->getCapabilities(cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -119,7 +119,8 @@ std::pair<uint32_t, uint32_t> Device::getNumberOfCacheFilesNeeded() const {

nn::GeneralResult<void> Device::wait() const {
    const auto ret = kDevice->ping();
    return hal::utils::handleTransportError(ret);
    HANDLE_TRANSPORT_FAILURE(ret);
    return {};
}

nn::GeneralResult<std::vector<bool>> Device::getSupportedOperations(const nn::Model& model) const {
@@ -148,7 +149,7 @@ nn::GeneralResult<std::vector<bool>> Device::getSupportedOperations(const nn::Mo
    };

    const auto ret = kDevice->getSupportedOperations(hidlModel, cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -168,7 +169,7 @@ nn::GeneralResult<nn::SharedPreparedModel> Device::prepareModel(
    const auto scoped = kDeathHandler.protectCallback(cb.get());

    const auto ret = kDevice->prepareModel(hidlModel, cb);
    const auto status = NN_TRY(hal::utils::handleTransportError(ret));
    const auto status = HANDLE_TRANSPORT_FAILURE(ret);
    if (status != ErrorStatus::NONE) {
        const auto canonical = nn::convert(status).value_or(nn::ErrorStatus::GENERAL_FAILURE);
        return NN_ERROR(canonical) << "prepareModel failed with " << toString(status);
+1 −2
Original line number Diff line number Diff line
@@ -67,8 +67,7 @@ nn::ExecutionResult<std::pair<std::vector<nn::OutputShape>, nn::Timing>> Prepare
    const auto scoped = kDeathHandler.protectCallback(cb.get());

    const auto ret = kPreparedModel->execute(hidlRequest, cb);
    const auto status =
            NN_TRY(hal::utils::makeExecutionFailure(hal::utils::handleTransportError(ret)));
    const auto status = HANDLE_TRANSPORT_FAILURE(ret);
    if (status != ErrorStatus::NONE) {
        const auto canonical = nn::convert(status).value_or(nn::ErrorStatus::GENERAL_FAILURE);
        return NN_ERROR(canonical) << "execute failed with " << toString(status);
+5 −4
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ nn::GeneralResult<nn::Capabilities> initCapabilities(V1_1::IDevice* device) {
    };

    const auto ret = device->getCapabilities_1_1(cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -120,7 +120,8 @@ std::pair<uint32_t, uint32_t> Device::getNumberOfCacheFilesNeeded() const {

nn::GeneralResult<void> Device::wait() const {
    const auto ret = kDevice->ping();
    return hal::utils::handleTransportError(ret);
    HANDLE_TRANSPORT_FAILURE(ret);
    return {};
}

nn::GeneralResult<std::vector<bool>> Device::getSupportedOperations(const nn::Model& model) const {
@@ -150,7 +151,7 @@ nn::GeneralResult<std::vector<bool>> Device::getSupportedOperations(const nn::Mo
    };

    const auto ret = kDevice->getSupportedOperations_1_1(hidlModel, cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -171,7 +172,7 @@ nn::GeneralResult<nn::SharedPreparedModel> Device::prepareModel(
    const auto scoped = kDeathHandler.protectCallback(cb.get());

    const auto ret = kDevice->prepareModel_1_1(hidlModel, hidlPreference, cb);
    const auto status = NN_TRY(hal::utils::handleTransportError(ret));
    const auto status = HANDLE_TRANSPORT_FAILURE(ret);
    if (status != V1_0::ErrorStatus::NONE) {
        const auto canonical = nn::convert(status).value_or(nn::ErrorStatus::GENERAL_FAILURE);
        return NN_ERROR(canonical) << "prepareModel failed with " << toString(status);
+10 −9
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ nn::GeneralResult<nn::Capabilities> initCapabilities(V1_2::IDevice* device) {
    };

    const auto ret = device->getCapabilities_1_2(cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -81,7 +81,7 @@ nn::GeneralResult<std::string> initVersionString(V1_2::IDevice* device) {
    };

    const auto ret = device->getVersionString(cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -101,7 +101,7 @@ nn::GeneralResult<nn::DeviceType> initDeviceType(V1_2::IDevice* device) {
    };

    const auto ret = device->getType(cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -121,7 +121,7 @@ nn::GeneralResult<std::vector<nn::Extension>> initExtensions(V1_2::IDevice* devi
    };

    const auto ret = device->getSupportedExtensions(cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -144,7 +144,7 @@ nn::GeneralResult<std::pair<uint32_t, uint32_t>> initNumberOfCacheFilesNeeded(
    };

    const auto ret = device->getNumberOfCacheFilesNeeded(cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -217,7 +217,8 @@ std::pair<uint32_t, uint32_t> Device::getNumberOfCacheFilesNeeded() const {

nn::GeneralResult<void> Device::wait() const {
    const auto ret = kDevice->ping();
    return hal::utils::handleTransportError(ret);
    HANDLE_TRANSPORT_FAILURE(ret);
    return {};
}

nn::GeneralResult<std::vector<bool>> Device::getSupportedOperations(const nn::Model& model) const {
@@ -247,7 +248,7 @@ nn::GeneralResult<std::vector<bool>> Device::getSupportedOperations(const nn::Mo
    };

    const auto ret = kDevice->getSupportedOperations_1_2(hidlModel, cb);
    NN_TRY(hal::utils::handleTransportError(ret));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -272,7 +273,7 @@ nn::GeneralResult<nn::SharedPreparedModel> Device::prepareModel(

    const auto ret = kDevice->prepareModel_1_2(hidlModel, hidlPreference, hidlModelCache,
                                               hidlDataCache, hidlToken, cb);
    const auto status = NN_TRY(hal::utils::handleTransportError(ret));
    const auto status = HANDLE_TRANSPORT_FAILURE(ret);
    if (status != V1_0::ErrorStatus::NONE) {
        const auto canonical = nn::convert(status).value_or(nn::ErrorStatus::GENERAL_FAILURE);
        return NN_ERROR(canonical) << "prepareModel_1_2 failed with " << toString(status);
@@ -292,7 +293,7 @@ nn::GeneralResult<nn::SharedPreparedModel> Device::prepareModelFromCache(
    const auto scoped = kDeathHandler.protectCallback(cb.get());

    const auto ret = kDevice->prepareModelFromCache(hidlModelCache, hidlDataCache, hidlToken, cb);
    const auto status = NN_TRY(hal::utils::handleTransportError(ret));
    const auto status = HANDLE_TRANSPORT_FAILURE(ret);
    if (status != V1_0::ErrorStatus::NONE) {
        const auto canonical = nn::convert(status).value_or(nn::ErrorStatus::GENERAL_FAILURE);
        return NN_ERROR(canonical) << "prepareModelFromCache failed with " << toString(status);
+2 −3
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ PreparedModel::executeSynchronously(const V1_0::Request& request, MeasureTiming
    };

    const auto ret = kPreparedModel->executeSynchronously(request, measure, cb);
    NN_TRY(hal::utils::makeExecutionFailure(hal::utils::handleTransportError(ret)));
    HANDLE_TRANSPORT_FAILURE(ret);

    return result;
}
@@ -94,8 +94,7 @@ PreparedModel::executeAsynchronously(const V1_0::Request& request, MeasureTiming
    const auto scoped = kDeathHandler.protectCallback(cb.get());

    const auto ret = kPreparedModel->execute_1_2(request, measure, cb);
    const auto status =
            NN_TRY(hal::utils::makeExecutionFailure(hal::utils::handleTransportError(ret)));
    const auto status = HANDLE_TRANSPORT_FAILURE(ret);
    if (status != V1_0::ErrorStatus::NONE) {
        const auto canonical = nn::convert(status).value_or(nn::ErrorStatus::GENERAL_FAILURE);
        return NN_ERROR(canonical) << "execute failed with " << toString(status);
Loading