summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Kim <jeik01.kim@samsung.com>2016-04-20 21:54:38 -0700
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>2016-04-20 21:54:38 -0700
commitce5b34b326e3a4a754874af4105158da991f5429 (patch)
tree81b334450311e77bc386ba6016234bf3b7cecf83
parent2fd94f9c13b789dfd21110e27917751d179b1821 (diff)
parent2ef2f28e4af75b99c9a13a05035b39d7f52a4f43 (diff)
downloadwifi-accepted/tizen/wearable/20160422.065849.tar.gz
wifi-accepted/tizen/wearable/20160422.065849.tar.bz2
wifi-accepted/tizen/wearable/20160422.065849.zip
-rwxr-xr-xinclude/wifi.h19
-rwxr-xr-x[-rw-r--r--]include/wifi_config_private.h1
-rwxr-xr-x[-rw-r--r--]include/wifi_dbus_private.h0
-rwxr-xr-xsrc/net_wifi_config.c38
-rwxr-xr-xsrc/wifi_config.c28
-rwxr-xr-xtest/wifi_test.c74
6 files changed, 152 insertions, 8 deletions
diff --git a/include/wifi.h b/include/wifi.h
index 2c9f627..8e38953 100755
--- a/include/wifi.h
+++ b/include/wifi.h
@@ -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
diff --git a/include/wifi_config_private.h b/include/wifi_config_private.h
index e3da460..f509eb3 100644..100755
--- a/include/wifi_config_private.h
+++ b/include/wifi_config_private.h
@@ -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);
diff --git a/include/wifi_dbus_private.h b/include/wifi_dbus_private.h
index 5d41865..5d41865 100644..100755
--- a/include/wifi_dbus_private.h
+++ b/include/wifi_dbus_private.h
diff --git a/src/net_wifi_config.c b/src/net_wifi_config.c
index 38cb83e..010d2db 100755
--- a/src/net_wifi_config.c
+++ b/src/net_wifi_config.c
@@ -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);
diff --git a/src/wifi_config.c b/src/wifi_config.c
index c4554af..4ceb268 100755
--- a/src/wifi_config.c
+++ b/src/wifi_config.c
@@ -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)
{
diff --git a/test/wifi_test.c b/test/wifi_test.c
index a09ec97..e83490f 100755
--- a/test/wifi_test.c
+++ b/test/wifi_test.c
@@ -868,6 +868,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");
@@ -1395,8 +1422,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;
}
@@ -1440,6 +1469,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;
@@ -1642,10 +1696,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");
@@ -1719,15 +1774,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;