From 262ee6bd0295d1b7daf620c9a01060414bcb0def Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 10 Jan 2014 14:51:06 +0200 Subject: [PATCH] emulator/bthost: Track remote address in btconn --- emulator/bthost.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/emulator/bthost.c b/emulator/bthost.c index 99537acd4..a178fb045 100644 --- a/emulator/bthost.c +++ b/emulator/bthost.c @@ -69,6 +69,7 @@ struct cid_hook { struct btconn { uint16_t handle; + uint8_t bdaddr[6]; uint8_t addr_type; uint8_t encr_mode; uint16_t next_cid; @@ -592,7 +593,8 @@ static void evt_conn_request(struct bthost *bthost, const void *data, sizeof(cmd)); } -static void init_conn(struct bthost *bthost, uint16_t handle, uint8_t addr_type) +static void init_conn(struct bthost *bthost, uint16_t handle, + const uint8_t *bdaddr, uint8_t addr_type) { struct btconn *conn; @@ -602,6 +604,7 @@ static void init_conn(struct bthost *bthost, uint16_t handle, uint8_t addr_type) memset(conn, 0, sizeof(*conn)); conn->handle = handle; + memcpy(conn->bdaddr, bdaddr, 6); conn->addr_type = addr_type; conn->next_cid = 0x0040; @@ -623,7 +626,7 @@ static void evt_conn_complete(struct bthost *bthost, const void *data, if (ev->status) return; - init_conn(bthost, le16_to_cpu(ev->handle), BDADDR_BREDR); + init_conn(bthost, le16_to_cpu(ev->handle), ev->bdaddr, BDADDR_BREDR); } static void evt_disconn_complete(struct bthost *bthost, const void *data, @@ -742,7 +745,7 @@ static void evt_le_conn_complete(struct bthost *bthost, const void *data, else addr_type = BDADDR_LE_RANDOM; - init_conn(bthost, le16_to_cpu(ev->handle), addr_type); + init_conn(bthost, le16_to_cpu(ev->handle), ev->peer_addr, addr_type); } static void evt_le_meta_event(struct bthost *bthost, const void *data, -- 2.47.3