From b719da3a91634b99e766639fac5c05a7890245b4 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Sat, 29 Nov 2008 23:16:46 +0200 Subject: Fix discov_timeout_handler to do WRITE_SCAN_ENABLE asynchronously --- src/adapter.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 3491d60b..bda52f84 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -577,35 +577,30 @@ static int write_scan_enable(int dd, uint8_t scan) return 0; } -static gboolean discov_timeout_handler(void *data) +static gboolean discov_timeout_handler(gpointer user_data) { - struct btd_adapter *adapter = data; + struct btd_adapter *adapter = user_data; int dd; - uint8_t scan_enable = adapter->scan_mode; - gboolean retval = TRUE; + uint8_t scan_enable; uint16_t dev_id = adapter->dev_id; - scan_enable &= ~SCAN_INQUIRY; + adapter->discov_timeout = 0; dd = hci_open_dev(dev_id); if (dd < 0) { error("HCI device open failed: hci%d", dev_id); - return TRUE; + return FALSE; } - if (write_scan_enable(dd, scan_enable) < 0) - goto failed; - - set_limited_discoverable(dd, adapter->dev.class, FALSE); + scan_enable = adapter->scan_mode & ~SCAN_INQUIRY; - adapter_remove_discov_timeout(adapter); - retval = FALSE; + hci_send_cmd(dd, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE, + 1, &scan_enable); + hci_close_dev(dd); -failed: - if (dd >= 0) - hci_close_dev(dd); + set_limited_discoverable(dd, adapter->dev.class, FALSE); - return retval; + return FALSE; } static void adapter_set_discov_timeout(struct btd_adapter *adapter, -- cgit