This email list is read-only.  Emails sent to this list will be discarded
----------------------------------
 include/element.h   |    6 ++--
 plugins/bluetooth.c |   22 +++++++++++++++-----
 src/element.c       |   53 +++++++++++++++++++++++++++++++++++++++++++++++---
 3 files changed, 68 insertions(+), 13 deletions(-)

New commits:
commit daf3903e0695e63a68bdbf15f0079f40e7deaf99
Author: Marcel Holtmann <[email protected]>
Date:   Wed Dec 17 15:44:14 2008 +0100

    Track scanning state changes of Bluetooth devices

commit ca6b2ec5e5c48563968775f5de05a8c2251fde76
Author: Marcel Holtmann <[email protected]>
Date:   Wed Dec 17 15:43:15 2008 +0100

    Add support for changing scanning state

commit 366dc1fdece8aa53344d054d34fa8e698f405770
Author: Marcel Holtmann <[email protected]>
Date:   Wed Dec 17 15:35:17 2008 +0100

    Remove duplicate function prototype


Diff in this email is a maximum of 400 lines.
diff --git a/include/element.h b/include/element.h
index 48e46f2..327b8df 100644
--- a/include/element.h
+++ b/include/element.h
@@ -90,6 +90,7 @@ struct connman_element {
        enum connman_element_state state;
        enum connman_element_policy policy;
        gboolean enabled;
+       gboolean scanning;
        gboolean available;
        gboolean remember;
        guint16 priority;
@@ -150,9 +151,8 @@ extern void connman_element_update(struct connman_element 
*element);
 
 extern int connman_element_set_enabled(struct connman_element *element,
                                                        gboolean enabled);
-
-extern int connman_element_set_enabled(struct connman_element *element,
-                                                       gboolean enabled);
+extern int connman_element_set_scanning(struct connman_element *element,
+                                                       gboolean scanning);
 
 static inline void *connman_element_get_data(struct connman_element *element)
 {
diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c
index 2b33c3a..8c83a98 100644
--- a/plugins/bluetooth.c
+++ b/plugins/bluetooth.c
@@ -114,14 +114,19 @@ static void property_changed(DBusConnection *connection, 
DBusMessage *message)
 
        dbus_message_iter_get_basic(&iter, &key);
 
+       dbus_message_iter_next(&iter);
+       dbus_message_iter_recurse(&iter, &value);
+
        if (g_str_equal(key, "Powered") == TRUE) {
                gboolean val;
 
-               dbus_message_iter_next(&iter);
-               dbus_message_iter_recurse(&iter, &value);
-
                dbus_message_iter_get_basic(&value, &val);
                connman_element_set_enabled(device, val);
+       } else if (g_str_equal(key, "Discovering") == TRUE) {
+               gboolean val;
+
+               dbus_message_iter_get_basic(&value, &val);
+               connman_element_set_scanning(device, val);
        }
 }
 
@@ -158,14 +163,19 @@ static void properties_reply(DBusPendingCall *call, void 
*user_data)
                dbus_message_iter_recurse(&dict, &entry);
                dbus_message_iter_get_basic(&entry, &key);
 
+               dbus_message_iter_next(&entry);
+               dbus_message_iter_recurse(&entry, &value);
+
                if (g_str_equal(key, "Powered") == TRUE) {
                        gboolean val;
 
-                       dbus_message_iter_next(&entry);
-                       dbus_message_iter_recurse(&entry, &value);
-
                        dbus_message_iter_get_basic(&value, &val);
                        connman_element_set_enabled(device, val);
+               } else if (g_str_equal(key, "Discovering") == TRUE) {
+                       gboolean val;
+
+                       dbus_message_iter_get_basic(&value, &val);
+                       connman_element_set_scanning(device, val);
                }
 
                dbus_message_iter_next(&dict);
diff --git a/src/element.c b/src/element.c
index a39cc09..c2cf05f 100644
--- a/src/element.c
+++ b/src/element.c
@@ -378,6 +378,39 @@ static void emit_enabled_signal(DBusConnection *conn,
        g_dbus_send_message(conn, signal);
 }
 
+static void emit_scanning_signal(DBusConnection *conn,
+                                       struct connman_element *element)
+{
+       DBusMessage *signal;
+       DBusMessageIter entry, value;
+       const char *key = "Scanning";
+
+       DBG("conn %p", conn);
+
+       if (element == NULL)
+               return;
+
+       if (element->type != CONNMAN_ELEMENT_TYPE_DEVICE)
+               return;
+
+       signal = dbus_message_new_signal(element->path,
+                               CONNMAN_DEVICE_INTERFACE, "PropertyChanged");
+       if (signal == NULL)
+               return;
+
+       dbus_message_iter_init_append(signal, &entry);
+
+       dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
+
+       dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT,
+                                       DBUS_TYPE_BOOLEAN_AS_STRING, &value);
+       dbus_message_iter_append_basic(&value, DBUS_TYPE_BOOLEAN,
+                                                       &element->scanning);
+       dbus_message_iter_close_container(&entry, &value);
+
+       g_dbus_send_message(conn, signal);
+}
+
 static DBusMessage *do_update(DBusConnection *conn,
                                        DBusMessage *msg, void *data)
 {
@@ -510,11 +543,10 @@ static DBusMessage *device_get_properties(DBusConnection 
*conn,
                                        DBUS_TYPE_BOOLEAN, &element->enabled);
 
        if (element->subtype == CONNMAN_ELEMENT_SUBTYPE_WIFI ||
-                       element->subtype == CONNMAN_ELEMENT_SUBTYPE_WIMAX) {
-               dbus_bool_t scanning = FALSE;
-
+                       element->subtype == CONNMAN_ELEMENT_SUBTYPE_WIMAX ||
+                       element->subtype == CONNMAN_ELEMENT_SUBTYPE_BLUETOOTH) {
                connman_dbus_dict_append_variant(&dict, "Scanning",
-                                               DBUS_TYPE_BOOLEAN, &scanning);
+                                       DBUS_TYPE_BOOLEAN, &element->scanning);
 
                dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY,
                                                                NULL, &entry);
@@ -2127,6 +2159,19 @@ int connman_element_set_enabled(struct connman_element 
*element,
        return 0;
 }
 
+int connman_element_set_scanning(struct connman_element *element,
+                                                       gboolean scanning)
+{
+       if (element->scanning == scanning)
+               return 0;
+
+       element->scanning = scanning;
+
+       emit_scanning_signal(connection, element);
+
+       return 0;
+}
+
 int __connman_element_init(DBusConnection *conn, const char *device)
 {
        struct connman_element *element;
_______________________________________________
Commits mailing list
[email protected]
https://lists.moblin.org/mailman/listinfo/commits

Reply via email to