Hi all,
There seems to be a bug with the management interface plugin that enters an inconsistent state if the adapter is discoverable during startup.
I'm not really sure if this is a proper solution but it does fix the problem.
Cheers,
Mikel
Mikel Astiz (1):
core: Fix adapter mode inconsistency
src/adapter.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
--
1.7.7.6
Hi Mikel,
On Mon, Apr 23, 2012, Mikel Astiz wrote:
> The mode change in btd_adapter_start() doesn't check if the adapter is
> discoverable, creating an inconsistency between the plugin and the core.
>
> Using the management interface it is easy to reproduce the problem, by
> starting BlueZ while the adapter is discoverable. After this, the state
> cannot be changed.
> ---
> src/adapter.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
Thanks. Applied, but I really wish we could clean up and simplify this
code. Probably adapter->mode and adapter->scan_mode should be completely
removed and new connectable and discoverable boolean variables added
(since this is how the mgmt API anyway presents these settings).
Johan
The mode change in btd_adapter_start() doesn't check if the adapter is
discoverable, creating an inconsistency between the plugin and the core.
Using the management interface it is easy to reproduce the problem, by
starting BlueZ while the adapter is discoverable. After this, the state
cannot be changed.
---
src/adapter.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/src/adapter.c b/src/adapter.c
index 12b6aeb..a4180b1 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2183,9 +2183,13 @@ void btd_adapter_start(struct btd_adapter *adapter)
adapter->up = TRUE;
adapter->discov_timeout = get_discoverable_timeout(address);
adapter->pairable_timeout = get_pairable_timeout(address);
- adapter->mode = MODE_CONNECTABLE;
adapter->off_timer = 0;
+ if (adapter->scan_mode & SCAN_INQUIRY)
+ adapter->mode = MODE_DISCOVERABLE;
+ else
+ adapter->mode = MODE_CONNECTABLE;
+
powered = TRUE;
emit_property_changed(connection, adapter->path,
ADAPTER_INTERFACE, "Powered",
--
1.7.7.6