tests: bsim: gatt: Fix missing connection reference release
This fixes missing connection reference release. The bt_conn_le_create returns the connection object reference that needs to be released by API caller. Signed-off-by: Mariusz Skamra <mariusz.skamra@codecoup.pl>
This commit is contained in:
parent
6158ff03f5
commit
a42fb9d586
1 changed files with 22 additions and 14 deletions
|
@ -9,6 +9,8 @@
|
||||||
#include <zephyr/sys/__assert.h>
|
#include <zephyr/sys/__assert.h>
|
||||||
#include <zephyr/bluetooth/hci.h>
|
#include <zephyr/bluetooth/hci.h>
|
||||||
|
|
||||||
|
static struct bt_conn *default_conn;
|
||||||
|
|
||||||
DEFINE_FLAG(flag_is_connected);
|
DEFINE_FLAG(flag_is_connected);
|
||||||
DEFINE_FLAG(flag_test_end);
|
DEFINE_FLAG(flag_test_end);
|
||||||
|
|
||||||
|
@ -29,18 +31,34 @@ void wait_disconnected(void)
|
||||||
|
|
||||||
static void disconnected(struct bt_conn *conn, uint8_t reason)
|
static void disconnected(struct bt_conn *conn, uint8_t reason)
|
||||||
{
|
{
|
||||||
bt_conn_unref(conn);
|
__ASSERT_NO_MSG(default_conn == conn);
|
||||||
|
|
||||||
|
bt_conn_unref(default_conn);
|
||||||
|
default_conn = NULL;
|
||||||
|
|
||||||
UNSET_FLAG(flag_is_connected);
|
UNSET_FLAG(flag_is_connected);
|
||||||
gatt_clear_flags();
|
gatt_clear_flags();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void connected(struct bt_conn *conn, uint8_t err)
|
static void connected(struct bt_conn *conn, uint8_t err)
|
||||||
{
|
{
|
||||||
|
struct bt_conn_info info = { 0 };
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bt_conn_ref(conn);
|
ret = bt_conn_get_info(conn, &info);
|
||||||
|
__ASSERT_NO_MSG(ret == 0);
|
||||||
|
|
||||||
|
if (info.role == BT_CONN_ROLE_PERIPHERAL) {
|
||||||
|
__ASSERT_NO_MSG(default_conn == NULL);
|
||||||
|
default_conn = bt_conn_ref(conn);
|
||||||
|
}
|
||||||
|
|
||||||
|
__ASSERT_NO_MSG(default_conn != NULL);
|
||||||
|
|
||||||
SET_FLAG(flag_is_connected);
|
SET_FLAG(flag_is_connected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +82,6 @@ BT_CONN_CB_DEFINE(conn_callbacks) = {
|
||||||
static void scan_connect_to_first_result_device_found(const bt_addr_le_t *addr, int8_t rssi,
|
static void scan_connect_to_first_result_device_found(const bt_addr_le_t *addr, int8_t rssi,
|
||||||
uint8_t type, struct net_buf_simple *ad)
|
uint8_t type, struct net_buf_simple *ad)
|
||||||
{
|
{
|
||||||
struct bt_conn *conn;
|
|
||||||
char addr_str[BT_ADDR_LE_STR_LEN];
|
char addr_str[BT_ADDR_LE_STR_LEN];
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
@ -82,7 +99,7 @@ static void scan_connect_to_first_result_device_found(const bt_addr_le_t *addr,
|
||||||
|
|
||||||
err = bt_conn_le_create(addr,
|
err = bt_conn_le_create(addr,
|
||||||
BT_CONN_LE_CREATE_CONN, BT_LE_CONN_PARAM_DEFAULT,
|
BT_CONN_LE_CREATE_CONN, BT_LE_CONN_PARAM_DEFAULT,
|
||||||
&conn);
|
&default_conn);
|
||||||
__ASSERT(!err, "Err bt_conn_le_create %d", err);
|
__ASSERT(!err, "Err bt_conn_le_create %d", err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,18 +139,9 @@ void disconnect(struct bt_conn *conn)
|
||||||
WAIT_FOR_FLAG_UNSET(flag_is_connected);
|
WAIT_FOR_FLAG_UNSET(flag_is_connected);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void get_active_conn_cb(struct bt_conn *src, void *dst)
|
|
||||||
{
|
|
||||||
*(struct bt_conn **)dst = src;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct bt_conn *get_conn(void)
|
struct bt_conn *get_conn(void)
|
||||||
{
|
{
|
||||||
struct bt_conn *ret;
|
return default_conn;
|
||||||
|
|
||||||
bt_conn_foreach(BT_CONN_TYPE_LE, get_active_conn_cb, &ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_FLAG(flag_pairing_complete);
|
DEFINE_FLAG(flag_pairing_complete);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue