mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
fix(nimble): Connect with OTA address for host based privacy
This commit is contained in:
@@ -322,6 +322,17 @@ menu "GAP"
|
|||||||
Use this option to do host based Random Private Address resolution.
|
Use this option to do host based Random Private Address resolution.
|
||||||
This option is valid only for ESP32
|
This option is valid only for ESP32
|
||||||
|
|
||||||
|
config BT_NIMBLE_HOST_BASED_PRIVACY_RESOLVE_ON_SCAN
|
||||||
|
bool "Resolve peer RPA while scanning"
|
||||||
|
default y
|
||||||
|
depends on BT_NIMBLE_HOST_BASED_PRIVACY
|
||||||
|
help
|
||||||
|
Enable this option to resolve peer Resolvable Private Addresses (RPAs)
|
||||||
|
to their identity addresses in scan results. This is useful when an
|
||||||
|
application needs to identify a peer while scanning, for example, to
|
||||||
|
match a bonded device. When disabled, scan results retain the peer's
|
||||||
|
on-air RPA, and the RPA is resolved when the connection is established.
|
||||||
|
|
||||||
config BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN
|
config BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN
|
||||||
bool "Allow Connections with scanning in progress"
|
bool "Allow Connections with scanning in progress"
|
||||||
depends on BT_NIMBLE_ENABLED && !(IDF_TARGET_ESP32C2)
|
depends on BT_NIMBLE_ENABLED && !(IDF_TARGET_ESP32C2)
|
||||||
|
|||||||
Submodule components/bt/host/nimble/nimble updated: 20357f36e5...2a74e09fab
@@ -989,6 +989,14 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_HOST_BASED_PRIVACY_RESOLVE_ON_SCAN
|
||||||
|
#ifdef CONFIG_BT_NIMBLE_HOST_BASED_PRIVACY_RESOLVE_ON_SCAN
|
||||||
|
#define MYNEWT_VAL_BLE_HOST_BASED_PRIVACY_RESOLVE_ON_SCAN (1)
|
||||||
|
#else
|
||||||
|
#define MYNEWT_VAL_BLE_HOST_BASED_PRIVACY_RESOLVE_ON_SCAN (0)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_RPA_TIMEOUT
|
#ifndef MYNEWT_VAL_BLE_RPA_TIMEOUT
|
||||||
#define MYNEWT_VAL_BLE_RPA_TIMEOUT (CONFIG_BT_NIMBLE_RPA_TIMEOUT)
|
#define MYNEWT_VAL_BLE_RPA_TIMEOUT (CONFIG_BT_NIMBLE_RPA_TIMEOUT)
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -346,10 +346,23 @@ ble_cts_cent_connect_if_interesting(void *disc)
|
|||||||
* timeout.
|
* timeout.
|
||||||
*/
|
*/
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
addr = &((struct ble_gap_ext_disc_desc *)disc)->addr;
|
struct ble_gap_ext_disc_desc *disc_desc = disc;
|
||||||
#else
|
#else
|
||||||
addr = &((struct ble_gap_disc_desc *)disc)->addr;
|
struct ble_gap_disc_desc *disc_desc = disc;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
addr = &disc_desc->addr;
|
||||||
|
|
||||||
|
#if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY)
|
||||||
|
/*
|
||||||
|
* With host-based privacy, the advertising report's peer address may be
|
||||||
|
* resolved to the identity address by the Host. The Controller does not
|
||||||
|
* perform peer RPA resolution, so use the current OTA address when
|
||||||
|
* initiating the connection.
|
||||||
|
*/
|
||||||
|
addr = &disc_desc->ota_addr;
|
||||||
|
#endif
|
||||||
|
|
||||||
rc = ble_gap_connect(own_addr_type, addr, 30000, NULL,
|
rc = ble_gap_connect(own_addr_type, addr, 30000, NULL,
|
||||||
ble_cts_cent_gap_event, NULL);
|
ble_cts_cent_gap_event, NULL);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
|
|||||||
@@ -468,10 +468,23 @@ ble_htp_cent_connect_if_interesting(void *disc)
|
|||||||
* timeout.
|
* timeout.
|
||||||
*/
|
*/
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
addr = &((struct ble_gap_ext_disc_desc *)disc)->addr;
|
struct ble_gap_ext_disc_desc *disc_desc = disc;
|
||||||
#else
|
#else
|
||||||
addr = &((struct ble_gap_disc_desc *)disc)->addr;
|
struct ble_gap_disc_desc *disc_desc = disc;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
addr = &disc_desc->addr;
|
||||||
|
|
||||||
|
#if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY)
|
||||||
|
/*
|
||||||
|
* With host-based privacy, the advertising report's peer address may be
|
||||||
|
* resolved to the identity address by the Host. The Controller does not
|
||||||
|
* perform peer RPA resolution, so use the current OTA address when
|
||||||
|
* initiating the connection.
|
||||||
|
*/
|
||||||
|
addr = &disc_desc->ota_addr;
|
||||||
|
#endif
|
||||||
|
|
||||||
rc = ble_gap_connect(own_addr_type, addr, 30000, NULL,
|
rc = ble_gap_connect(own_addr_type, addr, 30000, NULL,
|
||||||
ble_htp_cent_gap_event, NULL);
|
ble_htp_cent_gap_event, NULL);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
|
|||||||
@@ -356,10 +356,23 @@ ble_prox_cent_connect_if_interesting(void *disc)
|
|||||||
* timeout.
|
* timeout.
|
||||||
*/
|
*/
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
addr = &((struct ble_gap_ext_disc_desc *)disc)->addr;
|
struct ble_gap_ext_disc_desc *disc_desc = disc;
|
||||||
#else
|
#else
|
||||||
addr = &((struct ble_gap_disc_desc *)disc)->addr;
|
struct ble_gap_disc_desc *disc_desc = disc;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
addr = &disc_desc->addr;
|
||||||
|
|
||||||
|
#if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY)
|
||||||
|
/*
|
||||||
|
* With host-based privacy, the advertising report's peer address may be
|
||||||
|
* resolved to the identity address by the Host. The Controller does not
|
||||||
|
* perform peer RPA resolution, so use the current OTA address when
|
||||||
|
* initiating the connection.
|
||||||
|
*/
|
||||||
|
addr = &disc_desc->ota_addr;
|
||||||
|
#endif
|
||||||
|
|
||||||
rc = ble_gap_connect(own_addr_type, addr, 30000, NULL,
|
rc = ble_gap_connect(own_addr_type, addr, 30000, NULL,
|
||||||
ble_prox_cent_gap_event, NULL);
|
ble_prox_cent_gap_event, NULL);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
|
|||||||
@@ -626,9 +626,21 @@ blecent_connect_if_interesting(void *disc)
|
|||||||
* timeout.
|
* timeout.
|
||||||
*/
|
*/
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
addr = &((struct ble_gap_ext_disc_desc *)disc)->addr;
|
struct ble_gap_ext_disc_desc *disc_desc = disc;
|
||||||
#else
|
#else
|
||||||
addr = &((struct ble_gap_disc_desc *)disc)->addr;
|
struct ble_gap_disc_desc *disc_desc = disc;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
addr = &disc_desc->addr;
|
||||||
|
|
||||||
|
#if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY)
|
||||||
|
/*
|
||||||
|
* With host-based privacy, the advertising report's peer address may be
|
||||||
|
* resolved to the identity address by the Host. The Controller does not
|
||||||
|
* perform peer RPA resolution, so use the current OTA address when
|
||||||
|
* initiating the connection.
|
||||||
|
*/
|
||||||
|
addr = &disc_desc->ota_addr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rc = ble_gap_connect(own_addr_type, addr, 30000, NULL,
|
rc = ble_gap_connect(own_addr_type, addr, 30000, NULL,
|
||||||
|
|||||||
Reference in New Issue
Block a user