From 887a9ed4446cb451181c392a0e51a69914e58fbf Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Tue, 31 Mar 2015 18:02:24 -0700 Subject: Updates to AudioPolicyManager refactor Use protected access in AudioPolicyManager class for - engine field - querying phone state - isStrategyActive Fix inclusion of AudioPolicyManagerInterface header. Use "APM_" prefix in audio policy conf parsing code to avoid naming conflicts with some HALs. DeviceDescriptor and its collection class are good friends now. Change-Id: I236d62a2b8a4b6bf68dd515932650b912577c145 --- .../managerdefinitions/include/DeviceDescriptor.h | 2 ++ .../managerdefinitions/include/audio_policy_conf.h | 7 ++++--- .../common/managerdefinitions/src/HwModule.cpp | 4 ++-- .../audiopolicy/managerdefault/AudioPolicyManager.cpp | 4 ++++ .../audiopolicy/managerdefault/AudioPolicyManager.h | 17 +++++++++-------- 5 files changed, 21 insertions(+), 13 deletions(-) (limited to 'services') diff --git a/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h b/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h index b9e1d4a..d15f6b4 100644 --- a/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h +++ b/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h @@ -54,6 +54,8 @@ public: private: audio_devices_t mDeviceType; + +friend class DeviceVector; }; class DeviceVector : public SortedVector< sp > diff --git a/services/audiopolicy/common/managerdefinitions/include/audio_policy_conf.h b/services/audiopolicy/common/managerdefinitions/include/audio_policy_conf.h index 441bf7b..a393e3b 100644 --- a/services/audiopolicy/common/managerdefinitions/include/audio_policy_conf.h +++ b/services/audiopolicy/common/managerdefinitions/include/audio_policy_conf.h @@ -16,6 +16,7 @@ #pragma once + ///////////////////////////////////////////////// // Definitions for audio policy configuration file (audio_policy.conf) ///////////////////////////////////////////////// @@ -50,9 +51,9 @@ // "formats" in outputs descriptors indicating that supported // values should be queried after opening the output. -#define DEVICES_TAG "devices" -#define DEVICE_TYPE "type" -#define DEVICE_ADDRESS "address" +#define APM_DEVICES_TAG "devices" +#define APM_DEVICE_TYPE "type" +#define APM_DEVICE_ADDRESS "address" #define MIXERS_TAG "mixers" #define MIXER_TYPE "type" diff --git a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp index 8004303..0097d69 100644 --- a/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp +++ b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp @@ -142,7 +142,7 @@ status_t HwModule::loadDevice(cnode *root) audio_devices_t type = AUDIO_DEVICE_NONE; while (node) { - if (strcmp(node->name, DEVICE_TYPE) == 0) { + if (strcmp(node->name, APM_DEVICE_TYPE) == 0) { type = ConfigParsingUtils::parseDeviceNames((char *)node->value); break; } @@ -158,7 +158,7 @@ status_t HwModule::loadDevice(cnode *root) node = root->first_child; while (node) { - if (strcmp(node->name, DEVICE_ADDRESS) == 0) { + if (strcmp(node->name, APM_DEVICE_ADDRESS) == 0) { deviceDesc->mAddress = String8((char *)node->value); } else if (strcmp(node->name, CHANNELS_TAG) == 0) { if (audio_is_input_device(type)) { diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp index aa2e044..797a2b4 100644 --- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp +++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp @@ -521,6 +521,10 @@ void AudioPolicyManager::setPhoneState(audio_mode_t state) } } +audio_mode_t AudioPolicyManager::getPhoneState() { + return mEngine->getPhoneState(); +} + void AudioPolicyManager::setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config) { diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h index dcd74f0..02b678a 100644 --- a/services/audiopolicy/managerdefault/AudioPolicyManager.h +++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h @@ -27,6 +27,7 @@ #include #include "AudioPolicyInterface.h" +#include #include #include #include @@ -44,8 +45,6 @@ namespace android { -class AudioPolicyManagerInterface; - // ---------------------------------------------------------------------------- // Attenuation applied to STRATEGY_SONIFICATION streams when a headset is connected: 6dB @@ -284,6 +283,9 @@ protected: virtual audio_devices_t getDeviceForStrategy(routing_strategy strategy, bool fromCache); + bool isStrategyActive(const sp outputDesc, routing_strategy strategy, + uint32_t inPastMs = 0, nsecs_t sysTime = 0) const; + // change the route of the specified output. Returns the number of ms we have slept to // allow new routing to take effect in certain cases. virtual uint32_t setOutputDevice(audio_io_handle_t output, @@ -337,6 +339,8 @@ protected: // a special tone in the device used for communication void handleIncallSonification(audio_stream_type_t stream, bool starting, bool stateChange); + audio_mode_t getPhoneState(); + // true if device is in a telephony or VoIP call virtual bool isInCall(); // true if given state represents a device in a telephony or VoIP call @@ -523,6 +527,9 @@ protected: #endif //AUDIO_POLICY_TEST uint32_t nextAudioPortGeneration(); + + // Audio Policy Engine Interface. + AudioPolicyManagerInterface *mEngine; private: // updates device caching and output for streams that can influence the // routing of notifications @@ -566,12 +573,6 @@ private: audio_policy_dev_state_t state, const char *device_address, const char *device_name); - - bool isStrategyActive(const sp outputDesc, routing_strategy strategy, - uint32_t inPastMs = 0, nsecs_t sysTime = 0) const; - - // Audio Policy Engine Interface. - AudioPolicyManagerInterface *mEngine; }; }; -- cgit v1.1