From 641d706597c5484e1bcc9d6214c1ccf966b84491 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 9 Feb 2016 19:13:11 +0200 Subject: [PATCH] drivers/nble: Implement bt_conn_lookup_addr_le Change-Id: Ia22dfdc40b647e6f364fffec9963fb70609159f7 Signed-off-by: Johan Hedberg --- drivers/nble/conn.c | 13 +++++++++++++ drivers/nble/conn_internal.h | 1 + 2 files changed, 14 insertions(+) diff --git a/drivers/nble/conn.c b/drivers/nble/conn.c index acbf7f945a8..23c184bb26d 100644 --- a/drivers/nble/conn.c +++ b/drivers/nble/conn.c @@ -86,6 +86,18 @@ struct bt_conn *bt_conn_lookup_handle(uint16_t handle) struct bt_conn *bt_conn_lookup_addr_le(const bt_addr_le_t *peer) { + int i; + + for (i = 0; i < ARRAY_SIZE(conns); i++) { + if (!atomic_get(&conns[i].ref)) { + continue; + } + + if (!bt_addr_le_cmp(peer, &conns[i].dst)) { + return bt_conn_ref(&conns[i]); + } + } + return NULL; } @@ -177,6 +189,7 @@ void on_ble_gap_connect_evt(const struct ble_gap_connect_evt *ev) } conn->handle = ev->conn_handle; + bt_addr_le_copy(&conn->dst, &ev->peer_bda); } void on_ble_gap_disconnect_evt(const struct ble_gap_disconnect_evt *ev) diff --git a/drivers/nble/conn_internal.h b/drivers/nble/conn_internal.h index f2bfd0532f3..1dce04c76ce 100644 --- a/drivers/nble/conn_internal.h +++ b/drivers/nble/conn_internal.h @@ -17,4 +17,5 @@ struct bt_conn { uint16_t handle; atomic_t ref; + bt_addr_le_t dst; };