hal: Add support to handle A2DP codec config

Add support in audio HAL to respond for A2DP codec
config query from framework.

Bug: 79476124
Test: music playback over BT A2DP
Change-Id: I1dd010d7a723ef289efb0e825d094c7d64e06ee3
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 8a2562f..62b9cc2 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4643,6 +4643,7 @@
     int val;
     int ret;
     int status = 0;
+    bool a2dp_reconfig = false;
 
     ALOGV("%s: enter: %s", __func__, kvpairs);
 
@@ -4741,18 +4742,16 @@
     }
 
     audio_extn_hfp_set_parameters(adev, parms);
-    audio_extn_a2dp_set_parameters(parms);
     audio_extn_ma_set_parameters(adev, parms);
 
-    // reconfigure should be done only after updating A2DP state in audio extension
-    ret = str_parms_get_str(parms,"reconfigA2dp", value, sizeof(value));
-    if (ret >= 0) {
+    status = audio_extn_a2dp_set_parameters(parms, &a2dp_reconfig);
+    if (status >= 0 && a2dp_reconfig) {
         struct audio_usecase *usecase;
         struct listnode *node;
         list_for_each(node, &adev->usecase_list) {
             usecase = node_to_item(node, struct audio_usecase, list);
             if ((usecase->type == PCM_PLAYBACK) &&
-                (usecase->devices & AUDIO_DEVICE_OUT_BLUETOOTH_A2DP)) {
+                (usecase->devices & AUDIO_DEVICE_OUT_ALL_A2DP)) {
                 ALOGD("%s: reconfigure A2DP... forcing device switch", __func__);
 
                 pthread_mutex_unlock(&adev->lock);
@@ -4786,6 +4785,8 @@
     pthread_mutex_lock(&adev->lock);
 
     voice_get_parameters(adev, query, reply);
+    audio_extn_a2dp_get_parameters(query, reply);
+
     str = str_parms_to_str(reply);
     str_parms_destroy(query);
     str_parms_destroy(reply);