Use proper sockets for A2DP and Hearing Aid HAL
Test: bond both Hearing Aid and Headset, try to stream to devices separately
Bug: 69623109
Change-Id: I81c9baa65d2ef114d4e964db29beb85def2629ae
diff --git a/bta/hearing_aid/hearing_aid_audio_source.cc b/bta/hearing_aid/hearing_aid_audio_source.cc
index 276957b..1c2d2bc 100644
--- a/bta/hearing_aid/hearing_aid_audio_source.cc
+++ b/bta/hearing_aid/hearing_aid_audio_source.cc
@@ -115,7 +115,8 @@
case HEARING_AID_CTRL_CMD_START:
localAudioReceiver->OnAudioResume();
// timer is restarted in UIPC_Open
- UIPC_Open(*uipc_hearing_aid, UIPC_CH_ID_AV_AUDIO, hearing_aid_data_cb);
+ UIPC_Open(*uipc_hearing_aid, UIPC_CH_ID_AV_AUDIO, hearing_aid_data_cb,
+ HEARING_AID_DATA_PATH);
hearing_aid_send_ack(HEARING_AID_CTRL_ACK_SUCCESS);
break;
@@ -229,7 +230,8 @@
case UIPC_OPEN_EVT:
break;
case UIPC_CLOSE_EVT:
- UIPC_Open(*uipc_hearing_aid, UIPC_CH_ID_AV_CTRL, hearing_aid_ctrl_cb);
+ UIPC_Open(*uipc_hearing_aid, UIPC_CH_ID_AV_CTRL, hearing_aid_ctrl_cb,
+ HEARING_AID_CTRL_PATH);
break;
case UIPC_RX_DATA_READY_EVT:
hearing_aid_recv_ctrl_data();
@@ -254,7 +256,8 @@
void HearingAidAudioSource::Initialize() {
uipc_hearing_aid = UIPC_Init();
- UIPC_Open(*uipc_hearing_aid, UIPC_CH_ID_AV_CTRL, hearing_aid_ctrl_cb);
+ UIPC_Open(*uipc_hearing_aid, UIPC_CH_ID_AV_CTRL, hearing_aid_ctrl_cb,
+ HEARING_AID_CTRL_PATH);
}
void HearingAidAudioSource::CleanUp() {
diff --git a/btif/src/btif_a2dp_control.cc b/btif/src/btif_a2dp_control.cc
index 714cbe2..c0b3683 100644
--- a/btif/src/btif_a2dp_control.cc
+++ b/btif/src/btif_a2dp_control.cc
@@ -52,7 +52,7 @@
void btif_a2dp_control_init(void) {
a2dp_uipc = UIPC_Init();
- UIPC_Open(*a2dp_uipc, UIPC_CH_ID_AV_CTRL, btif_a2dp_ctrl_cb);
+ UIPC_Open(*a2dp_uipc, UIPC_CH_ID_AV_CTRL, btif_a2dp_ctrl_cb, A2DP_CTRL_PATH);
}
void btif_a2dp_control_cleanup(void) {
@@ -118,7 +118,8 @@
if (btif_av_stream_ready()) {
/* Setup audio data channel listener */
- UIPC_Open(*a2dp_uipc, UIPC_CH_ID_AV_AUDIO, btif_a2dp_data_cb);
+ UIPC_Open(*a2dp_uipc, UIPC_CH_ID_AV_AUDIO, btif_a2dp_data_cb,
+ A2DP_DATA_PATH);
/*
* Post start event and wait for audio path to open.
@@ -136,7 +137,8 @@
* Already started, setup audio data channel listener and ACK
* back immediately.
*/
- UIPC_Open(*a2dp_uipc, UIPC_CH_ID_AV_AUDIO, btif_a2dp_data_cb);
+ UIPC_Open(*a2dp_uipc, UIPC_CH_ID_AV_AUDIO, btif_a2dp_data_cb,
+ A2DP_DATA_PATH);
btif_a2dp_command_ack(A2DP_CTRL_ACK_SUCCESS);
break;
}
@@ -310,7 +312,8 @@
case UIPC_CLOSE_EVT:
/* restart ctrl server unless we are shutting down */
if (btif_a2dp_source_media_task_is_running())
- UIPC_Open(*a2dp_uipc, UIPC_CH_ID_AV_CTRL, btif_a2dp_ctrl_cb);
+ UIPC_Open(*a2dp_uipc, UIPC_CH_ID_AV_CTRL, btif_a2dp_ctrl_cb,
+ A2DP_CTRL_PATH);
break;
case UIPC_RX_DATA_READY_EVT:
diff --git a/udrv/include/uipc.h b/udrv/include/uipc.h
index bd1c8bf..78c6ed3 100644
--- a/udrv/include/uipc.h
+++ b/udrv/include/uipc.h
@@ -90,9 +90,11 @@
*
* @param ch_id Channel ID
* @param p_cback Callback handler
+ * @param socket_path Path to the socket
* @return true on success, otherwise false
*/
-bool UIPC_Open(tUIPC_STATE& uipc, tUIPC_CH_ID ch_id, tUIPC_RCV_CBACK* p_cback);
+bool UIPC_Open(tUIPC_STATE& uipc, tUIPC_CH_ID ch_id, tUIPC_RCV_CBACK* p_cback,
+ const char* socket_path);
/**
* Closes a channel in UIPC or the entire UIPC module
diff --git a/udrv/ulinux/uipc.cc b/udrv/ulinux/uipc.cc
index 73c7cb2..e2f2950 100644
--- a/udrv/ulinux/uipc.cc
+++ b/udrv/ulinux/uipc.cc
@@ -539,7 +539,8 @@
** Returns true in case of success, false in case of failure.
**
******************************************************************************/
-bool UIPC_Open(tUIPC_STATE& uipc, tUIPC_CH_ID ch_id, tUIPC_RCV_CBACK* p_cback) {
+bool UIPC_Open(tUIPC_STATE& uipc, tUIPC_CH_ID ch_id, tUIPC_RCV_CBACK* p_cback,
+ const char* socket_path) {
BTIF_TRACE_DEBUG("UIPC_Open : ch_id %d, p_cback %x", ch_id, p_cback);
std::lock_guard<std::recursive_mutex> lock(uipc.mutex);
@@ -553,15 +554,7 @@
return 0;
}
- switch (ch_id) {
- case UIPC_CH_ID_AV_CTRL:
- uipc_setup_server_locked(uipc, ch_id, A2DP_CTRL_PATH, p_cback);
- break;
-
- case UIPC_CH_ID_AV_AUDIO:
- uipc_setup_server_locked(uipc, ch_id, A2DP_DATA_PATH, p_cback);
- break;
- }
+ uipc_setup_server_locked(uipc, ch_id, socket_path, p_cback);
return true;
}