From e88d1f041fa84836d46c39748461de84d51c1226 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 4 Dec 2012 11:16:01 +0200 Subject: [PATCH] core: Remove event.c as middle-man for disconnection events --- src/event.c | 16 ---------------- src/event.h | 1 - src/mgmt.c | 21 ++++++++++++++++++--- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/event.c b/src/event.c index 00119d364..29931a3b2 100644 --- a/src/event.c +++ b/src/event.c @@ -276,22 +276,6 @@ int btd_event_ltk_notify(bdaddr_t *local, bdaddr_t *peer, uint8_t bdaddr_type, return 0; } -void btd_event_disconn_complete(bdaddr_t *local, bdaddr_t *peer) -{ - struct btd_adapter *adapter; - struct btd_device *device; - - DBG(""); - - if (!get_adapter_and_device(local, peer, &adapter, &device, FALSE)) - return; - - if (!device) - return; - - adapter_remove_connection(adapter, device); -} - void btd_event_device_blocked(bdaddr_t *local, bdaddr_t *peer) { struct btd_adapter *adapter; diff --git a/src/event.h b/src/event.h index f98669c0c..ddaa24e90 100644 --- a/src/event.h +++ b/src/event.h @@ -24,7 +24,6 @@ void btd_event_remote_name(const bdaddr_t *local, bdaddr_t *peer, const char *name); -void btd_event_disconn_complete(bdaddr_t *local, bdaddr_t *peer); void btd_event_returned_link_key(bdaddr_t *local, bdaddr_t *peer); void btd_event_device_blocked(bdaddr_t *local, bdaddr_t *peer); void btd_event_device_unblocked(bdaddr_t *local, bdaddr_t *peer); diff --git a/src/mgmt.c b/src/mgmt.c index ff3333516..c32e756cd 100644 --- a/src/mgmt.c +++ b/src/mgmt.c @@ -549,6 +549,8 @@ static void mgmt_device_disconnected(int sk, uint16_t index, void *buf, { struct mgmt_ev_device_disconnected *ev = buf; struct controller_info *info; + struct btd_adapter *adapter; + struct btd_device *device; char addr[18]; uint8_t reason; @@ -573,7 +575,12 @@ static void mgmt_device_disconnected(int sk, uint16_t index, void *buf, info = &controllers[index]; - btd_event_disconn_complete(&info->bdaddr, &ev->addr.bdaddr); + if (!get_adapter_and_device(&info->bdaddr, &ev->addr.bdaddr, + &adapter, &device, false)) + return; + + if (device) + adapter_remove_connection(adapter, device); } static void mgmt_connect_failed(int sk, uint16_t index, void *buf, size_t len) @@ -1212,6 +1219,8 @@ static void disconnect_complete(int sk, uint16_t index, uint8_t status, { struct mgmt_rp_disconnect *rp = buf; struct controller_info *info; + struct btd_adapter *adapter; + struct btd_device *device; char addr[18]; if (len < sizeof(*rp)) { @@ -1235,9 +1244,15 @@ static void disconnect_complete(int sk, uint16_t index, uint8_t status, info = &controllers[index]; - btd_event_disconn_complete(&info->bdaddr, &rp->addr.bdaddr); + if (!get_adapter_and_device(&info->bdaddr, &rp->addr.bdaddr, + &adapter, &device, false)) + return; + + if (device) + adapter_remove_connection(adapter, device); - bonding_complete(info, &rp->addr.bdaddr, MGMT_STATUS_DISCONNECTED); + adapter_bonding_complete(adapter, &rp->addr.bdaddr, + MGMT_STATUS_DISCONNECTED); } static void pair_device_complete(int sk, uint16_t index, uint8_t status, -- 2.47.3