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 btm_ble_resolving_list_cleanup (); //by TH, because cmn_ble_vsc_cb.max_filter has something mistake as btm_ble_adv_filter_cleanup
#endif #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 #endif
btm_ble_multi_adv_cleanup();
} }
#if (BLE_50_FEATURE_SUPPORT == TRUE) #if (BLE_50_FEATURE_SUPPORT == TRUE)
void BTA_DmBleGapReadPHY(BD_ADDR addr) 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) if ((params->sync_timeout < 0x0a || params->sync_timeout > 0x4000)
|| (params->filter_policy > 0x01) || (params->addr_type > 0x01) || || (params->filter_policy > 0x01)
(params->sid > 0xf) || (params->skip > 0x01F3)) { /*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; status = BTM_ILLEGAL_VALUE;
BTM_TRACE_ERROR("%s, The sync parameters is invalid.", __func__); BTM_TRACE_ERROR("%s, The sync parameters is invalid.", __func__);
goto end; goto end;

View File

@ -824,6 +824,13 @@ void btm_ble_multi_adv_init(void)
*******************************************************************************/ *******************************************************************************/
void btm_ble_multi_adv_cleanup(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) { if (btm_multi_adv_cb.p_adv_inst) {
osi_free(btm_multi_adv_cb.p_adv_inst); osi_free(btm_multi_adv_cb.p_adv_inst);
btm_multi_adv_cb.p_adv_inst = NULL; btm_multi_adv_cb.p_adv_inst = NULL;