2 * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * PROPRIETARY/CONFIDENTIAL
6 * This software is the confidential and proprietary information of
7 * SAMSUNG ELECTRONICS (Confidential Information).
8 * You shall not disclose such Confidential Information and shall
9 * use it only in accordance with the terms of the license agreement
10 * you entered into with SAMSUNG ELECTRONICS. SAMSUNG make no
11 * representations or warranties about the suitability
12 * of the software, either express or implied, including but not
13 * limited to the implied warranties of merchantability, fitness for a particular purpose, or non-
14 * infringement. SAMSUNG shall not be liable for any damages suffered by licensee as
15 * a result of using, modifying or distributing this software or its derivatives.
23 #include "net/util/vconf_helper.h"
24 #include "net/wifi_manager.h"
25 #include "net/wifi_generate_pin.h"
28 WIFI_MANAGER_CB_DEVICE_STATE_CHANGED,
29 WIFI_MANAGER_CB_CONNECTION_STATE_CHANGED,
30 WIFI_MANAGER_CB_BACKGROUND_SCAN
31 } wifi_manager_cb_type;
33 struct _wifi_manager_object {
38 struct _wifi_ap_object {
43 wifi_error_e last_connection_error;
44 gboolean is_captiveportal;
47 typedef struct _wifi_config_object {
51 wifi_security_type_e security_type;
52 wifi_error_e last_error;
56 wifi_manager_object *manager;
58 wifi_manager_cb_type type;
59 wifi_manager_generic_cb cb;
60 wifi_manager_generic_state_changed_cb state_changed_cb;
62 } wifi_manager_cb_data;
64 static wifi_manager_object *_last_initailized_wifi_manager;
66 static void _update_wifi_config_list(wifi_manager_object *manager);
67 static wifi_ap_object *_create_ap_object_by_ap_h(wifi_ap_h ap);
69 static void __wifi_common_cb(wifi_error_e error_code, gpointer user_data)
71 wifi_manager_cb_data *cb_data = (wifi_manager_cb_data *)user_data;
72 WIFI_RET_IF_FAIL(cb_data);
74 WIFI_LOG_INFO("common cb");
77 cb_data->cb(cb_data->manager, cb_data->ap, error_code, cb_data->user_data);
82 static void __wifi_background_scan_cb(wifi_error_e error_code, gpointer user_data)
84 wifi_manager_cb_data *cb_data = (wifi_manager_cb_data *)user_data;
85 WIFI_RET_IF_FAIL(cb_data != NULL);
88 cb_data->cb(cb_data->manager, cb_data->ap, error_code, cb_data->user_data);
91 static void __wifi_device_state_changed_cb(wifi_device_state_e state, void *user_data)
93 wifi_manager_cb_data *cb_data = (wifi_manager_cb_data *)user_data;
94 WIFI_RET_IF_FAIL(cb_data);
96 if (state == WIFI_DEVICE_STATE_ACTIVATED) {
97 _update_wifi_config_list(cb_data->manager);
100 if (cb_data->state_changed_cb)
101 cb_data->state_changed_cb(cb_data->manager,
103 WIFI_CONNECTION_STATE_FAILURE, NULL,
104 WIFI_RSSI_LEVEL_0, cb_data->user_data);
107 static void __wifi_connection_state_changed_cb(wifi_connection_state_e state,
108 wifi_ap_h ap, void *user_data)
110 wifi_manager_cb_data *cb_data = (wifi_manager_cb_data *)user_data;
111 WIFI_RET_IF_FAIL(cb_data);
113 if (state == WIFI_CONNECTION_STATE_CONNECTED ||
114 state == WIFI_CONNECTION_STATE_DISCONNECTED ||
115 state == WIFI_CONNECTION_STATE_FAILURE) {
116 _update_wifi_config_list(cb_data->manager);
119 if (cb_data->state_changed_cb) {
120 wifi_ap_object *ap_obj = _create_ap_object_by_ap_h(ap);
121 cb_data->state_changed_cb(cb_data->manager,
122 WIFI_DEVICE_STATE_DEACTIVATED,
124 WIFI_RSSI_LEVEL_0, cb_data->user_data);
125 wifi_manager_ap_destroy(ap_obj);
129 static bool __wifi_config_list_cb(const wifi_config_h config, void *user_data)
133 wifi_manager_object *manager = user_data;
134 wifi_config_object *config_obj;
135 WIFI_RET_VAL_IF_FAIL(config != NULL, true);
136 WIFI_RET_VAL_IF_FAIL(manager != NULL, true);
138 config_obj = g_new0(wifi_config_object, 1);
139 WIFI_RET_VAL_IF_FAIL(config_obj != NULL, true);
141 wifi_config_clone(config, &(config_obj->handle));
142 wifi_config_get_name(config, &(config_obj->name));
143 wifi_config_get_security_type(config, &(config_obj->security_type));
144 manager->config_list = g_list_append(manager->config_list, config_obj);
150 static void _wifi_config_destory(gpointer data)
152 wifi_config_object *config = data;
153 if (config->handle) {
154 wifi_config_destroy(config->handle);
157 g_free(config->name);
159 if (config->passphrase) {
160 g_free(config->passphrase);
165 static void _clear_wifi_config_list(wifi_manager_object *manager)
169 WIFI_RET_IF_FAIL(manager != NULL);
170 WIFI_RET_IF_FAIL(manager->config_list != NULL);
172 g_list_free_full(manager->config_list, _wifi_config_destory);
173 manager->config_list = NULL;
178 static void _update_wifi_config_list(wifi_manager_object *manager)
181 WIFI_RET_IF_FAIL(manager);
185 if (manager->config_list) {
186 _clear_wifi_config_list(manager);
189 err = wifi_config_foreach_configuration(__wifi_config_list_cb, manager);
190 if (err != WIFI_ERROR_NONE) {
191 WIFI_LOG_ERR("wifi_config_foreach_configuration() is failed. error = %s",
192 wifi_error_to_string(err));
198 static bool __compare_wifi_security_type(wifi_security_type_e sec_type1, wifi_security_type_e sec_type2)
200 if (sec_type1 == sec_type2)
203 if ((sec_type1 == WIFI_SECURITY_TYPE_WPA_PSK || sec_type1 == WIFI_SECURITY_TYPE_WPA2_PSK)
204 && (sec_type2 == WIFI_SECURITY_TYPE_WPA_PSK || sec_type2 == WIFI_SECURITY_TYPE_WPA2_PSK))
210 static wifi_config_object *_find_wifi_config_by_wifi_ap(wifi_manager_object *manager,
215 wifi_security_type_e sec_type;
216 WIFI_RET_VAL_IF_FAIL(manager, NULL);
217 WIFI_RET_VAL_IF_FAIL(ap, NULL);
219 ssid = wifi_manager_ap_get_ssid(ap);
220 WIFI_RET_VAL_IF_FAIL(ssid, NULL);
221 sec_type = wifi_manager_ap_get_security_type(ap);
223 config_list = manager->config_list;
224 while (config_list) {
225 wifi_config_object *config = config_list->data;
226 if (!g_strcmp0(config->name, ssid) && __compare_wifi_security_type(config->security_type, sec_type)) {
230 config_list = config_list->next;
236 static wifi_ap_object *_create_ap_object_by_ap_h(wifi_ap_h ap)
238 wifi_ap_object *ap_obj = g_new0(wifi_ap_object, 1);
242 if (WIFI_ERROR_NONE != wifi_ap_clone(&(ap_obj->ap), ap)) {
243 WIFI_LOG_ERR("Failed to clone AP handle");
248 if (WIFI_ERROR_NONE != wifi_ap_get_rssi(ap, &(ap_obj->rssi))) {
249 WIFI_LOG_ERR("Failed to get rssi of AP");
250 wifi_manager_ap_destroy(ap_obj);
254 if (WIFI_ERROR_NONE != wifi_ap_is_wps_supported(ap, &(ap_obj->wps_mode))) {
255 WIFI_LOG_ERR("Failed to get wps mode of AP");
256 wifi_manager_ap_destroy(ap_obj);
260 ap_obj->last_connection_error = WIFI_ERROR_NONE;
261 ap_obj->is_captiveportal = FALSE;
265 gint wifi_manager_default_compare_ap(gconstpointer a, gconstpointer b)
267 wifi_ap_object *ap_obj1 = (wifi_ap_object *)a;
268 wifi_ap_object *ap_obj2 = (wifi_ap_object *)b;
269 wifi_connection_state_e state1 = WIFI_CONNECTION_STATE_DISCONNECTED;
270 wifi_connection_state_e state2 = WIFI_CONNECTION_STATE_DISCONNECTED;
271 bool favorite1 = false;
272 bool favorite2 = false;
274 wifi_ap_get_connection_state(ap_obj1->ap, &state1);
275 wifi_ap_get_connection_state(ap_obj2->ap, &state2);
276 if (state1 != state2) {
277 if (state1 == WIFI_CONNECTION_STATE_CONNECTED)
279 if (state2 == WIFI_CONNECTION_STATE_CONNECTED)
282 if (state1 == WIFI_CONNECTION_STATE_CONFIGURATION)
284 if (state2 == WIFI_CONNECTION_STATE_CONFIGURATION)
287 if (state1 == WIFI_CONNECTION_STATE_ASSOCIATION)
289 if (state2 == WIFI_CONNECTION_STATE_ASSOCIATION)
293 favorite1 = wifi_manager_ap_is_favorite(
294 _last_initailized_wifi_manager, ap_obj1);
295 favorite2 = wifi_manager_ap_is_favorite(
296 _last_initailized_wifi_manager, ap_obj2);
297 if (favorite1 != favorite2) {
304 /* Alphabetical order */
306 return strcasecmp((const char *) wifi_device1->ssid,
307 (const char *) wifi_device2->ssid);
310 return((ap_obj1->rssi >= ap_obj2->rssi) ? -1 : 1);
313 #ifdef TIZEN_TELEPHONY_ENABLE
314 static bool __update_ap_list_foreach(wifi_ap_h ap, void *user_data)
316 GList **ap_list = user_data;
317 wifi_ap_object *ap_obj = NULL;
318 WIFI_RET_VAL_IF_FAIL(ap_list, true);
320 ap_obj = _create_ap_object_by_ap_h(ap);
321 WIFI_RET_VAL_IF_FAIL(ap_obj, true);
323 *ap_list = g_list_insert_sorted(*ap_list, ap_obj, wifi_manager_default_compare_ap);
327 // Find AP list except EAP type when WC1-S Bluetooth model(No SIM).
328 static bool __update_ap_list_foreach(wifi_ap_h ap, void *user_data)
330 GList **ap_list = user_data;
331 wifi_security_type_e sec_type = WIFI_SECURITY_TYPE_NONE;
333 wifi_ap_object *ap_obj = NULL;
334 WIFI_RET_VAL_IF_FAIL(ap_list != NULL, true);
336 err = wifi_ap_get_security_type(ap, &sec_type);
337 WIFI_RET_VAL_IF_FAIL(err == WIFI_ERROR_NONE, true);
338 if (sec_type == WIFI_SECURITY_TYPE_EAP) {
339 WIFI_LOG_INFO("EAP type AP skip(No SIM model).");
343 ap_obj = _create_ap_object_by_ap_h(ap);
344 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, true);
346 *ap_list = g_list_insert_sorted(*ap_list, ap_obj, wifi_manager_default_compare_ap);
351 static void _delete_cb_data_by_type(wifi_manager_object *manager, wifi_manager_cb_type type)
353 GList *cb_data_list = manager->cb_data_list;
354 while (cb_data_list) {
355 GList *next = cb_data_list->next;
356 wifi_manager_cb_data *cb_data = cb_data_list->data;
357 if (cb_data->type == type) {
358 manager->cb_data_list =
359 g_list_delete_link(manager->cb_data_list, cb_data_list);
366 static gchar *_ap_get_proxy_address(wifi_ap_object *ap_obj)
368 gchar *proxy_address = NULL;
370 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, NULL);
372 err = wifi_ap_get_proxy_address(ap_obj->ap,
373 WIFI_ADDRESS_FAMILY_IPV4, &proxy_address);
374 if (err != WIFI_ERROR_NONE) {
375 WIFI_LOG_ERR("wifi_ap_get_proxy_address() is failed. error = %s",
376 wifi_error_to_string(err));
378 g_free(proxy_address);
382 if (!proxy_address || strlen(proxy_address) == 0) {
383 WIFI_LOG_INFO("proxy_address is NULL.");
385 g_free(proxy_address);
389 return proxy_address;
395 wifi_manager_object *wifi_manager_new()
397 return g_new0(wifi_manager_object, 1);
400 void wifi_manager_free(wifi_manager_object *manager)
406 wifi_error_e wifi_manager_init(wifi_manager_object *manager)
410 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
412 err = wifi_initialize();
413 if (err != WIFI_ERROR_NONE) {
416 err = wifi_manager_is_activated(manager, &is_activate);
417 if (err == WIFI_ERROR_NONE) {
419 _update_wifi_config_list(manager);
422 WIFI_LOG_ERR("wifi_manager_is_activated() is failed. error = %s",
423 wifi_error_to_string(err));
425 _last_initailized_wifi_manager = manager;
429 wifi_error_e wifi_manager_deinit(wifi_manager_object *manager)
431 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
433 _clear_wifi_config_list(manager);
434 if (manager->cb_data_list) {
435 GList *cb_data_list = manager->cb_data_list;
436 while (cb_data_list) {
437 wifi_manager_cb_data *cb_data = cb_data_list->data;
438 if (cb_data->type == WIFI_MANAGER_CB_DEVICE_STATE_CHANGED) {
439 wifi_unset_device_state_changed_cb();
440 } else if (cb_data->type == WIFI_MANAGER_CB_CONNECTION_STATE_CHANGED) {
441 wifi_unset_connection_state_changed_cb();
442 } else if (cb_data->type == WIFI_MANAGER_CB_BACKGROUND_SCAN) {
443 wifi_unset_background_scan_cb();
446 cb_data_list = cb_data_list->next;
448 g_list_free_full(manager->cb_data_list, g_free);
450 return wifi_deinitialize();
453 wifi_error_e wifi_manager_generate_wps_pin(wifi_manager_object *manager, char **pin)
455 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
456 WIFI_RET_VAL_IF_FAIL(pin != NULL, WIFI_ERROR_INVALID_PARAMETER);
457 unsigned int rpin = 0;
458 char npin[9] = { '\0' };
461 rpin = wifi_generate_pin();
463 g_snprintf(npin, sizeof(npin), "%08d", rpin);
465 pin_len = strlen(npin);
467 WIFI_LOG_ERR("Invalid PIN");
468 return WIFI_ERROR_OPERATION_FAILED;
470 *pin = g_strdup(npin);
472 return WIFI_ERROR_NONE;
475 wifi_manager_object *wifi_manager_new_with_init(wifi_error_e *error)
477 wifi_manager_object *manager = wifi_manager_new();
478 *error = WIFI_ERROR_NONE;
480 *error = wifi_manager_init(manager);
481 if (*error != WIFI_ERROR_NONE) {
482 wifi_manager_free(manager);
485 *error = WIFI_ERROR_OUT_OF_MEMORY;
489 wifi_error_e wifi_manager_free_with_deinit(wifi_manager_object *manager)
491 wifi_error_e error = wifi_manager_deinit(manager);
492 wifi_manager_free(manager);
496 wifi_error_e wifi_manager_get_csccode(wifi_manager_object *manager, wifi_manager_csccode *code)
498 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
499 WIFI_RET_VAL_IF_FAIL(code != NULL, WIFI_ERROR_INVALID_PARAMETER);
501 *code = WIFI_MANAGER_CSC_UNKNOWN;
502 return WIFI_ERROR_NONE;
505 wifi_error_e wifi_manager_scan(wifi_manager_object *manager,
506 wifi_manager_generic_cb callback, gpointer user_data)
508 wifi_manager_cb_data *cb_data = NULL;
509 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
511 cb_data = g_new0(wifi_manager_cb_data, 1);
513 cb_data->manager = manager;
514 cb_data->cb = callback;
515 cb_data->user_data = user_data;
517 WIFI_LOG_INFO("Wi-Fi Scan start.");
518 return wifi_scan(__wifi_common_cb, cb_data);
520 return WIFI_ERROR_OUT_OF_MEMORY;
523 wifi_error_e wifi_manager_get_found_ap_list(wifi_manager_object *manager,
526 wifi_error_e error = WIFI_ERROR_INVALID_PARAMETER;
527 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
529 error = wifi_foreach_found_aps(__update_ap_list_foreach, ap_list);
530 if (error != WIFI_ERROR_NONE) {
532 g_list_free(*ap_list);
539 wifi_error_e wifi_manager_activate(wifi_manager_object *manager,
540 wifi_manager_generic_cb callback, gpointer user_data)
542 wifi_manager_cb_data *cb_data = NULL;
543 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
547 cb_data = g_new0(wifi_manager_cb_data, 1);
549 cb_data->manager = manager;
550 cb_data->cb = callback;
551 cb_data->user_data = user_data;
552 return wifi_activate(__wifi_common_cb, cb_data);
554 return WIFI_ERROR_OUT_OF_MEMORY;
557 wifi_error_e wifi_manager_deactivate(wifi_manager_object *manager,
558 wifi_manager_generic_cb callback, gpointer user_data)
560 wifi_manager_cb_data *cb_data = NULL;
561 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
565 cb_data = g_new0(wifi_manager_cb_data, 1);
567 cb_data->manager = manager;
568 cb_data->cb = callback;
569 cb_data->user_data = user_data;
570 return wifi_deactivate(__wifi_common_cb, cb_data);
572 return WIFI_ERROR_OUT_OF_MEMORY;
575 wifi_error_e wifi_manager_is_activated(wifi_manager_object *manager, bool *activated)
577 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
578 return wifi_is_activated(activated);
581 wifi_error_e wifi_manager_set_device_state_changed_cb(wifi_manager_object *manager,
582 wifi_manager_generic_state_changed_cb callback, void *user_data)
584 wifi_manager_cb_data *cb_data = NULL;
585 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
586 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
588 cb_data = g_new0(wifi_manager_cb_data, 1);
589 WIFI_RET_VAL_IF_FAIL(cb_data, WIFI_ERROR_OUT_OF_MEMORY);
591 cb_data->manager = manager;
592 cb_data->type = WIFI_MANAGER_CB_DEVICE_STATE_CHANGED;
593 cb_data->state_changed_cb = callback;
594 cb_data->user_data = user_data;
595 err = wifi_set_device_state_changed_cb(
596 __wifi_device_state_changed_cb, cb_data);
597 if (err == WIFI_ERROR_NONE)
598 manager->cb_data_list = g_list_append(manager->cb_data_list, cb_data);
602 wifi_error_e wifi_manager_unset_device_state_changed_cb(wifi_manager_object *manager)
604 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
605 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
607 err = wifi_unset_device_state_changed_cb();
608 _delete_cb_data_by_type(manager, WIFI_MANAGER_CB_DEVICE_STATE_CHANGED);
612 wifi_error_e wifi_manager_set_background_scan_cb(wifi_manager_object *manager,
613 wifi_manager_generic_cb callback, void *user_data)
615 wifi_manager_cb_data *cb_data = NULL;
616 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
617 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
619 cb_data = g_new0(wifi_manager_cb_data, 1);
620 WIFI_RET_VAL_IF_FAIL(cb_data != NULL, WIFI_ERROR_OUT_OF_MEMORY);
622 cb_data->manager = manager;
623 cb_data->type = WIFI_MANAGER_CB_BACKGROUND_SCAN;
624 cb_data->cb = callback;
625 cb_data->user_data = user_data;
626 err = wifi_set_background_scan_cb(__wifi_background_scan_cb, cb_data);
627 if (err == WIFI_ERROR_NONE)
628 manager->cb_data_list = g_list_append(manager->cb_data_list, cb_data);
632 wifi_error_e wifi_manager_unset_background_scan_cb(wifi_manager_object *manager)
634 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
635 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
637 err = wifi_unset_background_scan_cb();
638 _delete_cb_data_by_type(manager, WIFI_MANAGER_CB_BACKGROUND_SCAN);
642 wifi_error_e wifi_manager_set_connection_state_changed_cb(wifi_manager_object *manager,
643 wifi_manager_generic_state_changed_cb callback, void *user_data)
645 wifi_manager_cb_data *cb_data = NULL;
646 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
647 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
649 cb_data = g_new0(wifi_manager_cb_data, 1);
650 WIFI_RET_VAL_IF_FAIL(cb_data, WIFI_ERROR_OUT_OF_MEMORY);
652 cb_data->manager = manager;
653 cb_data->type = WIFI_MANAGER_CB_CONNECTION_STATE_CHANGED;
654 cb_data->state_changed_cb = callback;
655 cb_data->user_data = user_data;
656 err = wifi_set_connection_state_changed_cb(
657 __wifi_connection_state_changed_cb, cb_data);
658 if (err == WIFI_ERROR_NONE)
659 manager->cb_data_list = g_list_append(manager->cb_data_list, cb_data);
663 wifi_error_e wifi_manager_unset_connection_state_changed_cb(wifi_manager_object *manager)
665 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
666 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
668 err = wifi_unset_connection_state_changed_cb();
669 _delete_cb_data_by_type(manager, WIFI_MANAGER_CB_CONNECTION_STATE_CHANGED);
673 wifi_error_e wifi_manager_get_connection_state(wifi_manager_object *manager,
674 wifi_connection_state_e *connection_state)
676 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
677 return wifi_get_connection_state(connection_state);
680 wifi_error_e wifi_manager_connect(wifi_manager_object *manager,
681 wifi_ap_object *ap, wifi_manager_generic_cb callback, gpointer user_data)
683 wifi_manager_cb_data *cb_data = NULL;
684 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
685 WIFI_RET_VAL_IF_FAIL(ap, WIFI_ERROR_INVALID_PARAMETER);
687 cb_data = g_new0(wifi_manager_cb_data, 1);
689 cb_data->manager = manager;
691 cb_data->cb = callback;
692 cb_data->user_data = user_data;
693 return wifi_connect(ap->ap, __wifi_common_cb, cb_data);
695 return WIFI_ERROR_OUT_OF_MEMORY;
698 wifi_error_e wifi_manager_connect_by_wps_pbc(wifi_manager_object *manager,
699 wifi_ap_object *ap, wifi_manager_generic_cb callback, gpointer user_data)
701 wifi_manager_cb_data *cb_data = NULL;
702 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
703 WIFI_RET_VAL_IF_FAIL(ap, WIFI_ERROR_INVALID_PARAMETER);
705 cb_data = g_new0(wifi_manager_cb_data, 1);
707 cb_data->manager = manager;
709 cb_data->cb = callback;
710 cb_data->user_data = user_data;
711 return wifi_connect_by_wps_pbc(ap->ap, __wifi_common_cb, cb_data);
713 return WIFI_ERROR_OUT_OF_MEMORY;
716 wifi_error_e wifi_manager_connect_by_wps_pin(wifi_manager_object *manager,
717 wifi_ap_object *ap, const gchar *pin,
718 wifi_manager_generic_cb callback, gpointer user_data)
720 wifi_manager_cb_data *cb_data = NULL;
721 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
722 WIFI_RET_VAL_IF_FAIL(ap, WIFI_ERROR_INVALID_PARAMETER);
724 cb_data = g_new0(wifi_manager_cb_data, 1);
726 cb_data->manager = manager;
728 cb_data->cb = callback;
729 cb_data->user_data = user_data;
730 return wifi_connect_by_wps_pin(ap->ap, pin, __wifi_common_cb, cb_data);
732 return WIFI_ERROR_OUT_OF_MEMORY;
735 wifi_error_e wifi_manager_disconnect(wifi_manager_object *manager,
736 wifi_ap_object *ap, wifi_manager_generic_cb callback, gpointer user_data)
738 wifi_manager_cb_data *cb_data = NULL;
739 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
740 WIFI_RET_VAL_IF_FAIL(ap, WIFI_ERROR_INVALID_PARAMETER);
742 cb_data = g_new0(wifi_manager_cb_data, 1);
744 cb_data->manager = manager;
746 cb_data->cb = callback;
747 cb_data->user_data = user_data;
748 return wifi_disconnect(ap->ap, __wifi_common_cb, cb_data);
750 return WIFI_ERROR_OUT_OF_MEMORY;
753 wifi_error_e wifi_manager_get_connected_ap(wifi_manager_object *manager,
756 wifi_ap_h ap_h = NULL;
757 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
758 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
760 err = wifi_get_connected_ap(&ap_h);
761 if (err != WIFI_ERROR_NONE) {
763 wifi_ap_destroy(ap_h);
767 *ap = _create_ap_object_by_ap_h(ap_h);
768 wifi_ap_destroy(ap_h);
770 return WIFI_ERROR_OUT_OF_MEMORY;
771 return WIFI_ERROR_NONE;
777 wifi_ap_object *wifi_manager_ap_clone(wifi_ap_object *ap_obj)
779 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, NULL);
781 return _create_ap_object_by_ap_h(ap_obj->ap);
784 void wifi_manager_ap_destroy(wifi_ap_object *ap_obj)
786 WIFI_RET_IF_FAIL(ap_obj != NULL);
788 wifi_ap_destroy(ap_obj->ap);
792 gboolean wifi_manager_ap_is_equals(wifi_ap_object *ap_obj1, wifi_ap_object *ap_obj2)
794 gchar *ssid1, *ssid2;
795 wifi_security_type_e sec_type1, sec_type2;
796 gboolean is_equals = FALSE;
797 WIFI_RET_VAL_IF_FAIL(ap_obj1 != NULL, FALSE);
798 WIFI_RET_VAL_IF_FAIL(ap_obj2 != NULL, FALSE);
800 ssid1 = wifi_manager_ap_get_ssid(ap_obj1);
801 ssid2 = wifi_manager_ap_get_ssid(ap_obj2);
803 sec_type1 = wifi_manager_ap_get_security_type(ap_obj1);
804 sec_type2 = wifi_manager_ap_get_security_type(ap_obj2);
806 is_equals = (!g_strcmp0(ssid1, ssid2)) && (sec_type1 == sec_type2);
814 void wifi_manager_ap_refresh(wifi_ap_object *ap_obj)
816 WIFI_RET_IF_FAIL(ap_obj);
818 wifi_error_e err = wifi_ap_refresh(ap_obj->ap);
819 if (err != WIFI_ERROR_NONE) {
820 WIFI_LOG_ERR("wifi_ap_refresh() is failed. error = %s",
821 wifi_error_to_string(err));
825 wifi_ap_h wifi_manager_ap_get_ap_h(wifi_ap_object *ap_obj)
827 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
832 wifi_error_e wifi_manager_ap_get_last_connection_error(wifi_manager_object *manager,
833 wifi_ap_object *ap_obj)
835 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
836 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_ERROR_INVALID_PARAMETER);
838 if (wifi_manager_ap_is_favorite(manager, ap_obj)) {
839 wifi_config_object *config = _find_wifi_config_by_wifi_ap(manager, ap_obj);
841 // Favorite ap's last connection error
842 return config->last_error;
845 // Connection failed ap's last connection error
846 return ap_obj->last_connection_error;
849 void wifi_manager_ap_set_last_connection_error(wifi_ap_object *ap_obj, wifi_error_e error)
851 WIFI_RET_IF_FAIL(ap_obj);
853 ap_obj->last_connection_error = error;
856 gboolean wifi_manager_ap_is_captiveportal(wifi_manager_object *manager, wifi_ap_object *ap_obj)
858 WIFI_RET_VAL_IF_FAIL(manager != NULL, FALSE);
859 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, FALSE);
861 return ap_obj->is_captiveportal;
864 void wifi_manager_ap_set_captiveportal(wifi_ap_object *ap_obj, gboolean is_captiveportal)
866 WIFI_RET_IF_FAIL(ap_obj != NULL);
868 ap_obj->is_captiveportal = is_captiveportal;
871 wifi_error_e wifi_manager_ap_forget(wifi_ap_object *ap_obj)
874 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, WIFI_ERROR_INVALID_PARAMETER);
876 err = wifi_forget_ap(ap_obj->ap);
877 if (err != WIFI_ERROR_NONE) {
878 WIFI_LOG_ERR("wifi_forget_ap() is failed. error = %s",
879 wifi_error_to_string(err));
884 gchar *wifi_manager_ap_get_ssid(wifi_ap_object *ap_obj)
887 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
889 wifi_error_e err = wifi_ap_get_essid(ap_obj->ap, &ssid);
890 if (err != WIFI_ERROR_NONE) {
891 WIFI_LOG_ERR("wifi_ap_get_essid() is failed. error = %s",
892 wifi_error_to_string(err));
901 gint wifi_manager_ap_get_rssi(wifi_ap_object *ap_obj)
903 WIFI_RET_VAL_IF_FAIL(ap_obj, 0);
908 wifi_manager_ap_signal_strength wifi_manager_ap_get_signal_strength(wifi_ap_object *ap_obj)
910 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_MANAGER_SIGNAL_STRENGTH_NULL);
912 /* Wi-Fi Signal Strength Display (dB / ConnMan normalized value)
914 * Excellent : -63 ~ / 57 ~
915 * Good: -74 ~ -64 / 46 ~ 56
916 * Weak: -82 ~ -75 / 38 ~ 45
917 * Very weak: ~ -83 / ~ 37
919 if (ap_obj->rssi >= -63)
920 return WIFI_MANAGER_SIGNAL_STRENGTH_EXCELLENT;
921 else if (ap_obj->rssi >= -74)
922 return WIFI_MANAGER_SIGNAL_STRENGTH_GOOD;
923 else if (ap_obj->rssi >= -82)
924 return WIFI_MANAGER_SIGNAL_STRENGTH_WEAK;
925 else if (ap_obj->rssi >= -92)
926 return WIFI_MANAGER_SIGNAL_STRENGTH_VERY_WEAK;
928 return WIFI_MANAGER_SIGNAL_STRENGTH_NULL;
931 gint wifi_manager_ap_get_max_speed(wifi_ap_object *ap_obj)
934 WIFI_RET_VAL_IF_FAIL(ap_obj, 0);
936 wifi_error_e err = wifi_ap_get_max_speed(ap_obj->ap, &max_speed);
937 if (err != WIFI_ERROR_NONE) {
938 WIFI_LOG_ERR("wifi_ap_get_max_speed() is failed. error = %s",
939 wifi_error_to_string(err));
945 void wifi_manager_ap_set_password(wifi_ap_object *ap_obj, const gchar *password)
948 WIFI_RET_IF_FAIL(ap_obj);
950 err = wifi_ap_set_passphrase(ap_obj->ap, password);
951 if (err != WIFI_ERROR_NONE) {
952 WIFI_LOG_ERR("wifi_ap_set_passphrase() is failed. error = %s",
953 wifi_error_to_string(err));
957 wifi_eap_type_e wifi_manager_ap_get_eap_type(wifi_ap_object *ap_obj)
959 wifi_eap_type_e eap_type = WIFI_EAP_TYPE_AKA;
961 WIFI_RET_VAL_IF_FAIL(ap_obj, eap_type);
963 err = wifi_ap_get_eap_type(ap_obj->ap, &eap_type);
964 if (err != WIFI_ERROR_NONE) {
965 WIFI_LOG_ERR("wifi_ap_get_eap_type() is failed. error = %s",
966 wifi_error_to_string(err));
971 void wifi_manager_ap_set_eap_type(wifi_ap_object *ap_obj, wifi_eap_type_e type)
974 WIFI_RET_IF_FAIL(ap_obj);
976 err = wifi_ap_set_eap_type(ap_obj->ap, type);
977 if (err != WIFI_ERROR_NONE) {
978 WIFI_LOG_ERR("wifi_ap_set_eap_type() is failed. error = %s",
979 wifi_error_to_string(err));
983 wifi_security_type_e wifi_manager_ap_get_security_type(wifi_ap_object *ap_obj)
985 wifi_security_type_e sec_type = WIFI_SECURITY_TYPE_NONE;
987 WIFI_RET_VAL_IF_FAIL(ap_obj, sec_type);
989 err = wifi_ap_get_security_type(ap_obj->ap, &sec_type);
990 if (err != WIFI_ERROR_NONE) {
991 WIFI_LOG_ERR("wifi_ap_get_security_type() is failed. error = %s",
992 wifi_error_to_string(err));
997 gchar *wifi_manager_ap_get_security_type_text(wifi_ap_object *ap_obj)
999 switch (wifi_manager_ap_get_security_type(ap_obj)) {
1000 case WIFI_SECURITY_TYPE_NONE:
1001 return g_strdup(STR_OPEN);
1003 case WIFI_SECURITY_TYPE_WEP:
1004 case WIFI_SECURITY_TYPE_WPA_PSK:
1005 case WIFI_SECURITY_TYPE_WPA2_PSK:
1006 return g_strdup(STR_SECURED);
1008 case WIFI_SECURITY_TYPE_EAP:
1009 return g_strdup(STR_SECURED_EAP);
1011 #if defined TIZEN_WLAN_CHINA_WAPI
1012 case WIFI_SECURITY_TYPE_WAPI_PSK:
1013 return g_strdup(STR_WAPI_PSK);
1015 case WIFI_SECURITY_TYPE_WAPI_CERT:
1016 return g_strdup(STR_WAPI_CERT);
1019 return g_strdup("");
1023 wifi_connection_state_e wifi_manager_ap_get_connection_state(wifi_ap_object *ap_obj)
1025 wifi_connection_state_e conn_state = WIFI_CONNECTION_STATE_FAILURE;
1027 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_CONNECTION_STATE_FAILURE);
1028 err = wifi_ap_get_connection_state(ap_obj->ap, &conn_state);
1029 if (err != WIFI_ERROR_NONE) {
1030 WIFI_LOG_ERR("wifi_ap_get_connection_state() is failed. error = %s",
1031 wifi_error_to_string(err));
1036 gchar *wifi_manager_ap_get_ip_address(wifi_ap_object *ap_obj)
1038 gchar *ip_address = NULL;
1039 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
1041 wifi_error_e err = wifi_ap_get_ip_address(ap_obj->ap,
1042 WIFI_ADDRESS_FAMILY_IPV4, &ip_address);
1043 if (err != WIFI_ERROR_NONE) {
1044 WIFI_LOG_ERR("wifi_ap_get_ip_address() is failed. error = %s",
1045 wifi_error_to_string(err));
1054 void wifi_manager_ap_set_ip_address(wifi_ap_object *ap_obj, const gchar *ip_address)
1057 WIFI_RET_IF_FAIL(ap_obj);
1059 err = wifi_ap_set_ip_address(ap_obj->ap, WIFI_ADDRESS_FAMILY_IPV4, ip_address);
1060 if (err != WIFI_ERROR_NONE) {
1061 WIFI_LOG_ERR("wifi_ap_set_ip_address() is failed. error = %s",
1062 wifi_error_to_string(err));
1066 gchar *wifi_manager_ap_get_gateway_address(wifi_ap_object *ap_obj)
1068 gchar *gateway = NULL;
1069 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
1071 wifi_error_e err = wifi_ap_get_gateway_address(ap_obj->ap,
1072 WIFI_ADDRESS_FAMILY_IPV4, &gateway);
1073 if (err != WIFI_ERROR_NONE) {
1074 WIFI_LOG_ERR("wifi_ap_get_gateway_address() is failed. error = %s",
1075 wifi_error_to_string(err));
1084 void wifi_manager_ap_set_gateway_address(wifi_ap_object *ap_obj, const gchar *gateway_address)
1087 WIFI_RET_IF_FAIL(ap_obj);
1089 err = wifi_ap_set_gateway_address(ap_obj->ap, WIFI_ADDRESS_FAMILY_IPV4, gateway_address);
1090 if (err != WIFI_ERROR_NONE) {
1091 WIFI_LOG_ERR("wifi_ap_set_gateway_address() is failed. error = %s",
1092 wifi_error_to_string(err));
1096 gchar *wifi_manager_ap_get_subnet_mask(wifi_ap_object *ap_obj)
1098 gchar *subnet_mask = NULL;
1099 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
1101 wifi_error_e err = wifi_ap_get_subnet_mask(ap_obj->ap,
1102 WIFI_ADDRESS_FAMILY_IPV4, &subnet_mask);
1103 if (err != WIFI_ERROR_NONE) {
1104 WIFI_LOG_ERR("wifi_ap_get_subnet_mask() is failed. error = %s",
1105 wifi_error_to_string(err));
1107 g_free(subnet_mask);
1114 void wifi_manager_ap_set_subnet_mask(wifi_ap_object *ap_obj, const gchar *subnet_mask)
1117 WIFI_RET_IF_FAIL(ap_obj);
1119 err = wifi_ap_set_subnet_mask(ap_obj->ap, WIFI_ADDRESS_FAMILY_IPV4, subnet_mask);
1120 if (err != WIFI_ERROR_NONE) {
1121 WIFI_LOG_ERR("wifi_ap_set_subnet_mask() is failed. error = %s",
1122 wifi_error_to_string(err));
1126 gchar *wifi_manager_ap_get_dns_address(wifi_ap_object *ap_obj, gint order)
1128 gchar *dns_address = NULL;
1129 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
1131 wifi_error_e err = wifi_ap_get_dns_address(ap_obj->ap,
1132 order, WIFI_ADDRESS_FAMILY_IPV4, &dns_address);
1133 if (err != WIFI_ERROR_NONE) {
1134 WIFI_LOG_ERR("wifi_ap_get_dns_address() is failed. error = %s",
1135 wifi_error_to_string(err));
1137 g_free(dns_address);
1144 void wifi_manager_ap_set_dns_address(wifi_ap_object *ap_obj, const gchar *dns_address, gint order)
1147 WIFI_RET_IF_FAIL(ap_obj);
1149 err = wifi_ap_set_dns_address(ap_obj->ap, order, WIFI_ADDRESS_FAMILY_IPV4, dns_address);
1150 if (err != WIFI_ERROR_NONE) {
1151 WIFI_LOG_ERR("wifi_ap_set_dns_address() is failed. error = %s",
1152 wifi_error_to_string(err));
1156 wifi_ip_config_type_e wifi_manager_ap_get_ip_config(wifi_ap_object *ap_obj)
1158 wifi_ip_config_type_e config_type = WIFI_IP_CONFIG_TYPE_NONE;
1160 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_IP_CONFIG_TYPE_NONE);
1162 err = wifi_ap_get_ip_config_type(ap_obj->ap,
1163 WIFI_ADDRESS_FAMILY_IPV4, &config_type);
1164 if (err != WIFI_ERROR_NONE) {
1165 WIFI_LOG_ERR("wifi_ap_get_ip_config_type() is failed. error = %s",
1166 wifi_error_to_string(err));
1171 void wifi_manager_ap_set_ip_config(wifi_ap_object *ap_obj, wifi_ip_config_type_e config_type)
1174 WIFI_RET_IF_FAIL(ap_obj);
1175 err = wifi_ap_set_ip_config_type(ap_obj->ap,
1176 WIFI_ADDRESS_FAMILY_IPV4, config_type);
1177 if (err != WIFI_ERROR_NONE) {
1178 WIFI_LOG_ERR("wifi_ap_set_ip_config_type() is failed. error = %s",
1179 wifi_error_to_string(err));
1183 bool wifi_manager_ap_is_ip_config_static(wifi_ap_object *ap_obj)
1185 return wifi_manager_ap_get_ip_config(ap_obj) == WIFI_IP_CONFIG_TYPE_STATIC;
1188 void wifi_manager_ap_set_ip_config_static(wifi_ap_object *ap_obj)
1190 wifi_manager_ap_set_ip_config(ap_obj, WIFI_IP_CONFIG_TYPE_STATIC);
1193 wifi_proxy_type_e wifi_manager_ap_get_proxy_type(wifi_ap_object *ap_obj)
1195 wifi_proxy_type_e proxy_type = WIFI_PROXY_TYPE_AUTO;
1197 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_PROXY_TYPE_AUTO);
1199 err = wifi_ap_get_proxy_type(ap_obj->ap, &proxy_type);
1200 if (err != WIFI_ERROR_NONE) {
1201 WIFI_LOG_ERR("wifi_ap_get_proxy_type() is failed. error = %s",
1202 wifi_error_to_string(err));
1207 void wifi_manager_ap_set_proxy_type(wifi_ap_object *ap_obj, wifi_proxy_type_e proxy_type)
1210 WIFI_RET_IF_FAIL(ap_obj);
1212 err = wifi_ap_set_proxy_type(ap_obj->ap, proxy_type);
1213 if (err != WIFI_ERROR_NONE) {
1214 WIFI_LOG_ERR("wifi_ap_set_proxy_type() is failed. error = %s",
1215 wifi_error_to_string(err));
1219 bool wifi_manager_ap_is_proxy_manual(wifi_ap_object *ap_obj)
1221 return wifi_manager_ap_get_proxy_type(ap_obj) == WIFI_PROXY_TYPE_MANUAL;
1224 void wifi_manager_ap_set_proxy_manual(wifi_ap_object *ap_obj)
1226 wifi_manager_ap_set_proxy_type(ap_obj, WIFI_PROXY_TYPE_MANUAL);
1229 gchar *wifi_manager_ap_get_proxy_address(wifi_ap_object *ap_obj)
1231 gchar *proxy_address = NULL;
1232 char *saveptr = NULL;
1233 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, NULL);
1235 proxy_address = _ap_get_proxy_address(ap_obj);
1236 if (proxy_address == NULL) {
1237 WIFI_LOG_INFO("Proxy address is NULL.");
1241 return g_strdup(strtok_r(proxy_address, ":", &saveptr));
1244 gchar *wifi_manager_ap_get_proxy_port(wifi_ap_object *ap_obj)
1246 gchar *proxy_address = NULL;
1247 char *saveptr = NULL;
1248 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, NULL);
1250 proxy_address = _ap_get_proxy_address(ap_obj);
1251 if (proxy_address == NULL) {
1252 WIFI_LOG_INFO("Proxy address is NULL.");
1256 strtok_r(proxy_address, ":", &saveptr);
1257 return g_strdup(strtok_r(NULL, ":", &saveptr));
1260 void wifi_manager_ap_set_proxy_address(wifi_ap_object *ap_obj, const gchar *proxy_address)
1263 WIFI_RET_IF_FAIL(ap_obj);
1265 err = wifi_ap_set_proxy_address(ap_obj->ap, WIFI_ADDRESS_FAMILY_IPV4, proxy_address);
1266 if (err != WIFI_ERROR_NONE) {
1267 WIFI_LOG_ERR("wifi_ap_set_proxy_type() is failed. error = %s",
1268 wifi_error_to_string(err));
1272 bool wifi_manager_ap_is_wps_mode(wifi_ap_object *ap_obj)
1274 return ap_obj->wps_mode;
1277 bool wifi_manager_ap_is_favorite(wifi_manager_object *manager, wifi_ap_object *ap_obj)
1279 bool is_favorite = false;
1281 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, false);
1283 err = wifi_ap_is_favorite(ap_obj->ap, &is_favorite);
1284 if (err != WIFI_ERROR_NONE) {
1285 WIFI_LOG_ERR("wifi_ap_is_favorite() is failed. error = %d", err);
1290 gboolean wifi_manager_ap_has_configuration(wifi_manager_object *manager,
1291 wifi_ap_object *ap_obj)
1293 WIFI_RET_VAL_IF_FAIL(manager != NULL, FALSE);
1294 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, FALSE);
1296 if (_find_wifi_config_by_wifi_ap(manager, ap_obj) == NULL) {
1297 WIFI_LOG_INFO("AP config profile not found.");
1300 WIFI_LOG_INFO("AP has config profile.");
1304 wifi_error_e wifi_manager_ap_remove_configuration(wifi_manager_object *manager,
1305 wifi_ap_object *ap_obj)
1307 wifi_config_object *config;
1308 wifi_error_e error = WIFI_ERROR_NONE;
1309 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
1310 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, WIFI_ERROR_INVALID_PARAMETER);
1312 config = _find_wifi_config_by_wifi_ap(manager, ap_obj);
1313 WIFI_RET_VAL_IF_FAIL(config != NULL, WIFI_ERROR_INVALID_OPERATION);
1315 _update_wifi_config_list(manager);
1319 wifi_error_e wifi_manager_update_wifi_config_list(wifi_manager_object *manager)
1321 wifi_error_e error = WIFI_ERROR_NONE;
1323 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
1325 _update_wifi_config_list(manager);
1331 * Wearable connection API (weconn feature)
1334 gboolean wifi_manager_set_wifi_use(wifi_manager_object *manager, gboolean is_wifi_use)
1336 WIFI_RET_VAL_IF_FAIL(manager, FALSE);
1337 return vconf_set_wifi_use(is_wifi_use ? 1 : 0);
1340 gboolean wifi_manager_is_wifi_use(wifi_manager_object *manager)
1342 WIFI_RET_VAL_IF_FAIL(manager, FALSE);
1343 return vconf_is_wifi_use();
1346 gboolean wifi_manager_set_wifi_use_changed_cb(wifi_manager_object *manager,
1347 vconf_callback_fn callback, void *data)
1349 WIFI_RET_VAL_IF_FAIL(manager, FALSE);
1350 WIFI_LOG_INFO("VCONF_WIFI_USE - notify wifi key changed");
1351 return vconf_notify_wifi_key_changed(callback, data);