Use a variant data type for dbus arguments 18/151518/5
authorSeonah Moon <seonah1.moon@samsung.com>
Thu, 21 Sep 2017 06:39:45 +0000 (15:39 +0900)
committerseonah moon <seonah1.moon@samsung.com>
Tue, 10 Oct 2017 05:02:33 +0000 (05:02 +0000)
Change-Id: I1d66765d6c1b503bfd4eae263c229995fb9c74b3

packaging/capi-network-softap.spec
src/softap.c

index 6f5718249bd283d21b82180527b94961e41b2ff7..32354f1879899fbb588141825db9953298ca0f97 100644 (file)
@@ -1,6 +1,6 @@
 Name:          capi-network-softap
 Summary:       Softap Framework
-Version:       0.0.15
+Version:       0.0.16
 Release:       1
 Group:         System/Network
 License:       Apache-2.0
index 3aa57a50dd14b65fd8a6095b04b49ea95243e966..747fd7cb8af6bf75a4a1457b82b1db10031e1da2 100755 (executable)
@@ -657,32 +657,41 @@ static void __settings_reloaded_cb(GObject *source_object, GAsyncResult *res,
        DBG("-\n");
 }
 
-static int __prepare_softap_settings(softap_h softap, _softap_settings_t *set)
+static GVariant *__prepare_softap_settings(softap_h softap)
 {
        DBG("+");
 
        __softap_h *sa = (__softap_h *) softap;
-
-       if (sa == NULL || set == NULL) {
+       if (sa == NULL) {
                ERR("Parameter is NULL!!");
-               return SOFTAP_ERROR_INVALID_PARAMETER;
+               return NULL;
        }
 
-       g_strlcpy(set->ssid, sa->ssid, sizeof(set->ssid));
-       set->sec_type = sa->sec_type;
-       set->visibility = sa->visibility;
-       set->channel = sa->channel;
+       GVariantBuilder *builder = NULL;
+       GVariant *params = NULL;
 
-       if (set->sec_type == SOFTAP_SECURITY_TYPE_NONE)
-               g_strlcpy(set->key, "", sizeof(set->key));
-       else
-               g_strlcpy(set->key, sa->passphrase, sizeof(set->key));
+       builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+       if (builder == NULL) {
+               ERR("Failed to create builder");
+               return NULL;
+       }
+
+       g_variant_builder_add(builder, "{sv}", "ssid", g_variant_new_string(sa->ssid));
+       g_variant_builder_add(builder, "{sv}", "sec_type", g_variant_new_int32(sa->sec_type));
+       g_variant_builder_add(builder, "{sv}", "visibility", g_variant_new_boolean(sa->visibility));
+       g_variant_builder_add(builder, "{sv}", "channel", g_variant_new_int32(sa->channel));
+
+       if (sa->sec_type != SOFTAP_SECURITY_TYPE_NONE)
+               g_variant_builder_add(builder, "{sv}", "passphrase", g_variant_new_string(sa->passphrase));
 
        if (strlen(sa->vendor))
-               g_strlcpy(set->vendor, sa->vendor, sizeof(set->vendor));
+               g_variant_builder_add(builder, "{sv}", "vendor", g_variant_new_string(sa->vendor));
+
+       params = g_variant_new("(@a{sv})", g_variant_builder_end(builder));
+       g_variant_builder_unref(builder);
 
        DBG("-");
-       return SOFTAP_ERROR_NONE;
+       return params;
 }
 
 static void __connect_signals(softap_h softap)
@@ -888,30 +897,25 @@ API int softap_enable(softap_h softap)
         _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
                         "parameter(softap) is NULL");
 
-        softap_error_e ret = SOFTAP_ERROR_NONE;
         __softap_h *sa = (__softap_h *) softap;
         GDBusProxy *proxy = sa->client_bus_proxy;
         GDBusConnection *connection = sa->client_bus;
+        GVariant *settings = NULL;
 
         g_dbus_proxy_set_default_timeout(proxy, DBUS_TIMEOUT_INFINITE);
 
-       _softap_settings_t set = {"", "", "", 0, false, 0};
-
-       ret = __prepare_softap_settings(softap, &set);
-       if (ret != SOFTAP_ERROR_NONE) {
+       settings = __prepare_softap_settings(softap);
+       if (!settings) {
                ERR("Fail to initialize softap settings\n");
                return SOFTAP_ERROR_OPERATION_FAILED;
        }
 
        g_dbus_connection_signal_unsubscribe(connection, sigs[E_SIGNAL_SOFTAP_ON].sig_id);
-
-       g_dbus_proxy_call(proxy, "enable",
-       g_variant_new("(sssiii)", set.ssid, set.key, set.vendor, set.visibility, set.sec_type, set.channel),
-               G_DBUS_CALL_FLAGS_NONE, -1, sa->cancellable, (GAsyncReadyCallback) __enabled_cfm_cb, (gpointer)softap);
-
+       g_dbus_proxy_call(proxy, "enable", settings, G_DBUS_CALL_FLAGS_NONE, -1,
+                       sa->cancellable, (GAsyncReadyCallback) __enabled_cfm_cb, (gpointer)softap);
        g_dbus_proxy_set_default_timeout(proxy, DBUS_TIMEOUT_USE_DEFAULT);
-       DBG("-");
 
+       DBG("-");
        return SOFTAP_ERROR_NONE;
 }
 
@@ -945,9 +949,8 @@ API int softap_reload_settings(softap_h softap, softap_settings_reloaded_cb call
                        "parameter(callback) is NULL\n");
 
        __softap_h *sa = (__softap_h *)softap;
-       _softap_settings_t set = {"", "", "", 0, false, 0};
        GDBusProxy *proxy = sa->client_bus_proxy;
-       int ret = 0;
+       GVariant *settings = NULL;
 
        DBG("+");
 
@@ -956,8 +959,8 @@ API int softap_reload_settings(softap_h softap, softap_settings_reloaded_cb call
                return SOFTAP_ERROR_OPERATION_FAILED;
        }
 
-       ret = __prepare_softap_settings(softap, &set);
-       if (ret != SOFTAP_ERROR_NONE) {
+       settings = __prepare_softap_settings(softap);
+       if (!settings) {
                ERR("softap settings initialization failed\n");
                return SOFTAP_ERROR_OPERATION_FAILED;
        }
@@ -965,8 +968,7 @@ API int softap_reload_settings(softap_h softap, softap_settings_reloaded_cb call
        sa->settings_reloaded_cb = callback;
        sa->settings_reloaded_user_data = user_data;
 
-       g_dbus_proxy_call(proxy, "reload_settings",
-                       g_variant_new("(sssiii)", set.ssid, set.key, set.vendor, set.visibility, set.sec_type, set.channel),
+       g_dbus_proxy_call(proxy, "reload_settings", settings,
                        G_DBUS_CALL_FLAGS_NONE, -1, sa->cancellable,
                        (GAsyncReadyCallback) __settings_reloaded_cb, (gpointer)softap);