Merge branch 'bugfix/fix_some_ble_bugs_240310_v4.4' into 'release/v4.4'

Bugfix/fix some ble bugs 240310 v4.4(backport v4.4)

See merge request espressif/esp-idf!29520
This commit is contained in:
Jiang Jiang Jian
2024-03-11 11:24:50 +08:00
4 changed files with 20 additions and 3 deletions

View File

@ -612,6 +612,11 @@ void bta_dm_disable (tBTA_DM_MSG *p_data)
btm_ble_resolving_list_cleanup (); //by TH, because cmn_ble_vsc_cb.max_filter has something mistake as btm_ble_adv_filter_cleanup
#endif
#if BLE_INCLUDED == TRUE
// btm_ble_multi_adv_init is called when the host is enabled, so btm_ble_multi_adv_cleanup is called when the host is disabled.
btm_ble_multi_adv_cleanup();
#endif
}
/*******************************************************************************

View File

@ -2770,7 +2770,6 @@ void BTA_VendorCleanup (void)
}
#endif
btm_ble_multi_adv_cleanup();
}
#if (BLE_50_FEATURE_SUPPORT == TRUE)
void BTA_DmBleGapReadPHY(BD_ADDR addr)

View File

@ -794,8 +794,14 @@ tBTM_STATUS BTM_BlePeriodicAdvCreateSync(tBTM_BLE_Periodic_Sync_Params *params)
}
if ((params->sync_timeout < 0x0a || params->sync_timeout > 0x4000)
|| (params->filter_policy > 0x01) || (params->addr_type > 0x01) ||
(params->sid > 0xf) || (params->skip > 0x01F3)) {
|| (params->filter_policy > 0x01)
/*If the Periodic Advertiser List is not used,
the Advertising_SID, Advertiser Address_Type, and Advertiser Address
parameters specify the periodic advertising device to listen to; otherwise they
shall be ignored.*/
|| (params->filter_policy == 0 && params->addr_type > 0x01)
|| (params->filter_policy == 0 && params->sid > 0xf)
|| (params->skip > 0x01F3)) {
status = BTM_ILLEGAL_VALUE;
BTM_TRACE_ERROR("%s, The sync parameters is invalid.", __func__);
goto end;

View File

@ -824,6 +824,13 @@ void btm_ble_multi_adv_init(void)
*******************************************************************************/
void btm_ble_multi_adv_cleanup(void)
{
#if BTM_DYNAMIC_MEMORY == TRUE
if (btm_multi_adv_cb_ptr == NULL)
{
BTM_TRACE_WARNING("%s memory has been freed", __func__);
return;
}
#endif
if (btm_multi_adv_cb.p_adv_inst) {
osi_free(btm_multi_adv_cb.p_adv_inst);
btm_multi_adv_cb.p_adv_inst = NULL;