aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Pawlowski <jpawlowski@google.com>2018-03-02 02:22:33 -0800
committerJakub Pawlowski <jpawlowski@google.com>2018-03-05 21:51:59 +0000
commit16a63404814c4b1bcf2de6e1a624b5bd8b6b1cf6 (patch)
treee4da40cdbe2c7b4a5263b6cbd24e04e75cd87771
parentd96facb53f0fa7a036af8c0aeb37f3df0505faf7 (diff)
downloadbt-16a63404814c4b1bcf2de6e1a624b5bd8b6b1cf6.tar.gz
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
-rw-r--r--bta/hearing_aid/hearing_aid_audio_source.cc9
-rw-r--r--btif/src/btif_a2dp_control.cc11
-rw-r--r--udrv/include/uipc.h4
-rw-r--r--udrv/ulinux/uipc.cc13
4 files changed, 19 insertions, 18 deletions
diff --git a/bta/hearing_aid/hearing_aid_audio_source.cc b/bta/hearing_aid/hearing_aid_audio_source.cc
index 276957bbe..1c2d2bca0 100644
--- a/bta/hearing_aid/hearing_aid_audio_source.cc
+++ b/bta/hearing_aid/hearing_aid_audio_source.cc
@@ -115,7 +115,8 @@ void hearing_aid_recv_ctrl_data() {
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 @@ void hearing_aid_ctrl_cb(tUIPC_CH_ID, tUIPC_EVENT event) {
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::Stop() {
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 714cbe284..c0b368354 100644
--- a/btif/src/btif_a2dp_control.cc
+++ b/btif/src/btif_a2dp_control.cc
@@ -52,7 +52,7 @@ std::unique_ptr<tUIPC_STATE> a2dp_uipc;
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 @@ static void btif_a2dp_recv_ctrl_data(void) {
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 @@ static void btif_a2dp_recv_ctrl_data(void) {
* 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 @@ static void btif_a2dp_ctrl_cb(UNUSED_ATTR tUIPC_CH_ID ch_id,
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 bd1c8bf67..78c6ed38a 100644
--- a/udrv/include/uipc.h
+++ b/udrv/include/uipc.h
@@ -90,9 +90,11 @@ std::unique_ptr<tUIPC_STATE> UIPC_Init();
*
* @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 73c7cb2e4..e2f295028 100644
--- a/udrv/ulinux/uipc.cc
+++ b/udrv/ulinux/uipc.cc
@@ -539,7 +539,8 @@ std::unique_ptr<tUIPC_STATE> UIPC_Init() {
** 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 @@ bool UIPC_Open(tUIPC_STATE& uipc, tUIPC_CH_ID ch_id, tUIPC_RCV_CBACK* p_cback) {
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;
}