diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-29 16:23:47 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-11-29 16:23:47 +0200 |
commit | 0d97d1961ece9c6fb7bf76f60562e9cbb19ee64c (patch) | |
tree | 09b163255cb840de8aa931048327a73f401e93c9 /src/adapter.c | |
parent | c1f2c30ff5461cf5b3fca3d96c8425df2769e565 (diff) |
Mode restoring for offmode=devdown should be per-adapter
Diffstat (limited to 'src/adapter.c')
-rw-r--r-- | src/adapter.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/adapter.c b/src/adapter.c index c6ab4e65..fb577d89 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -117,6 +117,8 @@ struct btd_adapter { struct hci_dev dev; /* hci info */ gboolean pairable; /* pairable state */ + + gboolean first_init; /* Needed for offmode=devdown */ }; static void adapter_set_pairable_timeout(struct btd_adapter *adapter, @@ -2505,11 +2507,15 @@ static void adapter_up(struct btd_adapter *adapter, int dd) const char *pmode; char mode[14], srcaddr[18]; int i; - gboolean powered; - gboolean discoverable; + gboolean powered, discoverable, first_init; ba2str(&adapter->bdaddr, srcaddr); + first_init = adapter->first_init; + + if (adapter->first_init) + adapter->first_init = FALSE; + adapter->up = 1; adapter->discov_timeout = get_discoverable_timeout(srcaddr); adapter->pairable_timeout = get_pairable_timeout(srcaddr); @@ -2531,11 +2537,8 @@ static void adapter_up(struct btd_adapter *adapter, int dd) 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) { + if (first_init) { ioctl(dd, HCIDEVDOWN, adapter->dev_id); - restore_on_mode = TRUE; return; } @@ -2926,6 +2929,7 @@ struct btd_adapter *adapter_create(DBusConnection *conn, int id) } adapter->dev_id = id; + adapter->first_init = TRUE; adapter->state |= RESOLVE_NAME; adapter->path = g_strdup(path); |