summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-05-25 13:17:34 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-05-25 13:17:34 +0100
commit48eb7a6ab5a4c901de3ae333324aa99d53bb6323 (patch)
treed6ff0d1686f7e9c3c984e58e2c7a2fed960eb995
parent1e568742ac8eb34727d4be138a3c8d59f73e742e (diff)
downloadconnman-48eb7a6ab5a4c901de3ae333324aa99d53bb6323.tar.gz
connman-48eb7a6ab5a4c901de3ae333324aa99d53bb6323.tar.bz2
connman-48eb7a6ab5a4c901de3ae333324aa99d53bb6323.zip
Send signal when service strength changes
-rw-r--r--src/service.c32
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) {