diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-05-25 13:17:34 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-05-25 13:17:34 +0100 |
commit | 48eb7a6ab5a4c901de3ae333324aa99d53bb6323 (patch) | |
tree | d6ff0d1686f7e9c3c984e58e2c7a2fed960eb995 | |
parent | 1e568742ac8eb34727d4be138a3c8d59f73e742e (diff) | |
download | connman-48eb7a6ab5a4c901de3ae333324aa99d53bb6323.tar.gz connman-48eb7a6ab5a4c901de3ae333324aa99d53bb6323.tar.bz2 connman-48eb7a6ab5a4c901de3ae333324aa99d53bb6323.zip |
Send signal when service strength changes
-rw-r--r-- | src/service.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c index 5f424e8d..a7994776 100644 --- a/src/service.c +++ b/src/service.c @@ -203,6 +203,36 @@ static void state_changed(struct connman_service *service) g_dbus_send_message(connection, signal); } +static void strength_changed(struct connman_service *service) +{ + DBusMessage *signal; + DBusMessageIter entry, value; + const char *key = "Strength"; + + if (service->path == NULL) + return; + + if (service->strength == 0) + return; + + signal = dbus_message_new_signal(service->path, + CONNMAN_SERVICE_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_STRING_AS_STRING, &value); + dbus_message_iter_append_basic(&value, DBUS_TYPE_BYTE, + &service->strength); + dbus_message_iter_close_container(&entry, &value); + + g_dbus_send_message(connection, signal); +} + static DBusMessage *get_properties(DBusConnection *conn, DBusMessage *msg, void *user_data) { @@ -1115,6 +1145,8 @@ static void update_from_network(struct connman_service *service, if (service->strength > strength && service->network != NULL) { connman_network_unref(service->network); service->network = NULL; + + strength_changed(service); } if (service->network == NULL) { |