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);
239 gboolean is_create_failed = FALSE;
243 if (WIFI_ERROR_NONE != wifi_ap_clone(&(ap_obj->ap), ap)) {
244 is_create_failed = TRUE;
245 } else if (WIFI_ERROR_NONE != wifi_ap_get_rssi(ap, &(ap_obj->rssi))) {
246 is_create_failed = TRUE;
247 } else if (WIFI_ERROR_NONE != wifi_ap_is_wps_supported(ap, &(ap_obj->wps_mode))) {
248 is_create_failed = TRUE;
251 if (is_create_failed) {
252 wifi_manager_ap_destroy(ap_obj);
255 ap_obj->last_connection_error = WIFI_ERROR_NONE;
256 ap_obj->is_captiveportal = FALSE;
260 gint wifi_manager_default_compare_ap(gconstpointer a, gconstpointer b)
262 wifi_ap_object *ap_obj1 = (wifi_ap_object *)a;
263 wifi_ap_object *ap_obj2 = (wifi_ap_object *)b;
264 wifi_connection_state_e state1 = WIFI_CONNECTION_STATE_DISCONNECTED;
265 wifi_connection_state_e state2 = WIFI_CONNECTION_STATE_DISCONNECTED;
266 bool favorite1 = false;
267 bool favorite2 = false;
269 wifi_ap_get_connection_state(ap_obj1->ap, &state1);
270 wifi_ap_get_connection_state(ap_obj2->ap, &state2);
271 if (state1 != state2) {
272 if (state1 == WIFI_CONNECTION_STATE_CONNECTED)
274 if (state2 == WIFI_CONNECTION_STATE_CONNECTED)
277 if (state1 == WIFI_CONNECTION_STATE_CONFIGURATION)
279 if (state2 == WIFI_CONNECTION_STATE_CONFIGURATION)
282 if (state1 == WIFI_CONNECTION_STATE_ASSOCIATION)
284 if (state2 == WIFI_CONNECTION_STATE_ASSOCIATION)
288 favorite1 = wifi_manager_ap_is_favorite(
289 _last_initailized_wifi_manager, ap_obj1);
290 favorite2 = wifi_manager_ap_is_favorite(
291 _last_initailized_wifi_manager, ap_obj2);
292 if (favorite1 != favorite2) {
299 /* Alphabetical order */
301 return strcasecmp((const char *) wifi_device1->ssid,
302 (const char *) wifi_device2->ssid);
305 return((ap_obj1->rssi >= ap_obj2->rssi) ? -1 : 1);
308 #ifdef TIZEN_TELEPHONY_ENABLE
309 static bool __update_ap_list_foreach(wifi_ap_h ap, void *user_data)
311 GList **ap_list = user_data;
312 wifi_ap_object *ap_obj = NULL;
313 WIFI_RET_VAL_IF_FAIL(ap_list, true);
315 ap_obj = _create_ap_object_by_ap_h(ap);
316 WIFI_RET_VAL_IF_FAIL(ap_obj, true);
318 *ap_list = g_list_insert_sorted(*ap_list, ap_obj, wifi_manager_default_compare_ap);
322 // Find AP list except EAP type when WC1-S Bluetooth model(No SIM).
323 static bool __update_ap_list_foreach(wifi_ap_h ap, void *user_data)
325 GList **ap_list = user_data;
326 wifi_security_type_e sec_type = WIFI_SECURITY_TYPE_NONE;
328 wifi_ap_object *ap_obj = NULL;
329 WIFI_RET_VAL_IF_FAIL(ap_list != NULL, true);
331 err = wifi_ap_get_security_type(ap, &sec_type);
332 WIFI_RET_VAL_IF_FAIL(err == WIFI_ERROR_NONE, true);
333 if (sec_type == WIFI_SECURITY_TYPE_EAP) {
334 WIFI_LOG_INFO("EAP type AP skip(No SIM model).");
338 ap_obj = _create_ap_object_by_ap_h(ap);
339 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, true);
341 *ap_list = g_list_insert_sorted(*ap_list, ap_obj, wifi_manager_default_compare_ap);
346 static void _delete_cb_data_by_type(wifi_manager_object *manager, wifi_manager_cb_type type)
348 GList *cb_data_list = manager->cb_data_list;
349 while (cb_data_list) {
350 GList *next = cb_data_list->next;
351 wifi_manager_cb_data *cb_data = cb_data_list->data;
352 if (cb_data->type == type) {
353 manager->cb_data_list =
354 g_list_delete_link(manager->cb_data_list, cb_data_list);
361 static gchar *_ap_get_proxy_address(wifi_ap_object *ap_obj)
363 gchar *proxy_address = NULL;
365 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, NULL);
367 err = wifi_ap_get_proxy_address(ap_obj->ap,
368 WIFI_ADDRESS_FAMILY_IPV4, &proxy_address);
369 if (err != WIFI_ERROR_NONE) {
370 WIFI_LOG_ERR("wifi_ap_get_proxy_address() is failed. error = %s",
371 wifi_error_to_string(err));
373 g_free(proxy_address);
377 if (!proxy_address || strlen(proxy_address) == 0) {
378 WIFI_LOG_INFO("proxy_address is NULL.");
380 g_free(proxy_address);
384 return proxy_address;
390 wifi_manager_object *wifi_manager_new()
392 return g_new0(wifi_manager_object, 1);
395 void wifi_manager_free(wifi_manager_object *manager)
401 wifi_error_e wifi_manager_init(wifi_manager_object *manager)
405 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
407 err = wifi_initialize();
408 if (err != WIFI_ERROR_NONE) {
411 err = wifi_manager_is_activated(manager, &is_activate);
412 if (err == WIFI_ERROR_NONE) {
414 _update_wifi_config_list(manager);
417 WIFI_LOG_ERR("wifi_manager_is_activated() is failed. error = %s",
418 wifi_error_to_string(err));
420 _last_initailized_wifi_manager = manager;
424 wifi_error_e wifi_manager_deinit(wifi_manager_object *manager)
426 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
428 _clear_wifi_config_list(manager);
429 if (manager->cb_data_list) {
430 GList *cb_data_list = manager->cb_data_list;
431 while (cb_data_list) {
432 wifi_manager_cb_data *cb_data = cb_data_list->data;
433 if (cb_data->type == WIFI_MANAGER_CB_DEVICE_STATE_CHANGED) {
434 wifi_unset_device_state_changed_cb();
435 } else if (cb_data->type == WIFI_MANAGER_CB_CONNECTION_STATE_CHANGED) {
436 wifi_unset_connection_state_changed_cb();
437 } else if (cb_data->type == WIFI_MANAGER_CB_BACKGROUND_SCAN) {
438 wifi_unset_background_scan_cb();
441 cb_data_list = cb_data_list->next;
443 g_list_free_full(manager->cb_data_list, g_free);
445 return wifi_deinitialize();
448 wifi_error_e wifi_manager_generate_wps_pin(wifi_manager_object *manager, char **pin)
450 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
451 WIFI_RET_VAL_IF_FAIL(pin != NULL, WIFI_ERROR_INVALID_PARAMETER);
452 unsigned int rpin = 0;
453 char npin[9] = { '\0' };
456 rpin = wifi_generate_pin();
458 g_snprintf(npin, sizeof(npin), "%08d", rpin);
460 pin_len = strlen(npin);
462 WIFI_LOG_ERR("Invalid PIN");
463 return WIFI_ERROR_OPERATION_FAILED;
465 *pin = g_strdup(npin);
467 return WIFI_ERROR_NONE;
470 wifi_manager_object *wifi_manager_new_with_init(wifi_error_e *error)
472 wifi_manager_object *manager = wifi_manager_new();
473 *error = WIFI_ERROR_NONE;
475 *error = wifi_manager_init(manager);
476 if (*error != WIFI_ERROR_NONE) {
477 wifi_manager_free(manager);
480 *error = WIFI_ERROR_OUT_OF_MEMORY;
484 wifi_error_e wifi_manager_free_with_deinit(wifi_manager_object *manager)
486 wifi_error_e error = wifi_manager_deinit(manager);
487 wifi_manager_free(manager);
491 wifi_error_e wifi_manager_get_csccode(wifi_manager_object *manager, wifi_manager_csccode *code)
493 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
494 WIFI_RET_VAL_IF_FAIL(code != NULL, WIFI_ERROR_INVALID_PARAMETER);
496 *code = WIFI_MANAGER_CSC_UNKNOWN;
497 return WIFI_ERROR_NONE;
500 wifi_error_e wifi_manager_scan(wifi_manager_object *manager,
501 wifi_manager_generic_cb callback, gpointer user_data)
503 wifi_manager_cb_data *cb_data = NULL;
504 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
506 cb_data = g_new0(wifi_manager_cb_data, 1);
508 cb_data->manager = manager;
509 cb_data->cb = callback;
510 cb_data->user_data = user_data;
512 WIFI_LOG_INFO("Wi-Fi Scan start.");
513 return wifi_scan(__wifi_common_cb, cb_data);
515 return WIFI_ERROR_OUT_OF_MEMORY;
518 wifi_error_e wifi_manager_get_found_ap_list(wifi_manager_object *manager,
521 wifi_error_e error = WIFI_ERROR_INVALID_PARAMETER;
522 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
524 error = wifi_foreach_found_aps(__update_ap_list_foreach, ap_list);
525 if (error != WIFI_ERROR_NONE) {
527 g_list_free(*ap_list);
534 wifi_error_e wifi_manager_activate(wifi_manager_object *manager,
535 wifi_manager_generic_cb callback, gpointer user_data)
537 wifi_manager_cb_data *cb_data = NULL;
538 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
542 cb_data = g_new0(wifi_manager_cb_data, 1);
544 cb_data->manager = manager;
545 cb_data->cb = callback;
546 cb_data->user_data = user_data;
547 return wifi_activate(__wifi_common_cb, cb_data);
549 return WIFI_ERROR_OUT_OF_MEMORY;
552 wifi_error_e wifi_manager_deactivate(wifi_manager_object *manager,
553 wifi_manager_generic_cb callback, gpointer user_data)
555 wifi_manager_cb_data *cb_data = NULL;
556 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
560 cb_data = g_new0(wifi_manager_cb_data, 1);
562 cb_data->manager = manager;
563 cb_data->cb = callback;
564 cb_data->user_data = user_data;
565 return wifi_deactivate(__wifi_common_cb, cb_data);
567 return WIFI_ERROR_OUT_OF_MEMORY;
570 wifi_error_e wifi_manager_is_activated(wifi_manager_object *manager, bool *activated)
572 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
573 return wifi_is_activated(activated);
576 wifi_error_e wifi_manager_set_device_state_changed_cb(wifi_manager_object *manager,
577 wifi_manager_generic_state_changed_cb callback, void *user_data)
579 wifi_manager_cb_data *cb_data = NULL;
580 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
581 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
583 cb_data = g_new0(wifi_manager_cb_data, 1);
584 WIFI_RET_VAL_IF_FAIL(cb_data, WIFI_ERROR_OUT_OF_MEMORY);
586 cb_data->manager = manager;
587 cb_data->type = WIFI_MANAGER_CB_DEVICE_STATE_CHANGED;
588 cb_data->state_changed_cb = callback;
589 cb_data->user_data = user_data;
590 err = wifi_set_device_state_changed_cb(
591 __wifi_device_state_changed_cb, cb_data);
592 if (err == WIFI_ERROR_NONE)
593 manager->cb_data_list = g_list_append(manager->cb_data_list, cb_data);
597 wifi_error_e wifi_manager_unset_device_state_changed_cb(wifi_manager_object *manager)
599 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
600 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
602 err = wifi_unset_device_state_changed_cb();
603 _delete_cb_data_by_type(manager, WIFI_MANAGER_CB_DEVICE_STATE_CHANGED);
607 wifi_error_e wifi_manager_set_background_scan_cb(wifi_manager_object *manager,
608 wifi_manager_generic_cb callback, void *user_data)
610 wifi_manager_cb_data *cb_data = NULL;
611 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
612 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
614 cb_data = g_new0(wifi_manager_cb_data, 1);
615 WIFI_RET_VAL_IF_FAIL(cb_data != NULL, WIFI_ERROR_OUT_OF_MEMORY);
617 cb_data->manager = manager;
618 cb_data->type = WIFI_MANAGER_CB_BACKGROUND_SCAN;
619 cb_data->cb = callback;
620 cb_data->user_data = user_data;
621 err = wifi_set_background_scan_cb(__wifi_background_scan_cb, cb_data);
622 if (err == WIFI_ERROR_NONE)
623 manager->cb_data_list = g_list_append(manager->cb_data_list, cb_data);
627 wifi_error_e wifi_manager_unset_background_scan_cb(wifi_manager_object *manager)
629 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
630 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
632 err = wifi_unset_background_scan_cb();
633 _delete_cb_data_by_type(manager, WIFI_MANAGER_CB_BACKGROUND_SCAN);
637 wifi_error_e wifi_manager_set_connection_state_changed_cb(wifi_manager_object *manager,
638 wifi_manager_generic_state_changed_cb callback, void *user_data)
640 wifi_manager_cb_data *cb_data = NULL;
641 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
642 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
644 cb_data = g_new0(wifi_manager_cb_data, 1);
645 WIFI_RET_VAL_IF_FAIL(cb_data, WIFI_ERROR_OUT_OF_MEMORY);
647 cb_data->manager = manager;
648 cb_data->type = WIFI_MANAGER_CB_CONNECTION_STATE_CHANGED;
649 cb_data->state_changed_cb = callback;
650 cb_data->user_data = user_data;
651 err = wifi_set_connection_state_changed_cb(
652 __wifi_connection_state_changed_cb, cb_data);
653 if (err == WIFI_ERROR_NONE)
654 manager->cb_data_list = g_list_append(manager->cb_data_list, cb_data);
658 wifi_error_e wifi_manager_unset_connection_state_changed_cb(wifi_manager_object *manager)
660 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
661 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
663 err = wifi_unset_connection_state_changed_cb();
664 _delete_cb_data_by_type(manager, WIFI_MANAGER_CB_CONNECTION_STATE_CHANGED);
668 wifi_error_e wifi_manager_get_connection_state(wifi_manager_object *manager,
669 wifi_connection_state_e *connection_state)
671 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
672 return wifi_get_connection_state(connection_state);
675 wifi_error_e wifi_manager_connect(wifi_manager_object *manager,
676 wifi_ap_object *ap, wifi_manager_generic_cb callback, gpointer user_data)
678 wifi_manager_cb_data *cb_data = NULL;
679 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
680 WIFI_RET_VAL_IF_FAIL(ap, WIFI_ERROR_INVALID_PARAMETER);
682 cb_data = g_new0(wifi_manager_cb_data, 1);
684 cb_data->manager = manager;
686 cb_data->cb = callback;
687 cb_data->user_data = user_data;
688 return wifi_connect(ap->ap, __wifi_common_cb, cb_data);
690 return WIFI_ERROR_OUT_OF_MEMORY;
693 wifi_error_e wifi_manager_connect_by_wps_pbc(wifi_manager_object *manager,
694 wifi_ap_object *ap, wifi_manager_generic_cb callback, gpointer user_data)
696 wifi_manager_cb_data *cb_data = NULL;
697 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
698 WIFI_RET_VAL_IF_FAIL(ap, WIFI_ERROR_INVALID_PARAMETER);
700 cb_data = g_new0(wifi_manager_cb_data, 1);
702 cb_data->manager = manager;
704 cb_data->cb = callback;
705 cb_data->user_data = user_data;
706 return wifi_connect_by_wps_pbc(ap->ap, __wifi_common_cb, cb_data);
708 return WIFI_ERROR_OUT_OF_MEMORY;
711 wifi_error_e wifi_manager_connect_by_wps_pin(wifi_manager_object *manager,
712 wifi_ap_object *ap, const gchar *pin,
713 wifi_manager_generic_cb callback, gpointer user_data)
715 wifi_manager_cb_data *cb_data = NULL;
716 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
717 WIFI_RET_VAL_IF_FAIL(ap, WIFI_ERROR_INVALID_PARAMETER);
719 cb_data = g_new0(wifi_manager_cb_data, 1);
721 cb_data->manager = manager;
723 cb_data->cb = callback;
724 cb_data->user_data = user_data;
725 return wifi_connect_by_wps_pin(ap->ap, pin, __wifi_common_cb, cb_data);
727 return WIFI_ERROR_OUT_OF_MEMORY;
730 wifi_error_e wifi_manager_disconnect(wifi_manager_object *manager,
731 wifi_ap_object *ap, wifi_manager_generic_cb callback, gpointer user_data)
733 wifi_manager_cb_data *cb_data = NULL;
734 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
735 WIFI_RET_VAL_IF_FAIL(ap, WIFI_ERROR_INVALID_PARAMETER);
737 cb_data = g_new0(wifi_manager_cb_data, 1);
739 cb_data->manager = manager;
741 cb_data->cb = callback;
742 cb_data->user_data = user_data;
743 return wifi_disconnect(ap->ap, __wifi_common_cb, cb_data);
745 return WIFI_ERROR_OUT_OF_MEMORY;
748 wifi_error_e wifi_manager_get_connected_ap(wifi_manager_object *manager,
751 wifi_ap_h ap_h = NULL;
752 wifi_error_e err = WIFI_ERROR_INVALID_PARAMETER;
753 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
755 err = wifi_get_connected_ap(&ap_h);
756 if (err != WIFI_ERROR_NONE) {
758 wifi_ap_destroy(ap_h);
762 *ap = _create_ap_object_by_ap_h(ap_h);
763 wifi_ap_destroy(ap_h);
765 return WIFI_ERROR_OUT_OF_MEMORY;
766 return WIFI_ERROR_NONE;
772 wifi_ap_object *wifi_manager_ap_clone(wifi_ap_object *ap_obj)
774 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, NULL);
776 return _create_ap_object_by_ap_h(ap_obj->ap);
779 void wifi_manager_ap_destroy(wifi_ap_object *ap_obj)
781 WIFI_RET_IF_FAIL(ap_obj != NULL);
783 wifi_ap_destroy(ap_obj->ap);
787 gboolean wifi_manager_ap_is_equals(wifi_ap_object *ap_obj1, wifi_ap_object *ap_obj2)
789 gchar *ssid1, *ssid2;
790 wifi_security_type_e sec_type1, sec_type2;
791 gboolean is_equals = FALSE;
792 WIFI_RET_VAL_IF_FAIL(ap_obj1 != NULL, FALSE);
793 WIFI_RET_VAL_IF_FAIL(ap_obj2 != NULL, FALSE);
795 ssid1 = wifi_manager_ap_get_ssid(ap_obj1);
796 ssid2 = wifi_manager_ap_get_ssid(ap_obj2);
798 sec_type1 = wifi_manager_ap_get_security_type(ap_obj1);
799 sec_type2 = wifi_manager_ap_get_security_type(ap_obj2);
801 is_equals = (!g_strcmp0(ssid1, ssid2)) && (sec_type1 == sec_type2);
809 void wifi_manager_ap_refresh(wifi_ap_object *ap_obj)
811 WIFI_RET_IF_FAIL(ap_obj);
813 wifi_error_e err = wifi_ap_refresh(ap_obj->ap);
814 if (err != WIFI_ERROR_NONE) {
815 WIFI_LOG_ERR("wifi_ap_refresh() is failed. error = %s",
816 wifi_error_to_string(err));
820 wifi_ap_h wifi_manager_ap_get_ap_h(wifi_ap_object *ap_obj)
822 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
827 wifi_error_e wifi_manager_ap_get_last_connection_error(wifi_manager_object *manager,
828 wifi_ap_object *ap_obj)
830 WIFI_RET_VAL_IF_FAIL(manager, WIFI_ERROR_INVALID_PARAMETER);
831 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_ERROR_INVALID_PARAMETER);
833 if (wifi_manager_ap_is_favorite(manager, ap_obj)) {
834 wifi_config_object *config = _find_wifi_config_by_wifi_ap(manager, ap_obj);
836 // Favorite ap's last connection error
837 return config->last_error;
840 // Connection failed ap's last connection error
841 return ap_obj->last_connection_error;
844 void wifi_manager_ap_set_last_connection_error(wifi_ap_object *ap_obj, wifi_error_e error)
846 WIFI_RET_IF_FAIL(ap_obj);
848 ap_obj->last_connection_error = error;
851 gboolean wifi_manager_ap_is_captiveportal(wifi_manager_object *manager, wifi_ap_object *ap_obj)
853 WIFI_RET_VAL_IF_FAIL(manager != NULL, FALSE);
854 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, FALSE);
856 return ap_obj->is_captiveportal;
859 void wifi_manager_ap_set_captiveportal(wifi_ap_object *ap_obj, gboolean is_captiveportal)
861 WIFI_RET_IF_FAIL(ap_obj != NULL);
863 ap_obj->is_captiveportal = is_captiveportal;
866 wifi_error_e wifi_manager_ap_forget(wifi_ap_object *ap_obj)
869 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, WIFI_ERROR_INVALID_PARAMETER);
871 err = wifi_forget_ap(ap_obj->ap);
872 if (err != WIFI_ERROR_NONE) {
873 WIFI_LOG_ERR("wifi_forget_ap() is failed. error = %s",
874 wifi_error_to_string(err));
879 gchar *wifi_manager_ap_get_ssid(wifi_ap_object *ap_obj)
882 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
884 wifi_error_e err = wifi_ap_get_essid(ap_obj->ap, &ssid);
885 if (err != WIFI_ERROR_NONE) {
886 WIFI_LOG_ERR("wifi_ap_get_essid() is failed. error = %s",
887 wifi_error_to_string(err));
896 gint wifi_manager_ap_get_rssi(wifi_ap_object *ap_obj)
898 WIFI_RET_VAL_IF_FAIL(ap_obj, 0);
903 wifi_manager_ap_signal_strength wifi_manager_ap_get_signal_strength(wifi_ap_object *ap_obj)
905 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_MANAGER_SIGNAL_STRENGTH_NULL);
907 /* Wi-Fi Signal Strength Display (dB / ConnMan normalized value)
909 * Excellent : -63 ~ / 57 ~
910 * Good: -74 ~ -64 / 46 ~ 56
911 * Weak: -82 ~ -75 / 38 ~ 45
912 * Very weak: ~ -83 / ~ 37
914 if (ap_obj->rssi >= -63)
915 return WIFI_MANAGER_SIGNAL_STRENGTH_EXCELLENT;
916 else if (ap_obj->rssi >= -74)
917 return WIFI_MANAGER_SIGNAL_STRENGTH_GOOD;
918 else if (ap_obj->rssi >= -82)
919 return WIFI_MANAGER_SIGNAL_STRENGTH_WEAK;
920 else if (ap_obj->rssi >= -92)
921 return WIFI_MANAGER_SIGNAL_STRENGTH_VERY_WEAK;
923 return WIFI_MANAGER_SIGNAL_STRENGTH_NULL;
926 gint wifi_manager_ap_get_max_speed(wifi_ap_object *ap_obj)
929 WIFI_RET_VAL_IF_FAIL(ap_obj, 0);
931 wifi_error_e err = wifi_ap_get_max_speed(ap_obj->ap, &max_speed);
932 if (err != WIFI_ERROR_NONE) {
933 WIFI_LOG_ERR("wifi_ap_get_max_speed() is failed. error = %s",
934 wifi_error_to_string(err));
940 void wifi_manager_ap_set_password(wifi_ap_object *ap_obj, const gchar *password)
943 WIFI_RET_IF_FAIL(ap_obj);
945 err = wifi_ap_set_passphrase(ap_obj->ap, password);
946 if (err != WIFI_ERROR_NONE) {
947 WIFI_LOG_ERR("wifi_ap_set_passphrase() is failed. error = %s",
948 wifi_error_to_string(err));
952 wifi_eap_type_e wifi_manager_ap_get_eap_type(wifi_ap_object *ap_obj)
954 wifi_eap_type_e eap_type = WIFI_EAP_TYPE_AKA;
956 WIFI_RET_VAL_IF_FAIL(ap_obj, eap_type);
958 err = wifi_ap_get_eap_type(ap_obj->ap, &eap_type);
959 if (err != WIFI_ERROR_NONE) {
960 WIFI_LOG_ERR("wifi_ap_get_eap_type() is failed. error = %s",
961 wifi_error_to_string(err));
966 void wifi_manager_ap_set_eap_type(wifi_ap_object *ap_obj, wifi_eap_type_e type)
969 WIFI_RET_IF_FAIL(ap_obj);
971 err = wifi_ap_set_eap_type(ap_obj->ap, type);
972 if (err != WIFI_ERROR_NONE) {
973 WIFI_LOG_ERR("wifi_ap_set_eap_type() is failed. error = %s",
974 wifi_error_to_string(err));
978 wifi_security_type_e wifi_manager_ap_get_security_type(wifi_ap_object *ap_obj)
980 wifi_security_type_e sec_type = WIFI_SECURITY_TYPE_NONE;
982 WIFI_RET_VAL_IF_FAIL(ap_obj, sec_type);
984 err = wifi_ap_get_security_type(ap_obj->ap, &sec_type);
985 if (err != WIFI_ERROR_NONE) {
986 WIFI_LOG_ERR("wifi_ap_get_security_type() is failed. error = %s",
987 wifi_error_to_string(err));
992 gchar *wifi_manager_ap_get_security_type_text(wifi_ap_object *ap_obj)
994 switch (wifi_manager_ap_get_security_type(ap_obj)) {
995 case WIFI_SECURITY_TYPE_NONE:
996 return g_strdup(STR_OPEN);
998 case WIFI_SECURITY_TYPE_WEP:
999 case WIFI_SECURITY_TYPE_WPA_PSK:
1000 case WIFI_SECURITY_TYPE_WPA2_PSK:
1001 return g_strdup(STR_SECURED);
1003 case WIFI_SECURITY_TYPE_EAP:
1004 return g_strdup(STR_SECURED_EAP);
1006 #if defined TIZEN_WLAN_CHINA_WAPI
1007 case WIFI_SECURITY_TYPE_WAPI_PSK:
1008 return g_strdup(STR_WAPI_PSK);
1010 case WIFI_SECURITY_TYPE_WAPI_CERT:
1011 return g_strdup(STR_WAPI_CERT);
1014 return g_strdup("");
1018 wifi_connection_state_e wifi_manager_ap_get_connection_state(wifi_ap_object *ap_obj)
1020 wifi_connection_state_e conn_state = WIFI_CONNECTION_STATE_FAILURE;
1022 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_CONNECTION_STATE_FAILURE);
1023 err = wifi_ap_get_connection_state(ap_obj->ap, &conn_state);
1024 if (err != WIFI_ERROR_NONE) {
1025 WIFI_LOG_ERR("wifi_ap_get_connection_state() is failed. error = %s",
1026 wifi_error_to_string(err));
1031 gchar *wifi_manager_ap_get_ip_address(wifi_ap_object *ap_obj)
1033 gchar *ip_address = NULL;
1034 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
1036 wifi_error_e err = wifi_ap_get_ip_address(ap_obj->ap,
1037 WIFI_ADDRESS_FAMILY_IPV4, &ip_address);
1038 if (err != WIFI_ERROR_NONE) {
1039 WIFI_LOG_ERR("wifi_ap_get_ip_address() is failed. error = %s",
1040 wifi_error_to_string(err));
1049 void wifi_manager_ap_set_ip_address(wifi_ap_object *ap_obj, const gchar *ip_address)
1052 WIFI_RET_IF_FAIL(ap_obj);
1054 err = wifi_ap_set_ip_address(ap_obj->ap, WIFI_ADDRESS_FAMILY_IPV4, ip_address);
1055 if (err != WIFI_ERROR_NONE) {
1056 WIFI_LOG_ERR("wifi_ap_set_ip_address() is failed. error = %s",
1057 wifi_error_to_string(err));
1061 gchar *wifi_manager_ap_get_gateway_address(wifi_ap_object *ap_obj)
1063 gchar *gateway = NULL;
1064 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
1066 wifi_error_e err = wifi_ap_get_gateway_address(ap_obj->ap,
1067 WIFI_ADDRESS_FAMILY_IPV4, &gateway);
1068 if (err != WIFI_ERROR_NONE) {
1069 WIFI_LOG_ERR("wifi_ap_get_gateway_address() is failed. error = %s",
1070 wifi_error_to_string(err));
1079 void wifi_manager_ap_set_gateway_address(wifi_ap_object *ap_obj, const gchar *gateway_address)
1082 WIFI_RET_IF_FAIL(ap_obj);
1084 err = wifi_ap_set_gateway_address(ap_obj->ap, WIFI_ADDRESS_FAMILY_IPV4, gateway_address);
1085 if (err != WIFI_ERROR_NONE) {
1086 WIFI_LOG_ERR("wifi_ap_set_gateway_address() is failed. error = %s",
1087 wifi_error_to_string(err));
1091 gchar *wifi_manager_ap_get_subnet_mask(wifi_ap_object *ap_obj)
1093 gchar *subnet_mask = NULL;
1094 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
1096 wifi_error_e err = wifi_ap_get_subnet_mask(ap_obj->ap,
1097 WIFI_ADDRESS_FAMILY_IPV4, &subnet_mask);
1098 if (err != WIFI_ERROR_NONE) {
1099 WIFI_LOG_ERR("wifi_ap_get_subnet_mask() is failed. error = %s",
1100 wifi_error_to_string(err));
1102 g_free(subnet_mask);
1109 void wifi_manager_ap_set_subnet_mask(wifi_ap_object *ap_obj, const gchar *subnet_mask)
1112 WIFI_RET_IF_FAIL(ap_obj);
1114 err = wifi_ap_set_subnet_mask(ap_obj->ap, WIFI_ADDRESS_FAMILY_IPV4, subnet_mask);
1115 if (err != WIFI_ERROR_NONE) {
1116 WIFI_LOG_ERR("wifi_ap_set_subnet_mask() is failed. error = %s",
1117 wifi_error_to_string(err));
1121 gchar *wifi_manager_ap_get_dns_address(wifi_ap_object *ap_obj, gint order)
1123 gchar *dns_address = NULL;
1124 WIFI_RET_VAL_IF_FAIL(ap_obj, NULL);
1126 wifi_error_e err = wifi_ap_get_dns_address(ap_obj->ap,
1127 order, WIFI_ADDRESS_FAMILY_IPV4, &dns_address);
1128 if (err != WIFI_ERROR_NONE) {
1129 WIFI_LOG_ERR("wifi_ap_get_dns_address() is failed. error = %s",
1130 wifi_error_to_string(err));
1132 g_free(dns_address);
1139 void wifi_manager_ap_set_dns_address(wifi_ap_object *ap_obj, const gchar *dns_address, gint order)
1142 WIFI_RET_IF_FAIL(ap_obj);
1144 err = wifi_ap_set_dns_address(ap_obj->ap, order, WIFI_ADDRESS_FAMILY_IPV4, dns_address);
1145 if (err != WIFI_ERROR_NONE) {
1146 WIFI_LOG_ERR("wifi_ap_set_dns_address() is failed. error = %s",
1147 wifi_error_to_string(err));
1151 wifi_ip_config_type_e wifi_manager_ap_get_ip_config(wifi_ap_object *ap_obj)
1153 wifi_ip_config_type_e config_type = WIFI_IP_CONFIG_TYPE_NONE;
1155 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_IP_CONFIG_TYPE_NONE);
1157 err = wifi_ap_get_ip_config_type(ap_obj->ap,
1158 WIFI_ADDRESS_FAMILY_IPV4, &config_type);
1159 if (err != WIFI_ERROR_NONE) {
1160 WIFI_LOG_ERR("wifi_ap_get_ip_config_type() is failed. error = %s",
1161 wifi_error_to_string(err));
1166 void wifi_manager_ap_set_ip_config(wifi_ap_object *ap_obj, wifi_ip_config_type_e config_type)
1169 WIFI_RET_IF_FAIL(ap_obj);
1170 err = wifi_ap_set_ip_config_type(ap_obj->ap,
1171 WIFI_ADDRESS_FAMILY_IPV4, config_type);
1172 if (err != WIFI_ERROR_NONE) {
1173 WIFI_LOG_ERR("wifi_ap_set_ip_config_type() is failed. error = %s",
1174 wifi_error_to_string(err));
1178 bool wifi_manager_ap_is_ip_config_static(wifi_ap_object *ap_obj)
1180 return wifi_manager_ap_get_ip_config(ap_obj) == WIFI_IP_CONFIG_TYPE_STATIC;
1183 void wifi_manager_ap_set_ip_config_static(wifi_ap_object *ap_obj)
1185 wifi_manager_ap_set_ip_config(ap_obj, WIFI_IP_CONFIG_TYPE_STATIC);
1188 wifi_proxy_type_e wifi_manager_ap_get_proxy_type(wifi_ap_object *ap_obj)
1190 wifi_proxy_type_e proxy_type = WIFI_PROXY_TYPE_AUTO;
1192 WIFI_RET_VAL_IF_FAIL(ap_obj, WIFI_PROXY_TYPE_AUTO);
1194 err = wifi_ap_get_proxy_type(ap_obj->ap, &proxy_type);
1195 if (err != WIFI_ERROR_NONE) {
1196 WIFI_LOG_ERR("wifi_ap_get_proxy_type() is failed. error = %s",
1197 wifi_error_to_string(err));
1202 void wifi_manager_ap_set_proxy_type(wifi_ap_object *ap_obj, wifi_proxy_type_e proxy_type)
1205 WIFI_RET_IF_FAIL(ap_obj);
1207 err = wifi_ap_set_proxy_type(ap_obj->ap, proxy_type);
1208 if (err != WIFI_ERROR_NONE) {
1209 WIFI_LOG_ERR("wifi_ap_set_proxy_type() is failed. error = %s",
1210 wifi_error_to_string(err));
1214 bool wifi_manager_ap_is_proxy_manual(wifi_ap_object *ap_obj)
1216 return wifi_manager_ap_get_proxy_type(ap_obj) == WIFI_PROXY_TYPE_MANUAL;
1219 void wifi_manager_ap_set_proxy_manual(wifi_ap_object *ap_obj)
1221 wifi_manager_ap_set_proxy_type(ap_obj, WIFI_PROXY_TYPE_MANUAL);
1224 gchar *wifi_manager_ap_get_proxy_address(wifi_ap_object *ap_obj)
1226 gchar *proxy_address = NULL;
1227 char *saveptr = NULL;
1228 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, NULL);
1230 proxy_address = _ap_get_proxy_address(ap_obj);
1231 if (proxy_address == NULL) {
1232 WIFI_LOG_INFO("Proxy address is NULL.");
1236 return g_strdup(strtok_r(proxy_address, ":", &saveptr));
1239 gchar *wifi_manager_ap_get_proxy_port(wifi_ap_object *ap_obj)
1241 gchar *proxy_address = NULL;
1242 char *saveptr = NULL;
1243 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, NULL);
1245 proxy_address = _ap_get_proxy_address(ap_obj);
1246 if (proxy_address == NULL) {
1247 WIFI_LOG_INFO("Proxy address is NULL.");
1251 strtok_r(proxy_address, ":", &saveptr);
1252 return g_strdup(strtok_r(NULL, ":", &saveptr));
1255 void wifi_manager_ap_set_proxy_address(wifi_ap_object *ap_obj, const gchar *proxy_address)
1258 WIFI_RET_IF_FAIL(ap_obj);
1260 err = wifi_ap_set_proxy_address(ap_obj->ap, WIFI_ADDRESS_FAMILY_IPV4, proxy_address);
1261 if (err != WIFI_ERROR_NONE) {
1262 WIFI_LOG_ERR("wifi_ap_set_proxy_type() is failed. error = %s",
1263 wifi_error_to_string(err));
1267 bool wifi_manager_ap_is_wps_mode(wifi_ap_object *ap_obj)
1269 return ap_obj->wps_mode;
1272 bool wifi_manager_ap_is_favorite(wifi_manager_object *manager, wifi_ap_object *ap_obj)
1274 bool is_favorite = false;
1276 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, false);
1278 err = wifi_ap_is_favorite(ap_obj->ap, &is_favorite);
1279 if (err != WIFI_ERROR_NONE) {
1280 WIFI_LOG_ERR("wifi_ap_is_favorite() is failed. error = %d", err);
1285 gboolean wifi_manager_ap_has_configuration(wifi_manager_object *manager,
1286 wifi_ap_object *ap_obj)
1288 WIFI_RET_VAL_IF_FAIL(manager != NULL, FALSE);
1289 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, FALSE);
1291 if (_find_wifi_config_by_wifi_ap(manager, ap_obj) == NULL) {
1292 WIFI_LOG_INFO("AP config profile not found.");
1295 WIFI_LOG_INFO("AP has config profile.");
1299 wifi_error_e wifi_manager_ap_remove_configuration(wifi_manager_object *manager,
1300 wifi_ap_object *ap_obj)
1302 wifi_config_object *config;
1303 wifi_error_e error = WIFI_ERROR_NONE;
1304 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
1305 WIFI_RET_VAL_IF_FAIL(ap_obj != NULL, WIFI_ERROR_INVALID_PARAMETER);
1307 config = _find_wifi_config_by_wifi_ap(manager, ap_obj);
1308 WIFI_RET_VAL_IF_FAIL(config != NULL, WIFI_ERROR_INVALID_OPERATION);
1310 _update_wifi_config_list(manager);
1314 wifi_error_e wifi_manager_update_wifi_config_list(wifi_manager_object *manager)
1316 wifi_error_e error = WIFI_ERROR_NONE;
1318 WIFI_RET_VAL_IF_FAIL(manager != NULL, WIFI_ERROR_INVALID_PARAMETER);
1320 _update_wifi_config_list(manager);
1326 * Wearable connection API (weconn feature)
1329 gboolean wifi_manager_set_wifi_use(wifi_manager_object *manager, gboolean is_wifi_use)
1331 WIFI_RET_VAL_IF_FAIL(manager, FALSE);
1332 return vconf_set_wifi_use(is_wifi_use ? 1 : 0);
1335 gboolean wifi_manager_is_wifi_use(wifi_manager_object *manager)
1337 WIFI_RET_VAL_IF_FAIL(manager, FALSE);
1338 return vconf_is_wifi_use();
1341 gboolean wifi_manager_set_wifi_use_changed_cb(wifi_manager_object *manager,
1342 vconf_callback_fn callback, void *data)
1344 WIFI_RET_VAL_IF_FAIL(manager, FALSE);
1345 WIFI_LOG_INFO("VCONF_WIFI_USE - notify wifi key changed");
1346 return vconf_notify_wifi_key_changed(callback, data);