diff options
author | François Gaffie <francois.gaffie@intel.com> | 2015-03-24 09:01:14 +0100 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2015-06-18 10:52:09 -0700 |
commit | 20f06f996337c9bf79d0b112083f6427a122ebab (patch) | |
tree | ad50ded183a11ceef01566a2ff78c29e89f5c4e2 /services/audiopolicy/engineconfigurable/src/InputSource.cpp | |
parent | 3fc792fe36b0b9100f74185665221b37f650ff65 (diff) | |
download | frameworks_av-20f06f996337c9bf79d0b112083f6427a122ebab.zip frameworks_av-20f06f996337c9bf79d0b112083f6427a122ebab.tar.gz frameworks_av-20f06f996337c9bf79d0b112083f6427a122ebab.tar.bz2 |
Add a configurable version of the policy engine based on PFW
This patch adds a configurable version of the policy engine
based on the parameter framework.
This configurable engine shall be activated with a flag
USE_CONFIGURABLE_AUDIO_POLICY within BoardConfig.mk
This patch provides the generic configuration as an example.
This configuration provides the same user experience as the default
policy engine.
- Fix M Issue on configurable policy engine version.
- Remove the "empty static lib include trick" hack
The code was using a hack to import headers only through an empty lib.
This trick was used not only by the PFW and its plugin but also internally
with policy.
This patch removes this hack and either links againts the real libraries if exist
or point on the path of the header.
However, since header directories are not recursively detected on Andoid, we need to manually
add all necessary libraries. (for example libicuuc needed by libxml2)
- let the build system decide which compiler and which stl is to be used
- Disable by default Audio Policy Settings XML file generation at compilation time
In order not to depend on python tool for the configurable policy example,
this patch adds the generated Settings XML file and disables the generation
from .pfw files at compile time.
If the user wishes to regenerate it, he may use the pfw_rebuild_settings
option.
- Fix Clang issues within Configurable Audio Policy
Fix compilation issues revealed when switching to CLANG compiler
within the configurable version of policy engine.
Change-Id: I3edc26db94c0bf8a76430ab8081bae52e9193705
Signed-off-by: François Gaffie <francois.gaffie@intel.com>
Diffstat (limited to 'services/audiopolicy/engineconfigurable/src/InputSource.cpp')
-rwxr-xr-x | services/audiopolicy/engineconfigurable/src/InputSource.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/services/audiopolicy/engineconfigurable/src/InputSource.cpp b/services/audiopolicy/engineconfigurable/src/InputSource.cpp new file mode 100755 index 0000000..9ff1538 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/src/InputSource.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2015 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. + */ + +#define LOG_TAG "APM::AudioPolicyEngine/InputSource" + +#include "InputSource.h" + +using std::string; + +namespace android +{ +namespace audio_policy +{ +status_t Element<audio_source_t>::setIdentifier(audio_source_t identifier) +{ + if (identifier > AUDIO_SOURCE_MAX && identifier != AUDIO_SOURCE_HOTWORD) { + return BAD_VALUE; + } + mIdentifier = identifier; + ALOGD("%s: InputSource %s identifier 0x%X", __FUNCTION__, getName().c_str(), identifier); + return NO_ERROR; +} + +/** +* Set the device associated to this source. +* It checks if the input device is valid but allows to set a NONE device +* (i.e. only the IN BIT is set). +* +* @param[in] devices selected for the given input source. +* @tparam audio_devices_t: Applicable input device for this input source. +* +* @return NO_ERROR if the device is either valid or none, error code otherwise. +*/ +template <> +status_t Element<audio_source_t>::set(audio_devices_t devices) +{ + if (!audio_is_input_device(devices) && devices != AUDIO_DEVICE_BIT_IN) { + ALOGE("%s: trying to set an invalid device 0x%X for input source %s", + __FUNCTION__, devices, getName().c_str()); + return BAD_VALUE; + } + ALOGD("%s: 0x%X for input source %s", __FUNCTION__, devices, getName().c_str()); + mApplicableDevices = devices; + return NO_ERROR; +} + +template <> +audio_devices_t Element<audio_source_t>::get<audio_devices_t>() const +{ + ALOGV("%s: 0x%X for inputSource %s", __FUNCTION__, mApplicableDevices, getName().c_str()); + return mApplicableDevices; +} +} // namespace audio_policy +} // namespace android + + |