diff options
-rw-r--r-- | src/adapter.c | 8 | ||||
-rw-r--r-- | src/main.c | 11 | ||||
-rw-r--r-- | src/main.conf | 4 |
3 files changed, 21 insertions, 2 deletions
diff --git a/src/adapter.c b/src/adapter.c index c85ca360..853592bb 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2531,8 +2531,12 @@ static int adapter_up(struct btd_adapter *adapter, int dd) adapter->pairable = TRUE; /* Set scan mode */ - if (read_device_mode(srcaddr, mode, sizeof(mode)) < 0) - goto proceed; + if (read_device_mode(srcaddr, mode, sizeof(mode)) < 0) { + if (!adapter->initialized && main_opts.mode == MODE_OFF) + strcpy(mode, "off"); + else + goto proceed; + } if (g_str_equal(mode, "off")) { powered = FALSE; @@ -96,6 +96,7 @@ static void parse_config(GKeyFile *config) GError *err = NULL; char *str; int val; + gboolean boolean; if (!config) return; @@ -173,6 +174,16 @@ static void parse_config(GKeyFile *config) main_opts.inqmode = val; } + boolean = g_key_file_get_boolean(config, "General", + "InitiallyPowered", + &err); + if (err) { + debug("%s", err->message); + g_clear_error(&err); + } else if (boolean == FALSE) + main_opts.mode = MODE_OFF; + + main_opts.link_mode = HCI_LM_ACCEPT; main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF | diff --git a/src/main.conf b/src/main.conf index 0ddd9498..2479df39 100644 --- a/src/main.conf +++ b/src/main.conf @@ -29,3 +29,7 @@ PageTimeout = 8192 # Discover scheduler interval used in Adapter.DiscoverDevices # The value is in seconds. Defaults is 0 to use controller scheduler DiscoverSchedulerInterval = 0 + +# Whether adapters should assume Powered=off when SetProperty(Powered, ...) +# hasn't been called yet. Defaults to true +InitiallyPowered = true |