From 1f100851bef2e19df94620b967b77c2502d474b7 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 24 Sep 2008 12:31:56 -0700 Subject: Restore 'on' mode on the first time adapter comes up and is on OffMode = DevDown --- src/adapter.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 0f21f2a1..9a52c6c7 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2329,8 +2329,20 @@ 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) { - ioctl(dd, HCIDEVDOWN, adapter->dev_id); - return; + 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); } } else if (!strcmp(mode, "connectable")) { adapter->mode = MODE_CONNECTABLE; @@ -2393,7 +2405,7 @@ static void adapter_up(struct btd_adapter *adapter, int dd) ADAPTER_INTERFACE, "Powered", DBUS_TYPE_BOOLEAN, &powered); - discoverable = adapter->scan_mode == (SCAN_PAGE | SCAN_INQUIRY) ? TRUE + discoverable = adapter->scan_mode == (SCAN_PAGE | SCAN_INQUIRY) ? TRUE : FALSE; dbus_connection_emit_property_changed(connection, adapter->path, -- cgit