summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2008-09-23 17:42:09 -0700
committerLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2008-09-23 17:54:01 -0700
commita8a26772d1a5ff139284ec702b269b832fa18dd7 (patch)
tree5c58d1b4dad5a73c8f954627797b5152ba56b7f3
parent7f0d09f7816445818c3c96a54d5f7c7eee733266 (diff)
Emit Powered and Discoverable properly when adapter comes up and down.
-rw-r--r--src/adapter.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 9575336f..0cb0ccbe 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2293,6 +2293,8 @@ static void adapter_up(struct btd_adapter *adapter, int dd)
const char *pmode;
char mode[14], srcaddr[18];
int i;
+ gboolean powered;
+ gboolean discoverable;
ba2str(&adapter->bdaddr, srcaddr);
@@ -2365,6 +2367,19 @@ static void adapter_up(struct btd_adapter *adapter, int dd)
ADAPTER_INTERFACE, "Mode",
DBUS_TYPE_STRING, &pmode);
+ powered = adapter->scan_mode == SCAN_DISABLED ? FALSE : TRUE;
+
+ dbus_connection_emit_property_changed(connection, adapter->path,
+ ADAPTER_INTERFACE, "Powered",
+ DBUS_TYPE_BOOLEAN, &powered);
+
+ discoverable = adapter->scan_mode == (SCAN_PAGE | SCAN_INQUIRY) ? TRUE
+ : FALSE;
+
+ dbus_connection_emit_property_changed(connection, adapter->path,
+ ADAPTER_INTERFACE, "Discoverable",
+ DBUS_TYPE_BOOLEAN, &discoverable);
+
load_drivers(adapter);
load_devices(adapter);
}
@@ -2533,6 +2548,7 @@ static void unload_drivers(struct btd_adapter *adapter)
int adapter_stop(struct btd_adapter *adapter)
{
const char *mode = "off";
+ gboolean powered, discoverable;
/* cancel pending timeout */
if (adapter->discov_timeout_id) {
@@ -2578,6 +2594,20 @@ int adapter_stop(struct btd_adapter *adapter)
ADAPTER_INTERFACE, "Mode",
DBUS_TYPE_STRING, &mode);
+ powered = FALSE;
+
+ dbus_connection_emit_property_changed(connection, adapter->path,
+ ADAPTER_INTERFACE, "Powered",
+ DBUS_TYPE_BOOLEAN, &powered);
+
+ if (adapter->scan_mode == (SCAN_PAGE | SCAN_INQUIRY)) {
+ discoverable = FALSE;
+
+ dbus_connection_emit_property_changed(connection, adapter->path,
+ ADAPTER_INTERFACE, "Discoverable",
+ DBUS_TYPE_BOOLEAN, &discoverable);
+ }
+
adapter->up = 0;
adapter->scan_mode = SCAN_DISABLED;
adapter->mode = MODE_OFF;