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_extn/a2dp.c b/hal/audio_extn/a2dp.c
index 8dc4a26..16f4826 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -1370,7 +1370,6 @@
ALOGD("%s: calling Bluetooth module stream start", __func__);
/* This call indicates Bluetooth IPC lib to start playback */
ret = a2dp.audio_stream_start();
- ALOGE("%s: Bluetooth controller start return = %d", __func__, ret);
if (ret != 0 ) {
ALOGE("%s: Bluetooth controller start failed", __func__);
a2dp.a2dp_started = false;
@@ -1457,16 +1456,17 @@
return 0;
}
-void audio_extn_a2dp_set_parameters(struct str_parms *parms)
+int audio_extn_a2dp_set_parameters(struct str_parms *parms, bool *reconfig)
{
- int ret, val;
+ int ret = 0, val;
char value[32] = {0};
struct audio_usecase *uc_info;
struct listnode *node;
if (a2dp.is_a2dp_offload_enabled == false) {
ALOGV("%s: No supported encoders identified,ignoring A2DP setparam", __func__);
- return;
+ ret = -EINVAL;
+ goto param_handled;
}
ret = str_parms_get_str(parms, AUDIO_PARAMETER_DEVICE_CONNECT, value,
@@ -1562,8 +1562,20 @@
}
goto param_handled;
}
+
+ ret = str_parms_get_str(parms, AUDIO_PARAMETER_RECONFIG_A2DP, value,
+ sizeof(value));
+ if (ret >= 0) {
+ if (a2dp.is_a2dp_offload_enabled &&
+ a2dp.bt_state != A2DP_STATE_DISCONNECTED) {
+ *reconfig = true;
+ }
+ goto param_handled;
+ }
+
param_handled:
ALOGV("%s: end of A2DP setparam", __func__);
+ return ret;
}
void audio_extn_a2dp_set_handoff_mode(bool is_on)
@@ -1664,4 +1676,21 @@
}
return latency;
}
+
+int audio_extn_a2dp_get_parameters(struct str_parms *query,
+ struct str_parms *reply)
+{
+ int ret, val = 0;
+ char value[32]={0};
+
+ ret = str_parms_get_str(query, AUDIO_PARAMETER_A2DP_RECONFIG_SUPPORTED,
+ value, sizeof(value));
+ if (ret >= 0) {
+ val = a2dp.is_a2dp_offload_enabled;
+ str_parms_add_int(reply, AUDIO_PARAMETER_A2DP_RECONFIG_SUPPORTED, val);
+ ALOGV("%s: called ... isReconfigA2dpSupported %d", __func__, val);
+ }
+
+ return 0;
+}
#endif // A2DP_OFFLOAD_ENABLED