feat(bt/bluedroid): Add Kconfig option to keep device bonding info when HID unplugging

This commit is contained in:
linruihao
2025-02-17 12:02:48 +08:00
parent 5fd4104d12
commit 540b0131c2
5 changed files with 32 additions and 9 deletions
@@ -903,14 +903,10 @@ void btc_hd_cb_handler(btc_msg_t *msg)
btc_hd_cb_to_app(ESP_HIDD_INTR_DATA_EVT, &param);
break;
case BTA_HD_VC_UNPLUG_EVT: {
bt_bdaddr_t *bd_addr = (bt_bdaddr_t *)&p_data->conn.bda;
if (bta_dm_check_if_only_hd_connected(p_data->conn.bda)) {
BTC_TRACE_DEBUG("%s: Removing bonding as only HID profile connected", __func__);
BTA_DmRemoveDevice((uint8_t *)&p_data->conn.bda, BT_TRANSPORT_BR_EDR);
} else {
BTC_TRACE_DEBUG("%s: Only removing HID data as some other profiles connected", __func__);
btc_hd_remove_device(*bd_addr);
}
#if BTC_HID_REMOVE_DEVICE_BONDING
BTC_TRACE_DEBUG("%s: Removing bonding information", __func__);
BTA_DmRemoveDevice((uint8_t *)&p_data->conn.bda, BT_TRANSPORT_BR_EDR);
#endif
if (btc_hd_cb.status == BTC_HD_DISCONNECTING || btc_hd_cb.status == BTC_HD_CONNECTING ||
btc_hd_cb.status == BTC_HD_CONNECTED) {
@@ -1372,7 +1372,10 @@ void btc_hh_cb_handler(btc_msg_t *msg)
*/
if (p_dev->local_vup) {
p_dev->local_vup = false;
#if BTC_HID_REMOVE_DEVICE_BONDING
BTA_DmRemoveDevice(p_dev->bd_addr, BT_TRANSPORT_BR_EDR);
#endif
btc_hh_remove_device(p_dev->bd_addr);
}
btc_hh_cb.status = (BTC_HH_STATUS)BTC_HH_DEV_DISCONNECTED;
@@ -1406,8 +1409,9 @@ void btc_hh_cb_handler(btc_msg_t *msg)
// [boblane]
if (p_dev->local_vup) {
p_dev->local_vup = false;
#if BTC_HID_REMOVE_DEVICE_BONDING
BTA_DmRemoveDevice(p_dev->bd_addr, BT_TRANSPORT_BR_EDR);
} else {
#endif
btc_hh_remove_device(p_dev->bd_addr);
}
param.unplug.status = p_data->dev_status.status;