/* * Copyright (c) 2022 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ #include "bs_bt_utils.h" #include #include #include #include #include #include void peripheral(void) { bs_bt_utils_setup(); int id_a; int id_b; bt_addr_le_t central; id_a = bt_id_create(NULL, NULL); ASSERT(id_a >= 0, "bt_id_create id_a failed (err %d)\n", id_a); id_b = bt_id_create(NULL, NULL); ASSERT(id_b >= 0, "bt_id_create id_b failed (err %d)\n", id_b); printk("== Bonding id a ==\n"); advertise_connectable(id_a, NULL); wait_connected(); /* Central should bond here, and trigger a disconnect. */ wait_disconnected(); central = *bt_conn_get_dst(g_conn); clear_g_conn(); printk("== Bonding id b ==\n"); advertise_connectable(id_b, NULL); wait_connected(); /* Central should bond here. */ BUILD_ASSERT(IS_ENABLED(CONFIG_BT_SMP_ALLOW_UNAUTH_OVERWRITE), ""); BUILD_ASSERT(IS_ENABLED(CONFIG_BT_ID_UNPAIR_MATCHING_BONDS), ""); TAKE_FLAG(flag_pairing_complete); ASSERT(bt_addr_le_eq(bt_conn_get_dst(g_conn), ¢ral), "Test requires that central uses the same identity in both bonds."); /* Central should disconnect here. */ wait_disconnected(); clear_g_conn(); printk("== Directed connect id b ==\n"); advertise_connectable(id_b, ¢ral); wait_connected(); /* Central should verify that its bond with id_b works as expected. */ PASS("PASS\n"); }