diff options
Diffstat (limited to 'audio/core')
21 files changed, 111 insertions, 62 deletions
diff --git a/audio/core/2.0/default/Device.cpp b/audio/core/2.0/default/Device.cpp index 221ea5c0eb..b67203d50e 100644 --- a/audio/core/2.0/default/Device.cpp +++ b/audio/core/2.0/default/Device.cpp @@ -21,7 +21,7 @@ #include "core/2.0/default/Conversions.h" #include "core/2.0/default/StreamIn.h" #include "core/2.0/default/StreamOut.h" -#include "core/all-versions/default/Util.h" +#include "core/2.0/default/Util.h" #define AUDIO_HAL_VERSION V2_0 #include <core/all-versions/default/Device.impl.h> diff --git a/audio/core/2.0/default/ParametersUtil.cpp b/audio/core/2.0/default/ParametersUtil.cpp index 33a3ad9b7b..963e291de0 100644 --- a/audio/core/2.0/default/ParametersUtil.cpp +++ b/audio/core/2.0/default/ParametersUtil.cpp @@ -15,6 +15,7 @@ */ #include "core/2.0/default/ParametersUtil.h" +#include "core/2.0/default/Util.h" #define AUDIO_HAL_VERSION V2_0 #include <core/all-versions/default/ParametersUtil.impl.h> diff --git a/audio/core/2.0/default/PrimaryDevice.cpp b/audio/core/2.0/default/PrimaryDevice.cpp index ce57403864..decaa14658 100644 --- a/audio/core/2.0/default/PrimaryDevice.cpp +++ b/audio/core/2.0/default/PrimaryDevice.cpp @@ -17,7 +17,7 @@ #define LOG_TAG "PrimaryDeviceHAL" #include "core/2.0/default/PrimaryDevice.h" -#include "core/all-versions/default/Util.h" +#include "core/2.0/default/Util.h" #define AUDIO_HAL_VERSION V2_0 #include <core/all-versions/default/PrimaryDevice.impl.h> diff --git a/audio/core/2.0/default/Stream.cpp b/audio/core/2.0/default/Stream.cpp index 69ee659811..0863a7c399 100644 --- a/audio/core/2.0/default/Stream.cpp +++ b/audio/core/2.0/default/Stream.cpp @@ -19,6 +19,7 @@ #include "core/2.0/default/Stream.h" #include "common/all-versions/default/EffectMap.h" #include "core/2.0/default/Conversions.h" +#include "core/2.0/default/Util.h" #define AUDIO_HAL_VERSION V2_0 #include <core/all-versions/default/Stream.impl.h> diff --git a/audio/core/2.0/default/StreamIn.cpp b/audio/core/2.0/default/StreamIn.cpp index 6b8776ebe5..2021df1c49 100644 --- a/audio/core/2.0/default/StreamIn.cpp +++ b/audio/core/2.0/default/StreamIn.cpp @@ -17,7 +17,7 @@ #define LOG_TAG "StreamInHAL" #include "core/2.0/default/StreamIn.h" -#include "core/all-versions/default/Util.h" +#include "core/2.0/default/Util.h" #define AUDIO_HAL_VERSION V2_0 #include <core/all-versions/default/StreamIn.impl.h> diff --git a/audio/core/2.0/default/StreamOut.cpp b/audio/core/2.0/default/StreamOut.cpp index 7f1461ac7d..940a251272 100644 --- a/audio/core/2.0/default/StreamOut.cpp +++ b/audio/core/2.0/default/StreamOut.cpp @@ -17,7 +17,7 @@ #define LOG_TAG "StreamOutHAL" #include "core/2.0/default/StreamOut.h" -#include "core/all-versions/default/Util.h" +#include "core/2.0/default/Util.h" #define AUDIO_HAL_VERSION V2_0 #include <core/all-versions/default/StreamOut.impl.h> diff --git a/audio/core/2.0/default/include/core/2.0/default/Util.h b/audio/core/2.0/default/include/core/2.0/default/Util.h new file mode 100644 index 0000000000..858cd3bb3d --- /dev/null +++ b/audio/core/2.0/default/include/core/2.0/default/Util.h @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2017 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. + */ + +#ifndef ANDROID_HARDWARE_AUDIO_V2_0_UTIL_H +#define ANDROID_HARDWARE_AUDIO_V2_0_UTIL_H + +#include <android/hardware/audio/2.0/types.h> + +#define AUDIO_HAL_VERSION V2_0 +#include <core/all-versions/default/Util.h> +#undef AUDIO_HAL_VERSION + +#endif // ANDROID_HARDWARE_AUDIO_V2_0_UTIL_H diff --git a/audio/core/4.0/default/Device.cpp b/audio/core/4.0/default/Device.cpp index 26f9ab4a70..b33434ecfb 100644 --- a/audio/core/4.0/default/Device.cpp +++ b/audio/core/4.0/default/Device.cpp @@ -21,7 +21,7 @@ #include "core/4.0/default/Conversions.h" #include "core/4.0/default/StreamIn.h" #include "core/4.0/default/StreamOut.h" -#include "core/all-versions/default/Util.h" +#include "core/4.0/default/Util.h" #define AUDIO_HAL_VERSION V4_0 #include <core/all-versions/default/Device.impl.h> diff --git a/audio/core/4.0/default/ParametersUtil.cpp b/audio/core/4.0/default/ParametersUtil.cpp index 5c1b1c4b18..2cc9fb56a3 100644 --- a/audio/core/4.0/default/ParametersUtil.cpp +++ b/audio/core/4.0/default/ParametersUtil.cpp @@ -15,6 +15,7 @@ */ #include "core/4.0/default/ParametersUtil.h" +#include "core/4.0/default/Util.h" #define AUDIO_HAL_VERSION V4_0 #include <core/all-versions/default/ParametersUtil.impl.h> diff --git a/audio/core/4.0/default/PrimaryDevice.cpp b/audio/core/4.0/default/PrimaryDevice.cpp index 0294b4d0d4..e3e49768d5 100644 --- a/audio/core/4.0/default/PrimaryDevice.cpp +++ b/audio/core/4.0/default/PrimaryDevice.cpp @@ -17,7 +17,7 @@ #define LOG_TAG "PrimaryDeviceHAL" #include "core/4.0/default/PrimaryDevice.h" -#include "core/all-versions/default/Util.h" +#include "core/4.0/default/Util.h" #define AUDIO_HAL_VERSION V4_0 #include <core/all-versions/default/PrimaryDevice.impl.h> diff --git a/audio/core/4.0/default/Stream.cpp b/audio/core/4.0/default/Stream.cpp index 30b34544d6..b8c71de7b7 100644 --- a/audio/core/4.0/default/Stream.cpp +++ b/audio/core/4.0/default/Stream.cpp @@ -19,6 +19,7 @@ #include "core/4.0/default/Stream.h" #include "common/all-versions/default/EffectMap.h" #include "core/4.0/default/Conversions.h" +#include "core/4.0/default/Util.h" #define AUDIO_HAL_VERSION V4_0 #include <core/all-versions/default/Stream.impl.h> diff --git a/audio/core/4.0/default/StreamIn.cpp b/audio/core/4.0/default/StreamIn.cpp index 18719b5da2..718bd25a63 100644 --- a/audio/core/4.0/default/StreamIn.cpp +++ b/audio/core/4.0/default/StreamIn.cpp @@ -17,7 +17,7 @@ #define LOG_TAG "StreamInHAL" #include "core/4.0/default/StreamIn.h" -#include "core/all-versions/default/Util.h" +#include "core/4.0/default/Util.h" #define AUDIO_HAL_VERSION V4_0 #include <core/all-versions/default/StreamIn.impl.h> diff --git a/audio/core/4.0/default/StreamOut.cpp b/audio/core/4.0/default/StreamOut.cpp index 11c8fde663..db88e401d2 100644 --- a/audio/core/4.0/default/StreamOut.cpp +++ b/audio/core/4.0/default/StreamOut.cpp @@ -17,7 +17,7 @@ #define LOG_TAG "StreamOutHAL" #include "core/4.0/default/StreamOut.h" -#include "core/all-versions/default/Util.h" +#include "core/4.0/default/Util.h" #define AUDIO_HAL_VERSION V4_0 #include <core/all-versions/default/StreamOut.impl.h> diff --git a/audio/core/4.0/default/include/core/4.0/default/Util.h b/audio/core/4.0/default/include/core/4.0/default/Util.h new file mode 100644 index 0000000000..dcdc7ee7a1 --- /dev/null +++ b/audio/core/4.0/default/include/core/4.0/default/Util.h @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2017 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. + */ + +#ifndef ANDROID_HARDWARE_AUDIO_V4_0_UTIL_H +#define ANDROID_HARDWARE_AUDIO_V4_0_UTIL_H + +#include <android/hardware/audio/4.0/types.h> + +#define AUDIO_HAL_VERSION V4_0 +#include <core/all-versions/default/Util.h> +#undef AUDIO_HAL_VERSION + +#endif // ANDROID_HARDWARE_AUDIO_V4_0_UTIL_H diff --git a/audio/core/all-versions/default/include/core/all-versions/default/Device.impl.h b/audio/core/all-versions/default/include/core/all-versions/default/Device.impl.h index 581e1dcce3..37b7124a26 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/Device.impl.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/Device.impl.h @@ -25,7 +25,6 @@ #include <android/log.h> using ::android::hardware::audio::common::AUDIO_HAL_VERSION::HidlUtils; -using ::android::hardware::audio::all_versions::implementation::isGainNormalized; namespace android { namespace hardware { diff --git a/audio/core/all-versions/default/include/core/all-versions/default/ParametersUtil.impl.h b/audio/core/all-versions/default/include/core/all-versions/default/ParametersUtil.impl.h index 3907284048..afff2b6d2a 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/ParametersUtil.impl.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/ParametersUtil.impl.h @@ -149,26 +149,7 @@ Result ParametersUtil::setParam(const char* name, const DeviceAddress& address) Result ParametersUtil::setParams(const AudioParameter& param) { int halStatus = halSetParameters(param.toString().string()); - switch (halStatus) { - case OK: - return Result::OK; - case -EINVAL: - return Result::INVALID_ARGUMENTS; - case -ENODATA: - return Result::INVALID_STATE; - case -ENODEV: - return Result::NOT_INITIALIZED; - // The rest of the API (*::analyseStatus) returns NOT_SUPPORTED - // when the legacy API returns -ENOSYS - // However the legacy API explicitly state that for get_paramers, - // -ENOSYS should be returned if - // "the implementation does not accept a parameter change while the - // output is active but the parameter is acceptable otherwise" - case -ENOSYS: - return Result::INVALID_STATE; - default: - return Result::INVALID_ARGUMENTS; - } + return util::analyzeStatus(halStatus); } } // namespace implementation diff --git a/audio/core/all-versions/default/include/core/all-versions/default/PrimaryDevice.impl.h b/audio/core/all-versions/default/include/core/all-versions/default/PrimaryDevice.impl.h index 9b39d9c9e8..f3809e4c1c 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/PrimaryDevice.impl.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/PrimaryDevice.impl.h @@ -160,7 +160,7 @@ Return<Result> PrimaryDevice::setConnectedState(const DeviceAddress& address, bo // Methods from ::android::hardware::audio::AUDIO_HAL_VERSION::IPrimaryDevice follow. Return<Result> PrimaryDevice::setVoiceVolume(float volume) { - if (!all_versions::implementation::isGainNormalized(volume)) { + if (!isGainNormalized(volume)) { ALOGW("Can not set a voice volume (%f) outside [0,1]", volume); return Result::INVALID_ARGUMENTS; } diff --git a/audio/core/all-versions/default/include/core/all-versions/default/Stream.impl.h b/audio/core/all-versions/default/include/core/all-versions/default/Stream.impl.h index fa0ef45bec..7415112545 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/Stream.impl.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/Stream.impl.h @@ -39,35 +39,14 @@ Stream::~Stream() { // static Result Stream::analyzeStatus(const char* funcName, int status) { - static const std::vector<int> empty; - return analyzeStatus(funcName, status, empty); + return util::analyzeStatus("stream", funcName, status); } -template <typename T> -inline bool element_in(T e, const std::vector<T>& v) { - return std::find(v.begin(), v.end(), e) != v.end(); -} // static Result Stream::analyzeStatus(const char* funcName, int status, const std::vector<int>& ignoreErrors) { - if (status != 0 && (ignoreErrors.empty() || !element_in(-status, ignoreErrors))) { - ALOGW("Error from HAL stream in function %s: %s", funcName, strerror(-status)); - } - switch (status) { - case 0: - return Result::OK; - case -EINVAL: - return Result::INVALID_ARGUMENTS; - case -ENODATA: - return Result::INVALID_STATE; - case -ENODEV: - return Result::NOT_INITIALIZED; - case -ENOSYS: - return Result::NOT_SUPPORTED; - default: - return Result::INVALID_STATE; - } + return util::analyzeStatus("stream", funcName, status, ignoreErrors); } char* Stream::halGetParameters(const char* keys) { diff --git a/audio/core/all-versions/default/include/core/all-versions/default/StreamIn.impl.h b/audio/core/all-versions/default/include/core/all-versions/default/StreamIn.impl.h index 8774be904f..64c85ab5fc 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/StreamIn.impl.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/StreamIn.impl.h @@ -25,9 +25,7 @@ #include <memory> using ::android::hardware::audio::AUDIO_HAL_VERSION::MessageQueueFlagBits; -using ::android::hardware::audio::all_versions::implementation::isGainNormalized; #include "Conversions.h" -#include "Util.h" namespace android { namespace hardware { diff --git a/audio/core/all-versions/default/include/core/all-versions/default/StreamOut.impl.h b/audio/core/all-versions/default/include/core/all-versions/default/StreamOut.impl.h index 77098a8168..6fb157f7de 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/StreamOut.impl.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/StreamOut.impl.h @@ -32,7 +32,6 @@ namespace AUDIO_HAL_VERSION { namespace implementation { using ::android::hardware::audio::common::AUDIO_HAL_VERSION::ThreadInfo; -using ::android::hardware::audio::all_versions::implementation::isGainNormalized; namespace { diff --git a/audio/core/all-versions/default/include/core/all-versions/default/Util.h b/audio/core/all-versions/default/include/core/all-versions/default/Util.h index 39d9dbde00..350fd867e6 100644 --- a/audio/core/all-versions/default/include/core/all-versions/default/Util.h +++ b/audio/core/all-versions/default/include/core/all-versions/default/Util.h @@ -14,24 +14,61 @@ * limitations under the License. */ -#ifndef ANDROID_HARDWARE_AUDIO_DEVICE_ALL_VERSIONS_UTIL_H -#define ANDROID_HARDWARE_AUDIO_DEVICE_ALL_VERSIONS_UTIL_H +#include <common/all-versions/IncludeGuard.h> + +#include <algorithm> +#include <vector> + +#include <system/audio.h> namespace android { namespace hardware { namespace audio { -namespace all_versions { +namespace AUDIO_HAL_VERSION { namespace implementation { +using ::android::hardware::audio::AUDIO_HAL_VERSION::Result; + /** @return true if gain is between 0 and 1 included. */ constexpr bool isGainNormalized(float gain) { return gain >= 0.0 && gain <= 1.0; } +namespace util { + +template <typename T> +inline bool element_in(T e, const std::vector<T>& v) { + return std::find(v.begin(), v.end(), e) != v.end(); +} + +static inline Result analyzeStatus(status_t status) { + switch (status) { + case 0: + return Result::OK; + case -EINVAL: + return Result::INVALID_ARGUMENTS; + case -ENODATA: + return Result::INVALID_STATE; + case -ENODEV: + return Result::NOT_INITIALIZED; + case -ENOSYS: + return Result::NOT_SUPPORTED; + default: + return Result::INVALID_STATE; + } +} + +static inline Result analyzeStatus(const char* className, const char* funcName, status_t status, + const std::vector<int>& ignoreErrors = {}) { + if (status != 0 && !element_in(-status, ignoreErrors)) { + ALOGW("Error from HAL %s in function %s: %s", className, funcName, strerror(-status)); + } + return analyzeStatus(status); +} + +} // namespace util } // namespace implementation -} // namespace all_versions +} // namespace AUDIO_HAL_VERSION } // namespace audio } // namespace hardware } // namespace android - -#endif // ANDROID_HARDWARE_AUDIO_DEVICE_ALL_VERSIONS_UTIL_H |