Skip to content

Commit 48735a3

Browse files
andrzej-kaczmarekcarlescufi
authored andcommitted
tests: Bluetooth: bsim: Fix conn ref
'disconnected' callback always unrefs conn object, but this is only valid if connection was created in scanx since app owns reference to that conn object. In case of advx, app does not own any reference so should not unref. Basically we do not really need to hold any reference to conn object in either scanx or advx so just drop reference immediately after conn is created in scanx, no need to worry about it later. Signed-off-by: Andrzej Kaczmarek <[email protected]>
1 parent 7eabf1c commit 48735a3

File tree

1 file changed

+5
-10
lines changed
  • tests/bluetooth/bsim_bt/bsim_test_advx/src

1 file changed

+5
-10
lines changed

tests/bluetooth/bsim_bt/bsim_test_advx/src/main.c

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ static uint8_t per_adv_data2[] = {
9393
8, BT_DATA_NAME_COMPLETE, 'Z', 'e', 'p', 'h', 'y', 'r', '1',
9494
};
9595

96-
static struct bt_conn *default_conn;
9796
static bool volatile is_connected, is_disconnected;
9897

9998
static void connected(struct bt_conn *conn, uint8_t conn_err)
@@ -102,13 +101,9 @@ static void connected(struct bt_conn *conn, uint8_t conn_err)
102101

103102
printk("Connected.\n");
104103

105-
if (!default_conn) {
106-
default_conn = conn;
107-
}
108-
109104
is_connected = true;
110105

111-
err = bt_conn_disconnect(default_conn, BT_HCI_ERR_REMOTE_USER_TERM_CONN);
106+
err = bt_conn_disconnect(conn, BT_HCI_ERR_REMOTE_USER_TERM_CONN);
112107
if (err) {
113108
printk("Disconnection failed (err %d).\n", err);
114109
}
@@ -118,9 +113,6 @@ static void disconnected(struct bt_conn *conn, uint8_t reason)
118113
{
119114
printk("Disconnected.\n");
120115

121-
bt_conn_unref(default_conn);
122-
default_conn = NULL;
123-
124116
is_disconnected = true;
125117
}
126118

@@ -744,6 +736,7 @@ static void scan_cb(const bt_addr_le_t *addr, int8_t rssi, uint8_t adv_type,
744736
printk("%s: type = 0x%x.\n", __func__, adv_type);
745737

746738
static bool connection_tested;
739+
struct bt_conn *conn;
747740

748741
if (!connection_tested) {
749742
int err;
@@ -758,9 +751,11 @@ static void scan_cb(const bt_addr_le_t *addr, int8_t rssi, uint8_t adv_type,
758751

759752
err = bt_conn_le_create(addr, BT_CONN_LE_CREATE_CONN,
760753
BT_LE_CONN_PARAM_DEFAULT,
761-
(void *)&default_conn);
754+
&conn);
762755
if (err) {
763756
printk("Create conn failed (err %d)\n", err);
757+
} else {
758+
bt_conn_unref(conn);
764759
}
765760
}
766761
}

0 commit comments

Comments
 (0)