mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'feat/allow_connect_during_scan_v5.1' into 'release/v5.1'
feat(nimble): Add support to allow connection during scanning (v5.1) See merge request espressif/esp-idf!32845
This commit is contained in:
commit
4e6e08d483
@ -925,6 +925,12 @@ config BT_NIMBLE_HIGH_DUTY_ADV_ITVL
|
|||||||
help
|
help
|
||||||
This enable BLE high duty advertising interval feature
|
This enable BLE high duty advertising interval feature
|
||||||
|
|
||||||
|
config BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN
|
||||||
|
bool "Allow Connections with scanning in progress"
|
||||||
|
depends on BT_NIMBLE_ENABLED && (IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3)
|
||||||
|
help
|
||||||
|
This enables support for user to initiate a new connection with scan in progress
|
||||||
|
|
||||||
config BT_NIMBLE_HOST_QUEUE_CONG_CHECK
|
config BT_NIMBLE_HOST_QUEUE_CONG_CHECK
|
||||||
bool "BLE queue congestion check"
|
bool "BLE queue congestion check"
|
||||||
depends on BT_NIMBLE_ENABLED
|
depends on BT_NIMBLE_ENABLED
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 74195190f2c99db34fc5a387d6691ef86f62fdd6
|
Subproject commit 7b88ae875429ed7953415dab4310d6294544dd4d
|
@ -1833,6 +1833,14 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_HOST_ALLOW_CONNECT_WITH_SCAN
|
||||||
|
#ifdef CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN
|
||||||
|
#define MYNEWT_VAL_BLE_HOST_ALLOW_CONNECT_WITH_SCAN CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN
|
||||||
|
#else
|
||||||
|
#define MYNEWT_VAL_BLE_HOST_ALLOW_CONNECT_WITH_SCAN (0)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if CONFIG_BT_CONTROLLER_DISABLED && CONFIG_BT_NIMBLE_TRANSPORT_UART
|
#if CONFIG_BT_CONTROLLER_DISABLED && CONFIG_BT_NIMBLE_TRANSPORT_UART
|
||||||
#ifndef MYNEWT_VAL_BLE_TRANSPORT_UART_PORT
|
#ifndef MYNEWT_VAL_BLE_TRANSPORT_UART_PORT
|
||||||
#define MYNEWT_VAL_BLE_TRANSPORT_UART_PORT CONFIG_BT_NIMBLE_TRANSPORT_UART_PORT
|
#define MYNEWT_VAL_BLE_TRANSPORT_UART_PORT CONFIG_BT_NIMBLE_TRANSPORT_UART_PORT
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2017-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2017-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -303,12 +303,14 @@ ble_cts_cent_connect_if_interesting(void *disc)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -364,7 +366,7 @@ ble_cts_cent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
print_adv_fields(&fields);
|
print_adv_fields(&fields);
|
||||||
|
|
||||||
/* Try to connect to the advertiser if it looks interesting. */
|
/* Try to connect to the advertiser if it looks interesting. */
|
||||||
@ -482,7 +484,7 @@ ble_cts_cent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
|
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
case BLE_GAP_EVENT_EXT_DISC:
|
case BLE_GAP_EVENT_EXT_DISC:
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
ext_print_adv_report(&event->disc);
|
ext_print_adv_report(&event->disc);
|
||||||
|
|
||||||
ble_cts_cent_connect_if_interesting(&event->disc);
|
ble_cts_cent_connect_if_interesting(&event->disc);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
@ -358,12 +358,14 @@ enc_adv_data_cent_connect_if_interesting(void *disc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -416,7 +418,7 @@ enc_adv_data_cent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
print_adv_fields(&fields);
|
print_adv_fields(&fields);
|
||||||
|
|
||||||
/* Try to connect to the advertiser if it looks interesting. */
|
/* Try to connect to the advertiser if it looks interesting. */
|
||||||
@ -514,7 +516,7 @@ enc_adv_data_cent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case BLE_GAP_EVENT_EXT_DISC:
|
case BLE_GAP_EVENT_EXT_DISC:
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
ext_print_adv_report(&event->disc);
|
ext_print_adv_report(&event->disc);
|
||||||
|
|
||||||
enc_adv_data_cent_connect_if_interesting(&event->disc);
|
enc_adv_data_cent_connect_if_interesting(&event->disc);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2017-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2017-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -189,7 +189,7 @@ err:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs three GATT operations against the specified peer:
|
* Performs three GATT operations against the specified peer:
|
||||||
* 1. Reads the HTP temparature type characteristic.
|
* 1. Reads the HTP temperature type characteristic.
|
||||||
* 2. After read is completed, writes the HTP temperature measurement interval characteristic.
|
* 2. After read is completed, writes the HTP temperature measurement interval characteristic.
|
||||||
* 3. After write is completed, subscribes to notifications for the HTP intermediate temperature
|
* 3. After write is completed, subscribes to notifications for the HTP intermediate temperature
|
||||||
* and temperature measurement characteristic.
|
* and temperature measurement characteristic.
|
||||||
@ -205,12 +205,12 @@ ble_htp_cent_read_write_subscribe(const struct peer *peer)
|
|||||||
const struct peer_chr *chr;
|
const struct peer_chr *chr;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* Read the Temparature Type characteristic. */
|
/* Read the Temperature Type characteristic. */
|
||||||
chr = peer_chr_find_uuid(peer,
|
chr = peer_chr_find_uuid(peer,
|
||||||
BLE_UUID16_DECLARE(BLE_SVC_HTP_UUID16),
|
BLE_UUID16_DECLARE(BLE_SVC_HTP_UUID16),
|
||||||
BLE_UUID16_DECLARE(BLE_SVC_HTP_CHR_UUID16_TEMP_TYPE));
|
BLE_UUID16_DECLARE(BLE_SVC_HTP_CHR_UUID16_TEMP_TYPE));
|
||||||
if (chr == NULL) {
|
if (chr == NULL) {
|
||||||
MODLOG_DFLT(ERROR, "Error: Peer doesn't support the Temparature Type"
|
MODLOG_DFLT(ERROR, "Error: Peer doesn't support the Temperature Type"
|
||||||
" characteristic\n");
|
" characteristic\n");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
@ -418,12 +418,14 @@ ble_htp_cent_connect_if_interesting(void *disc)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -479,7 +481,7 @@ ble_htp_cent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
print_adv_fields(&fields);
|
print_adv_fields(&fields);
|
||||||
|
|
||||||
/* Try to connect to the advertiser if it looks interesting. */
|
/* Try to connect to the advertiser if it looks interesting. */
|
||||||
@ -613,7 +615,7 @@ ble_htp_cent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
|
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
case BLE_GAP_EVENT_EXT_DISC:
|
case BLE_GAP_EVENT_EXT_DISC:
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
ext_print_adv_report(&event->disc);
|
ext_print_adv_report(&event->disc);
|
||||||
|
|
||||||
ble_htp_cent_connect_if_interesting(&event->disc);
|
ble_htp_cent_connect_if_interesting(&event->disc);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
@ -77,7 +77,7 @@ blecent_l2cap_coc_send_data(struct ble_l2cap_chan *chan)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* After connetion is established on GAP layer, service discovery is performed. On
|
* After connection is established on GAP layer, service discovery is performed. On
|
||||||
* it's completion, this API is called for making a connection is on L2CAP layer.
|
* it's completion, this API is called for making a connection is on L2CAP layer.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
@ -340,12 +340,14 @@ blecent_connect_if_interesting(void *disc)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -403,7 +405,7 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
print_adv_fields(&fields);
|
print_adv_fields(&fields);
|
||||||
|
|
||||||
/* Try to connect to the advertiser if it looks interesting. */
|
/* Try to connect to the advertiser if it looks interesting. */
|
||||||
@ -470,7 +472,7 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
|
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
case BLE_GAP_EVENT_EXT_DISC:
|
case BLE_GAP_EVENT_EXT_DISC:
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
ext_print_adv_report(&event->disc);
|
ext_print_adv_report(&event->disc);
|
||||||
|
|
||||||
blecent_connect_if_interesting(&event->disc);
|
blecent_connect_if_interesting(&event->disc);
|
||||||
|
@ -85,7 +85,7 @@ ble_cent_client_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
case BLE_GAP_EVENT_EXT_DISC:
|
case BLE_GAP_EVENT_EXT_DISC:
|
||||||
rc = ble_hs_adv_parse_fields(&fields, event->ext_disc.data, event->ext_disc.length_data);
|
rc = ble_hs_adv_parse_fields(&fields, event->ext_disc.data, event->ext_disc.length_data);
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
if ((rc == 0) && fields.name && (fields.name_len >= strlen(BLE_PEER_NAME)) &&
|
if ((rc == 0) && fields.name && (fields.name_len >= strlen(BLE_PEER_NAME)) &&
|
||||||
!strncmp((const char *)fields.name, BLE_PEER_NAME, strlen(BLE_PEER_NAME))) {
|
!strncmp((const char *)fields.name, BLE_PEER_NAME, strlen(BLE_PEER_NAME))) {
|
||||||
ble_cent_connect(&event->ext_disc);
|
ble_cent_connect(&event->ext_disc);
|
||||||
@ -319,12 +319,14 @@ ble_cent_connect(void *disc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
ESP_LOGE(TAG, "Failed to cancel scan; rc=%d\n", rc);
|
ESP_LOGE(TAG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* We won't connect to the same device. Change our static random address to simulate
|
/* We won't connect to the same device. Change our static random address to simulate
|
||||||
* multi-connection with only one central and one peripheral.
|
* multi-connection with only one central and one peripheral.
|
||||||
|
@ -288,12 +288,14 @@ blecent_connect_if_interesting(void *disc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -438,7 +440,7 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case BLE_GAP_EVENT_EXT_DISC:
|
case BLE_GAP_EVENT_EXT_DISC:
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
ext_print_adv_report(&event->disc);
|
ext_print_adv_report(&event->disc);
|
||||||
|
|
||||||
blecent_connect_if_interesting(&event->disc);
|
blecent_connect_if_interesting(&event->disc);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2017-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2017-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -25,7 +25,7 @@ static struct ble_prox_cent_link_lost_peer disconn_peer[MYNEWT_VAL(BLE_MAX_CONNE
|
|||||||
/* Note: Path loss is calculated using formula : threshold - RSSI value
|
/* Note: Path loss is calculated using formula : threshold - RSSI value
|
||||||
* by default threshold is kept -128 as per the spec
|
* by default threshold is kept -128 as per the spec
|
||||||
* high_threshold and low_threshold are hardcoded after testing and noting
|
* high_threshold and low_threshold are hardcoded after testing and noting
|
||||||
* RSSI values when distance betweeen devices are less and more.
|
* RSSI values when distance between devices are less and more.
|
||||||
*/
|
*/
|
||||||
static int8_t high_threshold = -70;
|
static int8_t high_threshold = -70;
|
||||||
static int8_t low_threshold = -100;
|
static int8_t low_threshold = -100;
|
||||||
@ -335,12 +335,14 @@ ble_prox_cent_connect_if_interesting(void *disc)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -396,7 +398,7 @@ ble_prox_cent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
print_adv_fields(&fields);
|
print_adv_fields(&fields);
|
||||||
|
|
||||||
/* Try to connect to the advertiser if it looks interesting. */
|
/* Try to connect to the advertiser if it looks interesting. */
|
||||||
@ -561,7 +563,7 @@ ble_prox_cent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
|
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
case BLE_GAP_EVENT_EXT_DISC:
|
case BLE_GAP_EVENT_EXT_DISC:
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
ext_print_adv_report(&event->disc);
|
ext_print_adv_report(&event->disc);
|
||||||
|
|
||||||
ble_prox_cent_connect_if_interesting(&event->disc);
|
ble_prox_cent_connect_if_interesting(&event->disc);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
@ -164,12 +164,14 @@ ble_spp_client_connect_if_interesting(const struct ble_gap_disc_desc *disc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -221,7 +223,7 @@ ble_spp_client_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
print_adv_fields(&fields);
|
print_adv_fields(&fields);
|
||||||
|
|
||||||
/* Try to connect to the advertiser if it looks interesting. */
|
/* Try to connect to the advertiser if it looks interesting. */
|
||||||
@ -347,7 +349,7 @@ void ble_client_uart_task(void *pvParameters)
|
|||||||
//Waiting for UART event.
|
//Waiting for UART event.
|
||||||
if (xQueueReceive(spp_common_uart_queue, (void * )&event, (TickType_t)portMAX_DELAY)) {
|
if (xQueueReceive(spp_common_uart_queue, (void * )&event, (TickType_t)portMAX_DELAY)) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
//Event of UART receving data
|
//Event of UART receiving data
|
||||||
case UART_DATA:
|
case UART_DATA:
|
||||||
if (event.size) {
|
if (event.size) {
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*** The UUID of the service containing the subscribable characterstic ***/
|
/*** The UUID of the service containing the subscribable characteristic ***/
|
||||||
static const ble_uuid_t * remote_svc_uuid =
|
static const ble_uuid_t * remote_svc_uuid =
|
||||||
BLE_UUID128_DECLARE(0x2d, 0x71, 0xa2, 0x59, 0xb4, 0x58, 0xc8, 0x12,
|
BLE_UUID128_DECLARE(0x2d, 0x71, 0xa2, 0x59, 0xb4, 0x58, 0xc8, 0x12,
|
||||||
0x99, 0x99, 0x43, 0x95, 0x12, 0x2f, 0x46, 0x59);
|
0x99, 0x99, 0x43, 0x95, 0x12, 0x2f, 0x46, 0x59);
|
||||||
@ -203,7 +203,7 @@ blecent_custom_gatt_operations(const struct peer* peer)
|
|||||||
remote_chr_uuid,
|
remote_chr_uuid,
|
||||||
BLE_UUID16_DECLARE(BLE_GATT_DSC_CLT_CFG_UUID16));
|
BLE_UUID16_DECLARE(BLE_GATT_DSC_CLT_CFG_UUID16));
|
||||||
if (dsc == NULL) {
|
if (dsc == NULL) {
|
||||||
MODLOG_DFLT(ERROR, "Error: Peer lacks a CCCD for the subscribable characterstic\n");
|
MODLOG_DFLT(ERROR, "Error: Peer lacks a CCCD for the subscribable characteristic\n");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -601,12 +601,14 @@ blecent_connect_if_interesting(void *disc)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -687,7 +689,7 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
print_adv_fields(&fields);
|
print_adv_fields(&fields);
|
||||||
|
|
||||||
/* Try to connect to the advertiser if it looks interesting. */
|
/* Try to connect to the advertiser if it looks interesting. */
|
||||||
@ -840,7 +842,7 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
|
|
||||||
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
#if CONFIG_EXAMPLE_EXTENDED_ADV
|
||||||
case BLE_GAP_EVENT_EXT_DISC:
|
case BLE_GAP_EVENT_EXT_DISC:
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
ext_print_adv_report(&event->disc);
|
ext_print_adv_report(&event->disc);
|
||||||
|
|
||||||
blecent_connect_if_interesting(&event->disc);
|
blecent_connect_if_interesting(&event->disc);
|
||||||
|
@ -471,12 +471,14 @@ blecent_connect_if_interesting(const struct ble_gap_disc_desc *disc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !(MYNEWT_VAL(BLE_HOST_ALLOW_CONNECT_WITH_SCAN))
|
||||||
/* Scanning must be stopped before a connection can be initiated. */
|
/* Scanning must be stopped before a connection can be initiated. */
|
||||||
rc = ble_gap_disc_cancel();
|
rc = ble_gap_disc_cancel();
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
MODLOG_DFLT(DEBUG, "Failed to cancel scan; rc=%d\n", rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Figure out address to use for connect (no privacy for now) */
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
@ -529,7 +531,7 @@ blecent_gap_event(struct ble_gap_event *event, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An advertisment report was received during GAP discovery. */
|
/* An advertisement report was received during GAP discovery. */
|
||||||
print_adv_fields(&fields);
|
print_adv_fields(&fields);
|
||||||
|
|
||||||
/* Try to connect to the advertiser if it looks interesting. */
|
/* Try to connect to the advertiser if it looks interesting. */
|
||||||
|
Loading…
Reference in New Issue
Block a user