summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2008-11-29 22:32:40 +0200
committerJohan Hedberg <johan.hedberg@nokia.com>2008-11-29 22:32:40 +0200
commit5ae915ef0ebccc9e55f708e56d0edac3a6291cea (patch)
tree3cc74bb2c3c95db35518ac7c6082a00f2d9bdb03
parentf7fb2ca82aad35d874c73c9d2a35995ccaf8bc85 (diff)
Fix adapter_up behavior for offmode=devdown case
-rw-r--r--src/adapter.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/src/adapter.c b/src/adapter.c
index b527de67..fc1ed4cf 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2590,19 +2590,21 @@ static void adapter_up(struct btd_adapter *adapter, int dd)
adapter->discov_timeout = get_discoverable_timeout(srcaddr);
adapter->pairable_timeout = get_pairable_timeout(srcaddr);
adapter->state = DISCOVER_TYPE_NONE;
+ adapter->mode = MODE_CONNECTABLE;
+ adapter->scan_mode = SCAN_PAGE;
+ powered = TRUE;
/* Set pairable mode */
if (read_device_pairable(&adapter->bdaddr, &adapter->pairable) < 0)
adapter->pairable = TRUE;
/* Set scan mode */
- if (read_device_mode(srcaddr, mode, sizeof(mode)) < 0) {
- adapter->mode = MODE_CONNECTABLE;
- adapter->scan_mode = SCAN_PAGE;
+ if (read_device_mode(srcaddr, mode, sizeof(mode)) < 0)
goto proceed;
- }
- if (!strcmp(mode, "off")) {
+ if (g_str_equal(mode, "off")) {
+ powered = FALSE;
+
if (main_opts.offmode == HCID_OFFMODE_NOSCAN) {
adapter->mode = MODE_OFF;
adapter->scan_mode = SCAN_DISABLED;
@@ -2613,26 +2615,21 @@ static void adapter_up(struct btd_adapter *adapter, int dd)
}
if (read_on_mode(srcaddr, mode, sizeof(mode)) < 0)
- write_device_mode(&adapter->bdaddr, mode);
- else
write_device_mode(&adapter->bdaddr,
"connectable");
+ else
+ write_device_mode(&adapter->bdaddr, mode);
adapter_up(adapter, dd);
+
+ return;
}
- } else if (!strcmp(mode, "connectable")) {
- adapter->mode = MODE_CONNECTABLE;
- adapter->scan_mode = SCAN_PAGE;
- } else {
+ } else if (!g_str_equal(mode, "connectable") &&
+ adapter->discov_timeout == 0) {
/* Set discoverable only if timeout is 0 */
- if (adapter->discov_timeout == 0) {
- adapter->mode = adapter->pairable ?
+ 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;
- }
+ adapter->scan_mode = SCAN_PAGE | SCAN_INQUIRY;
}
proceed:
@@ -2660,8 +2657,6 @@ proceed:
}
g_free(cl);
- powered = adapter->scan_mode == SCAN_DISABLED ? FALSE : TRUE;
-
emit_property_changed(connection, adapter->path, ADAPTER_INTERFACE,
"Powered", DBUS_TYPE_BOOLEAN, &powered);