diff --git a/system/bta/hd/bta_hd_act.cc b/system/bta/hd/bta_hd_act.cc index a8a43d1d81682c8a6aea6526f9c3c860b7585ea8..2b3ff46d7f870302a55315ba7185213812154e12 100644 --- a/system/bta/hd/bta_hd_act.cc +++ b/system/bta/hd/bta_hd_act.cc @@ -256,13 +256,19 @@ void bta_hd_unregister2_act(tBTA_HD_DATA* p_data) { * Returns void * ******************************************************************************/ -extern void bta_hd_connect_act(UNUSED_ATTR tBTA_HD_DATA* p_data) { +extern void bta_hd_connect_act(tBTA_HD_DATA* p_data) { tHID_STATUS ret; + tBTA_HD_DEVICE_CTRL* p_ctrl = (tBTA_HD_DEVICE_CTRL*)p_data; APPL_TRACE_API("%s", __func__); - ret = HID_DevConnect(); + ret = HID_DevPlugDevice(p_ctrl->addr); + if (ret != HID_SUCCESS) { + APPL_TRACE_WARNING("%s: HID_DevPlugDevice returned %d", __func__, ret); + return; + } + ret = HID_DevConnect(); if (ret != HID_SUCCESS) { APPL_TRACE_WARNING("%s: HID_DevConnect returned %d", __func__, ret); } diff --git a/system/bta/hd/bta_hd_api.cc b/system/bta/hd/bta_hd_api.cc index 5ad73ba054917907a60246f0680f605c82f63d83..7b402ea38b7a57e232b50145e53dbea690a8c8f0 100644 --- a/system/bta/hd/bta_hd_api.cc +++ b/system/bta/hd/bta_hd_api.cc @@ -236,13 +236,16 @@ extern void BTA_HdVirtualCableUnplug(void) { * Returns void * ******************************************************************************/ -extern void BTA_HdConnect(void) { - BT_HDR* p_buf; +extern void BTA_HdConnect(BD_ADDR addr) { + tBTA_HD_DEVICE_CTRL* p_buf; APPL_TRACE_API("%s", __func__); - if ((p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR))) != NULL) { - p_buf->event = BTA_HD_API_CONNECT_EVT; + if ((p_buf = (tBTA_HD_DEVICE_CTRL*)osi_malloc(sizeof(tBTA_HD_DEVICE_CTRL))) != + NULL) { + p_buf->hdr.event = BTA_HD_API_CONNECT_EVT; + + memcpy(p_buf->addr, addr, sizeof(BD_ADDR)); bta_sys_sendmsg(p_buf); } diff --git a/system/bta/include/bta_hd_api.h b/system/bta/include/bta_hd_api.h index a8314f6f161cd4015049b5cf01febe54d50a9b60..7bd2cb5809f809f337686196aeba79e9c4277d82 100644 --- a/system/bta/include/bta_hd_api.h +++ b/system/bta/include/bta_hd_api.h @@ -209,12 +209,12 @@ extern void BTA_HdVirtualCableUnplug(void); * Function BTA_HdConnect * * Description This function is called when connection to host shall be -*made + * made * * Returns void * ******************************************************************************/ -extern void BTA_HdConnect(void); +extern void BTA_HdConnect(BD_ADDR addr); /******************************************************************************* * diff --git a/system/btif/src/btif_hd.cc b/system/btif/src/btif_hd.cc index 3c7aa9abb3c1cd3856d1dfb09c69bcd31f9ac679..ff9b62a9c2ecac262040ccde97169f11bd962f8f 100644 --- a/system/btif/src/btif_hd.cc +++ b/system/btif/src/btif_hd.cc @@ -470,7 +470,7 @@ static bt_status_t unregister_app(void) { * Returns bt_status_t * ******************************************************************************/ -static bt_status_t connect(void) { +static bt_status_t connect(bt_bdaddr_t* bd_addr) { BTIF_TRACE_API("%s", __func__); if (!btif_hd_cb.app_registered) { @@ -484,7 +484,7 @@ static bt_status_t connect(void) { return BT_STATUS_NOT_READY; } - BTA_HdConnect(); + BTA_HdConnect(bd_addr->address); return BT_STATUS_SUCCESS; }