X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwifi-state.c;h=27c64f1f070631b638434285dbb23da2afe36e8f;hb=8d9d52785402a1572c466178a3ab5e6838715183;hp=d6bc33ec044352812dc75794c30b888ffcbc6802;hpb=7fa6d6076981f49f21f7cac81a75762abea3114b;p=platform%2Fcore%2Fconnectivity%2Fnet-config.git diff --git a/src/wifi-state.c b/src/wifi-state.c index d6bc33e..27c64f1 100755 --- a/src/wifi-state.c +++ b/src/wifi-state.c @@ -44,7 +44,7 @@ static GSList *notifier_list = NULL; static guint network_connected_popup_timer_id = 0; static gboolean block_network_connected_popup = FALSE; -static const char *_convert_wifi_service_state_to_string(wifi_service_state_e wifi_service_state_type) +char *_convert_wifi_service_state_to_string(wifi_service_state_e wifi_service_state_type) { switch (wifi_service_state_type) { case NETCONFIG_WIFI_UNKNOWN: @@ -67,7 +67,7 @@ static const char *_convert_wifi_service_state_to_string(wifi_service_state_e wi return "Invalid parameter"; } -static const char *_convert_wifi_technology_state_to_string(wifi_tech_state_e wifi_tech_state_type) +char *_convert_wifi_technology_state_to_string(wifi_tech_state_e wifi_tech_state_type) { switch (wifi_tech_state_type) { case NETCONFIG_WIFI_TECH_UNKNOWN: @@ -349,45 +349,6 @@ static void _deregister_network_notification(void) vconf_ignore_key_changed(VCONFKEY_WIFI_ENABLE_QS, __notification_value_changed_cb); } -static void _set_power_save(gboolean power_save) -{ - gboolean result; - char *if_path; - GVariant *input_args = NULL; - static gboolean old_state = TRUE; - const gchar *args_disable = "POWERMODE 1"; - const gchar *args_enable = "POWERMODE 0"; - if (old_state == power_save) - return; - - if_path = netconfig_wifi_get_supplicant_interface(); - if (if_path == NULL) { - ERR("Fail to get wpa_supplicant DBus path"); - return; - } - - if (power_save) - input_args = g_variant_new("(s)", args_enable); - else - input_args = g_variant_new("(s)", args_disable); - - result = netconfig_supplicant_invoke_dbus_method_nonblock( - SUPPLICANT_SERVICE, - if_path, - SUPPLICANT_INTERFACE ".Interface", - "Driver", - input_args, - NULL); - if (result == FALSE) - ERR("Fail to set power save mode POWERMODE %d", power_save); - else - old_state = power_save; - - g_free(if_path); - - return; -} - static void _set_power_lock(gboolean power_lock) { gint32 ret = 0; @@ -488,6 +449,7 @@ void wifi_state_update_power_state(gboolean powered) netconfig_set_system_event(SYS_EVT_WIFI_STATE, EKEY_WIFI_STATE, EVAL_WIFI_ON); netconfig_wifi_bgscan_stop(); + netconfig_wifi_bgscan_set_interval(SCAN_EXPONENTIAL_MIN); netconfig_wifi_bgscan_start(TRUE); /* Add callback to track change in notification setting */ @@ -511,7 +473,6 @@ void wifi_state_update_power_state(gboolean powered) netconfig_set_system_event(SYS_EVT_WIFI_STATE, EKEY_WIFI_STATE, EVAL_WIFI_OFF); - netconfig_wifi_set_bgscan_pause(FALSE); netconfig_wifi_bgscan_stop(); _set_bss_found(FALSE); @@ -519,6 +480,7 @@ void wifi_state_update_power_state(gboolean powered) /* Inform net-popup to remove the wifi found notification */ netconfig_send_notification_to_net_popup(NETCONFIG_DEL_FOUND_AP_NOTI, NULL); netconfig_send_notification_to_net_popup(NETCONFIG_DEL_PORTAL_NOTI, NULL); + netconfig_send_notification_to_net_popup(NETCONFIG_DEL_IP_CONFLICT_NOTI, NULL); _deregister_network_notification(); } @@ -582,11 +544,9 @@ void wifi_state_set_service_state(wifi_service_state_e new_state) /* During DHCP, temporarily disable Wi-Fi power saving */ if ((old_state < NETCONFIG_WIFI_ASSOCIATION || old_state == NETCONFIG_WIFI_FAILURE) && new_state == NETCONFIG_WIFI_CONFIGURATION) { _set_power_lock(TRUE); - _set_power_save(FALSE); dhcp_stage = TRUE; } else if (dhcp_stage == TRUE) { _set_power_lock(FALSE); - _set_power_save(TRUE); dhcp_stage = FALSE; } @@ -613,14 +573,12 @@ void wifi_state_set_service_state(wifi_service_state_e new_state) netconfig_wifi_indicator_stop(); - netconfig_wifi_set_bgscan_pause(FALSE); - netconfig_wifi_bgscan_stop(); + netconfig_wifi_bgscan_set_interval(SCAN_EXPONENTIAL_MIN); netconfig_wifi_bgscan_start(TRUE); } else if ((old_state > NETCONFIG_WIFI_IDLE && old_state < NETCONFIG_WIFI_CONNECTED) && new_state == NETCONFIG_WIFI_IDLE) { /* in ipv6 case disconnect/association -> association */ DBG("reset the bg scan period"); - netconfig_wifi_set_bgscan_pause(FALSE); netconfig_wifi_bgscan_stop(); netconfig_wifi_bgscan_start(TRUE); @@ -713,6 +671,34 @@ wifi_tech_state_e wifi_state_get_technology_state(void) return g_tech_state; } +gboolean wifi_state_is_technology_available(void) +{ + GVariant *message = NULL; + GVariantIter *iter, *next; + const char *path; + gboolean ret = FALSE; + + message = netconfig_invoke_dbus_method(CONNMAN_SERVICE, + CONNMAN_MANAGER_PATH, CONNMAN_MANAGER_INTERFACE, + "GetTechnologies", NULL); + if (message == NULL) { + ERR("Failed to get_technology_state"); + return FALSE; + } + + g_variant_get(message, "(a(oa{sv}))", &iter); + while (g_variant_iter_loop(iter, "(oa{sv})", &path, &next)) { + if (path != NULL && g_strcmp0(path, CONNMAN_WIFI_TECHNOLOGY_PREFIX) == 0) + ret = TRUE; + } + + g_variant_unref(message); + g_variant_iter_free(iter); + + DBG("Wi-Fi technology is %s", ret ? "available" : "unavailable"); + return ret; +} + void wifi_state_set_connected_essid(void) { __set_wifi_connected_essid(); @@ -739,7 +725,7 @@ void wifi_state_get_connected_essid(gchar **essid) */ gboolean handle_get_wifi_state(Wifi *wifi, GDBusMethodInvocation *context) { - g_return_val_if_fail(wifi != NULL, FALSE); + g_return_val_if_fail(wifi != NULL, TRUE); GVariant *param = NULL; wifi_tech_state_e tech_state = NETCONFIG_WIFI_TECH_UNKNOWN; wifi_service_state_e service_state = NETCONFIG_WIFI_UNKNOWN;