Fixed getting values from variant
[platform/core/connectivity/net-config.git] / src / signal-handler.c
index b9720a8..4fe67ad 100755 (executable)
@@ -231,7 +231,8 @@ static void _technology_signal_cb(GDBusConnection *conn,
 
 static void _service_signal_cb(GDBusConnection *conn,
                const gchar *name, const gchar *path,
-               const gchar *interface, const gchar *sig, GVariant *param, gpointer user_data)
+               const gchar *interface, const gchar *sig,
+               GVariant *param, gpointer user_data)
 {
        gchar *sigvalue = NULL;
        gchar *property;
@@ -583,9 +584,11 @@ static void _supplicant_properties_changed(GDBusConnection *conn,
                const gchar *name, const gchar *path, const gchar *interface,
                const gchar *sig, GVariant *param, gpointer user_data)
 {
-       gchar *key;
-       GVariantIter *iter;
-       GVariant *variant;
+       DBG("Properties changed handling!");
+       gchar *key = NULL;
+       const gchar *state = NULL;
+       GVariantIter *iter = NULL;
+       GVariant *variant = NULL;
        gboolean scanning = FALSE;
 
        if (param == NULL)
@@ -603,7 +606,34 @@ static void _supplicant_properties_changed(GDBusConnection *conn,
 
                        g_variant_unref(variant);
                        g_free(key);
+                       variant = NULL;
+                       key = NULL;
                        break;
+               } else if (g_strcmp0(key, "State") == 0) {
+                       state = g_variant_get_string(variant, NULL);
+                       if (state != NULL)
+                               ERR("Supplicant state : %s", state);
+
+                       g_variant_unref(variant);
+                       g_free(key);
+                       variant = NULL;
+                       key = NULL;
+                       break;
+               } else if (g_strcmp0(key, "DisconnectReason") == 0) {
+                       int reason = g_variant_get_int32(variant);
+                       ERR("Supplicant DisconnReason : %d", reason);
+
+                       g_variant_unref(variant);
+                       g_free(key);
+                       variant = NULL;
+                       key = NULL;
+                       break;
+               } else {
+                       gchar *value;
+                       value = g_variant_print(variant, TRUE);
+                       DBG("Supplicant %s : %s", key, value);
+
+                       g_free(value);
                }
        }
 
@@ -831,8 +861,8 @@ error:
 static void _supplicant_wifi_wps_credentials(GVariant *param)
 {
        gchar *key;
-       char ssid[32];
-       char wps_key[100];
+       char ssid[32] = {0, };
+       char wps_key[100] = {0, };
        GVariantIter *iter;
        GVariant *variant;
        int config_error = 0;