Bluetooth: tests: use global testlib in read_fill_buf
This deduplicates a copy of testlib from before testlib was a globally
available cmake library.
Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/bs_macro.h b/tests/bsim/bluetooth/host/att/read_fill_buf/bs_macro.h
similarity index 100%
rename from tests/bsim/bluetooth/host/att/read_fill_buf/testlib/bs_macro.h
rename to tests/bsim/bluetooth/host/att/read_fill_buf/bs_macro.h
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/bs_main.c b/tests/bsim/bluetooth/host/att/read_fill_buf/bs_main.c
similarity index 100%
rename from tests/bsim/bluetooth/host/att/read_fill_buf/testlib/bs_main.c
rename to tests/bsim/bluetooth/host/att/read_fill_buf/bs_main.c
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/client/CMakeLists.txt b/tests/bsim/bluetooth/host/att/read_fill_buf/client/CMakeLists.txt
index 9c4968f..a384dcb 100644
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/client/CMakeLists.txt
+++ b/tests/bsim/bluetooth/host/att/read_fill_buf/client/CMakeLists.txt
@@ -6,11 +6,7 @@
project(app)
target_sources(app PRIVATE
- ../testlib/bs_main.c
- ../testlib/scan.c
- ../testlib/connect.c
- ../testlib/security.c
- ../testlib/att_read.c
+ ../bs_main.c
main.c
)
@@ -18,3 +14,6 @@
${BSIM_COMPONENTS_PATH}/libPhyComv1/src/
${BSIM_COMPONENTS_PATH}/libUtilv1/src/
)
+
+add_subdirectory(${ZEPHYR_BASE}/tests/bluetooth/common/testlib testlib)
+target_link_libraries(app PRIVATE testlib)
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/client/main.c b/tests/bsim/bluetooth/host/att/read_fill_buf/client/main.c
index 0c99062..159ce5c 100644
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/client/main.c
+++ b/tests/bsim/bluetooth/host/att/read_fill_buf/client/main.c
@@ -10,19 +10,19 @@
#include <zephyr/sys/byteorder.h>
#include <zephyr/logging/log.h>
-#include "../common_defs.h"
+#include <testlib/att_read.h>
+#include <testlib/conn.h>
+#include <testlib/scan.h>
+#include <testlib/security.h>
-#include "../testlib/att_read.h"
-#include "../testlib/bs_macro.h"
-#include "../testlib/connect.h"
-#include "../testlib/scan.h"
-#include "../testlib/security.h"
+#include "../bs_macro.h"
+#include "../common_defs.h"
LOG_MODULE_REGISTER(client, LOG_LEVEL_DBG);
#define BT_LOCAL_ATT_MTU_EATT MIN(BT_L2CAP_SDU_RX_MTU, BT_L2CAP_SDU_TX_MTU)
#define BT_LOCAL_ATT_MTU_UATT MIN(BT_L2CAP_RX_MTU, BT_L2CAP_TX_MTU)
-#define BT_ATT_BUF_SIZE MAX(BT_LOCAL_ATT_MTU_UATT, BT_LOCAL_ATT_MTU_EATT)
+#define BT_ATT_BUF_SIZE MAX(BT_LOCAL_ATT_MTU_UATT, BT_LOCAL_ATT_MTU_EATT)
void test_long_read(struct bt_conn *conn, enum bt_att_chan_opt bearer)
{
@@ -43,20 +43,20 @@
LOG_INF("ATT_READ_BY_TYPE");
/* Aka. "read by uuid". */
err = bt_testlib_att_read_by_type_sync(&attr_value, &actual_read_len,
- &handle, conn, bearer,
+ &handle, NULL, conn, bearer,
MTU_VALIDATION_CHRC, 1, 0xffff);
break;
case 1:
LOG_INF("ATT_READ");
/* Arg `offset == 0`: the stack should choose ATT_READ PDU. */
err = bt_testlib_att_read_by_handle_sync(&attr_value, &actual_read_len,
- conn, bearer, handle, 0);
+ NULL, conn, bearer, handle, 0);
break;
case 2:
LOG_INF("ATT_READ_BLOB");
/* Arg `offset != 0`: the stack should choose ATT_READ_BLOB PDU. */
err = bt_testlib_att_read_by_handle_sync(&attr_value, &actual_read_len,
- conn, bearer, handle, 1);
+ NULL, conn, bearer, handle, 1);
break;
}
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/server/CMakeLists.txt b/tests/bsim/bluetooth/host/att/read_fill_buf/server/CMakeLists.txt
index 663ac0c..a384dcb 100644
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/server/CMakeLists.txt
+++ b/tests/bsim/bluetooth/host/att/read_fill_buf/server/CMakeLists.txt
@@ -6,8 +6,7 @@
project(app)
target_sources(app PRIVATE
- ../testlib/bs_main.c
- ../testlib/adv.c
+ ../bs_main.c
main.c
)
@@ -15,3 +14,6 @@
${BSIM_COMPONENTS_PATH}/libPhyComv1/src/
${BSIM_COMPONENTS_PATH}/libUtilv1/src/
)
+
+add_subdirectory(${ZEPHYR_BASE}/tests/bluetooth/common/testlib testlib)
+target_link_libraries(app PRIVATE testlib)
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/server/main.c b/tests/bsim/bluetooth/host/att/read_fill_buf/server/main.c
index 9f353b7..22904c3 100644
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/server/main.c
+++ b/tests/bsim/bluetooth/host/att/read_fill_buf/server/main.c
@@ -8,9 +8,9 @@
#include <zephyr/sys/__assert.h>
#include <zephyr/sys/byteorder.h>
-#include "../testlib/bs_macro.h"
-#include "../testlib/adv.h"
+#include <testlib/adv.h>
+#include "../bs_macro.h"
#include "../common_defs.h"
LOG_MODULE_REGISTER(server, LOG_LEVEL_DBG);
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/adv.c b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/adv.c
deleted file mode 100644
index e67d3bb..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/adv.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdint.h>
-#include <zephyr/bluetooth/bluetooth.h>
-#include <zephyr/bluetooth/conn.h>
-#include <zephyr/bluetooth/gatt.h>
-#include <zephyr/bluetooth/gatt.h>
-#include <zephyr/bluetooth/l2cap.h>
-#include <zephyr/bluetooth/uuid.h>
-#include <zephyr/kernel.h>
-#include <zephyr/kernel.h>
-#include <zephyr/sys/__assert.h>
-
-struct bt_testlib_adv_ctx {
- struct bt_conn **result;
- struct k_condvar done;
-};
-
-/* Context pool (with capacity of one). */
-static K_SEM_DEFINE(g_ctx_free, 1, 1);
-static K_MUTEX_DEFINE(g_ctx_lock);
-static struct bt_testlib_adv_ctx *g_ctx;
-
-static void connected_cb(struct bt_le_ext_adv *adv, struct bt_le_ext_adv_connected_info *info)
-{
- k_mutex_lock(&g_ctx_lock, K_FOREVER);
-
- if (g_ctx->result) {
- *g_ctx->result = bt_conn_ref(info->conn);
- }
- k_condvar_signal(&g_ctx->done);
-
- k_mutex_unlock(&g_ctx_lock);
-}
-
-int bt_testlib_adv_conn(struct bt_conn **conn, int id, uint32_t adv_options)
-{
- int api_err;
- struct bt_le_ext_adv *adv = NULL;
- struct bt_le_adv_param param = {};
- struct bt_testlib_adv_ctx ctx = {
- .result = conn,
- };
- static const struct bt_le_ext_adv_cb cb = {
- .connected = connected_cb,
- };
-
- param.id = id;
- param.interval_min = BT_GAP_ADV_FAST_INT_MIN_1;
- param.interval_max = BT_GAP_ADV_FAST_INT_MAX_1;
- param.options |= BT_LE_ADV_OPT_CONNECTABLE;
- param.options |= adv_options;
-
- k_condvar_init(&ctx.done);
-
- k_sem_take(&g_ctx_free, K_FOREVER);
- k_mutex_lock(&g_ctx_lock, K_FOREVER);
- g_ctx = &ctx;
-
- api_err = bt_le_ext_adv_create(¶m, &cb, &adv);
- if (!api_err) {
- api_err = bt_le_ext_adv_start(adv, BT_LE_EXT_ADV_START_DEFAULT);
- }
-
- if (!api_err) {
- k_condvar_wait(&ctx.done, &g_ctx_lock, K_FOREVER);
- }
-
- /* Delete adv before giving semaphore so that it's potentially available
- * for the next taker of the semaphore.
- */
- if (adv) {
- bt_le_ext_adv_delete(adv);
- }
-
- g_ctx = NULL;
- k_mutex_unlock(&g_ctx_lock);
- k_sem_give(&g_ctx_free);
-
- return api_err;
-}
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/adv.h b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/adv.h
deleted file mode 100644
index a9d429d..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/adv.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <zephyr/bluetooth/bluetooth.h>
-
-int bt_testlib_adv_conn(struct bt_conn **conn, int id, uint32_t adv_options);
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/att_read.c b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/att_read.c
deleted file mode 100644
index 2b95ca0..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/att_read.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdint.h>
-#include <zephyr/bluetooth/bluetooth.h>
-#include <zephyr/bluetooth/conn.h>
-#include <zephyr/bluetooth/gatt.h>
-#include <zephyr/bluetooth/l2cap.h>
-#include <zephyr/bluetooth/uuid.h>
-#include <zephyr/kernel.h>
-#include <zephyr/sys/__assert.h>
-
-#include "att_read.h"
-
-struct bt_testlib_att_read_closure {
- uint8_t att_err;
- struct bt_conn *conn;
- struct bt_gatt_read_params params;
- uint16_t *result_size;
- uint16_t *result_handle;
- struct net_buf_simple *result_data;
- struct k_mutex lock;
- struct k_condvar done;
-};
-
-static inline uint8_t att_read_cb(struct bt_conn *conn, uint8_t att_err,
- struct bt_gatt_read_params *params, const void *read_data,
- uint16_t read_len)
-{
- struct bt_testlib_att_read_closure *ctx =
- CONTAINER_OF(params, struct bt_testlib_att_read_closure, params);
-
- k_mutex_lock(&ctx->lock, K_FOREVER);
-
- ctx->att_err = att_err;
-
- if (!att_err && ctx->result_handle) {
- *ctx->result_handle = params->by_uuid.start_handle;
- }
-
- if (!att_err && ctx->result_size) {
- *ctx->result_size = read_len;
- }
-
- if (!att_err && ctx->result_data) {
- uint16_t result_data_size =
- MIN(read_len, net_buf_simple_tailroom(ctx->result_data));
- net_buf_simple_add_mem(ctx->result_data, read_data, result_data_size);
- }
-
- k_condvar_signal(&ctx->done);
- k_mutex_unlock(&ctx->lock);
- return BT_GATT_ITER_STOP;
-}
-
-static inline int bt_testlib_sync_bt_gatt_read(struct bt_testlib_att_read_closure *ctx)
-{
- int api_err;
-
- ctx->params.func = att_read_cb;
-
- k_mutex_init(&ctx->lock);
- k_condvar_init(&ctx->done);
-
- k_mutex_lock(&ctx->lock, K_FOREVER);
-
- api_err = bt_gatt_read(ctx->conn, &ctx->params);
-
- if (!api_err) {
- k_condvar_wait(&ctx->done, &ctx->lock, K_FOREVER);
- }
-
- k_mutex_unlock(&ctx->lock);
-
- if (api_err) {
- __ASSERT_NO_MSG(api_err < 0);
- return api_err;
- }
-
- __ASSERT_NO_MSG(ctx->att_err >= 0);
- return ctx->att_err;
-}
-
-int bt_testlib_att_read_by_type_sync(struct net_buf_simple *result_data, uint16_t *result_size,
- uint16_t *result_handle, struct bt_conn *conn,
- enum bt_att_chan_opt bearer, const struct bt_uuid *type,
- uint16_t start_handle, uint16_t end_handle)
-{
- struct bt_testlib_att_read_closure ctx = {
- .result_handle = result_handle,
- .result_size = result_size,
- .conn = conn,
- .result_data = result_data,
- .params = {.by_uuid = {.uuid = type,
- .start_handle = start_handle,
- .end_handle = end_handle},
- IF_ENABLED(CONFIG_BT_EATT, (.chan_opt = bearer))},
- };
-
- if (bearer == BT_ATT_CHAN_OPT_ENHANCED_ONLY) {
- __ASSERT(IS_ENABLED(CONFIG_BT_EATT), "EATT not complied in");
- }
-
- return bt_testlib_sync_bt_gatt_read(&ctx);
-}
-
-int bt_testlib_att_read_by_handle_sync(struct net_buf_simple *result_data, uint16_t *result_size,
- struct bt_conn *conn, enum bt_att_chan_opt bearer,
- uint16_t handle, uint16_t offset)
-{
- struct bt_testlib_att_read_closure ctx = {
- .result_size = result_size,
- .conn = conn,
- .result_data = result_data,
- .params = {.handle_count = 1,
- .single = {.handle = handle, .offset = offset},
- IF_ENABLED(CONFIG_BT_EATT, (.chan_opt = bearer))},
- };
-
- if (bearer == BT_ATT_CHAN_OPT_ENHANCED_ONLY) {
- __ASSERT(IS_ENABLED(CONFIG_BT_EATT), "EATT not complied in");
- }
-
- return bt_testlib_sync_bt_gatt_read(&ctx);
-}
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/att_read.h b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/att_read.h
deleted file mode 100644
index 0e16a49..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/att_read.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdint.h>
-#include <zephyr/bluetooth/gatt.h>
-
-int bt_testlib_att_read_by_type_sync(struct net_buf_simple *result_data, uint16_t *result_size,
- uint16_t *result_handle, struct bt_conn *conn,
- enum bt_att_chan_opt bearer, const struct bt_uuid *type,
- uint16_t start_handle, uint16_t end_handle);
-
-int bt_testlib_att_read_by_handle_sync(struct net_buf_simple *result_data, uint16_t *result_size,
- struct bt_conn *conn, enum bt_att_chan_opt bearer,
- uint16_t handle, uint16_t offset);
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/connect.c b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/connect.c
deleted file mode 100644
index f0c764c..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/connect.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdint.h>
-#include <zephyr/bluetooth/gatt.h>
-#include <zephyr/kernel.h>
-
-#include "connect.h"
-
-struct bt_testlib_connect_closure {
- uint8_t conn_err;
- struct bt_conn **conn;
- struct k_mutex lock;
- struct k_condvar done;
-};
-
-/* Context pool (with capacity of one). */
-static K_SEM_DEFINE(g_ctx_free, 1, 1);
-static K_MUTEX_DEFINE(g_ctx_lock);
-static struct bt_testlib_connect_closure *g_ctx;
-
-static void connected_cb(struct bt_conn *conn, uint8_t conn_err)
-{
- /* Loop over each (allocated) item in pool. */
-
- k_mutex_lock(&g_ctx_lock, K_FOREVER);
-
- if (g_ctx && conn == *g_ctx->conn) {
- g_ctx->conn_err = conn_err;
- k_condvar_signal(&g_ctx->done);
- }
-
- k_mutex_unlock(&g_ctx_lock);
-}
-
-BT_CONN_CB_DEFINE(conn_callbacks) = {
- .connected = connected_cb,
-};
-
-int bt_testlib_connect(const bt_addr_le_t *peer, struct bt_conn **conn)
-{
- int api_err;
- struct bt_testlib_connect_closure ctx = {
- .conn = conn,
- };
-
- k_condvar_init(&ctx.done);
-
- k_sem_take(&g_ctx_free, K_FOREVER);
- k_mutex_lock(&g_ctx_lock, K_FOREVER);
- g_ctx = &ctx;
-
- api_err = bt_conn_le_create(peer, BT_CONN_LE_CREATE_CONN, BT_LE_CONN_PARAM_DEFAULT, conn);
-
- if (!api_err) {
- k_condvar_wait(&ctx.done, &g_ctx_lock, K_FOREVER);
- }
-
- g_ctx = NULL;
- k_mutex_unlock(&g_ctx_lock);
- k_sem_give(&g_ctx_free);
-
- if (api_err) {
- __ASSERT_NO_MSG(api_err < 0);
- return api_err;
- }
-
- __ASSERT_NO_MSG(ctx.conn_err >= 0);
- return ctx.conn_err;
-}
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/connect.h b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/connect.h
deleted file mode 100644
index e8da223..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/connect.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <zephyr/bluetooth/conn.h>
-
-int bt_testlib_connect(const bt_addr_le_t *peer, struct bt_conn **conn);
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/scan.c b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/scan.c
deleted file mode 100644
index daac480..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/scan.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdint.h>
-#include <zephyr/bluetooth/gatt.h>
-#include <zephyr/kernel.h>
-#include <zephyr/sys/__assert.h>
-
-#include "scan.h"
-
-struct bt_scan_find_name_closure {
- char *wanted_name;
- bt_addr_le_t *result;
- struct k_condvar done;
-};
-
-/* Context pool (with capacity of one). */
-static K_SEM_DEFINE(g_ctx_free, 1, 1);
-static K_MUTEX_DEFINE(g_ctx_lock);
-static struct bt_scan_find_name_closure *g_ctx;
-
-static bool bt_scan_find_name_cb_data_cb(struct bt_data *data, void *user_data)
-{
- char **wanted = user_data;
-
- if (data->type == BT_DATA_NAME_COMPLETE) {
- if (data->data_len == strlen(*wanted) &&
- !memcmp(*wanted, data->data, data->data_len)) {
- *wanted = NULL;
- /* Stop bt_data_parse. */
- return false;
- }
- }
-
- /* Continue with next ad data. */
- return true;
-}
-
-static void bt_scan_find_name_cb(const bt_addr_le_t *addr, int8_t rssi, uint8_t adv_type,
- struct net_buf_simple *buf)
-{
- char *wanted;
-
- k_mutex_lock(&g_ctx_lock, K_FOREVER);
-
- __ASSERT_NO_MSG(g_ctx);
- __ASSERT_NO_MSG(g_ctx->wanted_name);
-
- wanted = g_ctx->wanted_name;
-
- bt_data_parse(buf, bt_scan_find_name_cb_data_cb, &wanted);
-
- if (!wanted) {
- (void)bt_le_scan_stop();
- *g_ctx->result = *addr;
- k_condvar_signal(&g_ctx->done);
- }
-
- k_mutex_unlock(&g_ctx_lock);
-}
-
-int bt_testlib_scan_find_name(bt_addr_le_t *result, char name[])
-{
- int api_err;
- struct bt_scan_find_name_closure ctx = {
- .wanted_name = name,
- .result = result,
- };
-
- k_condvar_init(&ctx.done);
-
- k_sem_take(&g_ctx_free, K_FOREVER);
- k_mutex_lock(&g_ctx_lock, K_FOREVER);
- g_ctx = &ctx;
-
- api_err = bt_le_scan_start(BT_LE_SCAN_PASSIVE, bt_scan_find_name_cb);
- if (!api_err) {
- k_condvar_wait(&ctx.done, &g_ctx_lock, K_FOREVER);
- }
-
- g_ctx = NULL;
- k_mutex_unlock(&g_ctx_lock);
- k_sem_give(&g_ctx_free);
-
- return api_err;
-}
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/scan.h b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/scan.h
deleted file mode 100644
index 58c887c..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/scan.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <zephyr/bluetooth/bluetooth.h>
-
-int bt_testlib_scan_find_name(bt_addr_le_t *result, char name[]);
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/security.c b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/security.c
deleted file mode 100644
index b6fb67b..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/security.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdint.h>
-#include <zephyr/bluetooth/bluetooth.h>
-#include <zephyr/bluetooth/conn.h>
-#include <zephyr/bluetooth/gatt.h>
-#include <zephyr/bluetooth/l2cap.h>
-#include <zephyr/bluetooth/uuid.h>
-#include <zephyr/kernel.h>
-#include <zephyr/sys/__assert.h>
-
-struct testlib_security_ctx {
- enum bt_security_err result;
- struct bt_conn *conn;
- bt_security_t new_minimum;
- struct k_condvar done;
-};
-
-/* Context pool (with capacity of one). */
-static K_SEM_DEFINE(g_ctx_free, 1, 1);
-static K_MUTEX_DEFINE(g_ctx_lock);
-static struct testlib_security_ctx *g_ctx;
-
-static void security_changed(struct bt_conn *conn, bt_security_t level, enum bt_security_err err)
-{
- /* Mutex operations establish a happens-before relationship. This
- * ensures variables have the expected values despite non-atomic
- * accesses.
- */
- k_mutex_lock(&g_ctx_lock, K_FOREVER);
-
- if (g_ctx && (g_ctx->conn == conn)) {
- g_ctx->result = err;
- /* Assumption: A security error means there will be further
- * security changes for this connection.
- */
- if (err || level >= g_ctx->new_minimum) {
- k_condvar_signal(&g_ctx->done);
- }
- }
-
- k_mutex_unlock(&g_ctx_lock);
-}
-
-BT_CONN_CB_DEFINE(conn_callbacks) = {
- .security_changed = security_changed,
-};
-
-int bt_testlib_secure(struct bt_conn *conn, bt_security_t new_minimum)
-{
- int api_err = 0;
- struct testlib_security_ctx ctx = {
- .conn = conn,
- .new_minimum = new_minimum,
- };
-
- k_condvar_init(&ctx.done);
-
- /* The semaphore allocates `g_ctx` to this invocation of
- * `bt_testlib_secure`, in case this function is called from multiple
- * threads in parallel.
- */
- k_sem_take(&g_ctx_free, K_FOREVER);
- /* The mutex synchronizes this function with `security_changed()`. */
- k_mutex_lock(&g_ctx_lock, K_FOREVER);
-
- /* Do the thing. */
- api_err = bt_conn_set_security(conn, new_minimum);
-
- /* Holding the mutex will pause any thread entering
- * `security_changed_cb`, delaying it until `k_condvar_wait`. This
- * ensures that the condition variable is signaled while this thread is
- * in `k_condvar_wait`, even if the event happens before, e.g. between
- * `bt_conn_get_security` and `k_condvar_wait`.
- *
- * If the security level is already satisfied, there is no point in
- * waiting, and it would deadlock if security was already satisfied
- * before the mutex was taken, `bt_conn_set_security` will result in no
- * operation.
- */
- if (!api_err && bt_conn_get_security(conn) < new_minimum) {
- /* Waiting on a condvar releases the mutex and waits for a
- * signal on the condvar, atomically, without a gap between the
- * release and wait. The mutex is locked again before returning.
- */
- g_ctx = &ctx;
- k_condvar_wait(&ctx.done, &g_ctx_lock, K_FOREVER);
- g_ctx = NULL;
- }
-
- k_mutex_unlock(&g_ctx_lock);
- k_sem_give(&g_ctx_free);
-
- if (api_err) {
- __ASSERT_NO_MSG(api_err < 0);
- return api_err;
- }
-
- __ASSERT_NO_MSG(ctx.result >= 0);
- return ctx.result;
-}
diff --git a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/security.h b/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/security.h
deleted file mode 100644
index 8b7dd46..0000000
--- a/tests/bsim/bluetooth/host/att/read_fill_buf/testlib/security.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Copyright (c) 2023 Nordic Semiconductor ASA
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <zephyr/bluetooth/conn.h>
-
-int bt_testlib_secure(struct bt_conn *conn, bt_security_t new_minimum);