Split ManagerDefault into Manager and ManagerDefinitions

This patch splits the managerdefault into a manager and a manager
defintion library that contains all pillar elements of a policy manager.

It renames the file with the name of the main class they contains.

It splits the AudioPort into AudioPort and AudioPatch.

Change-Id: I992cf0b8aed895805cc003ba0980d2c9e92c985b
Signed-off-by: François Gaffie <francois.gaffie@intel.com>
diff --git a/media/mediaserver/Android.mk b/media/mediaserver/Android.mk
index baf65f6..0f36a90 100644
--- a/media/mediaserver/Android.mk
+++ b/media/mediaserver/Android.mk
@@ -31,13 +31,14 @@
 	libradioservice
 
 LOCAL_STATIC_LIBRARIES := \
-	libregistermsext
+        libregistermsext
 
 LOCAL_C_INCLUDES := \
     frameworks/av/media/libmediaplayerservice \
     frameworks/av/services/medialog \
     frameworks/av/services/audioflinger \
     frameworks/av/services/audiopolicy \
+    frameworks/av/services/audiopolicy/common/managerdefinitions/include \
     frameworks/av/services/camera/libcameraservice \
     frameworks/av/services/mediaresourcemanager \
     $(call include-path-for, audio-utils) \
diff --git a/services/audiopolicy/Android.mk b/services/audiopolicy/Android.mk
index 351ed79..fb56fd8 100644
--- a/services/audiopolicy/Android.mk
+++ b/services/audiopolicy/Android.mk
@@ -16,6 +16,7 @@
 LOCAL_SRC_FILES += \
     service/AudioPolicyInterfaceImpl.cpp \
     service/AudioPolicyClientImpl.cpp
+
 endif
 
 LOCAL_C_INCLUDES := \
@@ -39,7 +40,8 @@
 endif
 
 LOCAL_STATIC_LIBRARIES := \
-    libmedia_helper
+    libmedia_helper \
+    libaudiopolicycomponents
 
 LOCAL_MODULE:= libaudiopolicyservice
 
@@ -54,14 +56,6 @@
 
 LOCAL_SRC_FILES:= \
     managerdefault/AudioPolicyManager.cpp \
-    managerdefault/ConfigParsingUtils.cpp \
-    managerdefault/Devices.cpp \
-    managerdefault/Gains.cpp \
-    managerdefault/HwModule.cpp \
-    managerdefault/IOProfile.cpp \
-    managerdefault/Ports.cpp \
-    managerdefault/AudioInputDescriptor.cpp \
-    managerdefault/AudioOutputDescriptor.cpp
 
 LOCAL_SHARED_LIBRARIES := \
     libcutils \
@@ -70,7 +64,8 @@
     libsoundtrigger
 
 LOCAL_STATIC_LIBRARIES := \
-    libmedia_helper
+    libmedia_helper \
+    libaudiopolicycomponents
 
 LOCAL_MODULE:= libaudiopolicymanagerdefault
 
@@ -86,9 +81,17 @@
 LOCAL_SHARED_LIBRARIES := \
     libaudiopolicymanagerdefault
 
+LOCAL_STATIC_LIBRARIES := \
+    libaudiopolicycomponents
+
 LOCAL_MODULE:= libaudiopolicymanager
 
 include $(BUILD_SHARED_LIBRARY)
 
 endif
 endif
+
+#######################################################################
+# Recursive call sub-folder Android.mk
+#
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/services/audiopolicy/common/Android.mk b/services/audiopolicy/common/Android.mk
new file mode 100644
index 0000000..dcce8e3
--- /dev/null
+++ b/services/audiopolicy/common/Android.mk
@@ -0,0 +1,9 @@
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+#######################################################################
+# Recursive call sub-folder Android.mk
+#
+include $(call all-makefiles-under,$(LOCAL_PATH))
+
diff --git a/services/audiopolicy/common/managerdefinitions/Android.mk b/services/audiopolicy/common/managerdefinitions/Android.mk
new file mode 100644
index 0000000..d9d1477
--- /dev/null
+++ b/services/audiopolicy/common/managerdefinitions/Android.mk
@@ -0,0 +1,29 @@
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= \
+    src/DeviceDescriptor.cpp \
+    src/AudioGain.cpp \
+    src/HwModule.cpp \
+    src/IOProfile.cpp \
+    src/AudioPort.cpp \
+    src/AudioPatch.cpp \
+    src/AudioInputDescriptor.cpp \
+    src/AudioOutputDescriptor.cpp \
+    src/ConfigParsingUtils.cpp \
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libutils \
+    liblog \
+
+LOCAL_C_INCLUDES += \
+    $(LOCAL_PATH)/include \
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+    $(LOCAL_PATH)/include
+
+LOCAL_MODULE := libaudiopolicycomponents
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/services/audiopolicy/managerdefault/ApmImplDefinitions.h b/services/audiopolicy/common/managerdefinitions/include/ApmImplDefinitions.h
similarity index 100%
rename from services/audiopolicy/managerdefault/ApmImplDefinitions.h
rename to services/audiopolicy/common/managerdefinitions/include/ApmImplDefinitions.h
diff --git a/services/audiopolicy/managerdefault/Gains.h b/services/audiopolicy/common/managerdefinitions/include/AudioGain.h
similarity index 100%
rename from services/audiopolicy/managerdefault/Gains.h
rename to services/audiopolicy/common/managerdefinitions/include/AudioGain.h
diff --git a/services/audiopolicy/managerdefault/AudioInputDescriptor.h b/services/audiopolicy/common/managerdefinitions/include/AudioInputDescriptor.h
similarity index 96%
rename from services/audiopolicy/managerdefault/AudioInputDescriptor.h
rename to services/audiopolicy/common/managerdefinitions/include/AudioInputDescriptor.h
index ce96228..599c295 100644
--- a/services/audiopolicy/managerdefault/AudioInputDescriptor.h
+++ b/services/audiopolicy/common/managerdefinitions/include/AudioInputDescriptor.h
@@ -16,7 +16,7 @@
 
 #pragma once
 
-#include "Ports.h"
+#include "AudioPort.h"
 #include <utils/Errors.h>
 #include <system/audio.h>
 #include <utils/SortedVector.h>
@@ -32,6 +32,7 @@
 {
 public:
     AudioInputDescriptor(const sp<IOProfile>& profile);
+    void setIoHandle(audio_io_handle_t ioHandle);
 
     status_t    dump(int fd);
 
diff --git a/services/audiopolicy/managerdefault/AudioOutputDescriptor.h b/services/audiopolicy/common/managerdefinitions/include/AudioOutputDescriptor.h
similarity index 97%
rename from services/audiopolicy/managerdefault/AudioOutputDescriptor.h
rename to services/audiopolicy/common/managerdefinitions/include/AudioOutputDescriptor.h
index f7a06ee..8469b81 100644
--- a/services/audiopolicy/managerdefault/AudioOutputDescriptor.h
+++ b/services/audiopolicy/common/managerdefinitions/include/AudioOutputDescriptor.h
@@ -16,7 +16,7 @@
 
 #pragma once
 
-#include "Ports.h"
+#include "AudioPort.h"
 #include "ApmImplDefinitions.h"
 #include <utils/Errors.h>
 #include <utils/Timers.h>
@@ -39,6 +39,7 @@
     audio_devices_t device() const;
     void changeRefCount(audio_stream_type_t stream, int delta);
 
+    void setIoHandle(audio_io_handle_t ioHandle);
     bool isDuplicated() const { return (mOutput1 != NULL && mOutput2 != NULL); }
     audio_devices_t supportedDevices();
     uint32_t latency();
diff --git a/services/audiopolicy/common/managerdefinitions/include/AudioPatch.h b/services/audiopolicy/common/managerdefinitions/include/AudioPatch.h
new file mode 100644
index 0000000..6e8fb32
--- /dev/null
+++ b/services/audiopolicy/common/managerdefinitions/include/AudioPatch.h
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <system/audio.h>
+#include <utils/RefBase.h>
+#include <utils/Errors.h>
+
+namespace android {
+
+class AudioPatch : public RefBase
+{
+public:
+    AudioPatch(const struct audio_patch *patch, uid_t uid);
+
+    status_t dump(int fd, int spaces, int index) const;
+
+    audio_patch_handle_t mHandle;
+    struct audio_patch mPatch;
+    uid_t mUid;
+    audio_patch_handle_t mAfPatchHandle;
+
+private:
+    static volatile int32_t mNextUniqueId;
+};
+
+}; // namespace android
diff --git a/services/audiopolicy/managerdefault/Ports.h b/services/audiopolicy/common/managerdefinitions/include/AudioPort.h
similarity index 92%
rename from services/audiopolicy/managerdefault/Ports.h
rename to services/audiopolicy/common/managerdefinitions/include/AudioPort.h
index 6e0e2fe..52e845c 100644
--- a/services/audiopolicy/managerdefault/Ports.h
+++ b/services/audiopolicy/common/managerdefinitions/include/AudioPort.h
@@ -43,6 +43,8 @@
     void attach(const sp<HwModule>& module);
     bool isAttached() { return mId != 0; }
 
+    static audio_port_handle_t getNextUniqueId();
+
     virtual void toAudioPort(struct audio_port *port) const;
 
     void importAudioPort(const sp<AudioPort> port);
@@ -121,18 +123,4 @@
     struct audio_gain_config mGain;
 };
 
-
-class AudioPatch: public RefBase
-{
-public:
-    AudioPatch(audio_patch_handle_t handle, const struct audio_patch *patch, uid_t uid);
-
-    status_t dump(int fd, int spaces, int index) const;
-
-    audio_patch_handle_t mHandle;
-    struct audio_patch mPatch;
-    uid_t mUid;
-    audio_patch_handle_t mAfPatchHandle;
-};
-
 }; // namespace android
diff --git a/services/audiopolicy/managerdefault/ConfigParsingUtils.h b/services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h
similarity index 100%
rename from services/audiopolicy/managerdefault/ConfigParsingUtils.h
rename to services/audiopolicy/common/managerdefinitions/include/ConfigParsingUtils.h
diff --git a/services/audiopolicy/managerdefault/Devices.h b/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
similarity index 98%
rename from services/audiopolicy/managerdefault/Devices.h
rename to services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
index 7ccf559..e63ea2b 100644
--- a/services/audiopolicy/managerdefault/Devices.h
+++ b/services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h
@@ -16,7 +16,7 @@
 
 #pragma once
 
-#include "Ports.h"
+#include "AudioPort.h"
 #include <utils/Errors.h>
 #include <utils/String8.h>
 #include <utils/SortedVector.h>
diff --git a/services/audiopolicy/managerdefault/HwModule.h b/services/audiopolicy/common/managerdefinitions/include/HwModule.h
similarity index 98%
rename from services/audiopolicy/managerdefault/HwModule.h
rename to services/audiopolicy/common/managerdefinitions/include/HwModule.h
index d9e6cdf..3d4e2ad 100644
--- a/services/audiopolicy/managerdefault/HwModule.h
+++ b/services/audiopolicy/common/managerdefinitions/include/HwModule.h
@@ -16,7 +16,7 @@
 
 #pragma once
 
-#include "Devices.h"
+#include "DeviceDescriptor.h"
 #include <utils/RefBase.h>
 #include <utils/String8.h>
 #include <utils/Errors.h>
diff --git a/services/audiopolicy/managerdefault/IOProfile.h b/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
similarity index 97%
rename from services/audiopolicy/managerdefault/IOProfile.h
rename to services/audiopolicy/common/managerdefinitions/include/IOProfile.h
index a9d93d1..095e759 100644
--- a/services/audiopolicy/managerdefault/IOProfile.h
+++ b/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
@@ -16,8 +16,8 @@
 
 #pragma once
 
-#include "Ports.h"
-#include "Devices.h"
+#include "AudioPort.h"
+#include "DeviceDescriptor.h"
 #include <utils/String8.h>
 #include <system/audio.h>
 
diff --git a/services/audiopolicy/managerdefault/audio_policy_conf.h b/services/audiopolicy/common/managerdefinitions/include/audio_policy_conf.h
similarity index 100%
rename from services/audiopolicy/managerdefault/audio_policy_conf.h
rename to services/audiopolicy/common/managerdefinitions/include/audio_policy_conf.h
diff --git a/services/audiopolicy/managerdefault/Gains.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioGain.cpp
similarity index 98%
rename from services/audiopolicy/managerdefault/Gains.cpp
rename to services/audiopolicy/common/managerdefinitions/src/AudioGain.cpp
index 98a8d1c..ebd3548 100644
--- a/services/audiopolicy/managerdefault/Gains.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioGain.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "APM::Gains"
+#define LOG_TAG "APM::AudioGain"
 //#define LOG_NDEBUG 0
 
 //#define VERY_VERBOSE_LOGGING
@@ -24,7 +24,7 @@
 #define ALOGVV(a...) do { } while(0)
 #endif
 
-#include "Gains.h"
+#include "AudioGain.h"
 #include <utils/Log.h>
 #include <utils/String8.h>
 
diff --git a/services/audiopolicy/managerdefault/AudioInputDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp
similarity index 95%
rename from services/audiopolicy/managerdefault/AudioInputDescriptor.cpp
rename to services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp
index ce6b1e7..fa7761a 100644
--- a/services/audiopolicy/managerdefault/AudioInputDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp
@@ -19,7 +19,7 @@
 
 #include "AudioInputDescriptor.h"
 #include "IOProfile.h"
-#include "Gains.h"
+#include "AudioGain.h"
 #include "HwModule.h"
 #include <media/AudioPolicy.h>
 
@@ -40,6 +40,12 @@
     }
 }
 
+void AudioInputDescriptor::setIoHandle(audio_io_handle_t ioHandle)
+{
+    mId = AudioPort::getNextUniqueId();
+    mIoHandle = ioHandle;
+}
+
 void AudioInputDescriptor::toAudioPortConfig(
                                                    struct audio_port_config *dstConfig,
                                                    const struct audio_port_config *srcConfig) const
diff --git a/services/audiopolicy/managerdefault/AudioOutputDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
similarity index 97%
rename from services/audiopolicy/managerdefault/AudioOutputDescriptor.cpp
rename to services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
index 4dd9316..4c5509d 100644
--- a/services/audiopolicy/managerdefault/AudioOutputDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
@@ -19,7 +19,7 @@
 
 #include "AudioOutputDescriptor.h"
 #include "IOProfile.h"
-#include "Gains.h"
+#include "AudioGain.h"
 #include "HwModule.h"
 #include <media/AudioPolicy.h>
 
@@ -62,6 +62,12 @@
     }
 }
 
+void AudioOutputDescriptor::setIoHandle(audio_io_handle_t ioHandle)
+{
+    mId = AudioPort::getNextUniqueId();
+    mIoHandle = ioHandle;
+}
+
 uint32_t AudioOutputDescriptor::latency()
 {
     if (isDuplicated()) {
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp
new file mode 100644
index 0000000..89e7f81
--- /dev/null
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioPatch.cpp
@@ -0,0 +1,84 @@
+/*
+ * 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::AudioPatch"
+//#define LOG_NDEBUG 0
+
+#include "AudioPatch.h"
+#include "ConfigParsingUtils.h"
+#include <cutils/log.h>
+#include <utils/String8.h>
+
+namespace android {
+
+int32_t volatile AudioPatch::mNextUniqueId = 1;
+
+AudioPatch::AudioPatch(const struct audio_patch *patch, uid_t uid) :
+    mHandle(static_cast<audio_patch_handle_t>(android_atomic_inc(&mNextUniqueId))),
+    mPatch(*patch),
+    mUid(uid),
+    mAfPatchHandle(0)
+{
+}
+
+status_t AudioPatch::dump(int fd, int spaces, int index) const
+{
+    const size_t SIZE = 256;
+    char buffer[SIZE];
+    String8 result;
+
+    snprintf(buffer, SIZE, "%*sAudio patch %d:\n", spaces, "", index+1);
+    result.append(buffer);
+    snprintf(buffer, SIZE, "%*s- handle: %2d\n", spaces, "", mHandle);
+    result.append(buffer);
+    snprintf(buffer, SIZE, "%*s- audio flinger handle: %2d\n", spaces, "", mAfPatchHandle);
+    result.append(buffer);
+    snprintf(buffer, SIZE, "%*s- owner uid: %2d\n", spaces, "", mUid);
+    result.append(buffer);
+    snprintf(buffer, SIZE, "%*s- %d sources:\n", spaces, "", mPatch.num_sources);
+    result.append(buffer);
+    for (size_t i = 0; i < mPatch.num_sources; i++) {
+        if (mPatch.sources[i].type == AUDIO_PORT_TYPE_DEVICE) {
+            snprintf(buffer, SIZE, "%*s- Device ID %d %s\n", spaces + 2, "",
+                     mPatch.sources[i].id, ConfigParsingUtils::enumToString(sDeviceNameToEnumTable,
+                                                        ARRAY_SIZE(sDeviceNameToEnumTable),
+                                                        mPatch.sources[i].ext.device.type));
+        } else {
+            snprintf(buffer, SIZE, "%*s- Mix ID %d I/O handle %d\n", spaces + 2, "",
+                     mPatch.sources[i].id, mPatch.sources[i].ext.mix.handle);
+        }
+        result.append(buffer);
+    }
+    snprintf(buffer, SIZE, "%*s- %d sinks:\n", spaces, "", mPatch.num_sinks);
+    result.append(buffer);
+    for (size_t i = 0; i < mPatch.num_sinks; i++) {
+        if (mPatch.sinks[i].type == AUDIO_PORT_TYPE_DEVICE) {
+            snprintf(buffer, SIZE, "%*s- Device ID %d %s\n", spaces + 2, "",
+                     mPatch.sinks[i].id, ConfigParsingUtils::enumToString(sDeviceNameToEnumTable,
+                                                        ARRAY_SIZE(sDeviceNameToEnumTable),
+                                                        mPatch.sinks[i].ext.device.type));
+        } else {
+            snprintf(buffer, SIZE, "%*s- Mix ID %d I/O handle %d\n", spaces + 2, "",
+                     mPatch.sinks[i].id, mPatch.sinks[i].ext.mix.handle);
+        }
+        result.append(buffer);
+    }
+
+    write(fd, result.string(), result.size());
+    return NO_ERROR;
+}
+
+}; // namespace android
diff --git a/services/audiopolicy/managerdefault/Ports.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioPort.cpp
similarity index 90%
rename from services/audiopolicy/managerdefault/Ports.cpp
rename to services/audiopolicy/common/managerdefinitions/src/AudioPort.cpp
index 326f9c5..d34aac1 100644
--- a/services/audiopolicy/managerdefault/Ports.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioPort.cpp
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "APM::Ports"
+#define LOG_TAG "APM::AudioPort"
 //#define LOG_NDEBUG 0
 
-#include "Ports.h"
+#include "AudioPort.h"
 #include "HwModule.h"
-#include "Gains.h"
+#include "AudioGain.h"
 #include "ConfigParsingUtils.h"
 #include "audio_policy_conf.h"
 
@@ -37,11 +37,17 @@
                     ((type == AUDIO_PORT_TYPE_MIX) && (role == AUDIO_PORT_ROLE_SINK));
 }
 
-void AudioPort::attach(const sp<HwModule>& module) {
-    mId = android_atomic_inc(&mNextUniqueId);
+void AudioPort::attach(const sp<HwModule>& module)
+{
+    mId = getNextUniqueId();
     mModule = module;
 }
 
+audio_port_handle_t AudioPort::getNextUniqueId()
+{
+    return static_cast<audio_port_handle_t>(android_atomic_inc(&mNextUniqueId));
+}
+
 void AudioPort::toAudioPort(struct audio_port *port) const
 {
     port->role = mRole;
@@ -789,60 +795,4 @@
     }
 }
 
-
-// --- AudioPatch class implementation
-
-AudioPatch::AudioPatch(audio_patch_handle_t handle,
-            const struct audio_patch *patch, uid_t uid) :
-                mHandle(handle), mPatch(*patch), mUid(uid), mAfPatchHandle(0)
-{}
-
-status_t AudioPatch::dump(int fd, int spaces, int index) const
-{
-    const size_t SIZE = 256;
-    char buffer[SIZE];
-    String8 result;
-
-    snprintf(buffer, SIZE, "%*sAudio patch %d:\n", spaces, "", index+1);
-    result.append(buffer);
-    snprintf(buffer, SIZE, "%*s- handle: %2d\n", spaces, "", mHandle);
-    result.append(buffer);
-    snprintf(buffer, SIZE, "%*s- audio flinger handle: %2d\n", spaces, "", mAfPatchHandle);
-    result.append(buffer);
-    snprintf(buffer, SIZE, "%*s- owner uid: %2d\n", spaces, "", mUid);
-    result.append(buffer);
-    snprintf(buffer, SIZE, "%*s- %d sources:\n", spaces, "", mPatch.num_sources);
-    result.append(buffer);
-    for (size_t i = 0; i < mPatch.num_sources; i++) {
-        if (mPatch.sources[i].type == AUDIO_PORT_TYPE_DEVICE) {
-            snprintf(buffer, SIZE, "%*s- Device ID %d %s\n", spaces + 2, "",
-                     mPatch.sources[i].id, ConfigParsingUtils::enumToString(sDeviceNameToEnumTable,
-                                                        ARRAY_SIZE(sDeviceNameToEnumTable),
-                                                        mPatch.sources[i].ext.device.type));
-        } else {
-            snprintf(buffer, SIZE, "%*s- Mix ID %d I/O handle %d\n", spaces + 2, "",
-                     mPatch.sources[i].id, mPatch.sources[i].ext.mix.handle);
-        }
-        result.append(buffer);
-    }
-    snprintf(buffer, SIZE, "%*s- %d sinks:\n", spaces, "", mPatch.num_sinks);
-    result.append(buffer);
-    for (size_t i = 0; i < mPatch.num_sinks; i++) {
-        if (mPatch.sinks[i].type == AUDIO_PORT_TYPE_DEVICE) {
-            snprintf(buffer, SIZE, "%*s- Device ID %d %s\n", spaces + 2, "",
-                     mPatch.sinks[i].id, ConfigParsingUtils::enumToString(sDeviceNameToEnumTable,
-                                                        ARRAY_SIZE(sDeviceNameToEnumTable),
-                                                        mPatch.sinks[i].ext.device.type));
-        } else {
-            snprintf(buffer, SIZE, "%*s- Mix ID %d I/O handle %d\n", spaces + 2, "",
-                     mPatch.sinks[i].id, mPatch.sinks[i].ext.mix.handle);
-        }
-        result.append(buffer);
-    }
-
-    write(fd, result.string(), result.size());
-    return NO_ERROR;
-}
-
-
 }; // namespace android
diff --git a/services/audiopolicy/managerdefault/ConfigParsingUtils.cpp b/services/audiopolicy/common/managerdefinitions/src/ConfigParsingUtils.cpp
similarity index 100%
rename from services/audiopolicy/managerdefault/ConfigParsingUtils.cpp
rename to services/audiopolicy/common/managerdefinitions/src/ConfigParsingUtils.cpp
diff --git a/services/audiopolicy/managerdefault/Devices.cpp b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
similarity index 98%
rename from services/audiopolicy/managerdefault/Devices.cpp
rename to services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
index 574cff5..7f098ab 100644
--- a/services/audiopolicy/managerdefault/Devices.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
@@ -17,8 +17,8 @@
 #define LOG_TAG "APM::Devices"
 //#define LOG_NDEBUG 0
 
-#include "Devices.h"
-#include "Gains.h"
+#include "DeviceDescriptor.h"
+#include "AudioGain.h"
 #include "HwModule.h"
 #include "ConfigParsingUtils.h"
 
diff --git a/services/audiopolicy/managerdefault/HwModule.cpp b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
similarity index 99%
rename from services/audiopolicy/managerdefault/HwModule.cpp
rename to services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
index 39dc889..a0ea185 100644
--- a/services/audiopolicy/managerdefault/HwModule.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/HwModule.cpp
@@ -19,7 +19,7 @@
 
 #include "HwModule.h"
 #include "IOProfile.h"
-#include "Gains.h"
+#include "AudioGain.h"
 #include "ConfigParsingUtils.h"
 #include "audio_policy_conf.h"
 #include <hardware/audio.h>
diff --git a/services/audiopolicy/managerdefault/IOProfile.cpp b/services/audiopolicy/common/managerdefinitions/src/IOProfile.cpp
similarity index 99%
rename from services/audiopolicy/managerdefault/IOProfile.cpp
rename to services/audiopolicy/common/managerdefinitions/src/IOProfile.cpp
index f82ff92..0214a2b 100644
--- a/services/audiopolicy/managerdefault/IOProfile.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/IOProfile.cpp
@@ -19,7 +19,7 @@
 
 #include "IOProfile.h"
 #include "HwModule.h"
-#include "Gains.h"
+#include "AudioGain.h"
 
 namespace android {
 
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 730d32f..a110ada 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -393,8 +393,7 @@
         ALOGW_IF(status != NO_ERROR, "updateCallRouting() error %d creating RX audio patch",
                                                status);
         if (status == NO_ERROR) {
-            mCallRxPatch = new AudioPatch((audio_patch_handle_t)nextUniqueId(),
-                                       &patch, mUidCached);
+            mCallRxPatch = new AudioPatch(&patch, mUidCached);
             mCallRxPatch->mAfPatchHandle = afPatchHandle;
             mCallRxPatch->mUid = mUidCached;
         }
@@ -436,8 +435,7 @@
         ALOGW_IF(status != NO_ERROR, "setPhoneState() error %d creating TX audio patch",
                                                status);
         if (status == NO_ERROR) {
-            mCallTxPatch = new AudioPatch((audio_patch_handle_t)nextUniqueId(),
-                                       &patch, mUidCached);
+            mCallTxPatch = new AudioPatch(&patch, mUidCached);
             mCallTxPatch->mAfPatchHandle = afPatchHandle;
             mCallTxPatch->mUid = mUidCached;
         }
@@ -2634,8 +2632,7 @@
                                                                   status, afPatchHandle);
             if (status == NO_ERROR) {
                 if (index < 0) {
-                    patchDesc = new AudioPatch((audio_patch_handle_t)nextUniqueId(),
-                                               &newPatch, uid);
+                    patchDesc = new AudioPatch(&newPatch, uid);
                     addAudioPatch(patchDesc->mHandle, patchDesc);
                 } else {
                     patchDesc->mPatch = newPatch;
@@ -2880,19 +2877,11 @@
 // ----------------------------------------------------------------------------
 // AudioPolicyManager
 // ----------------------------------------------------------------------------
-
-uint32_t AudioPolicyManager::nextUniqueId()
-{
-    return android_atomic_inc(&mNextUniqueId);
-}
-
 uint32_t AudioPolicyManager::nextAudioPortGeneration()
 {
     return android_atomic_inc(&mAudioPortGeneration);
 }
 
-int32_t volatile AudioPolicyManager::mNextUniqueId = 1;
-
 AudioPolicyManager::AudioPolicyManager(AudioPolicyClientInterface *clientInterface)
     :
 #ifdef AUDIO_POLICY_TEST
@@ -3314,16 +3303,14 @@
 
 void AudioPolicyManager::addOutput(audio_io_handle_t output, sp<AudioOutputDescriptor> outputDesc)
 {
-    outputDesc->mIoHandle = output;
-    outputDesc->mId = nextUniqueId();
+    outputDesc->setIoHandle(output);
     mOutputs.add(output, outputDesc);
     nextAudioPortGeneration();
 }
 
 void AudioPolicyManager::addInput(audio_io_handle_t input, sp<AudioInputDescriptor> inputDesc)
 {
-    inputDesc->mIoHandle = input;
-    inputDesc->mId = nextUniqueId();
+    inputDesc->setIoHandle(input);
     mInputs.add(input, inputDesc);
     nextAudioPortGeneration();
 }
@@ -4827,8 +4814,7 @@
                                        status, afPatchHandle, patch.num_sources, patch.num_sinks);
             if (status == NO_ERROR) {
                 if (index < 0) {
-                    patchDesc = new AudioPatch((audio_patch_handle_t)nextUniqueId(),
-                                               &patch, mUidCached);
+                    patchDesc = new AudioPatch(&patch, mUidCached);
                     addAudioPatch(patchDesc->mHandle, patchDesc);
                 } else {
                     patchDesc->mPatch = patch;
@@ -4934,8 +4920,7 @@
                                                                           status, afPatchHandle);
             if (status == NO_ERROR) {
                 if (index < 0) {
-                    patchDesc = new AudioPatch((audio_patch_handle_t)nextUniqueId(),
-                                               &patch, mUidCached);
+                    patchDesc = new AudioPatch(&patch, mUidCached);
                     addAudioPatch(patchDesc->mHandle, patchDesc);
                 } else {
                     patchDesc->mPatch = patch;
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
index 8308d54..279dc93 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
@@ -27,14 +27,15 @@
 #include <media/AudioPolicy.h>
 #include "AudioPolicyInterface.h"
 
-#include "Gains.h"
-#include "Ports.h"
-#include "ConfigParsingUtils.h"
-#include "Devices.h"
-#include "IOProfile.h"
-#include "HwModule.h"
-#include "AudioInputDescriptor.h"
-#include "AudioOutputDescriptor.h"
+#include <AudioGain.h>
+#include <AudioPort.h>
+#include <AudioPatch.h>
+#include <ConfigParsingUtils.h>
+#include <DeviceDescriptor.h>
+#include <IOProfile.h>
+#include <HwModule.h>
+#include <AudioInputDescriptor.h>
+#include <AudioOutputDescriptor.h>
 
 namespace android {
 
@@ -208,8 +209,6 @@
 
                 // return the strategy corresponding to a given stream type
                 static routing_strategy getStrategy(audio_stream_type_t stream);
-
-                static uint32_t nextUniqueId();
 protected:
 
         class EffectDescriptor : public RefBase
@@ -453,7 +452,6 @@
                                 // to boost soft sounds, used to adjust volume curves accordingly
 
         Vector < sp<HwModule> > mHwModules;
-        static volatile int32_t mNextUniqueId;
         volatile int32_t mAudioPortGeneration;
 
         DefaultKeyedVector<audio_patch_handle_t, sp<AudioPatch> > mAudioPatches;