summaryrefslogtreecommitdiffstats
path: root/btif
diff options
context:
space:
mode:
Diffstat (limited to 'btif')
-rwxr-xr-xbtif/src/btif_dm.c10
-rwxr-xr-xbtif/src/btif_hh.c5
2 files changed, 10 insertions, 5 deletions
diff --git a/btif/src/btif_dm.c b/btif/src/btif_dm.c
index da37db5..422927c 100755
--- a/btif/src/btif_dm.c
+++ b/btif/src/btif_dm.c
@@ -362,11 +362,11 @@ static void btif_dm_cb_hid_remote_name(tBTM_REMOTE_DEV_NAME *p_remote_name)
int remove_hid_bond(bt_bdaddr_t *bd_addr)
{
- /* For HID mouse,we did connection before pairing
- * so we need to do virtual unplug
+ /* For HID device, inorder to avoid the HID device from re-connecting again after unpairing,
+ * we need to do virtual unplug
*/
bdstr_t bdstr;
- BTIF_TRACE_DEBUG2("%s---Removing HID mouse bond--%s", __FUNCTION__,bd2str((bt_bdaddr_t *)bd_addr, &bdstr));
+ BTIF_TRACE_DEBUG2("%s---Removing HID bond--%s", __FUNCTION__,bd2str((bt_bdaddr_t *)bd_addr, &bdstr));
return btif_hh_virtual_unpug(bd_addr);
}
/*******************************************************************************
@@ -410,7 +410,9 @@ void btif_dm_cb_remove_bond(bt_bdaddr_t *bd_addr)
{
bdstr_t bdstr;
/*special handling for HID devices */
- if (check_cod(bd_addr, COD_HID_POINTING))
+ if (check_cod(bd_addr, COD_HID_POINTING) ||
+ check_cod(bd_addr, COD_HID_KEYBOARD) ||
+ check_cod(bd_addr, COD_HID_COMBO))
{
#if (defined(BTA_HH_INCLUDED) && (BTA_HH_INCLUDED == TRUE))
if(remove_hid_bond(bd_addr) != BTA_SUCCESS)
diff --git a/btif/src/btif_hh.c b/btif/src/btif_hh.c
index ef1e907..c9aa530 100755
--- a/btif/src/btif_hh.c
+++ b/btif/src/btif_hh.c
@@ -400,7 +400,9 @@ bt_status_t btif_hh_virtual_unpug(bt_bdaddr_t *bd_addr)
bd_addr->address[0], bd_addr->address[1], bd_addr->address[2], bd_addr->address[3],
bd_addr->address[4], bd_addr->address[5]);
p_dev = btif_hh_find_dev_by_bda(bd_addr);
- if ((p_dev != NULL) && (p_dev->dev_status == BTHH_CONN_STATE_CONNECTED))
+ BTIF_TRACE_DEBUG2("%s mask : 0x%x", __func__, p_dev->attr_mask);
+ if ((p_dev != NULL) && (p_dev->dev_status == BTHH_CONN_STATE_CONNECTED)
+ && (p_dev->attr_mask & HID_VIRTUAL_CABLE))
{
BTIF_TRACE_DEBUG1("%s Sending BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG", __FUNCTION__);
BTA_HhSendCtrl(p_dev->dev_handle, BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG);
@@ -751,6 +753,7 @@ static void btif_hh_upstreams_evt(UINT16 event, char* p_param)
if (memcmp(btif_hh_cb.added_devices[i].bd_addr.address, p_data->dev_info.bda, 6) == 0) {
if (p_data->dev_info.status == BTA_HH_OK) {
btif_hh_cb.added_devices[i].dev_handle = p_data->dev_info.handle;
+ btif_hh_cb.added_devices[i].attr_mask = p_data->dev_info.attr_mask;
}
else {
memset(btif_hh_cb.added_devices[i].bd_addr.address, 0, 6);