From 3ef1a65b1731e261587529d3ec297ce1e15dd9b9 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 19 Jul 2009 22:46:34 +0200 Subject: [PATCH] Send signal when default technology changes --- src/service.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/service.c b/src/service.c index 923a958..3aa7a5b 100644 --- a/src/service.c +++ b/src/service.c @@ -983,6 +983,30 @@ int __connman_service_set_carrier(struct connman_service *service, return connman_service_set_favorite(service, carrier); } +static void default_changed(void) +{ + DBusMessage *signal; + DBusMessageIter entry, value; + const char *key = "DefaultTechnology"; + const char *str = __connman_service_default(); + + signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH, + CONNMAN_MANAGER_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_STRING, &str); + dbus_message_iter_close_container(&entry, &value); + + g_dbus_send_message(connection, signal); +} + int __connman_service_indicate_state(struct connman_service *service, enum connman_service_state state) { @@ -999,6 +1023,9 @@ int __connman_service_indicate_state(struct connman_service *service, if (service->state == state) return -EALREADY; + if (service->state == CONNMAN_SERVICE_STATE_READY) + default_changed(); + if (service->state == CONNMAN_SERVICE_STATE_FAILURE && state == CONNMAN_SERVICE_STATE_IDLE) return -EINVAL; @@ -1066,6 +1093,8 @@ int __connman_service_indicate_default(struct connman_service *service) { DBG("service %p", service); + default_changed(); + return 0; } -- 2.7.4