From c1f2c30ff5461cf5b3fca3d96c8425df2769e565 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Sat, 29 Nov 2008 16:10:35 +0200 Subject: adapter_up() cleanup --- src/adapter.c | 78 ++++++++++++++++++++++++++++------------------------------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 5f58b2ab..c6ab4e65 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2520,53 +2520,49 @@ static void adapter_up(struct btd_adapter *adapter, int dd) adapter->pairable = TRUE; /* Set scan mode */ - if (read_device_mode(srcaddr, mode, sizeof(mode)) == 0) { - if (!strcmp(mode, "off")) { - if (main_opts.offmode == HCID_OFFMODE_NOSCAN) { - adapter->mode = MODE_OFF; - adapter->scan_mode= SCAN_DISABLED; - } else if (main_opts.offmode == HCID_OFFMODE_DEVDOWN) { - static gboolean restore_on_mode = FALSE; - - if (!restore_on_mode) { - ioctl(dd, HCIDEVDOWN, adapter->dev_id); - restore_on_mode = TRUE; - return; - } - - if (read_on_mode(srcaddr, mode, sizeof(mode)) < 0) - write_device_mode(&adapter->bdaddr, mode); - else - write_device_mode(&adapter->bdaddr, "connectable"); - - adapter_up(adapter, dd); + if (read_device_mode(srcaddr, mode, sizeof(mode)) < 0) { + adapter->mode = MODE_CONNECTABLE; + adapter->scan_mode = SCAN_PAGE; + goto proceed; + } + + if (!strcmp(mode, "off")) { + if (main_opts.offmode == HCID_OFFMODE_NOSCAN) { + adapter->mode = MODE_OFF; + adapter->scan_mode= SCAN_DISABLED; + } else if (main_opts.offmode == HCID_OFFMODE_DEVDOWN) { + static gboolean restore_on_mode = FALSE; + + if (!restore_on_mode) { + ioctl(dd, HCIDEVDOWN, adapter->dev_id); + restore_on_mode = TRUE; + return; } - } else if (!strcmp(mode, "connectable")) { + + if (read_on_mode(srcaddr, mode, sizeof(mode)) < 0) + write_device_mode(&adapter->bdaddr, mode); + else + write_device_mode(&adapter->bdaddr, + "connectable"); + + adapter_up(adapter, dd); + } + } else if (!strcmp(mode, "connectable")) { + adapter->mode = MODE_CONNECTABLE; + adapter->scan_mode = SCAN_PAGE; + } else { + /* Set discoverable only if timeout is 0 */ + if (adapter->discov_timeout == 0) { + adapter->mode = adapter->pairable ? + MODE_LIMITED : MODE_DISCOVERABLE; + adapter->scan_mode = SCAN_PAGE | SCAN_INQUIRY; + } else { adapter->mode = MODE_CONNECTABLE; adapter->scan_mode = SCAN_PAGE; - } else if (!strcmp(mode, "discoverable")) { - /* Set discoverable only if timeout is 0 */ - if (adapter->discov_timeout == 0) { - adapter->mode = adapter->pairable ? - MODE_LIMITED : MODE_DISCOVERABLE; - adapter->scan_mode = SCAN_PAGE | SCAN_INQUIRY; - } else { - adapter->mode = MODE_CONNECTABLE; - adapter->scan_mode = SCAN_PAGE; - } - } else if (!strcmp(mode, "limited")) { - /* Set discoverable only if timeout is 0 */ - if (adapter->discov_timeout == 0) { - adapter->mode = MODE_LIMITED; - adapter->scan_mode = SCAN_PAGE | SCAN_INQUIRY; - } else { - adapter->mode = MODE_CONNECTABLE; - adapter->scan_mode = SCAN_PAGE; - - } } } +proceed: hci_send_cmd(dd, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE, 1, &adapter->scan_mode); -- cgit