diff --git a/components/bt/controller/lib_esp32c3_family b/components/bt/controller/lib_esp32c3_family index 2a91d90e33..420ae1726d 160000 --- a/components/bt/controller/lib_esp32c3_family +++ b/components/bt/controller/lib_esp32c3_family @@ -1 +1 @@ -Subproject commit 2a91d90e33b3b1104daf1bff898fe5bc3f814811 +Subproject commit 420ae1726dede6bbd4f3393744a8f3a252330b6a 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 337ce5b223..0f0a1935d3 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 @@ -768,6 +768,9 @@ typedef uint8_t esp_ble_gap_sync_t; typedef uint8_t esp_ble_gap_adv_type_t; +/// Extend advertising tx power, range: [-127, +126] dBm +#define EXT_ADV_TX_PWR_NO_PREFERENCE (127) /*!< host has no preference for tx power */ + /** * @brief ext adv parameters */ 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 c3609ff16c..6eea241d77 100644 --- a/components/bt/host/bluedroid/bta/include/bta/bta_api.h +++ b/components/bt/host/bluedroid/bta/include/bta/bta_api.h @@ -1469,7 +1469,7 @@ typedef struct { tBLE_ADDR_TYPE peer_addr_type; BD_ADDR peer_addr; tBTA_BLE_AFP filter_policy; - UINT8 tx_power; + INT8 tx_power; tBTA_DM_BLE_GAP_PHY primary_phy; UINT8 max_skip; tBTA_DM_BLE_GAP_PHY secondary_phy; diff --git a/components/bt/host/bluedroid/stack/btm/btm_ble.c b/components/bt/host/bluedroid/stack/btm/btm_ble.c index a207fad77c..fb0d3f6a8c 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_ble.c +++ b/components/bt/host/bluedroid/stack/btm/btm_ble.c @@ -1990,7 +1990,7 @@ void btm_ble_conn_complete(UINT8 *p, UINT16 evt_len, BOOLEAN enhanced) } #if (BLE_PRIVACY_SPT == TRUE ) peer_addr_type = bda_type; - match = btm_identity_addr_to_random_pseudo (bda, &bda_type, TRUE); + match = btm_identity_addr_to_random_pseudo (bda, &bda_type, FALSE); /* possiblly receive connection complete with resolvable random on slave role while the device has been paired */ 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 6976996e75..ef332e836c 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c +++ b/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c @@ -4250,10 +4250,11 @@ void btm_ble_read_remote_features_complete(UINT8 *p) btsnd_hcic_rmt_ver_req (p_acl_cb->hci_handle); } else{ + uint16_t data_length = controller_get_interface()->get_ble_default_data_packet_length(); + uint16_t data_txtime = controller_get_interface()->get_ble_default_data_packet_txtime(); if (p_acl_cb->transport == BT_TRANSPORT_LE) { - if (HCI_LE_DATA_LEN_EXT_SUPPORTED(p_acl_cb->peer_le_features)) { - uint16_t data_length = controller_get_interface()->get_ble_default_data_packet_length(); - uint16_t data_txtime = controller_get_interface()->get_ble_default_data_packet_txtime(); + if (HCI_LE_DATA_LEN_EXT_SUPPORTED(p_acl_cb->peer_le_features) && + (p_acl_cb->data_length_params.tx_len != data_length)) { p_acl_cb->data_len_updating = true; btsnd_hcic_ble_set_data_length(p_acl_cb->hci_handle, data_length, data_txtime); } diff --git a/components/bt/host/bluedroid/stack/hcic/hciblecmds.c b/components/bt/host/bluedroid/stack/hcic/hciblecmds.c index 4369ecc2c8..8aaab5ea2a 100644 --- a/components/bt/host/bluedroid/stack/hcic/hciblecmds.c +++ b/components/bt/host/bluedroid/stack/hcic/hciblecmds.c @@ -1214,7 +1214,7 @@ UINT8 btsnd_hcic_ble_set_extend_rand_address(UINT8 adv_handle, BD_ADDR rand_addr UINT8 btsnd_hcic_ble_set_ext_adv_params(UINT8 adv_handle, UINT16 properties, UINT32 interval_min, UINT32 interval_max, UINT8 channel_map, UINT8 own_addr_type, UINT8 peer_addr_type, BD_ADDR peer_addr, - UINT8 adv_filter_policy, UINT8 adv_tx_power, + UINT8 adv_filter_policy, INT8 adv_tx_power, UINT8 primary_adv_phy, UINT8 secondary_adv_max_skip, UINT8 secondary_adv_phy, UINT8 adv_sid, UINT8 scan_req_ntf_enable) @@ -1244,7 +1244,7 @@ UINT8 btsnd_hcic_ble_set_ext_adv_params(UINT8 adv_handle, UINT16 properties, UIN UINT8_TO_STREAM(pp, peer_addr_type); BDADDR_TO_STREAM (pp, peer_addr); UINT8_TO_STREAM(pp, adv_filter_policy); - UINT8_TO_STREAM(pp, adv_tx_power); + INT8_TO_STREAM(pp, adv_tx_power); UINT8_TO_STREAM(pp, primary_adv_phy); UINT8_TO_STREAM(pp, secondary_adv_max_skip); UINT8_TO_STREAM(pp, secondary_adv_phy); 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 f7cac0ecd8..b20b861a28 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 @@ -767,7 +767,7 @@ typedef struct { tBLE_ADDR_TYPE peer_addr_type; BD_ADDR peer_addr; tBTM_BLE_AFP filter_policy; - UINT8 tx_power; + INT8 tx_power; tBTM_BLE_GAP_PHY primary_phy; UINT8 max_skip; tBTM_BLE_GAP_PHY secondary_phy; diff --git a/components/bt/host/bluedroid/stack/include/stack/hcimsgs.h b/components/bt/host/bluedroid/stack/include/stack/hcimsgs.h index 44aa840945..ebdacff27a 100644 --- a/components/bt/host/bluedroid/stack/include/stack/hcimsgs.h +++ b/components/bt/host/bluedroid/stack/include/stack/hcimsgs.h @@ -962,7 +962,7 @@ UINT8 btsnd_hcic_ble_set_extend_rand_address(UINT8 adv_handle, BD_ADDR rand_addr UINT8 btsnd_hcic_ble_set_ext_adv_params(UINT8 adv_handle, UINT16 properties, UINT32 interval_min, UINT32 interval_max, UINT8 channel_map, UINT8 own_addr_type, UINT8 peer_addr_type, BD_ADDR peer_addr, - UINT8 adv_filter_policy, UINT8 adv_tx_power, + UINT8 adv_filter_policy, INT8 adv_tx_power, UINT8 primary_adv_phy, UINT8 secondary_adv_max_skip, UINT8 secondary_adv_phy, UINT8 adv_sid, UINT8 scan_req_ntf_enable); diff --git a/examples/bluetooth/bluedroid/ble_50/ble50_security_server/main/ble50_sec_gatts_demo.c b/examples/bluetooth/bluedroid/ble_50/ble50_security_server/main/ble50_sec_gatts_demo.c index 744acce676..d56abe5483 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble50_security_server/main/ble50_sec_gatts_demo.c +++ b/examples/bluetooth/bluedroid/ble_50/ble50_security_server/main/ble50_sec_gatts_demo.c @@ -57,6 +57,7 @@ esp_ble_gap_ext_adv_params_t ext_adv_params_2M = { .sid = 0, .scan_req_notif = false, .own_addr_type = BLE_ADDR_TYPE_PUBLIC, + .tx_power = EXT_ADV_TX_PWR_NO_PREFERENCE, }; struct gatts_profile_inst { diff --git a/examples/bluetooth/bluedroid/ble_50/multi-adv/main/multi_adv_demo.c b/examples/bluetooth/bluedroid/ble_50/multi-adv/main/multi_adv_demo.c index 92eb86ebcd..b3fb958afa 100644 --- a/examples/bluetooth/bluedroid/ble_50/multi-adv/main/multi_adv_demo.c +++ b/examples/bluetooth/bluedroid/ble_50/multi-adv/main/multi_adv_demo.c @@ -6,6 +6,7 @@ CONDITIONS OF ANY KIND, either express or implied. */ + /**************************************************************************** * * This demo showcases BLE GATT server. It can send adv data, be connected by client. @@ -66,6 +67,7 @@ esp_ble_gap_ext_adv_params_t ext_adv_params_1M = { .sid = 0, .scan_req_notif = false, .own_addr_type = BLE_ADDR_TYPE_RANDOM, + .tx_power = EXT_ADV_TX_PWR_NO_PREFERENCE, }; esp_ble_gap_ext_adv_params_t ext_adv_params_2M = { @@ -80,6 +82,7 @@ esp_ble_gap_ext_adv_params_t ext_adv_params_2M = { .sid = 1, .scan_req_notif = false, .own_addr_type = BLE_ADDR_TYPE_RANDOM, + .tx_power = EXT_ADV_TX_PWR_NO_PREFERENCE, }; esp_ble_gap_ext_adv_params_t legacy_adv_params = { @@ -94,6 +97,7 @@ esp_ble_gap_ext_adv_params_t legacy_adv_params = { .sid = 2, .scan_req_notif = false, .own_addr_type = BLE_ADDR_TYPE_RANDOM, + .tx_power = EXT_ADV_TX_PWR_NO_PREFERENCE, }; esp_ble_gap_ext_adv_params_t ext_adv_params_coded = { @@ -108,6 +112,7 @@ esp_ble_gap_ext_adv_params_t ext_adv_params_coded = { .sid = 3, .scan_req_notif = false, .own_addr_type = BLE_ADDR_TYPE_RANDOM, + .tx_power = EXT_ADV_TX_PWR_NO_PREFERENCE, }; static uint8_t raw_adv_data_1m[] = { diff --git a/examples/bluetooth/bluedroid/ble_50/peroidic_adv/main/periodic_adv_demo.c b/examples/bluetooth/bluedroid/ble_50/peroidic_adv/main/periodic_adv_demo.c index 9a2d032fbf..c97bfe029c 100644 --- a/examples/bluetooth/bluedroid/ble_50/peroidic_adv/main/periodic_adv_demo.c +++ b/examples/bluetooth/bluedroid/ble_50/peroidic_adv/main/periodic_adv_demo.c @@ -67,6 +67,7 @@ esp_ble_gap_ext_adv_params_t ext_adv_params_2M = { .sid = 0, .scan_req_notif = false, .own_addr_type = BLE_ADDR_TYPE_RANDOM, + .tx_power = EXT_ADV_TX_PWR_NO_PREFERENCE, }; static esp_ble_gap_periodic_adv_params_t periodic_adv_params = {