diff options
author | Jaehyun Kim <jeik01.kim@samsung.com> | 2016-04-20 21:54:38 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.vlan103.tizen.org> | 2016-04-20 21:54:38 -0700 |
commit | ce5b34b326e3a4a754874af4105158da991f5429 (patch) | |
tree | 81b334450311e77bc386ba6016234bf3b7cecf83 | |
parent | 2fd94f9c13b789dfd21110e27917751d179b1821 (diff) | |
parent | 2ef2f28e4af75b99c9a13a05035b39d7f52a4f43 (diff) | |
download | wifi-accepted/tizen/wearable/20160422.065849.tar.gz wifi-accepted/tizen/wearable/20160422.065849.tar.bz2 wifi-accepted/tizen/wearable/20160422.065849.zip |
Merge "Add new API to remove config" into tizensubmit/tizen/20160421.064634accepted/tizen/wearable/20160422.065849accepted/tizen/tv/20160422.065911accepted/tizen/mobile/20160422.070019accepted/tizen/ivi/20160422.065946accepted/tizen/common/20160421.161757
-rwxr-xr-x | include/wifi.h | 19 | ||||
-rwxr-xr-x[-rw-r--r--] | include/wifi_config_private.h | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | include/wifi_dbus_private.h | 0 | ||||
-rwxr-xr-x | src/net_wifi_config.c | 38 | ||||
-rwxr-xr-x | src/wifi_config.c | 28 | ||||
-rwxr-xr-x | test/wifi_test.c | 74 |
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; |