summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNishant Chaprana <n.chaprana@samsung.com>2020-11-02 16:35:11 +0530
committerNishant Chaprana <n.chaprana@samsung.com>2020-11-02 16:35:11 +0530
commit5269bd59e8100c6883b3f6e5609f57f8034e3140 (patch)
treecfbc28a89b858fcd9335a4cece70343cc4828bb2
parentac76bee17d44c17c8867972b1c5e108b7a32ce7f (diff)
downloadconnman-5269bd59e8100c6883b3f6e5609f57f8034e3140.tar.gz
connman-5269bd59e8100c6883b3f6e5609f57f8034e3140.tar.bz2
connman-5269bd59e8100c6883b3f6e5609f57f8034e3140.zip
Emit StateChangedProperties post emitting service state's PropertyChangedsubmit/tizen/20201106.060323
wifi-manager and libnet-client can use this signal instead of [PropertyChanged(state) signal + GetProperties call] combination for updating service information. Change-Id: I0203cb7df202ff3767a2c4d25e8ca685e4eb8ba8 Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
-rw-r--r--packaging/connman.spec2
-rwxr-xr-xsrc/service.c38
2 files changed, 36 insertions, 4 deletions
diff --git a/packaging/connman.spec b/packaging/connman.spec
index 56cf4063..072e8bf1 100644
--- a/packaging/connman.spec
+++ b/packaging/connman.spec
@@ -5,7 +5,7 @@
Name: connman
Version: 1.37
-Release: 48
+Release: 49
License: GPL-2.0+
Summary: Connection Manager
Url: http://connman.net
diff --git a/src/service.c b/src/service.c
index a1e745d9..f77c8a58 100755
--- a/src/service.c
+++ b/src/service.c
@@ -2969,6 +2969,31 @@ static void default_changed(void)
__connman_notifier_default_changed(service);
}
+#if defined TIZEN_EXT
+static void append_struct(gpointer value, gpointer user_data);
+
+static void emit_state_changed_with_properties(struct connman_service *service)
+{
+ DBusMessage *signal;
+ DBusMessageIter iter;
+
+ if (!service)
+ return;
+
+ signal = dbus_message_new_signal(service->path, CONNMAN_SERVICE_INTERFACE,
+ "StateChangedProperties");
+ if (!signal)
+ return;
+
+ dbus_message_iter_init_append(signal, &iter);
+ append_struct(service, &iter);
+
+ g_dbus_send_message(connection, signal);
+
+ return;
+}
+#endif
+
static void state_changed(struct connman_service *service)
{
const char *str;
@@ -2982,14 +3007,17 @@ static void state_changed(struct connman_service *service)
#if !defined TIZEN_EXT
if (!allow_property_changed(service))
return;
-
-#endif
-#if defined TIZEN_EXT
+#else
DBG(" %s, %s", str, service->path);
#endif
+
connman_dbus_property_changed_basic(service->path,
CONNMAN_SERVICE_INTERFACE, "State",
DBUS_TYPE_STRING, &str);
+
+#if defined TIZEN_EXT
+ emit_state_changed_with_properties(service);
+#endif
}
#if defined TIZEN_EXT
@@ -7350,6 +7378,10 @@ static const GDBusMethodTable service_methods[] = {
static const GDBusSignalTable service_signals[] = {
{ GDBUS_SIGNAL("PropertyChanged",
GDBUS_ARGS({ "name", "s" }, { "value", "v" })) },
+#if defined TIZEN_EXT
+ { GDBUS_SIGNAL("StateChangedProperties",
+ GDBUS_ARGS({ "properties", "a{sv}" })) },
+#endif
{ },
};