mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
Merge branch 'bugfix/fix_hid_reconnect_issue_v5.3' into 'release/v5.3'
feat(bt/bluedroid): Add Kconfig option to keep device bonding info when HID unplugging (v5.3) See merge request espressif/esp-idf!37182
This commit is contained in:
commit
73d6bd722f
@ -184,6 +184,14 @@ config BT_HID_DEVICE_ENABLED
|
||||
help
|
||||
This enables the BT HID Device
|
||||
|
||||
config BT_HID_REMOVE_DEVICE_BONDING_ENABLED
|
||||
bool "Remove Device Bonding Information when HID Virtual Cable Unplugging"
|
||||
depends on BT_HID_ENABLED
|
||||
default y
|
||||
help
|
||||
This enables the BT HID to remove device bonding information when virtual cable unplugging,
|
||||
removing device bonding information is optional in HID 1.0 but mandatory in HID 1.1
|
||||
|
||||
config BT_BLE_ENABLED
|
||||
bool "Bluetooth Low Energy"
|
||||
depends on BT_BLUEDROID_ENABLED
|
||||
|
@ -903,14 +903,10 @@ void btc_hd_cb_handler(btc_msg_t *msg)
|
||||
btc_hd_cb_to_app(ESP_HIDD_INTR_DATA_EVT, ¶m);
|
||||
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;
|
||||
|
@ -102,6 +102,13 @@
|
||||
#define UC_BT_HID_DEVICE_ENABLED FALSE
|
||||
#endif
|
||||
|
||||
//HID remove device bonding option
|
||||
#ifdef CONFIG_BT_HID_REMOVE_DEVICE_BONDING_ENABLED
|
||||
#define UC_BT_HID_REMOVE_DEVICE_BONDING_ENABLED CONFIG_BT_HID_REMOVE_DEVICE_BONDING_ENABLED
|
||||
#else
|
||||
#define UC_BT_HID_REMOVE_DEVICE_BONDING_ENABLED FALSE
|
||||
#endif
|
||||
|
||||
//BQB(BT)
|
||||
#ifdef CONFIG_BT_CLASSIC_BQB_ENABLED
|
||||
#define UC_BT_CLASSIC_BQB_ENABLED CONFIG_BT_CLASSIC_BQB_ENABLED
|
||||
|
@ -168,6 +168,10 @@
|
||||
#define BTC_HD_INCLUDED TRUE
|
||||
#endif /* UC_BT_HID_DEVICE_ENABLED */
|
||||
|
||||
#if UC_BT_HID_REMOVE_DEVICE_BONDING_ENABLED
|
||||
#define BTC_HID_REMOVE_DEVICE_BONDING TRUE
|
||||
#endif
|
||||
|
||||
#endif /* UC_BT_CLASSIC_ENABLED */
|
||||
|
||||
/* This is set to enable use of GAP L2CAP connections. */
|
||||
@ -404,6 +408,10 @@
|
||||
#define BTC_HD_INCLUDED FALSE
|
||||
#endif
|
||||
|
||||
#ifndef BTC_HID_REMOVE_DEVICE_BONDING
|
||||
#define BTC_HID_REMOVE_DEVICE_BONDING FALSE
|
||||
#endif
|
||||
|
||||
#ifndef SBC_DEC_INCLUDED
|
||||
#define SBC_DEC_INCLUDED FALSE
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user