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
