diff --git a/net/bluetooth/conn.c b/net/bluetooth/conn.c index b6dd8314a34..f49b1c7453a 100644 --- a/net/bluetooth/conn.c +++ b/net/bluetooth/conn.c @@ -62,6 +62,8 @@ static const char *state2str(bt_conn_state_t state) switch (state) { case BT_CONN_DISCONNECTED: return "disconnected"; + case BT_CONN_CONNECT_SCAN: + return "connect-scan"; case BT_CONN_CONNECT: return "connect"; case BT_CONN_CONNECTED: @@ -327,6 +329,7 @@ void bt_conn_set_state(struct bt_conn *conn, bt_conn_state_t state) bt_conn_put(conn); break; + case BT_CONN_CONNECT_SCAN: case BT_CONN_CONNECT: case BT_CONN_DISCONNECT: diff --git a/net/bluetooth/conn_internal.h b/net/bluetooth/conn_internal.h index 8a2d9db416b..a39434dc42c 100644 --- a/net/bluetooth/conn_internal.h +++ b/net/bluetooth/conn_internal.h @@ -37,6 +37,7 @@ typedef enum { BT_CONN_DISCONNECTED, + BT_CONN_CONNECT_SCAN, BT_CONN_CONNECT, BT_CONN_CONNECTED, BT_CONN_DISCONNECT, diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 110ea412284..d25a80b9f45 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -1482,6 +1482,7 @@ struct bt_conn *bt_connect_le(const bt_addr_le_t *peer) conn = bt_conn_lookup_addr_le(peer); if (conn) { switch (conn->state) { + case BT_CONN_CONNECT_SCAN: case BT_CONN_CONNECT: case BT_CONN_CONNECTED: return conn; @@ -1548,6 +1549,12 @@ static int bt_hci_disconnect(struct bt_conn *conn, uint8_t reason) int bt_disconnect(struct bt_conn *conn, uint8_t reason) { switch (conn->state) { + case BT_CONN_CONNECT_SCAN: + /* TODO + * 1. set bt_conn state to BT_CONN_DISCONNECTED + * 2. stop passive scanning if there is no more conns + * in BT_CONN_CONNECT_SCAN state + */ case BT_CONN_CONNECT: return bt_hci_connect_le_cancel(conn); case BT_CONN_CONNECTED: