Emit StateChangedProperties post emitting service state's PropertyChanged 12/245012/2 submit/tizen/20201106.060323
authorNishant Chaprana <n.chaprana@samsung.com>
Mon, 2 Nov 2020 11:05:11 +0000 (16:35 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Mon, 2 Nov 2020 11:05:11 +0000 (16:35 +0530)
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>
packaging/connman.spec
src/service.c

index 56cf406..072e8bf 100644 (file)
@@ -5,7 +5,7 @@
 
 Name:           connman
 Version:        1.37
-Release:        48
+Release:        49
 License:        GPL-2.0+
 Summary:        Connection Manager
 Url:            http://connman.net
index a1e745d..f77c8a5 100755 (executable)
@@ -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
        { },
 };