From b125e38f9c91b81d70c46b5054620881ab49b276 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Wed, 17 Feb 2016 11:32:11 +0200 Subject: [PATCH] drivers/nble: Add connection states Connection state helps to keep make right choice when connecting / disconnecting. Change-Id: Ifea620c05f869a633f578bf5d5c8ba603a58a46a Signed-off-by: Andrei Emeltchenko --- drivers/nble/conn.c | 6 ++++++ drivers/nble/conn_internal.h | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/drivers/nble/conn.c b/drivers/nble/conn.c index 8585065155d..c8e4cbdc596 100644 --- a/drivers/nble/conn.c +++ b/drivers/nble/conn.c @@ -200,6 +200,8 @@ struct bt_conn *bt_conn_create_le(const bt_addr_le_t *peer, /* Disable timeout */ req.scan_params.timeout = 0; + conn->state = BT_CONN_CONNECT; + nble_gap_connect_req(&req, conn); return conn; @@ -306,6 +308,8 @@ void on_nble_gap_connect_evt(const struct nble_gap_connect_evt *ev) conn->timeout = ev->conn_values.supervision_to; bt_addr_le_copy(&conn->dst, &ev->peer_bda); + conn->state = BT_CONN_CONNECTED; + notify_connected(conn); } @@ -321,6 +325,8 @@ void on_nble_gap_disconnect_evt(const struct nble_gap_disconnect_evt *ev) BT_DBG("conn %p handle %u", conn, ev->conn_handle); + conn->state = BT_CONN_DISCONNECTED; + notify_disconnected(conn); /* Drop the reference given by lookup_handle() */ diff --git a/drivers/nble/conn_internal.h b/drivers/nble/conn_internal.h index 859c6484b10..48a44f33dbd 100644 --- a/drivers/nble/conn_internal.h +++ b/drivers/nble/conn_internal.h @@ -24,4 +24,11 @@ struct bt_conn { uint16_t interval; uint16_t latency; uint16_t timeout; + + enum { + BT_CONN_DISCONNECTED, + BT_CONN_CONNECT, + BT_CONN_CONNECTED, + BT_CONN_DISCONNECT, + } state; };