Revert "audiohal: Get rid of multiple inheritance in IDevice implementation"

This reverts commit e4228e7aa683044e17e6592c9014b5d4691445e7.

Further analysis of the bug has shown that the problem is not related
to the use of multiple inheritance.

Bug: 36225019
Change-Id: Icdcaf84061c0ecf29f891521bd961c3ee89f1cfc
diff --git a/audio/2.0/default/Device.h b/audio/2.0/default/Device.h
index 748f96b..7738361 100644
--- a/audio/2.0/default/Device.h
+++ b/audio/2.0/default/Device.h
@@ -27,14 +27,14 @@
 
 #include <hidl/MQDescriptor.h>
 
+#include "ParametersUtil.h"
+
 namespace android {
 namespace hardware {
 namespace audio {
 namespace V2_0 {
 namespace implementation {
 
-class ParametersUtil;
-
 using ::android::hardware::audio::common::V2_0::AudioConfig;
 using ::android::hardware::audio::common::V2_0::AudioHwSync;
 using ::android::hardware::audio::common::V2_0::AudioInputFlag;
@@ -55,7 +55,7 @@
 using ::android::hardware::hidl_string;
 using ::android::sp;
 
-struct Device : public IDevice {
+struct Device : public IDevice, public ParametersUtil {
     explicit Device(audio_hw_device_t* device);
 
     // Methods from ::android::hardware::audio::V2_0::IDevice follow.
@@ -101,19 +101,16 @@
     void closeInputStream(audio_stream_in_t* stream);
     void closeOutputStream(audio_stream_out_t* stream);
     audio_hw_device_t* device() const { return mDevice; }
-    Result getParam(const char* name, bool* value);
-    Result getParam(const char* name, int* value);
-    Result getParam(const char* name, String8* value);
-    Result setParam(const char* name, bool value);
-    Result setParam(const char* name, int value);
-    Result setParam(const char* name, const char* value);
 
-   private:
+  private:
     audio_hw_device_t *mDevice;
-    std::unique_ptr<ParametersUtil> mParameters;
 
     virtual ~Device();
 
+    // Methods from ParametersUtil.
+    char* halGetParameters(const char* keys) override;
+    int halSetParameters(const char* keysAndValues) override;
+
     uint32_t version() const { return mDevice->common.version; }
 };