Remove usage of getStatus.
- remove from libaudiohal
- remove from services/radio
- remove from soundtrigger
- remove from omx
Bug: 31348667
Test: compiles
Change-Id: I75bb7b7388527dacfdc5bf128712cb8690bc286b
diff --git a/media/libaudiohal/ConversionHelperHidl.cpp b/media/libaudiohal/ConversionHelperHidl.cpp
index 1fabfbe..9f9eb75 100644
--- a/media/libaudiohal/ConversionHelperHidl.cpp
+++ b/media/libaudiohal/ConversionHelperHidl.cpp
@@ -82,26 +82,8 @@
}
}
-// static
-void ConversionHelperHidl::crashIfHalIsDead(const Status& status) {
- LOG_ALWAYS_FATAL_IF(
- status.transactionError() == DEAD_OBJECT, "HAL server crashed, need to restart");
-}
-
-status_t ConversionHelperHidl::processReturn(const char* funcName, const Status& status) {
- const status_t st = status.transactionError();
- ALOGE_IF(st, "%s %p %s: %s (from rpc)", mClassName, this, funcName, strerror(-st));
- crashIfHalIsDead(status);
- return st;
-}
-
-status_t ConversionHelperHidl::processReturn(
- const char* funcName, const Status& status, hardware::audio::V2_0::Result retval) {
- const status_t st = status.isOk() ? analyzeResult(retval) : status.transactionError();
- ALOGE_IF(!status.isOk() && st, "%s %p %s: %s (from rpc)",
- mClassName, this, funcName, strerror(-st));
- crashIfHalIsDead(status);
- return st;
+void ConversionHelperHidl::emitError(const char* funcName, const char* description) {
+ ALOGE("%s %p %s: %s (from rpc)", mClassName, this, funcName, description);
}
} // namespace android
diff --git a/media/libaudiohal/ConversionHelperHidl.h b/media/libaudiohal/ConversionHelperHidl.h
index 428daf2..89e6e88 100644
--- a/media/libaudiohal/ConversionHelperHidl.h
+++ b/media/libaudiohal/ConversionHelperHidl.h
@@ -30,9 +30,6 @@
namespace android {
class ConversionHelperHidl {
- public:
- static void crashIfHalIsDead(const Status& status);
-
protected:
static status_t keysFromHal(const String8& keys, hidl_vec<hidl_string> *hidlKeys);
static status_t parametersFromHal(const String8& kvPairs, hidl_vec<ParameterValue> *hidlParams);
@@ -40,18 +37,22 @@
ConversionHelperHidl(const char* className);
- status_t processReturn(const char* funcName, const Return<void>& ret) {
- return processReturn(funcName, ret.getStatus());
- }
-
template<typename R, typename T>
status_t processReturn(const char* funcName, const Return<R>& ret, T *retval) {
- if (ret.getStatus().isOk()) {
+ if (ret.isOk()) {
// This way it also works for enum class to unscoped enum conversion.
*retval = static_cast<T>(static_cast<R>(ret));
return OK;
}
- return processReturn(funcName, ret.getStatus());
+ return processReturn(funcName, ret);
+ }
+
+ template<typename T>
+ status_t processReturn(const char* funcName, const Return<T>& ret) {
+ if (!ret.isOk()) {
+ emitError(funcName, ret.description().c_str());
+ }
+ return ret.isOk() ? OK : UNKNOWN_ERROR;
}
status_t processReturn(const char* funcName, const Return<hardware::audio::V2_0::Result>& ret) {
@@ -61,16 +62,21 @@
template<typename T>
status_t processReturn(
const char* funcName, const Return<T>& ret, hardware::audio::V2_0::Result retval) {
- return processReturn(funcName, ret.getStatus(), retval);
+ const status_t st = ret.isOk() ? analyzeResult(retval) : UNKNOWN_ERROR;
+ if (!ret.isOk()) {
+ emitError(funcName, ret.description().c_str());
+ } else if (st) {
+ emitError(funcName, strerror(st));
+ }
+ return st;
}
private:
const char* mClassName;
static status_t analyzeResult(const hardware::audio::V2_0::Result& result);
- status_t processReturn(const char* funcName, const Status& status);
- status_t processReturn(
- const char* funcName, const Status& status, hardware::audio::V2_0::Result retval);
+
+ void emitError(const char* funcName, const char* description);
};
} // namespace android
diff --git a/media/libaudiohal/DevicesFactoryHalHidl.cpp b/media/libaudiohal/DevicesFactoryHalHidl.cpp
index efcc089..6444079 100644
--- a/media/libaudiohal/DevicesFactoryHalHidl.cpp
+++ b/media/libaudiohal/DevicesFactoryHalHidl.cpp
@@ -78,13 +78,12 @@
*device = new DeviceHalHidl(result);
}
});
- if (ret.getStatus().isOk()) {
+ if (ret.isOk()) {
if (retval == Result::OK) return OK;
else if (retval == Result::INVALID_ARGUMENTS) return BAD_VALUE;
else return NO_INIT;
}
- ConversionHelperHidl::crashIfHalIsDead(ret.getStatus());
- return ret.getStatus().transactionError();
+ return UNKNOWN_ERROR;
}
} // namespace android
diff --git a/media/libaudiohal/EffectHalHidl.cpp b/media/libaudiohal/EffectHalHidl.cpp
index 1cd1997..0a58fa0 100644
--- a/media/libaudiohal/EffectHalHidl.cpp
+++ b/media/libaudiohal/EffectHalHidl.cpp
@@ -103,8 +103,7 @@
effectDescriptorToHal(result, pDescriptor);
}
});
- ConversionHelperHidl::crashIfHalIsDead(ret.getStatus());
- return ret.getStatus().isOk() ? analyzeResult(retval) : ret.getStatus().transactionError();
+ return ret.isOk() ? analyzeResult(retval) : UNKNOWN_ERROR;
}
} // namespace android
diff --git a/media/libaudiohal/EffectsFactoryHalHidl.cpp b/media/libaudiohal/EffectsFactoryHalHidl.cpp
index bacbe4e..1ab5dad 100644
--- a/media/libaudiohal/EffectsFactoryHalHidl.cpp
+++ b/media/libaudiohal/EffectsFactoryHalHidl.cpp
@@ -43,7 +43,7 @@
return EffectIsNullUuid(pEffectUuid);
}
-EffectsFactoryHalHidl::EffectsFactoryHalHidl() {
+EffectsFactoryHalHidl::EffectsFactoryHalHidl() : ConversionHelperHidl("EffectsFactory"){
mEffectsFactory = IEffectsFactory::getService("audio_effects_factory");
}
@@ -60,12 +60,11 @@
mLastDescriptors = result;
}
});
- if (ret.getStatus().isOk()) {
+ if (ret.isOk()) {
return retval == Result::OK ? OK : NO_INIT;
}
mLastDescriptors.resize(0);
- ConversionHelperHidl::crashIfHalIsDead(ret.getStatus());
- return ret.getStatus().transactionError();
+ return processReturn(__FUNCTION__, ret);
}
status_t EffectsFactoryHalHidl::queryNumberEffects(uint32_t *pNumEffects) {
@@ -104,13 +103,12 @@
EffectHalHidl::effectDescriptorToHal(result, pDescriptor);
}
});
- if (ret.getStatus().isOk()) {
+ if (ret.isOk()) {
if (retval == Result::OK) return OK;
else if (retval == Result::INVALID_ARGUMENTS) return NAME_NOT_FOUND;
else return NO_INIT;
}
- ConversionHelperHidl::crashIfHalIsDead(ret.getStatus());
- return ret.getStatus().transactionError();
+ return processReturn(__FUNCTION__, ret);
}
status_t EffectsFactoryHalHidl::createEffect(
@@ -128,13 +126,12 @@
*effect = new EffectHalHidl(result, effectId);
}
});
- if (ret.getStatus().isOk()) {
+ if (ret.isOk()) {
if (retval == Result::OK) return OK;
else if (retval == Result::INVALID_ARGUMENTS) return NAME_NOT_FOUND;
else return NO_INIT;
}
- ConversionHelperHidl::crashIfHalIsDead(ret.getStatus());
- return ret.getStatus().transactionError();
+ return processReturn(__FUNCTION__, ret);
}
status_t EffectsFactoryHalHidl::dumpEffects(int fd) {
@@ -143,8 +140,7 @@
hidlHandle->data[0] = fd;
Return<void> ret = mEffectsFactory->debugDump(hidlHandle);
native_handle_delete(hidlHandle);
- ConversionHelperHidl::crashIfHalIsDead(ret.getStatus());
- return ret.getStatus().transactionError();
+ return processReturn(__FUNCTION__, ret);
}
} // namespace android
diff --git a/media/libaudiohal/EffectsFactoryHalHidl.h b/media/libaudiohal/EffectsFactoryHalHidl.h
index f16db17..e89f042 100644
--- a/media/libaudiohal/EffectsFactoryHalHidl.h
+++ b/media/libaudiohal/EffectsFactoryHalHidl.h
@@ -27,7 +27,7 @@
using ::android::hardware::audio::effect::V2_0::IEffectsFactory;
using ::android::hardware::hidl_vec;
-class EffectsFactoryHalHidl : public EffectsFactoryHalInterface
+class EffectsFactoryHalHidl : public EffectsFactoryHalInterface, public ConversionHelperHidl
{
public:
// Returns the number of different effects in all loaded libraries.
diff --git a/media/libaudiohal/StreamHalHidl.cpp b/media/libaudiohal/StreamHalHidl.cpp
index 7f8d663..5943e22 100644
--- a/media/libaudiohal/StreamHalHidl.cpp
+++ b/media/libaudiohal/StreamHalHidl.cpp
@@ -342,7 +342,7 @@
}
}
});
- if (!ret.getStatus().isOk() || retval != Result::OK) {
+ if (!ret.isOk() || retval != Result::OK) {
return processReturn("prepareForWriting", ret, retval);
}
if (!tempDataMQ || !tempDataMQ->isValid() || !tempStatusMQ || !tempStatusMQ->isValid()
@@ -456,7 +456,7 @@
timestamp->tv_nsec = hidlTimeStamp.tvNSec;
}
});
- if (ret.getStatus().isOk() && retval == Result::NOT_SUPPORTED) {
+ if (ret.isOk() && retval == Result::NOT_SUPPORTED) {
mGetPresentationPositionNotSupported = true;
}
return processReturn("getPresentationPosition", ret, retval);
@@ -570,7 +570,7 @@
}
}
});
- if (!ret.getStatus().isOk() || retval != Result::OK) {
+ if (!ret.isOk() || retval != Result::OK) {
return processReturn("prepareForReading", ret, retval);
}
if (!tempDataMQ || !tempDataMQ->isValid() || !tempStatusMQ || !tempStatusMQ->isValid()
diff --git a/media/libstagefright/omx/hal/1.0/Conversion.h b/media/libstagefright/omx/hal/1.0/Conversion.h
index 44d2c84..d42e5bf 100644
--- a/media/libstagefright/omx/hal/1.0/Conversion.h
+++ b/media/libstagefright/omx/hal/1.0/Conversion.h
@@ -2,7 +2,6 @@
#define ANDROID_HARDWARE_MEDIA_OMX_V1_0__CONVERSION_H
#include <hidl/MQDescriptor.h>
-#include <hidl/Status.h>
#include <unistd.h>
#include <vector>
@@ -147,13 +146,13 @@
*/
/**
- * \brief Convert `binder::Status` to `hardware::Status`.
+ * \brief Convert `binder::Status` to `Return<void>`.
*
* \param[in] l The source `binder::Status`.
- * \return The corresponding `hardware::Status`.
+ * \return The corresponding `Return<void>`.
*/
-// convert: ::android::binder::Status -> ::android::hardware::Status
-inline ::android::hardware::Status toHardwareStatus(
+// convert: ::android::binder::Status -> Return<void>
+inline Return<void> toHardwareStatus(
::android::binder::Status const& l) {
if (l.exceptionCode() == ::android::binder::Status::EX_SERVICE_SPECIFIC) {
return ::android::hardware::Status::fromServiceSpecificError(
@@ -166,36 +165,17 @@
}
/**
- * \brief Convert `hardware::Status` to `binder::Status`.
+ * \brief Convert `Return<void>` to `binder::Status`.
*
- * \param[in] t The source `hardware::Status`.
+ * \param[in] t The source `Return<void>`.
* \return The corresponding `binder::Status`.
*/
-// convert: ::android::hardware::Status -> ::android::binder::Status
+// convert: Return<void> -> ::android::binder::Status
inline ::android::binder::Status toBinderStatus(
- ::android::hardware::Status const& t) {
- if (t.exceptionCode() == ::android::hardware::Status::EX_SERVICE_SPECIFIC) {
- return ::android::binder::Status::fromServiceSpecificError(
- t.serviceSpecificErrorCode(),
- t.exceptionMessage());
- }
+ Return<void> const& t) {
return ::android::binder::Status::fromExceptionCode(
- t.exceptionCode(),
- t.exceptionMessage());
-}
-
-/**
- * \brief Convert `hardware::Return<void>` to `binder::Status`.
- *
- * \param[in] t The source `hardware::Return<void>`.
- * \return The corresponding `binder::Status`.
- *
- * This function simply calls `toBinderStatus(::android::hardware::Status
- * const&)`.
- */
-// convert: ::android::hardware::Return<void> -> ::android::binder::Status
-inline ::android::binder::Status toBinderStatus(Return<void> const& t) {
- return toBinderStatus(t.getStatus());
+ t.isOk() ? OK : UNKNOWN_ERROR,
+ t.description().c_str());
}
/**
@@ -215,8 +195,7 @@
*/
// convert: Status -> status_t
inline status_t toStatusT(Return<Status> const& t) {
- return t.isOk() ? static_cast<status_t>(static_cast<Status>(t)) :
- t.getStatus().transactionError();
+ return t.isOk() ? static_cast<status_t>(static_cast<Status>(t)) : UNKNOWN_ERROR;
}
/**
@@ -227,7 +206,7 @@
*/
// convert: Return<void> -> status_t
inline status_t toStatusT(Return<void> const& t) {
- return t.getStatus().transactionError();
+ return t.isOk() ? OK : UNKNOWN_ERROR;
}
/**