forked from espressif/esp-idf
Merge branch 'bugfix/fix_blecibr25_119' into 'master'
fix(ble/bluedroid): Fixed extended adv restart failure during reconnection Closes BLERP-1969, BLERP-1970, BLERP-1971, and BLERP-1979 See merge request espressif/esp-idf!39709
This commit is contained in:
@ -613,6 +613,7 @@ tBTM_STATUS BTM_BleStartExtAdvRestart(uint8_t con_handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if((index >= MAX_BLE_ADV_INSTANCE) || (!adv_record[index].invalid)) {
|
if((index >= MAX_BLE_ADV_INSTANCE) || (!adv_record[index].invalid)) {
|
||||||
|
BTM_TRACE_WARNING("%s failed to find extend adv, adv_handle %u con_handle %u", __func__, index, con_handle);
|
||||||
return BTM_WRONG_MODE;
|
return BTM_WRONG_MODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1254,7 +1255,7 @@ void btm_ble_adv_set_terminated_evt(tBTM_BLE_ADV_TERMINAT *params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// adv terminated due to connection, save the adv handle and connection handle
|
// adv terminated due to connection, save the adv handle and connection handle
|
||||||
if(params->completed_event == 0x00) {
|
if(params->status == 0x00) {
|
||||||
adv_record[params->adv_handle].ter_con_handle = params->conn_handle;
|
adv_record[params->adv_handle].ter_con_handle = params->conn_handle;
|
||||||
} else {
|
} else {
|
||||||
adv_record[params->adv_handle].ter_con_handle = INVALID_VALUE;
|
adv_record[params->adv_handle].ter_con_handle = INVALID_VALUE;
|
||||||
|
@ -480,6 +480,8 @@ BOOLEAN l2c_link_hci_disc_comp (UINT16 handle, UINT8 reason)
|
|||||||
if (l2cu_create_conn(p_lcb, BT_TRANSPORT_LE)) {
|
if (l2cu_create_conn(p_lcb, BT_TRANSPORT_LE)) {
|
||||||
btm_acl_removed (p_lcb->remote_bd_addr, BT_TRANSPORT_LE);
|
btm_acl_removed (p_lcb->remote_bd_addr, BT_TRANSPORT_LE);
|
||||||
lcb_is_free = FALSE; /* still using this lcb */
|
lcb_is_free = FALSE; /* still using this lcb */
|
||||||
|
} else {
|
||||||
|
L2CAP_TRACE_ERROR("master retry connect failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // (GATTC_CONNECT_RETRY_EN == TRUE)
|
#endif // (GATTC_CONNECT_RETRY_EN == TRUE)
|
||||||
@ -489,7 +491,10 @@ BOOLEAN l2c_link_hci_disc_comp (UINT16 handle, UINT8 reason)
|
|||||||
if(btm_ble_inter_get() && p_lcb->link_role == HCI_ROLE_SLAVE) {
|
if(btm_ble_inter_get() && p_lcb->link_role == HCI_ROLE_SLAVE) {
|
||||||
p_lcb->retry_create_con ++;
|
p_lcb->retry_create_con ++;
|
||||||
L2CAP_TRACE_DEBUG("slave restart extend adv, retry count %d reason 0x%x\n", p_lcb->retry_create_con, reason);
|
L2CAP_TRACE_DEBUG("slave restart extend adv, retry count %d reason 0x%x\n", p_lcb->retry_create_con, reason);
|
||||||
BTM_BleStartExtAdvRestart(handle);
|
tBTM_STATUS start_adv_status = BTM_BleStartExtAdvRestart(handle);
|
||||||
|
if (start_adv_status != BTM_SUCCESS) {
|
||||||
|
L2CAP_TRACE_ERROR("slave restart extend adv failed (err 0x%x)", start_adv_status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif // #if (BLE_50_EXTEND_ADV_EN == TRUE)
|
#endif // #if (BLE_50_EXTEND_ADV_EN == TRUE)
|
||||||
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
|
||||||
@ -499,7 +504,10 @@ BOOLEAN l2c_link_hci_disc_comp (UINT16 handle, UINT8 reason)
|
|||||||
if(!btm_ble_inter_get() && p_lcb->link_role == HCI_ROLE_SLAVE) {
|
if(!btm_ble_inter_get() && p_lcb->link_role == HCI_ROLE_SLAVE) {
|
||||||
p_lcb->retry_create_con ++;
|
p_lcb->retry_create_con ++;
|
||||||
L2CAP_TRACE_DEBUG("slave resatrt adv, retry count %d reason 0x%x\n", p_lcb->retry_create_con, reason);
|
L2CAP_TRACE_DEBUG("slave resatrt adv, retry count %d reason 0x%x\n", p_lcb->retry_create_con, reason);
|
||||||
btm_ble_start_adv();
|
tBTM_STATUS start_adv_status = btm_ble_start_adv();
|
||||||
|
if (start_adv_status != BTM_SUCCESS) {
|
||||||
|
L2CAP_TRACE_ERROR("slave resatrt adv failed (err 0x%x)", start_adv_status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif // #if (BLE_42_ADV_EN == TRUE)
|
#endif // #if (BLE_42_ADV_EN == TRUE)
|
||||||
#endif // #if (BLE_42_FEATURE_SUPPORT == TRUE)
|
#endif // #if (BLE_42_FEATURE_SUPPORT == TRUE)
|
||||||
|
Reference in New Issue
Block a user