From: hyunuktak Date: Tue, 5 Apr 2016 06:17:16 +0000 (+0900) Subject: Add new API to remove config X-Git-Tag: submit/tizen/20160421.064634^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2ef2f28e4af75b99c9a13a05035b39d7f52a4f43;p=platform%2Fcore%2Fapi%2Fwifi.git Add new API to remove config Change-Id: Ie11803a7cba00a18947945e42a13980587335dd6 Signed-off-by: hyunuktak --- diff --git a/include/wifi.h b/include/wifi.h index 2c9f627..8e38953 100755 --- a/include/wifi.h +++ b/include/wifi.h @@ -1728,6 +1728,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 diff --git a/include/wifi_config_private.h b/include/wifi_config_private.h old mode 100644 new mode 100755 index e3da460..f509eb3 --- 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 old mode 100644 new mode 100755 diff --git a/packaging/capi-network-wifi.spec b/packaging/capi-network-wifi.spec index 71849a8..0b3d734 100755 --- a/packaging/capi-network-wifi.spec +++ b/packaging/capi-network-wifi.spec @@ -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 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 6b3a2be..b18d7f3 100755 --- a/test/wifi_test.c +++ b/test/wifi_test.c @@ -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;