diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-29 16:10:35 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-29 16:10:35 +0200 |
commit | c1f2c30ff5461cf5b3fca3d96c8425df2769e565 (patch) | |
tree | 50c068d00b2e51c498ca6a73ea574d0cf0d6be4f /src | |
parent | 8e7a46183e4f251f2b62876eaefe066603dda1aa (diff) |
adapter_up() cleanup
Diffstat (limited to 'src')
-rw-r--r-- | src/adapter.c | 78 |
1 files 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); |