Bluetooth: Deprecate adv auto-resume

The host-based adv auto-resume function has both a problematic
implementation and disagreement in the community around how it should
behave. See the issue linked resolved below for details.

This patch makes the deprecation visible to the user. The user will be
better served by a auto-resume tailored their applications use case,
based on more primitive host API like `conn_cb.recycled`, which has
obvious behavior that is unlikely to change.

Resolves: https://github.com/zephyrproject-rtos/zephyr/issues/72567

Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
This commit is contained in:
Aleksander Wasaznik 2024-05-14 10:02:15 +02:00 committed by Carles Cufí
commit 8cfad44852
96 changed files with 396 additions and 275 deletions

View file

@ -693,7 +693,7 @@ static int common_init(void)
bt_le_per_adv_sync_cb_register(&pa_sync_cb);
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, AD_SIZE, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, AD_SIZE, NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)\n", err);
return err;

View file

@ -602,8 +602,8 @@ static void test_main_acl_disconnect(void)
*/
for (size_t i = 0U; i < ARRAY_SIZE(dummy_ext_adv); i++) {
const struct bt_le_adv_param param = BT_LE_ADV_PARAM_INIT(
(BT_LE_ADV_OPT_EXT_ADV | BT_LE_ADV_OPT_CONNECTABLE),
BT_GAP_ADV_SLOW_INT_MAX, BT_GAP_ADV_SLOW_INT_MAX, NULL);
(BT_LE_ADV_OPT_EXT_ADV | BT_LE_ADV_OPT_CONN), BT_GAP_ADV_SLOW_INT_MAX,
BT_GAP_ADV_SLOW_INT_MAX, NULL);
int err;
err = bt_le_ext_adv_create(&param, NULL, &dummy_ext_adv[i]);

View file

@ -638,7 +638,7 @@ void test_start_adv(void)
struct bt_le_ext_adv *ext_adv;
/* Create a connectable non-scannable advertising set */
err = bt_le_ext_adv_create(BT_LE_ADV_CONN_ONE_TIME, NULL, &ext_adv);
err = bt_le_ext_adv_create(BT_LE_ADV_CONN_FAST_1, NULL, &ext_adv);
if (err != 0) {
FAIL("Failed to create advertising set (err %d)\n", err);
@ -752,7 +752,7 @@ static void init(void)
bt_cap_stream_ops_register(&unicast_streams[i], &unicast_stream_ops);
}
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, cap_acceptor_ad,
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, cap_acceptor_ad,
ARRAY_SIZE(cap_acceptor_ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);

View file

@ -78,7 +78,7 @@ static void test_main(void)
}
printk("Start Advertising\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;
@ -119,7 +119,7 @@ static void test_main(void)
}
printk("Start Advertising\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -80,7 +80,7 @@ static void bt_ready(int err)
return;
}
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
}

View file

@ -445,8 +445,8 @@ static void test_main(void)
return;
}
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, gmap_acceptor_ad,
ARRAY_SIZE(gmap_acceptor_ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, gmap_acceptor_ad, ARRAY_SIZE(gmap_acceptor_ad),
NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -43,7 +43,7 @@ static void start_adv(void)
{
int err;
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, AD_SIZE, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, AD_SIZE, NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -58,7 +58,7 @@ static void test_main(void)
return;
}
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, AD_SIZE, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, AD_SIZE, NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -20,7 +20,7 @@ static void start_adv(void)
{
int err;
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, AD_SIZE, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, AD_SIZE, NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -1655,7 +1655,7 @@ void test_media_controller_remote_player(void)
initialize_bluetooth();
initialize_media();
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, AD_SIZE, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, AD_SIZE, NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)\n", err);
}

View file

@ -432,7 +432,7 @@ static void test_main(void)
printk("MICP initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, AD_SIZE, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, AD_SIZE, NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -191,7 +191,7 @@ static void test_main(void)
}
LOG_DBG("Start Advertising");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)", err);
return;
@ -225,7 +225,7 @@ static void test_main(void)
trigger_notifications();
LOG_DBG("Start Advertising");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)", err);
return;
@ -242,7 +242,7 @@ static void test_main(void)
}
LOG_DBG("Start Advertising");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)", err);
return;
@ -276,7 +276,7 @@ static void test_main(void)
}
LOG_DBG("Start Advertising");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)", err);
return;

View file

@ -503,7 +503,7 @@ static void test_main(void)
printk("Audio Server: Bluetooth discovered\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, AD_SIZE, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, AD_SIZE, NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -1044,7 +1044,7 @@ static void test_main(void)
printk("VCP initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, AD_SIZE, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, AD_SIZE, NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -15,7 +15,7 @@ static void create_adv(struct bt_le_ext_adv **adv)
memset(&params, 0, sizeof(struct bt_le_adv_param));
params.options |= BT_LE_ADV_OPT_CONNECTABLE;
params.options |= BT_LE_ADV_OPT_CONN;
params.options |= BT_LE_ADV_OPT_EXT_ADV;
params.id = BT_ID_DEFAULT;

View file

@ -140,7 +140,7 @@ void peripheral_setup_and_connect(void)
FAIL("Can't enable Bluetooth (err %d)\n", err);
}
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)\n", err);
}

View file

@ -189,7 +189,7 @@ static void test_main(void)
printk("Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -121,11 +121,6 @@ static void device_found(const bt_addr_le_t *addr, int8_t rssi, uint8_t type,
}
}
/* In your area */
#define ADV_PARAM_SINGLE BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME, \
BT_GAP_ADV_FAST_INT_MIN_2, \
BT_GAP_ADV_FAST_INT_MAX_2, NULL)
static strucc bt_conn *connecc(void)
{
int err;
@ -133,7 +128,7 @@ static strucc bt_conn *connecc(void)
UNSET_FLAG(is_connected);
err = bt_le_adv_start(ADV_PARAM_SINGLE, NULL, 0, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, NULL, 0, NULL, 0);
ASSERT(!err, "Adving failed to start (err %d)\n", err);
LOG_DBG(" wait connecc...");

View file

@ -41,7 +41,7 @@ static void test_peripheral_dummy(void)
err = bt_enable(NULL);
TEST_ASSERT(err == 0, "Can't enable Bluetooth (err %d)", err);
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
TEST_ASSERT(err == 0, "Advertising failed to start (err %d)", err);
err = k_sem_take(&sem_connected, K_FOREVER);

View file

@ -341,7 +341,7 @@ static void test_main(void)
printk("Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -101,7 +101,7 @@ static void test_main_common(bool connect_eatt)
printk("Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);

View file

@ -58,18 +58,8 @@ BT_GATT_SERVICE_DEFINE(dummy_svc, BT_GATT_PRIMARY_SERVICE(&dummy_service),
static void create_adv(struct bt_le_ext_adv **adv)
{
int err;
struct bt_le_adv_param params;
memset(&params, 0, sizeof(struct bt_le_adv_param));
params.options |= BT_LE_ADV_OPT_CONNECTABLE;
params.id = BT_ID_DEFAULT;
params.sid = 0;
params.interval_min = BT_GAP_ADV_FAST_INT_MIN_2;
params.interval_max = BT_GAP_ADV_FAST_INT_MAX_2;
err = bt_le_ext_adv_create(&params, NULL, adv);
err = bt_le_ext_adv_create(BT_LE_ADV_CONN_FAST_1, NULL, adv);
if (err) {
FAIL("Failed to create advertiser (%d)\n", err);
}

View file

@ -161,7 +161,7 @@ static void test_main(void)
printk("Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -183,7 +183,7 @@ static void setup(void)
printk("Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -145,7 +145,7 @@ static void test_main(void)
printk("Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -129,7 +129,7 @@ void create_adv(struct bt_le_ext_adv **adv)
int err;
struct bt_le_adv_param params = {};
params.options |= BT_LE_ADV_OPT_CONNECTABLE;
params.options |= BT_LE_ADV_OPT_CONN;
params.options |= BT_LE_ADV_OPT_EXT_ADV;
params.id = BT_ID_DEFAULT;

View file

@ -121,8 +121,7 @@ void advertise_connectable(void)
param.interval_min = 0x0020;
param.interval_max = 0x4000;
param.options |= BT_LE_ADV_OPT_ONE_TIME;
param.options |= BT_LE_ADV_OPT_CONNECTABLE;
param.options |= BT_LE_ADV_OPT_CONN;
err = bt_le_adv_start(&param, NULL, 0, NULL, 0);
__ASSERT(err == 0, "Advertising failed to start (err %d)\n", err);

View file

@ -143,7 +143,7 @@ static void adv_connect(void)
{
int err;
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)\n", err);

View file

@ -210,11 +210,6 @@ static void disconnect_device(struct bt_conn *conn, void *data)
WAIT_FOR_FLAG_UNSET(is_connected);
}
#define BT_LE_ADV_CONN_OT BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | \
BT_LE_ADV_OPT_ONE_TIME, \
BT_GAP_ADV_FAST_INT_MIN_2, \
BT_GAP_ADV_FAST_INT_MAX_2, NULL)
static void test_peripheral_main(void)
{
LOG_DBG("*L2CAP CREDITS Peripheral started*");
@ -233,7 +228,7 @@ static void test_peripheral_main(void)
LOG_DBG("Peripheral Bluetooth initialized.");
LOG_DBG("Connectable advertising...");
err = bt_le_adv_start(BT_LE_ADV_CONN_OT, NULL, 0, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, NULL, 0, NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)", err);
return;

View file

@ -227,10 +227,6 @@ static void disconnect_device(struct bt_conn *conn, void *data)
WAIT_FOR_FLAG_UNSET(is_connected);
}
#define BT_LE_ADV_CONN_OT \
BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME, \
BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, NULL)
static void test_peripheral_main(void)
{
int err;
@ -251,7 +247,7 @@ static void test_peripheral_main(void)
LOG_DBG("Peripheral Bluetooth initialized.");
LOG_DBG("Connectable advertising...");
err = bt_le_adv_start(BT_LE_ADV_CONN_OT, NULL, 0, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, NULL, 0, NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)", err);
return;

View file

@ -449,7 +449,7 @@ static void test_peripheral_main(void)
LOG_DBG("Peripheral Bluetooth initialized.");
LOG_DBG("Connectable advertising...");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)", err);
return;

View file

@ -235,11 +235,6 @@ static void disconnect_device(struct bt_conn *conn, void *data)
WAIT_FOR_FLAG_UNSET(is_connected);
}
#define BT_LE_ADV_CONN_OT BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | \
BT_LE_ADV_OPT_ONE_TIME, \
BT_GAP_ADV_FAST_INT_MIN_2, \
BT_GAP_ADV_FAST_INT_MAX_2, NULL)
static void test_peripheral_main(void)
{
LOG_DBG("L2CAP CONN LATENCY Peripheral started*");
@ -255,7 +250,7 @@ static void test_peripheral_main(void)
LOG_DBG("Peripheral Bluetooth initialized.");
LOG_DBG("Connectable advertising...");
err = bt_le_adv_start(BT_LE_ADV_CONN_OT, NULL, 0, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, NULL, 0, NULL, 0);
ASSERT(!err, "Advertising failed to start (err %d)", err);
LOG_DBG("Advertising started.");

View file

@ -251,7 +251,7 @@ static void start_advertising(void)
LOG_DBG("starting advertiser");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
TEST_ASSERT(!err, "Advertising failed to start (err %d)", err);
}

View file

@ -187,7 +187,7 @@ static void test_peripheral_main(void)
register_l2cap_server();
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -293,11 +293,6 @@ static void disconnect_device(struct bt_conn *conn, void *data)
WAIT_FOR_FLAG_UNSET(is_connected);
}
#define BT_LE_ADV_CONN_OT BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | \
BT_LE_ADV_OPT_ONE_TIME, \
BT_GAP_ADV_FAST_INT_MIN_2, \
BT_GAP_ADV_FAST_INT_MAX_2, NULL)
static void test_peripheral_main(void)
{
LOG_DBG("*L2CAP STRESS Peripheral started*");
@ -316,7 +311,7 @@ static void test_peripheral_main(void)
LOG_DBG("Peripheral Bluetooth initialized.");
LOG_DBG("Connectable advertising...");
err = bt_le_adv_start(BT_LE_ADV_CONN_OT, NULL, 0, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, NULL, 0, NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)", err);
return;

View file

@ -175,7 +175,7 @@ static void test_peripheral_main(void)
return;
}
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -400,7 +400,7 @@ void test_peripheral_main(void)
sprintf(name, "per-%d", get_device_nbr());
bt_set_name(name);
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, NULL, 0, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, NULL, 0, NULL, 0);
if (err) {
LOG_ERR("Advertising failed to start (err %d)", err);
__ASSERT_NO_MSG(err);

View file

@ -144,7 +144,7 @@ static void test_main(void)
printk("Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -106,10 +106,6 @@ static void device_found(const bt_addr_le_t *addr, int8_t rssi, uint8_t type,
}
}
#define ADV_PARAM_SINGLE BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME, \
BT_GAP_ADV_FAST_INT_MIN_2, \
BT_GAP_ADV_FAST_INT_MAX_2, NULL)
static struct bt_conn *connect_as_peripheral(void)
{
int err;
@ -117,7 +113,7 @@ static struct bt_conn *connect_as_peripheral(void)
UNSET_FLAG(is_connected);
err = bt_le_adv_start(ADV_PARAM_SINGLE, NULL, 0, NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, NULL, 0, NULL, 0);
ASSERT(!err, "Adving failed to start (err %d)\n", err);
LOG_DBG("advertising");

View file

@ -123,7 +123,7 @@ static void start_adv(void)
const struct bt_data ad[] = {
BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR))};
err = bt_le_adv_start(BT_LE_ADV_CONN_ONE_TIME, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err != 0) {
FAIL("Advertising failed to start (err %d)\n", err);
return;

View file

@ -141,9 +141,8 @@ void tester_procedure_periph_delayed_start_of_conn_adv(void)
int err;
struct bt_le_adv_param params =
BT_LE_ADV_PARAM_INIT(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_USE_IDENTITY,
BT_GAP_ADV_FAST_INT_MIN_2,
BT_GAP_ADV_FAST_INT_MAX_2, NULL);
BT_LE_ADV_PARAM_INIT(BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_USE_IDENTITY,
BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, NULL);
struct bt_data ad;
struct bt_le_ext_adv *adv;

View file

@ -166,7 +166,7 @@ static void create_adv(struct bt_le_ext_adv **adv)
memset(&params, 0, sizeof(struct bt_le_adv_param));
params.options |= BT_LE_ADV_OPT_CONNECTABLE;
params.options |= BT_LE_ADV_OPT_CONN;
params.id = BT_ID_DEFAULT;
params.sid = 0;
@ -191,11 +191,11 @@ static void update_adv_params(struct bt_le_ext_adv *adv, enum adv_param_t adv_pa
memset(&params, 0, sizeof(struct bt_le_adv_param));
if (adv_params == CONN_SCAN) {
params.options |= BT_LE_ADV_OPT_CONNECTABLE;
params.options |= BT_LE_ADV_OPT_CONN;
params.options |= BT_LE_ADV_OPT_SCANNABLE;
LOG_DBG("Advertiser params: CONN_SCAN");
} else if (adv_params == CONN_NSCAN) {
params.options |= BT_LE_ADV_OPT_CONNECTABLE;
params.options |= BT_LE_ADV_OPT_CONN;
LOG_DBG("Advertiser params: CONN_NSCAN");
} else if (adv_params == NCONN_SCAN) {
params.options |= BT_LE_ADV_OPT_SCANNABLE;

View file

@ -42,10 +42,8 @@ void start_advertising(uint32_t options)
{
int err;
struct bt_le_adv_param param = BT_LE_ADV_PARAM_INIT(BT_LE_ADV_OPT_ONE_TIME,
BT_GAP_ADV_FAST_INT_MIN_2,
BT_GAP_ADV_FAST_INT_MAX_2,
NULL);
struct bt_le_adv_param param =
BT_LE_ADV_PARAM_INIT(0, BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, NULL);
param.options |= options;
err = bt_le_adv_start(&param, ad, ARRAY_SIZE(ad), NULL, 0);
@ -82,7 +80,7 @@ void dut_procedure(void)
generate_new_rpa();
LOG_DBG("start adv with identity");
start_advertising(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_USE_IDENTITY);
start_advertising(BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_USE_IDENTITY);
/* wait for the tester to validate we're using our identity address */
LOG_DBG("wait for validation by tester");
@ -94,7 +92,7 @@ void dut_procedure(void)
}
LOG_DBG("start adv with RPA");
start_advertising(BT_LE_ADV_OPT_CONNECTABLE);
start_advertising(BT_LE_ADV_OPT_CONN);
/* Test pass verdict is decided by the tester */
PASS("DUT done\n");

View file

@ -163,8 +163,7 @@ void advertise_connectable(int id, bt_addr_le_t *directed_dst)
param.id = id;
param.interval_min = 0x0020;
param.interval_max = 0x4000;
param.options |= BT_LE_ADV_OPT_ONE_TIME;
param.options |= BT_LE_ADV_OPT_CONNECTABLE;
param.options |= BT_LE_ADV_OPT_CONN;
if (directed_dst) {
param.options |= BT_LE_ADV_OPT_DIR_ADDR_RPA;

View file

@ -163,8 +163,7 @@ void advertise_connectable(int id, bt_addr_le_t *directed_dst)
param.id = id;
param.interval_min = 0x0020;
param.interval_max = 0x4000;
param.options |= BT_LE_ADV_OPT_ONE_TIME;
param.options |= BT_LE_ADV_OPT_CONNECTABLE;
param.options |= BT_LE_ADV_OPT_CONN;
if (directed_dst) {
param.options |= BT_LE_ADV_OPT_DIR_ADDR_RPA;

View file

@ -184,8 +184,7 @@ void advertise_connectable(int id, bt_addr_le_t *directed_dst)
param.id = id;
param.interval_min = 0x0020;
param.interval_max = 0x4000;
param.options |= BT_LE_ADV_OPT_ONE_TIME;
param.options |= BT_LE_ADV_OPT_CONNECTABLE;
param.options |= BT_LE_ADV_OPT_CONN;
if (directed_dst) {
param.options |= BT_LE_ADV_OPT_DIR_ADDR_RPA;

View file

@ -63,7 +63,7 @@ static void create_adv(struct bt_le_ext_adv **adv)
memset(&params, 0, sizeof(struct bt_le_adv_param));
params.options |= BT_LE_ADV_OPT_CONNECTABLE;
params.options |= BT_LE_ADV_OPT_CONN;
params.id = BT_ID_DEFAULT;
params.sid = 0;

View file

@ -153,8 +153,7 @@ void advertise_connectable(int id)
param.id = id;
param.interval_min = 0x0020;
param.interval_max = 0x4000;
param.options |= BT_LE_ADV_OPT_ONE_TIME;
param.options |= BT_LE_ADV_OPT_CONNECTABLE;
param.options |= BT_LE_ADV_OPT_CONN;
err = bt_le_adv_start(&param, NULL, 0, NULL, 0);
ASSERT(!err, "Advertising failed to start (err %d)\n", err);

View file

@ -175,8 +175,7 @@ void advertise_connectable(int id, bt_addr_le_t *directed_dst)
param.id = id;
param.interval_min = 0x0020;
param.interval_max = 0x4000;
param.options |= BT_LE_ADV_OPT_ONE_TIME;
param.options |= BT_LE_ADV_OPT_CONNECTABLE;
param.options |= BT_LE_ADV_OPT_CONN;
if (directed_dst) {
param.options |= BT_LE_ADV_OPT_DIR_ADDR_RPA;

View file

@ -185,7 +185,7 @@ static void test_advx_main(void)
printk("success.\n");
printk("Connectable advertising...");
err = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_2, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
printk("Advertising failed to start (err %d)\n", err);
return;
@ -401,7 +401,7 @@ static void test_advx_main(void)
k_sleep(K_MSEC(1000));
printk("Create connectable advertising set...");
err = bt_le_ext_adv_create(BT_LE_ADV_CONN, &adv_callbacks, &adv);
err = bt_le_ext_adv_create(BT_LE_ADV_CONN_FAST_2, &adv_callbacks, &adv);
if (err) {
goto exit;
}
@ -654,7 +654,7 @@ static void test_advx_main(void)
}
};
const struct bt_le_adv_param adv_param = {
.options = BT_LE_ADV_OPT_CONNECTABLE,
.options = BT_LE_ADV_OPT_CONN,
.peer = &direct_addr,
};
err = bt_le_adv_start(&adv_param, NULL, 0, NULL, 0);

View file

@ -75,18 +75,12 @@ static bt_addr_le_t peer_addr;
BT_LE_CONN_PARAM(CONN_INTERVAL_MIN, CONN_INTERVAL_MAX, 0U, CONN_TIMEOUT)
#if defined(CONFIG_TEST_USE_LEGACY_ADVERTISING)
#define BT_LE_ADV_CONN_CUSTOM BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | \
BT_LE_ADV_OPT_ONE_TIME, \
ADV_INTERVAL_MIN, \
ADV_INTERVAL_MAX, \
NULL)
#define BT_LE_ADV_CONN_CUSTOM \
BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN, ADV_INTERVAL_MIN, ADV_INTERVAL_MAX, NULL)
#else /* !CONFIG_TEST_USE_LEGACY_ADVERTISING */
#define BT_LE_ADV_CONN_CUSTOM BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | \
BT_LE_ADV_OPT_EXT_ADV | \
BT_LE_ADV_OPT_ONE_TIME, \
ADV_INTERVAL_MIN, \
ADV_INTERVAL_MAX, \
NULL)
#define BT_LE_ADV_CONN_CUSTOM \
BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_EXT_ADV, ADV_INTERVAL_MIN, \
ADV_INTERVAL_MAX, NULL)
#endif /* !CONFIG_TEST_USE_LEGACY_ADVERTISING */
#define SEQ_NUM_MAX 1000U

View file

@ -122,9 +122,27 @@ static void disconnected(struct bt_conn *conn, uint8_t reason)
}
}
static int start_advertising(void)
{
int err;
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
printk("Advertising failed to start (err %d)\n", err);
}
return err;
}
static void recycled(void)
{
start_advertising();
}
static struct bt_conn_cb conn_callbacks = {
.connected = connected,
.disconnected = disconnected,
.recycled = recycled,
};
static void bt_ready(void)
@ -133,13 +151,17 @@ static void bt_ready(void)
printk("Peripheral Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
FAIL("Advertising failed to start (err %d)\n", err);
return;
}
printk("Advertising successfully started\n");
err = start_advertising();
if (!err) {
printk("Advertising successfully started\n");
}
}
static void bas_notify(void)

View file

@ -46,6 +46,21 @@ static const struct bt_data sd[] = {
static int service_set;
static int start_advertising(void)
{
int err;
err = bt_le_adv_start(BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_USE_IDENTITY,
BT_GAP_ADV_FAST_INT_MIN_1, BT_GAP_ADV_FAST_INT_MAX_1,
NULL),
ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd));
if (err) {
printk("Advertising failed to start (err %d)\n", err);
}
return err;
}
static void connected(struct bt_conn *conn, uint8_t err)
{
if (err) {
@ -60,6 +75,11 @@ static void disconnected(struct bt_conn *conn, uint8_t reason)
printk("Disconnected (reason 0x%02x)\n", reason);
}
static void recycled(void)
{
start_advertising();
}
static void security_changed(struct bt_conn *conn, bt_security_t level,
enum bt_security_err err)
{
@ -73,6 +93,7 @@ static void security_changed(struct bt_conn *conn, bt_security_t level,
BT_CONN_CB_DEFINE(conn_callbacks) = {
.connected = connected,
.disconnected = disconnected,
.recycled = recycled,
.security_changed = security_changed,
};
@ -226,14 +247,11 @@ static void bt_ready(int err)
settings_load();
}
err = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad), sd,
ARRAY_SIZE(sd));
if (err) {
printk("Advertising failed to start (err %d)\n", err);
return;
}
err = start_advertising();
printk("Advertising successfully started\n");
if (!err) {
printk("Advertising successfully started\n");
}
}
static void auth_passkey_display(struct bt_conn *conn, unsigned int passkey)

View file

@ -101,7 +101,7 @@ static void bt_ready(void)
LOG_DBG("Peripheral Bluetooth initialized\n");
err = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad), NULL, 0);
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
TEST_FAIL("Advertising failed to start (err %d)\n", err);
return;