Add new API to remove config 26/64726/1
authorhyunuktak <hyunuk.tak@samsung.com>
Tue, 5 Apr 2016 06:17:16 +0000 (15:17 +0900)
committerhyunuktak <hyunuk.tak@samsung.com>
Tue, 5 Apr 2016 06:17:18 +0000 (15:17 +0900)
Change-Id: Ie11803a7cba00a18947945e42a13980587335dd6
Signed-off-by: hyunuktak <hyunuk.tak@samsung.com>
include/wifi.h
include/wifi_config_private.h [changed mode: 0644->0755]
include/wifi_dbus_private.h [changed mode: 0644->0755]
packaging/capi-network-wifi.spec
src/net_wifi_config.c
src/wifi_config.c
test/wifi_test.c

index 2c9f627..8e38953 100755 (executable)
@@ -1729,6 +1729,25 @@ int wifi_config_destroy(wifi_config_h config);
 int wifi_config_save_configuration(wifi_config_h config);
 
 /**
+ * @brief Removes Wi-Fi configuration of access point.
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/network.profile
+ *
+ * @param[in] config   The access point configuration handle
+ *
+ * @return 0 on success, otherwise negative error value
+ * @retval #WIFI_ERROR_NONE                                    Successful
+ * @retval #WIFI_ERROR_INVALID_OPERATION       Invalid operation
+ * @retval #WIFI_ERROR_INVALID_PARAMETER       Invalid parameter
+ * @retval #WIFI_ERROR_PERMISSION_DENIED       Permission denied
+ * @retval #WIFI_ERROR_NOT_SUPPORTED           Not supported
+ * @see wifi_config_create()
+ * @see wifi_config_foreach_configuration()
+ */
+int wifi_config_remove(wifi_config_h config);
+
+/**
  * @brief Gets the result of access point configurations repeatedly.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0
  * @privlevel public
old mode 100644 (file)
new mode 100755 (executable)
index e3da460..f509eb3
@@ -55,6 +55,7 @@ int wifi_config_get_last_error(wifi_config_h config, wifi_error_e *last_error);
 
 int wifi_save_configurations(wifi_dbus *handle, const gchar *name, const gchar *passphrase, wifi_security_type_e security_type, const gchar *proxy_address, gboolean is_hidden);
 int wifi_load_configurations(wifi_dbus *handle, const gchar *config_id, gchar **name, wifi_security_type_e *security_type, gchar **proxy_address, gboolean *is_hidden, wifi_error_e *last_error);
+int wifi_remove_configurations(wifi_dbus *handle, const gchar *config_id);
 int wifi_configuration_set_field(wifi_dbus *handle, const gchar *config_id, const gchar *key, const gchar *value);
 int wifi_configuration_get_passphrase(wifi_dbus *handle, const gchar *config_id, gchar **passphrase);
 
old mode 100644 (file)
new mode 100755 (executable)
index 71849a8..0b3d734 100755 (executable)
@@ -1,6 +1,6 @@
 Name:          capi-network-wifi
 Summary:       Network Wi-Fi library in TIZEN C API
-Version:       1.0.71
+Version:       1.0.72
 Release:       1
 Group:         System/Network
 License:       Apache-2.0
index 38cb83e..010d2db 100755 (executable)
@@ -202,6 +202,44 @@ EXPORT_API int wifi_config_save_configuration(wifi_config_h config)
        return ret;
 }
 
+EXPORT_API int wifi_config_remove(wifi_config_h config)
+{
+       CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+       int ret = WIFI_ERROR_NONE;
+       struct _wifi_config *h = (struct _wifi_config *)config;
+
+       if (_wifi_is_init() == false) {
+               WIFI_LOG(WIFI_ERROR, "Not initialized"); //LCOV_EXCL_LINE
+               return WIFI_ERROR_INVALID_OPERATION; //LCOV_EXCL_LINE
+       }
+
+       if (config == NULL || h->name == NULL) {
+               WIFI_LOG(WIFI_ERROR, "Invalid parameter"); //LCOV_EXCL_LINE
+               return WIFI_ERROR_INVALID_PARAMETER; //LCOV_EXCL_LINE
+       }
+
+       if (h->is_saved == TRUE) {
+               wifi_dbus *dbus_h = NULL;
+               gchar *config_id = NULL;
+
+               dbus_h = _wifi_get_dbus_handle();
+               if (dbus_h == NULL) {
+                       WIFI_LOG(WIFI_ERROR, "Not initialized for wifi dbus connection");
+                       return WIFI_ERROR_INVALID_OPERATION;
+               }
+
+               config_id = wifi_config_get_config_id(h->name, h->security_type);
+
+               ret = wifi_remove_configurations(dbus_h, config_id);
+               if (ret != WIFI_ERROR_NONE)
+                       WIFI_LOG(WIFI_ERROR, "Fail to remove configurations [%d]", ret);
+
+               g_free(config_id);
+       }
+
+       return ret;
+}
+
 EXPORT_API int wifi_config_foreach_configuration(wifi_config_list_cb callback, void *user_data)
 {
        CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
index c4554af..4ceb268 100755 (executable)
@@ -458,6 +458,34 @@ int wifi_load_configurations(wifi_dbus *handle, const gchar *config_id, gchar **
        return WIFI_ERROR_NONE;
 }
 
+int wifi_remove_configurations(wifi_dbus *handle, const gchar *config_id)
+{
+       wifi_error_e ret = WIFI_ERROR_NONE;
+       GError *error = NULL;
+       GVariant *result = NULL;
+
+       result = g_dbus_connection_call_sync(handle->dbus_conn,
+                                            NETCONFIG_SERVICE,
+                                            NETCONFIG_WIFI_PATH,
+                                            NETCONFIG_IWIFI,
+                                            "RemoveConfiguration",
+                                            g_variant_new("(s)", config_id),
+                                            NULL, G_DBUS_CALL_FLAGS_NONE,
+                                            DBUS_REPLY_TIMEOUT, handle->ca,
+                                            &error);
+
+       if (error) {
+               WIFI_LOG(WIFI_ERROR, "Fail to RemoveConfiguration [%d: %s]", error->code, error->message);
+               ret = _wifi_error_to_enum(error->message);
+               g_error_free(error);
+       }
+
+       if (result != NULL)
+               g_variant_unref(result);
+
+       return ret;
+}
+
 //LCOV_EXCL_START
 int wifi_save_eap_configurations(wifi_dbus *handle, const gchar *name, const gchar *passphrase, wifi_security_type_e security_type, const gchar *proxy_address, struct _wifi_eap_config *eap_config, gboolean is_hidden)
 {
index 6b3a2be..b18d7f3 100755 (executable)
@@ -857,6 +857,33 @@ static bool _test_config_list_cb(const wifi_config_h config, void *user_data)
        return true;
 }
 
+struct _wifi_conf{
+       char name[33];
+       int type;
+};
+static bool _test_config_list_cb_for_remove(const wifi_config_h config, void *user_data)
+{
+
+       struct _wifi_conf *c = (struct _wifi_conf *)user_data;
+       gchar *name = NULL;
+       wifi_security_type_e security_type;
+
+       wifi_config_get_name(config, &name);
+       wifi_config_get_security_type(config, &security_type);
+
+       if(strncmp(name, c->name, sizeof(c->name)) == 0 && security_type == c->type) {
+               int rv = wifi_config_remove(config);
+               if (rv != WIFI_ERROR_NONE)
+                       printf("Fail to remove configurations [%s]\n", __test_convert_error_to_string(rv));
+               else
+                       printf("Success to remove configuration [%s]\n", name);
+               g_free(name);
+               return false;
+       }
+
+       return true;
+}
+
 static bool __test_found_specific_aps_callback(wifi_ap_h ap, void *user_data)
 {
        printf("Found specific ap Completed\n");
@@ -1384,8 +1411,10 @@ int test_load_configuration(void)
        int rv;
 
        rv = wifi_config_foreach_configuration(_test_config_list_cb, NULL);
-       if (rv != WIFI_ERROR_NONE)
+       if (rv != WIFI_ERROR_NONE) {
+               printf("Fail to get configurations [%s]\n", __test_convert_error_to_string(rv));
                return -1;
+       }
 
        return 1;
 }
@@ -1429,6 +1458,31 @@ int test_save_configuration(void)
        return 1;
 }
 
+int test_remove_configuration(void)
+{
+       int rv;
+       struct _wifi_conf c;
+
+       printf("Input AP configuration\n");
+       printf("Name : ");
+       rv = scanf("%32s", c.name);
+       if (rv <= 0)
+               return -1;
+
+       printf("Security type(None(0), WEP(1), WPA-PSK(2), EAP(4) : ");
+       rv = scanf("%d", &c.type);
+       if (rv <= 0)
+               return -1;
+
+       rv = wifi_config_foreach_configuration(_test_config_list_cb_for_remove, &c);
+       if (rv != WIFI_ERROR_NONE) {
+               printf("Fail to get configurations [%s]\n", __test_convert_error_to_string(rv));
+               return -1;
+       }
+
+       return 1;
+}
+
 int test_set_configuration_proxy_and_hidden(void)
 {
        int rv;
@@ -1629,10 +1683,11 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
                printf("k   - Connect Specific AP\n");
                printf("l   - Load configuration\n");
                printf("m   - Save configuration\n");
-               printf("n   - Set configuration proxy and hidden\n");
-               printf("o   - Set EAP configuration\n");
-               printf("p   - TDLS TearDown\n");
-               printf("q   - TDLS Get Connected Peer\n");
+               printf("n   - Remove configuration\n");
+               printf("o   - Set configuration proxy and hidden\n");
+               printf("p   - Set EAP configuration\n");
+               printf("q   - TDLS TearDown\n");
+               printf("r   - TDLS Get Connected Peer\n");
                printf(LOG_RED "0   - Exit \n" LOG_END);
 
                printf("ENTER  - Show options menu.......\n");
@@ -1706,15 +1761,18 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
                rv = test_save_configuration();
                break;
        case 'n':
-               rv = test_set_configuration_proxy_and_hidden();
+               rv = test_remove_configuration();
                break;
        case 'o':
-               rv = test_set_eap_configuration();
+               rv = test_set_configuration_proxy_and_hidden();
                break;
        case 'p':
-               rv = test_wifi_tdls_disconnect();
+               rv = test_set_eap_configuration();
                break;
        case 'q':
+               rv = test_wifi_tdls_disconnect();
+               break;
+       case 'r':
                rv = test_wifi_tdls_get_connected_peer();
                break;