| /* |
| * Copyright (c) 2022 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include "bs_bt_utils.h" |
| #include "zephyr/bluetooth/addr.h" |
| #include "zephyr/bluetooth/bluetooth.h" |
| #include "zephyr/bluetooth/conn.h" |
| #include "zephyr/toolchain/gcc.h" |
| |
| #include <stdint.h> |
| #include <string.h> |
| |
| 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"); |
| } |