libaudiohal: Align use of get_audio_port_v7 with default wrapper

Use the same logic when calling get_audio_port_v7
as the default wrapper, with separation for pre-V7
and V7 versions of the code.

Bug: 160352965
Test: check audio on device
      also, use a modified APM config with USB Audio on 'usb' module
Change-Id: I5a6e2164b43d086aec6ffad5300edbade04cca1f
diff --git a/media/libaudiohal/impl/DeviceHalHidl.cpp b/media/libaudiohal/impl/DeviceHalHidl.cpp
index 03a0d86..ca4f663 100644
--- a/media/libaudiohal/impl/DeviceHalHidl.cpp
+++ b/media/libaudiohal/impl/DeviceHalHidl.cpp
@@ -354,7 +354,8 @@
     return processReturn("releaseAudioPatch", mDevice->releaseAudioPatch(patch));
 }
 
-status_t DeviceHalHidl::getAudioPort(struct audio_port *port) {
+template <typename HalPort>
+status_t DeviceHalHidl::getAudioPortImpl(HalPort *port) {
     if (mDevice == 0) return NO_INIT;
     AudioPort hidlPort;
     HidlUtils::audioPortFromHal(*port, &hidlPort);
@@ -370,31 +371,28 @@
     return processReturn("getAudioPort", ret, retval);
 }
 
+status_t DeviceHalHidl::getAudioPort(struct audio_port *port) {
+    return getAudioPortImpl(port);
+}
+
 status_t DeviceHalHidl::getAudioPort(struct audio_port_v7 *port) {
-    if (mDevice == 0) return NO_INIT;
-    status_t status = NO_ERROR;
 #if MAJOR_VERSION >= 7
-    AudioPort hidlPort;
-    HidlUtils::audioPortFromHal(*port, &hidlPort);
-    Result retval;
-    Return<void> ret = mDevice->getAudioPort(
-            hidlPort,
-            [&](Result r, const AudioPort& p) {
-                retval = r;
-                if (retval == Result::OK) {
-                    HidlUtils::audioPortToHal(p, port);
-                }
-            });
-    status = processReturn("getAudioPort", ret, retval);
+    return getAudioPortImpl(port);
 #else
     struct audio_port audioPort = {};
-    audio_populate_audio_port(port, &audioPort);
-    status = getAudioPort(&audioPort);
+    status_t result = NO_ERROR;
+    if (!audio_populate_audio_port(port, &audioPort)) {
+        ALOGE("Failed to populate legacy audio port from audio_port_v7");
+        result = BAD_VALUE;
+    }
+    status_t status = getAudioPort(&audioPort);
     if (status == NO_ERROR) {
         audio_populate_audio_port_v7(&audioPort, port);
+    } else {
+        result = status;
     }
+    return result;
 #endif
-    return status;
 }
 
 status_t DeviceHalHidl::setAudioPortConfig(const struct audio_port_config *config) {