diff options
author | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2008-09-23 17:02:24 -0700 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2008-09-23 17:54:01 -0700 |
commit | 7f0d09f7816445818c3c96a54d5f7c7eee733266 (patch) | |
tree | 19a53ef83bca8402a010f08c6569a3a6c366ce8e /src | |
parent | 76e387a844f84c8115442058f5b13f4e3170d1e3 (diff) |
Emit PropertyChanged for Powered and Discoverable.
Diffstat (limited to 'src')
-rw-r--r-- | src/adapter.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/adapter.c b/src/adapter.c index b4a74a36..9575336f 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2981,17 +2981,33 @@ void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode) { const char *mode; const gchar *path = adapter_get_path(adapter); - - adapter_set_scan_mode(adapter, scan_mode); + gboolean powered; + gboolean discoverable; switch (scan_mode) { case SCAN_DISABLED: mode = "off"; adapter_set_mode(adapter, MODE_OFF); + powered = FALSE; + dbus_connection_emit_property_changed(connection, path, + ADAPTER_INTERFACE, "Powered", + DBUS_TYPE_BOOLEAN, &powered); break; case SCAN_PAGE: mode = "connectable"; adapter_set_mode(adapter, MODE_CONNECTABLE); + + if (adapter->scan_mode == SCAN_DISABLED) { + powered = TRUE; + dbus_connection_emit_property_changed(connection, path, + ADAPTER_INTERFACE, "Powered", + DBUS_TYPE_BOOLEAN, &powered); + } else { + discoverable = FALSE; + dbus_connection_emit_property_changed(connection, path, + ADAPTER_INTERFACE, "Discoverable", + DBUS_TYPE_BOOLEAN, &discoverable); + } break; case (SCAN_PAGE | SCAN_INQUIRY): @@ -3004,6 +3020,17 @@ void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode) adapter_set_mode(adapter, MODE_DISCOVERABLE); mode = "discoverable"; } + + if (adapter->scan_mode == SCAN_DISABLED) { + powered = TRUE; + dbus_connection_emit_property_changed(connection, path, + ADAPTER_INTERFACE, "powered", + DBUS_TYPE_BOOLEAN, &powered); + } + discoverable = TRUE; + dbus_connection_emit_property_changed(connection, path, + ADAPTER_INTERFACE, "Discoverable", + DBUS_TYPE_BOOLEAN, &discoverable); break; case SCAN_INQUIRY: /* Address the scenario where another app changed the scan mode */ @@ -3019,6 +3046,8 @@ void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode) dbus_connection_emit_property_changed(connection, path, ADAPTER_INTERFACE, "Mode", DBUS_TYPE_STRING, &mode); + + adapter_set_scan_mode(adapter, scan_mode); } struct agent *adapter_get_agent(struct btd_adapter *adapter) |