From 564c4b644d1d13a06d878fbab79309745c7386d7 Mon Sep 17 00:00:00 2001 From: chenjianhua Date: Thu, 12 Jan 2023 10:53:58 +0800 Subject: [PATCH 1/4] bluedroid: support get bluetooth device name --- .../bt/host/bluedroid/api/esp_gap_ble_api.c | 13 +++++++ .../api/include/api/esp_gap_ble_api.h | 20 ++++++++++- .../bt/host/bluedroid/bta/dm/bta_dm_act.c | 21 +++++++++++ .../bt/host/bluedroid/bta/dm/bta_dm_api.c | 21 +++++++++++ .../bt/host/bluedroid/bta/dm/bta_dm_main.c | 1 + .../bluedroid/bta/dm/include/bta_dm_int.h | 8 +++++ .../host/bluedroid/bta/include/bta/bta_api.h | 14 ++++++++ .../btc/profile/std/gap/btc_gap_ble.c | 36 +++++++++++++++++++ .../btc/profile/std/include/btc_gap_ble.h | 1 + .../common/include/common/bt_target.h | 1 + .../bluedroid/stack/include/stack/btm_api.h | 1 + 11 files changed, 136 insertions(+), 1 deletion(-) diff --git a/components/bt/host/bluedroid/api/esp_gap_ble_api.c b/components/bt/host/bluedroid/api/esp_gap_ble_api.c index cca3bfcd95..a44d0cdce3 100644 --- a/components/bt/host/bluedroid/api/esp_gap_ble_api.c +++ b/components/bt/host/bluedroid/api/esp_gap_ble_api.c @@ -390,6 +390,19 @@ esp_err_t esp_ble_gap_set_device_name(const char *name) return esp_bt_dev_set_device_name(name); } +esp_err_t esp_ble_gap_get_device_name(void) +{ + btc_msg_t msg = {0}; + + ESP_BLUEDROID_STATUS_CHECK(ESP_BLUEDROID_STATUS_ENABLED); + + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GAP_BLE; + msg.act = BTC_GAP_BLE_ACT_GET_DEV_NAME; + + return (btc_transfer_context(&msg, NULL, 0, NULL, NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); +} + esp_err_t esp_ble_gap_get_local_used_addr(esp_bd_addr_t local_used_addr, uint8_t * addr_type) { if(esp_bluedroid_get_status() != (ESP_BLUEDROID_STATUS_ENABLED)) { diff --git a/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h b/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h index f3dfaa9505..0fb0f119e4 100644 --- a/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h +++ b/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h @@ -167,6 +167,7 @@ typedef enum { ESP_GAP_BLE_UPDATE_WHITELIST_COMPLETE_EVT, /*!< When adding or removing whitelist complete, the event comes */ ESP_GAP_BLE_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_COMPLETE_EVT, /*!< When updating duplicate exceptional list complete, the event comes */ ESP_GAP_BLE_SET_CHANNELS_EVT, /*!< When setting BLE channels complete, the event comes */ + ESP_GAP_BLE_GET_DEV_NAME_COMPLETE_EVT, /*!< When getting BT device name complete, the event comes */ ESP_GAP_BLE_EVT_MAX, } esp_gap_ble_cb_event_t; @@ -636,6 +637,13 @@ typedef uint8_t esp_duplicate_info_t[ESP_BD_ADDR_LEN]; * @brief Gap callback parameters union */ typedef union { + /** + * @brief ESP_GAP_BLE_GET_DEV_NAME_COMPLETE_EVT + */ + struct ble_get_dev_name_cmpl_evt_param { + esp_bt_status_t status; /*!< Indicate the get device name success status */ + char *name; /*!< Name of bluetooth device */ + } get_dev_name_cmpl; /*!< Event parameter of ESP_GAP_BLE_GET_DEV_NAME_COMPLETE_EVT */ /** * @brief ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT */ @@ -1033,7 +1041,17 @@ esp_err_t esp_ble_gap_set_prefer_conn_params(esp_bd_addr_t bd_addr, esp_err_t esp_ble_gap_set_device_name(const char *name); /** - * @brief This function is called to get local used address and adress type. + * @brief Get device name of the local device + * + * @return + * - ESP_OK : success + * - other : failed + * + */ +esp_err_t esp_ble_gap_get_device_name(void); + +/** + * @brief This function is called to get local used address and address type. * uint8_t *esp_bt_dev_get_address(void) get the public address * * @param[in] local_used_addr - current local used ble address (six bytes) diff --git a/components/bt/host/bluedroid/bta/dm/bta_dm_act.c b/components/bt/host/bluedroid/bta/dm/bta_dm_act.c index bb9656b3f6..dbda50189f 100644 --- a/components/bt/host/bluedroid/bta/dm/bta_dm_act.c +++ b/components/bt/host/bluedroid/bta/dm/bta_dm_act.c @@ -666,6 +666,27 @@ void bta_dm_set_dev_name (tBTA_DM_MSG *p_data) #endif /// CLASSIC_BT_INCLUDED } +/******************************************************************************* +** +** Function bta_dm_get_dev_name +** +** Description Gets local device name +** +** +** Returns void +** +*******************************************************************************/ +void bta_dm_get_dev_name (tBTA_DM_MSG *p_data) +{ + tBTM_STATUS status; + char *name = NULL; + + status = BTM_ReadLocalDeviceName(&name); + if (p_data->get_name.p_cback) { + (*p_data->get_name.p_cback)(status, name); + } +} + /******************************************************************************* ** ** Function bta_dm_set_afh_channels diff --git a/components/bt/host/bluedroid/bta/dm/bta_dm_api.c b/components/bt/host/bluedroid/bta/dm/bta_dm_api.c index 07284ff155..6cad02c5e3 100644 --- a/components/bt/host/bluedroid/bta/dm/bta_dm_api.c +++ b/components/bt/host/bluedroid/bta/dm/bta_dm_api.c @@ -181,6 +181,27 @@ void BTA_DmSetDeviceName(const char *p_name) } } +/******************************************************************************* +** +** Function BTA_DmGetDeviceName +** +** Description This function gets the Bluetooth name of local device +** +** +** Returns void +** +*******************************************************************************/ +void BTA_DmGetDeviceName(tBTA_GET_DEV_NAME_CBACK *p_cback) +{ + tBTA_DM_API_GET_NAME *p_msg; + + if ((p_msg = (tBTA_DM_API_GET_NAME *) osi_malloc(sizeof(tBTA_DM_API_GET_NAME))) != NULL) { + p_msg->hdr.event = BTA_DM_API_GET_NAME_EVT; + p_msg->p_cback = p_cback; + bta_sys_sendmsg(p_msg); + } +} + void BTA_DmConfigEir(tBTA_DM_EIR_CONF *eir_config) { tBTA_DM_API_CONFIG_EIR *p_msg; diff --git a/components/bt/host/bluedroid/bta/dm/bta_dm_main.c b/components/bt/host/bluedroid/bta/dm/bta_dm_main.c index e543192325..73af5714f5 100644 --- a/components/bt/host/bluedroid/bta/dm/bta_dm_main.c +++ b/components/bt/host/bluedroid/bta/dm/bta_dm_main.c @@ -57,6 +57,7 @@ const tBTA_DM_ACTION bta_dm_action[BTA_DM_MAX_EVT] = { bta_dm_enable, /* BTA_DM_API_ENABLE_EVT */ bta_dm_disable, /* BTA_DM_API_DISABLE_EVT */ bta_dm_set_dev_name, /* BTA_DM_API_SET_NAME_EVT */ + bta_dm_get_dev_name, /* BTA_DM_API_GET_NAME_EVT */ bta_dm_config_eir, /* BTA_DM_API_CONFIG_EIR_EVT */ bta_dm_set_afh_channels, /* BTA_DM_API_SET_AFH_CHANNELS_EVT */ #if (SDP_INCLUDED == TRUE) diff --git a/components/bt/host/bluedroid/bta/dm/include/bta_dm_int.h b/components/bt/host/bluedroid/bta/dm/include/bta_dm_int.h index 25f39fe750..c42955bb6c 100644 --- a/components/bt/host/bluedroid/bta/dm/include/bta_dm_int.h +++ b/components/bt/host/bluedroid/bta/dm/include/bta_dm_int.h @@ -52,6 +52,7 @@ enum { BTA_DM_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_DM), BTA_DM_API_DISABLE_EVT, BTA_DM_API_SET_NAME_EVT, + BTA_DM_API_GET_NAME_EVT, BTA_DM_API_CONFIG_EIR_EVT, BTA_DM_API_SET_AFH_CHANNELS_EVT, #if (SDP_INCLUDED == TRUE) @@ -201,6 +202,11 @@ typedef struct { BD_NAME name; /* max 248 bytes name, plus must be Null terminated */ } tBTA_DM_API_SET_NAME; +typedef struct { + BT_HDR hdr; + tBTA_GET_DEV_NAME_CBACK *p_cback; +} tBTA_DM_API_GET_NAME; + /* data type for BTA_DM_API_CONFIG_EIR_EVT */ typedef struct { BT_HDR hdr; @@ -848,6 +854,7 @@ typedef union { tBTA_DM_API_ENABLE enable; tBTA_DM_API_SET_NAME set_name; + tBTA_DM_API_GET_NAME get_name; tBTA_DM_API_CONFIG_EIR config_eir; tBTA_DM_API_SET_AFH_CHANNELS set_afh_channels; @@ -1318,6 +1325,7 @@ extern void bta_dm_search_sm_disable( void ); extern void bta_dm_enable (tBTA_DM_MSG *p_data); extern void bta_dm_disable (tBTA_DM_MSG *p_data); extern void bta_dm_set_dev_name (tBTA_DM_MSG *p_data); +extern void bta_dm_get_dev_name (tBTA_DM_MSG *p_data); extern void bta_dm_config_eir (tBTA_DM_MSG *p_data); extern void bta_dm_set_afh_channels (tBTA_DM_MSG *p_data); extern void bta_dm_read_rmt_name(tBTA_DM_MSG *p_data); diff --git a/components/bt/host/bluedroid/bta/include/bta/bta_api.h b/components/bt/host/bluedroid/bta/include/bta/bta_api.h index 7b7c6cee72..d6ce228a59 100644 --- a/components/bt/host/bluedroid/bta/include/bta/bta_api.h +++ b/components/bt/host/bluedroid/bta/include/bta/bta_api.h @@ -176,6 +176,8 @@ typedef struct { typedef UINT16 tBTA_SEC; +typedef tBTM_GET_DEV_NAME_CBACK tBTA_GET_DEV_NAME_CBACK; + /* Ignore for Discoverable, Connectable, Pairable and Connectable Paired only device modes */ #define BTA_DM_IGNORE 0x00FF @@ -1474,6 +1476,18 @@ extern void BTA_DisableTestMode(void); *******************************************************************************/ extern void BTA_DmSetDeviceName(const char *p_name); +/******************************************************************************* +** +** Function BTA_DmGetDeviceName +** +** Description This function gets the Bluetooth name of the local device. +** +** +** Returns void +** +*******************************************************************************/ +extern void BTA_DmGetDeviceName(tBTA_GET_DEV_NAME_CBACK *p_cback); + /******************************************************************************* ** ** Function BTA_DmGetRemoteName diff --git a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c index 105fc7d619..3ff1c8ae42 100644 --- a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c +++ b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c @@ -54,6 +54,32 @@ static inline void btc_gap_ble_cb_to_app(esp_gap_ble_cb_event_t event, esp_ble_g } } +static void btc_gap_ble_get_dev_name_callback(UINT8 status, char *name) +{ + esp_ble_gap_cb_param_t param; + bt_status_t ret; + btc_msg_t msg = {0}; + + memset(¶m, 0, sizeof(esp_ble_gap_cb_param_t)); + + msg.sig = BTC_SIG_API_CB; + msg.pid = BTC_PID_GAP_BLE; + msg.act = ESP_GAP_BLE_GET_DEV_NAME_COMPLETE_EVT; + + param.get_dev_name_cmpl.status = btc_btm_status_to_esp_status(status); + param.get_dev_name_cmpl.name = (char *)osi_malloc(BTC_MAX_LOC_BD_NAME_LEN + 1); + if (param.get_dev_name_cmpl.name) { + BCM_STRNCPY_S(param.get_dev_name_cmpl.name, name, BTC_MAX_LOC_BD_NAME_LEN + 1); + } else { + param.get_dev_name_cmpl.status = ESP_BT_STATUS_NOMEM; + } + + ret = btc_transfer_context(&msg, ¶m, sizeof(esp_ble_gap_cb_param_t), NULL, NULL); + if (ret != BT_STATUS_SUCCESS) { + BTC_TRACE_ERROR("%s btc_transfer_context failed\n", __func__); + } +} + static void btc_gap_adv_point_cleanup(void **buf) { if (NULL == *buf) { @@ -1096,6 +1122,13 @@ void btc_gap_ble_cb_deep_free(btc_msg_t *msg) { BTC_TRACE_DEBUG("%s", __func__); switch (msg->act) { + case ESP_GAP_BLE_GET_DEV_NAME_COMPLETE_EVT: { + char *value = ((esp_ble_gap_cb_param_t *)msg->arg)->get_dev_name_cmpl.name; + if (value) { + osi_free(value); + } + break; + } default: BTC_TRACE_DEBUG("Unhandled deep free %d", msg->act); break; @@ -1175,6 +1208,9 @@ void btc_gap_ble_call_handler(btc_msg_t *msg) case BTC_GAP_BLE_ACT_SET_DEV_NAME: BTA_DmSetDeviceName(arg->set_dev_name.device_name); break; + case BTC_GAP_BLE_ACT_GET_DEV_NAME: + BTA_DmGetDeviceName(btc_gap_ble_get_dev_name_callback); + break; case BTC_GAP_BLE_ACT_CFG_ADV_DATA_RAW: btc_ble_set_adv_data_raw(arg->cfg_adv_data_raw.raw_adv, arg->cfg_adv_data_raw.raw_adv_len, diff --git a/components/bt/host/bluedroid/btc/profile/std/include/btc_gap_ble.h b/components/bt/host/bluedroid/btc/profile/std/include/btc_gap_ble.h index 54336f1a3d..f27606d10c 100644 --- a/components/bt/host/bluedroid/btc/profile/std/include/btc_gap_ble.h +++ b/components/bt/host/bluedroid/btc/profile/std/include/btc_gap_ble.h @@ -58,6 +58,7 @@ typedef enum { BTC_GAP_BLE_OOB_REQ_REPLY_EVT, BTC_GAP_BLE_UPDATE_DUPLICATE_SCAN_EXCEPTIONAL_LIST, BTC_GAP_BLE_SET_AFH_CHANNELS, + BTC_GAP_BLE_ACT_GET_DEV_NAME, } btc_gap_ble_act_t; /* btc_ble_gap_args_t */ diff --git a/components/bt/host/bluedroid/common/include/common/bt_target.h b/components/bt/host/bluedroid/common/include/common/bt_target.h index 2675f76f5e..818bc533f1 100644 --- a/components/bt/host/bluedroid/common/include/common/bt_target.h +++ b/components/bt/host/bluedroid/common/include/common/bt_target.h @@ -788,6 +788,7 @@ '0' disables storage of the local name in BTM */ #ifndef BTM_MAX_LOC_BD_NAME_LEN #define BTM_MAX_LOC_BD_NAME_LEN 64 +#define BTC_MAX_LOC_BD_NAME_LEN BTM_MAX_LOC_BD_NAME_LEN #endif /* Fixed Default String. When this is defined as null string, the device's diff --git a/components/bt/host/bluedroid/stack/include/stack/btm_api.h b/components/bt/host/bluedroid/stack/include/stack/btm_api.h index 8545b9e584..60845ac77b 100644 --- a/components/bt/host/bluedroid/stack/include/stack/btm_api.h +++ b/components/bt/host/bluedroid/stack/include/stack/btm_api.h @@ -156,6 +156,7 @@ typedef enum{ typedef void (tBTM_DEV_STATUS_CB) (tBTM_DEV_STATUS status); +typedef void (tBTM_GET_DEV_NAME_CBACK) (UINT8 status, char *name); /* Callback function for when a vendor specific event occurs. The length and ** array of returned parameter bytes are included. This asynchronous event From 1d7317b40154336e58707e83f28af27db09e8966 Mon Sep 17 00:00:00 2001 From: chenjianhua Date: Thu, 9 Feb 2023 10:46:04 +0800 Subject: [PATCH 2/4] bluedroid: fix adv and scan state conflict --- .../bt/host/bluedroid/stack/btm/btm_ble_gap.c | 21 ++++++++++--------- .../bluedroid/stack/btm/include/btm_ble_int.h | 12 ++++------- .../bt/host/bluedroid/stack/l2cap/l2c_ble.c | 2 +- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c b/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c index 1ff0a356ce..a81ce3f8eb 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c +++ b/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c @@ -853,7 +853,7 @@ BOOLEAN BTM_BleConfigPrivacy(BOOLEAN privacy_mode, tBTM_SET_LOCAL_PRIVACY_CBACK return FALSE; } - if (!(p_cb->inq_var.state == BTM_BLE_STOP_SCAN || p_cb->inq_var.state == BTM_BLE_STOP_ADV || p_cb->inq_var.state == BTM_BLE_IDLE)) { + if (p_cb->inq_var.state != BTM_BLE_IDLE) { BTM_TRACE_ERROR("Advertising or scaning now, can't set privacy "); if (random_cb && random_cb->set_local_privacy_cback){ (*random_cb->set_local_privacy_cback)(BTM_SET_PRIVACY_FAIL); @@ -1940,7 +1940,7 @@ tBTM_STATUS BTM_BleSetRandAddress(BD_ADDR rand_addr) return BTM_SET_STATIC_RAND_ADDR_FAIL; } - if (!(btm_cb.ble_ctr_cb.inq_var.state == BTM_BLE_STOP_SCAN || btm_cb.ble_ctr_cb.inq_var.state == BTM_BLE_STOP_ADV || btm_cb.ble_ctr_cb.inq_var.state == BTM_BLE_IDLE)) { + if (btm_cb.ble_ctr_cb.inq_var.state != BTM_BLE_IDLE) { BTM_TRACE_ERROR("Advertising or scaning now, can't set randaddress %d", btm_cb.ble_ctr_cb.inq_var.state); return BTM_SET_STATIC_RAND_ADDR_FAIL; } @@ -1969,7 +1969,7 @@ tBTM_STATUS BTM_BleSetRandAddress(BD_ADDR rand_addr) void BTM_BleClearRandAddress(void) { tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb; - if (btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_RANDOM && (!(p_cb->inq_var.state == BTM_BLE_STOP_SCAN || p_cb->inq_var.state == BTM_BLE_STOP_ADV || p_cb->inq_var.state == BTM_BLE_IDLE))) { + if (btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_RANDOM && (p_cb->inq_var.state != BTM_BLE_IDLE)) { BTM_TRACE_ERROR("Advertising or scaning now, can't restore public address "); return; } @@ -2085,10 +2085,11 @@ void BTM_Recovery_Pre_State(void) { tBTM_BLE_INQ_CB *ble_inq_cb = &btm_cb.ble_ctr_cb.inq_var; - if (ble_inq_cb->state == BTM_BLE_ADVERTISING) { + if (ble_inq_cb->state & BTM_BLE_ADVERTISING) { btm_ble_stop_adv(); btm_ble_start_adv(); - } else if (ble_inq_cb->state == BTM_BLE_SCANNING) { + } + if (ble_inq_cb->state & BTM_BLE_SCANNING) { btm_ble_start_scan(); } @@ -3731,7 +3732,7 @@ tBTM_STATUS btm_ble_start_scan(void) if(scan_enable_status != BTM_SUCCESS) { status = BTM_NO_RESOURCES; } - btm_cb.ble_ctr_cb.inq_var.state = BTM_BLE_SCANNING; + btm_cb.ble_ctr_cb.inq_var.state |= BTM_BLE_SCANNING; if (p_inq->scan_type == BTM_BLE_SCAN_MODE_ACTI) { btm_ble_set_topology_mask(BTM_BLE_STATE_ACTIVE_SCAN_BIT); } else { @@ -3757,7 +3758,7 @@ void btm_ble_stop_scan(void) /* Clear the inquiry callback if set */ btm_cb.ble_ctr_cb.inq_var.scan_type = BTM_BLE_SCAN_MODE_NONE; - btm_cb.ble_ctr_cb.inq_var.state = BTM_BLE_STOP_SCAN; + btm_cb.ble_ctr_cb.inq_var.state &= ~BTM_BLE_SCANNING; /* stop discovery now */ btsnd_hcic_ble_set_scan_enable (BTM_BLE_SCAN_DISABLE, BTM_BLE_DUPLICATE_ENABLE); @@ -3855,7 +3856,7 @@ static void btm_ble_stop_discover(void) if (!BTM_BLE_IS_SCAN_ACTIVE(p_ble_cb->scan_activity)) { /* Clear the inquiry callback if set */ btm_cb.ble_ctr_cb.inq_var.scan_type = BTM_BLE_SCAN_MODE_NONE; - btm_cb.ble_ctr_cb.inq_var.state = BTM_BLE_STOP_SCAN; + btm_cb.ble_ctr_cb.inq_var.state &= ~BTM_BLE_SCANNING; /* stop discovery now */ if(btsnd_hcic_ble_set_scan_enable (BTM_BLE_SCAN_DISABLE, BTM_BLE_DUPLICATE_ENABLE)) { osi_sem_take(&scan_enable_sem, OSI_SEM_MAX_TIMEOUT); @@ -3952,7 +3953,7 @@ tBTM_STATUS btm_ble_start_adv(void) tBTM_BLE_GAP_STATE temp_state = p_cb->state; UINT8 adv_mode = p_cb->adv_mode; p_cb->adv_mode = BTM_BLE_ADV_ENABLE; - p_cb->state = BTM_BLE_ADVERTISING; + p_cb->state |= BTM_BLE_ADVERTISING; btm_ble_adv_states_operation(btm_ble_set_topology_mask, p_cb->evt_type); if (btsnd_hcic_ble_set_adv_enable (BTM_BLE_ADV_ENABLE)) { osi_sem_take(&adv_enable_sem, OSI_SEM_MAX_TIMEOUT); @@ -3996,7 +3997,7 @@ tBTM_STATUS btm_ble_stop_adv(void) p_cb->fast_adv_on = FALSE; p_cb->adv_mode = BTM_BLE_ADV_DISABLE; - p_cb->state = BTM_BLE_STOP_ADV; + p_cb->state &= ~BTM_BLE_ADVERTISING; btm_cb.ble_ctr_cb.wl_state &= ~BTM_BLE_WL_ADV; /* clear all adv states */ diff --git a/components/bt/host/bluedroid/stack/btm/include/btm_ble_int.h b/components/bt/host/bluedroid/stack/btm/include/btm_ble_int.h index bbc532de47..7e26b27838 100644 --- a/components/bt/host/bluedroid/stack/btm/include/btm_ble_int.h +++ b/components/bt/host/bluedroid/stack/btm/include/btm_ble_int.h @@ -105,13 +105,9 @@ typedef UINT8 tBTM_BLE_SEC_REQ_ACT; #define BTM_VSC_CHIP_CAPABILITY_M_VERSION 95 typedef enum { - BTM_BLE_IDLE, - BTM_BLE_SCANNING, - BTM_BLE_SCAN_PENDING, - BTM_BLE_STOP_SCAN, - BTM_BLE_ADVERTISING, - BTM_BLE_ADV_PENDING, - BTM_BLE_STOP_ADV, + BTM_BLE_IDLE = 0, + BTM_BLE_SCANNING = 1, + BTM_BLE_ADVERTISING = 2, }tBTM_BLE_GAP_STATE; typedef struct { @@ -170,7 +166,7 @@ typedef struct { TIMER_LIST_ENT inq_timer_ent; BOOLEAN scan_rsp; - tBTM_BLE_GAP_STATE state; /* Current state that the inquiry process is in */ + tBTM_BLE_GAP_STATE state; /* Current state that the adv or scan process is in */ INT8 tx_power; } tBTM_BLE_INQ_CB; diff --git a/components/bt/host/bluedroid/stack/l2cap/l2c_ble.c b/components/bt/host/bluedroid/stack/l2cap/l2c_ble.c index e50c7f4545..49dc456f24 100644 --- a/components/bt/host/bluedroid/stack/l2cap/l2c_ble.c +++ b/components/bt/host/bluedroid/stack/l2cap/l2c_ble.c @@ -257,7 +257,7 @@ void l2cble_notify_le_connection (BD_ADDR bda) tBTM_BLE_INQ_CB *p_cb = &btm_cb.ble_ctr_cb.inq_var; if(p_cb) { p_cb->adv_mode = BTM_BLE_ADV_DISABLE; - p_cb->state = BTM_BLE_STOP_ADV; + p_cb->state &= ~BTM_BLE_ADVERTISING; } } /* update link status */ From b242e0e60240eab321a1ae20c286302c61582de7 Mon Sep 17 00:00:00 2001 From: chenjianhua Date: Wed, 29 Mar 2023 16:09:16 +0800 Subject: [PATCH 3/4] bluedroid: fix GATTC cache address save --- .../bt/host/bluedroid/bta/gatt/bta_gattc_co.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/components/bt/host/bluedroid/bta/gatt/bta_gattc_co.c b/components/bt/host/bluedroid/bta/gatt/bta_gattc_co.c index 4421ab40c9..a53fb56a14 100644 --- a/components/bt/host/bluedroid/bta/gatt/bta_gattc_co.c +++ b/components/bt/host/bluedroid/bta/gatt/bta_gattc_co.c @@ -517,8 +517,8 @@ void bta_gattc_co_get_addr_list(BD_ADDR *addr_list) void bta_gattc_co_cache_addr_save(BD_ADDR bd_addr, hash_key_t hash_key) { esp_err_t err_code; - UINT8 num = ++cache_env->num_addr; UINT8 index = 0; + UINT8 new_index = cache_env->num_addr; UINT8 *p_buf = osi_malloc(MAX_ADDR_LIST_CACHE_BUF); // check the address list has the same hash key or not if (bta_gattc_co_find_hash_in_cache(hash_key) != INVALID_ADDR_NUM) { @@ -530,20 +530,22 @@ void bta_gattc_co_cache_addr_save(BD_ADDR bd_addr, hash_key_t hash_key) memcpy(cache_env->cache_addr[index].hash_key, hash_key, sizeof(hash_key_t)); } else { //if the bd_addr didn't in the address list, added the bd_addr to the last of the address list. - memcpy(cache_env->cache_addr[num - 1].hash_key, hash_key, sizeof(hash_key_t)); - memcpy(cache_env->cache_addr[num - 1].addr, bd_addr, sizeof(BD_ADDR)); + memcpy(cache_env->cache_addr[new_index].hash_key, hash_key, sizeof(hash_key_t)); + memcpy(cache_env->cache_addr[new_index].addr, bd_addr, sizeof(BD_ADDR)); + cache_env->num_addr++; } } else { - APPL_TRACE_DEBUG("%s(), num = %d", __func__, num); - memcpy(cache_env->cache_addr[num - 1].addr, bd_addr, sizeof(BD_ADDR)); - memcpy(cache_env->cache_addr[num - 1].hash_key, hash_key, sizeof(hash_key_t)); + APPL_TRACE_DEBUG("%s(), num = %d", __func__, new_index + 1); + memcpy(cache_env->cache_addr[new_index].addr, bd_addr, sizeof(BD_ADDR)); + memcpy(cache_env->cache_addr[new_index].hash_key, hash_key, sizeof(hash_key_t)); + cache_env->num_addr++; } nvs_handle_t *fp = &cache_env->addr_fp; - UINT16 length = num*(sizeof(BD_ADDR) + sizeof(hash_key_t)); + UINT16 length = cache_env->num_addr * (sizeof(BD_ADDR) + sizeof(hash_key_t)); - for (UINT8 i = 0; i < num; i++) { + for (UINT8 i = 0; i < cache_env->num_addr; i++) { //copy the address to the buffer. memcpy(p_buf + i*(sizeof(BD_ADDR) + sizeof(hash_key_t)), cache_env->cache_addr[i].addr, sizeof(BD_ADDR)); //copy the hash key to the buffer. From 93360655cfd70966151fc8e5f810b1fcce80e18c Mon Sep 17 00:00:00 2001 From: chenjianhua Date: Thu, 6 Apr 2023 15:20:36 +0800 Subject: [PATCH 4/4] bluedroid: report status after clearing the BLE white list --- .../bluedroid_host/mesh_bearer_adapt.c | 2 +- .../api/include/api/esp_gap_ble_api.h | 1 + .../bt/host/bluedroid/bta/dm/bta_dm_act.c | 4 +- .../bt/host/bluedroid/bta/dm/bta_dm_api.c | 12 ++--- .../bluedroid/bta/dm/include/bta_dm_int.h | 2 +- .../host/bluedroid/bta/include/bta/bta_api.h | 6 +-- .../btc/profile/std/gap/btc_gap_ble.c | 6 +-- .../host/bluedroid/stack/btm/btm_ble_bgconn.c | 46 +++++++++++-------- .../bt/host/bluedroid/stack/btm/btm_ble_gap.c | 10 ++-- .../bluedroid/stack/btm/include/btm_ble_int.h | 6 +-- .../bluedroid/stack/include/stack/btm_api.h | 3 +- .../stack/include/stack/btm_ble_api.h | 4 +- 12 files changed, 57 insertions(+), 45 deletions(-) diff --git a/components/bt/esp_ble_mesh/mesh_core/bluedroid_host/mesh_bearer_adapt.c b/components/bt/esp_ble_mesh/mesh_core/bluedroid_host/mesh_bearer_adapt.c index fa4507ec7b..48c92e6fa5 100644 --- a/components/bt/esp_ble_mesh/mesh_core/bluedroid_host/mesh_bearer_adapt.c +++ b/components/bt/esp_ble_mesh/mesh_core/bluedroid_host/mesh_bearer_adapt.c @@ -502,7 +502,7 @@ int bt_le_update_white_list(struct bt_mesh_white_list *wl) } if (BTM_BleUpdateAdvWhitelist(wl->add_remove, wl->remote_bda, - wl->addr_type, (tBTM_ADD_WHITELIST_CBACK *)wl->update_wl_comp_cb) == false) { + wl->addr_type, (tBTM_UPDATE_WHITELIST_CBACK *)wl->update_wl_comp_cb) == false) { return -EIO; } diff --git a/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h b/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h index 0fb0f119e4..61f4a90c49 100644 --- a/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h +++ b/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h @@ -604,6 +604,7 @@ typedef enum { typedef enum{ ESP_BLE_WHITELIST_REMOVE = 0X00, /*!< remove mac from whitelist */ ESP_BLE_WHITELIST_ADD = 0X01, /*!< add address to whitelist */ + ESP_BLE_WHITELIST_CLEAR = 0x02, /*!< clear all device in whitelist */ }esp_ble_wl_opration_t; typedef enum { diff --git a/components/bt/host/bluedroid/bta/dm/bta_dm_act.c b/components/bt/host/bluedroid/bta/dm/bta_dm_act.c index dbda50189f..6824d1e975 100644 --- a/components/bt/host/bluedroid/bta/dm/bta_dm_act.c +++ b/components/bt/host/bluedroid/bta/dm/bta_dm_act.c @@ -837,14 +837,14 @@ void bta_dm_ble_set_channels (tBTA_DM_MSG *p_data) void bta_dm_update_white_list(tBTA_DM_MSG *p_data) { #if (BLE_INCLUDED == TRUE) - BTM_BleUpdateAdvWhitelist(p_data->white_list.add_remove, p_data->white_list.remote_addr, p_data->white_list.addr_type, p_data->white_list.add_wl_cb); + BTM_BleUpdateAdvWhitelist(p_data->white_list.add_remove, p_data->white_list.remote_addr, p_data->white_list.addr_type, p_data->white_list.update_wl_cb); #endif ///BLE_INCLUDED == TRUE } void bta_dm_clear_white_list(tBTA_DM_MSG *p_data) { #if (BLE_INCLUDED == TRUE) - BTM_BleClearWhitelist(); + BTM_BleClearWhitelist(p_data->white_list.update_wl_cb); #endif } diff --git a/components/bt/host/bluedroid/bta/dm/bta_dm_api.c b/components/bt/host/bluedroid/bta/dm/bta_dm_api.c index 6cad02c5e3..ca743c807a 100644 --- a/components/bt/host/bluedroid/bta/dm/bta_dm_api.c +++ b/components/bt/host/bluedroid/bta/dm/bta_dm_api.c @@ -322,26 +322,26 @@ void BTA_DmBleSetChannels(const uint8_t *channels, tBTA_CMPL_CB *set_channels_c } -void BTA_DmUpdateWhiteList(BOOLEAN add_remove, BD_ADDR remote_addr, tBLE_ADDR_TYPE addr_type, tBTA_ADD_WHITELIST_CBACK *add_wl_cb) +void BTA_DmUpdateWhiteList(BOOLEAN add_remove, BD_ADDR remote_addr, tBLE_ADDR_TYPE addr_type, tBTA_UPDATE_WHITELIST_CBACK *update_wl_cb) { tBTA_DM_API_UPDATE_WHITE_LIST *p_msg; if ((p_msg = (tBTA_DM_API_UPDATE_WHITE_LIST *)osi_malloc(sizeof(tBTA_DM_API_UPDATE_WHITE_LIST))) != NULL) { p_msg->hdr.event = BTA_DM_API_UPDATE_WHITE_LIST_EVT; p_msg->add_remove = add_remove; p_msg->addr_type = addr_type; - p_msg->add_wl_cb = add_wl_cb; + p_msg->update_wl_cb = update_wl_cb; memcpy(p_msg->remote_addr, remote_addr, sizeof(BD_ADDR)); bta_sys_sendmsg(p_msg); } } -void BTA_DmClearWhiteList(void) +void BTA_DmClearWhiteList(tBTA_UPDATE_WHITELIST_CBACK *update_wl_cb) { - tBTA_DM_API_ENABLE *p_msg; - if ((p_msg = (tBTA_DM_API_ENABLE *)osi_malloc(sizeof(tBTA_DM_API_ENABLE))) != NULL) { + tBTA_DM_API_UPDATE_WHITE_LIST *p_msg; + if ((p_msg = (tBTA_DM_API_UPDATE_WHITE_LIST *)osi_malloc(sizeof(tBTA_DM_API_UPDATE_WHITE_LIST))) != NULL) { p_msg->hdr.event = BTA_DM_API_CLEAR_WHITE_LIST_EVT; - p_msg->p_sec_cback = NULL; + p_msg->update_wl_cb = update_wl_cb; bta_sys_sendmsg(p_msg); } diff --git a/components/bt/host/bluedroid/bta/dm/include/bta_dm_int.h b/components/bt/host/bluedroid/bta/dm/include/bta_dm_int.h index c42955bb6c..82cf3192a9 100644 --- a/components/bt/host/bluedroid/bta/dm/include/bta_dm_int.h +++ b/components/bt/host/bluedroid/bta/dm/include/bta_dm_int.h @@ -250,7 +250,7 @@ typedef struct { BOOLEAN add_remove; BD_ADDR remote_addr; tBLE_ADDR_TYPE addr_type; - tBTA_ADD_WHITELIST_CBACK *add_wl_cb; + tBTA_UPDATE_WHITELIST_CBACK *update_wl_cb; }tBTA_DM_API_UPDATE_WHITE_LIST; typedef struct { diff --git a/components/bt/host/bluedroid/bta/include/bta/bta_api.h b/components/bt/host/bluedroid/bta/include/bta/bta_api.h index d6ce228a59..74985f5303 100644 --- a/components/bt/host/bluedroid/bta/include/bta/bta_api.h +++ b/components/bt/host/bluedroid/bta/include/bta/bta_api.h @@ -420,7 +420,7 @@ typedef tBTM_START_ADV_CMPL_CBACK tBTA_START_ADV_CMPL_CBACK; typedef tBTM_START_STOP_ADV_CMPL_CBACK tBTA_START_STOP_ADV_CMPL_CBACK; -typedef tBTM_ADD_WHITELIST_CBACK tBTA_ADD_WHITELIST_CBACK; +typedef tBTM_UPDATE_WHITELIST_CBACK tBTA_UPDATE_WHITELIST_CBACK; typedef tBTM_SET_PKT_DATA_LENGTH_CBACK tBTA_SET_PKT_DATA_LENGTH_CBACK; @@ -1551,9 +1551,9 @@ void BTA_DmSetQos(BD_ADDR bd_addr, UINT32 t_poll, tBTM_CMPL_CB *p_cb); *******************************************************************************/ void BTA_DmBleSetChannels(const uint8_t *channels, tBTA_CMPL_CB *set_channels_cb); -extern void BTA_DmUpdateWhiteList(BOOLEAN add_remove, BD_ADDR remote_addr, tBLE_ADDR_TYPE addr_type, tBTA_ADD_WHITELIST_CBACK *add_wl_cb); +extern void BTA_DmUpdateWhiteList(BOOLEAN add_remove, BD_ADDR remote_addr, tBLE_ADDR_TYPE addr_type, tBTA_UPDATE_WHITELIST_CBACK *update_wl_cb); -extern void BTA_DmClearWhiteList(void); +extern void BTA_DmClearWhiteList(tBTA_UPDATE_WHITELIST_CBACK *update_wl_cb); extern void BTA_DmBleReadAdvTxPower(tBTA_CMPL_CB *cmpl_cb); #endif ///BLE_INCLUDED == TRUE diff --git a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c index 3ff1c8ae42..a5001d09d4 100644 --- a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c +++ b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c @@ -743,7 +743,7 @@ static void btc_gap_ble_set_channels_cmpl_callback(void *p_data) } -static void btc_add_whitelist_complete_callback(UINT8 status, tBTM_WL_OPERATION wl_opration) +static void btc_update_whitelist_complete_callback(UINT8 status, tBTM_WL_OPERATION wl_opration) { esp_ble_gap_cb_param_t param; bt_status_t ret; @@ -1192,10 +1192,10 @@ void btc_gap_ble_call_handler(btc_msg_t *msg) btc_ble_config_local_icon(arg->cfg_local_icon.icon); break; case BTC_GAP_BLE_ACT_UPDATE_WHITE_LIST: - BTA_DmUpdateWhiteList(arg->update_white_list.add_remove, arg->update_white_list.remote_bda, arg->update_white_list.wl_addr_type, btc_add_whitelist_complete_callback); + BTA_DmUpdateWhiteList(arg->update_white_list.add_remove, arg->update_white_list.remote_bda, arg->update_white_list.wl_addr_type, btc_update_whitelist_complete_callback); break; case BTC_GAP_BLE_ACT_CLEAR_WHITE_LIST: - BTA_DmClearWhiteList(); + BTA_DmClearWhiteList(btc_update_whitelist_complete_callback); break; case BTC_GAP_BLE_ACT_READ_RSSI: BTA_DmReadRSSI(arg->read_rssi.remote_addr, BTA_TRANSPORT_LE, btc_read_ble_rssi_cmpl_callback); diff --git a/components/bt/host/bluedroid/stack/btm/btm_ble_bgconn.c b/components/bt/host/bluedroid/stack/btm/btm_ble_bgconn.c index f8677e8f44..4952440e3a 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_ble_bgconn.c +++ b/components/bt/host/bluedroid/stack/btm/btm_ble_bgconn.c @@ -276,12 +276,12 @@ void btm_enq_wl_dev_operation(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE ad ** the white list. ** *******************************************************************************/ -BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBTM_ADD_WHITELIST_CBACK *add_wl_cb) +BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb) { if(addr_type > BLE_ADDR_RANDOM) { BTM_TRACE_ERROR("%s address type is error, unable to add device", __func__); - if (add_wl_cb){ - add_wl_cb(HCI_ERR_ILLEGAL_PARAMETER_FMT,to_add); + if (update_wl_cb){ + update_wl_cb(HCI_ERR_ILLEGAL_PARAMETER_FMT,to_add); } return FALSE; } @@ -313,8 +313,8 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_ // do nothing } else { BTC_TRACE_ERROR(" controller not support resolvable address"); - if (add_wl_cb){ - add_wl_cb(HCI_ERR_ILLEGAL_PARAMETER_FMT,to_add); + if (update_wl_cb){ + update_wl_cb(HCI_ERR_ILLEGAL_PARAMETER_FMT,to_add); } return FALSE; } @@ -325,8 +325,8 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_ if (to_add && p_cb->white_list_avail_size == 0) { BTM_TRACE_ERROR("%s Whitelist full, unable to add device", __func__); - if (add_wl_cb){ - add_wl_cb(HCI_ERR_MEMORY_FULL,to_add); + if (update_wl_cb){ + update_wl_cb(HCI_ERR_MEMORY_FULL,to_add); } return FALSE; } @@ -335,8 +335,8 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_ /* added the bd_addr to the connection hash map queue */ if(!background_connection_add((bt_bdaddr_t *)bd_addr)) { /* if the bd_addr already exist in whitelist, just callback return TRUE */ - if (add_wl_cb){ - add_wl_cb(HCI_SUCCESS,to_add); + if (update_wl_cb){ + update_wl_cb(HCI_SUCCESS,to_add); } return TRUE; } @@ -344,16 +344,16 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_ /* remove the bd_addr to the connection hash map queue */ if(!background_connection_remove((bt_bdaddr_t *)bd_addr)){ /* if the bd_addr don't exist in whitelist, just callback return TRUE */ - if (add_wl_cb){ - add_wl_cb(HCI_SUCCESS,to_add); + if (update_wl_cb){ + update_wl_cb(HCI_SUCCESS,to_add); } return TRUE; } } - if (add_wl_cb){ + if (update_wl_cb){ //save add whitelist complete callback - p_cb->add_wl_cb = add_wl_cb; + p_cb->update_wl_cb = update_wl_cb; } /* stop the auto connect */ btm_suspend_wl_activity(p_cb->wl_state); @@ -371,11 +371,17 @@ BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_ ** Description This function clears the white list. ** *******************************************************************************/ -void btm_ble_clear_white_list (void) +void btm_ble_clear_white_list (tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb) { + tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb; + BTM_TRACE_EVENT ("btm_ble_clear_white_list"); btsnd_hcic_ble_clear_white_list(); background_connections_clear(); + + if (update_wl_cb) { + p_cb->update_wl_cb = update_wl_cb; + } } /******************************************************************************* @@ -399,6 +405,10 @@ void btm_ble_clear_white_list_complete(UINT8 *p_data, UINT16 evt_len) } else { BTM_TRACE_ERROR ("%s failed, status 0x%x\n", __func__, status); } + + if (p_cb->update_wl_cb) { + (*p_cb->update_wl_cb)(status, BTM_WHITELIST_CLEAR); + } } /******************************************************************************* @@ -429,9 +439,9 @@ void btm_ble_add_2_white_list_complete(UINT8 status) --btm_cb.ble_ctr_cb.white_list_avail_size; } // add whitelist complete callback - if (p_cb->add_wl_cb) + if (p_cb->update_wl_cb) { - (*p_cb->add_wl_cb)(status, BTM_WHITELIST_ADD); + (*p_cb->update_wl_cb)(status, BTM_WHITELIST_ADD); } } @@ -451,9 +461,9 @@ void btm_ble_remove_from_white_list_complete(UINT8 *p, UINT16 evt_len) if (*p == HCI_SUCCESS) { ++btm_cb.ble_ctr_cb.white_list_avail_size; } - if (p_cb->add_wl_cb) + if (p_cb->update_wl_cb) { - (*p_cb->add_wl_cb)(*p, BTM_WHITELIST_REMOVE); + (*p_cb->update_wl_cb)(*p, BTM_WHITELIST_REMOVE); } } diff --git a/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c b/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c index a81ce3f8eb..20fa7e5330 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c +++ b/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c @@ -305,9 +305,9 @@ void BTM_BleRegiseterConnParamCallback(tBTM_UPDATE_CONN_PARAM_CBACK *update_conn ** Returns void ** *******************************************************************************/ -BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR remote_bda, tBLE_ADDR_TYPE addr_type, tBTM_ADD_WHITELIST_CBACK *add_wl_cb) +BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR remote_bda, tBLE_ADDR_TYPE addr_type, tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb) { - return btm_update_dev_to_white_list(add_remove, remote_bda, addr_type, add_wl_cb); + return btm_update_dev_to_white_list(add_remove, remote_bda, addr_type, update_wl_cb); } /******************************************************************************* @@ -319,9 +319,9 @@ BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR remote_bda, tBLE_A ** Returns void ** *******************************************************************************/ -void BTM_BleClearWhitelist(void) +void BTM_BleClearWhitelist(tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb) { - btm_ble_clear_white_list(); + btm_ble_clear_white_list(update_wl_cb); } /******************************************************************************* @@ -1106,7 +1106,7 @@ BOOLEAN BTM_BleSetBgConnType(tBTM_BLE_CONN_TYPE bg_conn_type, void BTM_BleClearBgConnDev(void) { btm_ble_start_auto_conn(FALSE); - btm_ble_clear_white_list(); + btm_ble_clear_white_list(NULL); gatt_reset_bgdev_list(); } diff --git a/components/bt/host/bluedroid/stack/btm/include/btm_ble_int.h b/components/bt/host/bluedroid/stack/btm/include/btm_ble_int.h index 7e26b27838..37fd6f2131 100644 --- a/components/bt/host/bluedroid/stack/btm/include/btm_ble_int.h +++ b/components/bt/host/bluedroid/stack/btm/include/btm_ble_int.h @@ -334,7 +334,7 @@ typedef struct { tBTM_BLE_SEL_CBACK *p_select_cback; /* white list information */ UINT8 white_list_avail_size; - tBTM_ADD_WHITELIST_CBACK *add_wl_cb; + tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb; tBTM_BLE_WL_STATE wl_state; fixed_queue_t *conn_pending_q; @@ -429,10 +429,10 @@ void btm_ble_update_sec_key_size(BD_ADDR bd_addr, UINT8 enc_key_size); UINT8 btm_ble_read_sec_key_size(BD_ADDR bd_addr); /* white list function */ -BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBTM_ADD_WHITELIST_CBACK *add_wl_cb); +BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb); void btm_update_scanner_filter_policy(tBTM_BLE_SFP scan_policy); void btm_update_adv_filter_policy(tBTM_BLE_AFP adv_policy); -void btm_ble_clear_white_list (void); +void btm_ble_clear_white_list (tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb); void btm_read_white_list_size_complete(UINT8 *p, UINT16 evt_len); void btm_ble_add_2_white_list_complete(UINT8 status); void btm_ble_remove_from_white_list_complete(UINT8 *p, UINT16 evt_len); diff --git a/components/bt/host/bluedroid/stack/include/stack/btm_api.h b/components/bt/host/bluedroid/stack/include/stack/btm_api.h index 60845ac77b..cb61886a8f 100644 --- a/components/bt/host/bluedroid/stack/include/stack/btm_api.h +++ b/components/bt/host/bluedroid/stack/include/stack/btm_api.h @@ -151,6 +151,7 @@ typedef struct { typedef enum{ BTM_WHITELIST_REMOVE = 0X00, BTM_WHITELIST_ADD = 0X01, + BTM_WHITELIST_CLEAR = 0x02, }tBTM_WL_OPERATION; @@ -189,7 +190,7 @@ typedef void (tBTM_SET_PKT_DATA_LENGTH_CBACK) (UINT8 status, tBTM_LE_SET_PKT_DAT typedef void (tBTM_SET_RAND_ADDR_CBACK) (UINT8 status); -typedef void (tBTM_ADD_WHITELIST_CBACK) (UINT8 status, tBTM_WL_OPERATION wl_opration); +typedef void (tBTM_UPDATE_WHITELIST_CBACK) (UINT8 status, tBTM_WL_OPERATION wl_opration); typedef void (tBTM_SET_LOCAL_PRIVACY_CBACK) (UINT8 status); diff --git a/components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h b/components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h index 1fbbbcab12..d9a9ad0ab7 100644 --- a/components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h +++ b/components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h @@ -1816,7 +1816,7 @@ void BTM_BleTurnOnPrivacyOnRemote(BD_ADDR bd_addr, ** *******************************************************************************/ //extern -BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda, tBLE_ADDR_TYPE addr_type, tBTM_ADD_WHITELIST_CBACK *add_wl_cb); +BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda, tBLE_ADDR_TYPE addr_type, tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb); /******************************************************************************* ** @@ -1827,7 +1827,7 @@ BOOLEAN BTM_BleUpdateAdvWhitelist(BOOLEAN add_remove, BD_ADDR emote_bda, tBLE_AD ** Returns void ** *******************************************************************************/ -void BTM_BleClearWhitelist(void); +void BTM_BleClearWhitelist(tBTM_UPDATE_WHITELIST_CBACK *update_wl_cb); /******************************************************************************* **