summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2008-09-23 17:02:24 -0700
committerLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2008-09-23 17:54:01 -0700
commit7f0d09f7816445818c3c96a54d5f7c7eee733266 (patch)
tree19a53ef83bca8402a010f08c6569a3a6c366ce8e
parent76e387a844f84c8115442058f5b13f4e3170d1e3 (diff)
Emit PropertyChanged for Powered and Discoverable.
-rw-r--r--src/adapter.c33
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)