Merge "Revise background scan routine" into tizen
[platform/core/connectivity/net-config.git] / src / wifi-state.c
index 40d0a95..5d89458 100755 (executable)
@@ -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:
@@ -352,7 +352,7 @@ static void _deregister_network_notification(void)
 static void _set_power_save(gboolean power_save)
 {
        gboolean result;
-       const char *if_path;
+       char *if_path;
        GVariant *input_args = NULL;
        static gboolean old_state = TRUE;
        const gchar *args_disable = "POWERMODE 1";
@@ -367,9 +367,9 @@ static void _set_power_save(gboolean power_save)
        }
 
        if (power_save)
-               input_args = g_variant_new_string(args_enable);
+               input_args = g_variant_new("(s)", args_enable);
        else
-               input_args = g_variant_new_string(args_disable);
+               input_args = g_variant_new("(s)", args_disable);
 
        result = netconfig_supplicant_invoke_dbus_method_nonblock(
                        SUPPLICANT_SERVICE,
@@ -383,7 +383,8 @@ static void _set_power_save(gboolean power_save)
        else
                old_state = power_save;
 
-       g_variant_unref(input_args);
+       g_free(if_path);
+
        return;
 }
 
@@ -429,12 +430,14 @@ static void _set_power_lock(gboolean power_lock)
                return;
        }
 
-       ret = g_variant_get_int32(reply);
-       if (ret < 0)
-               ERR("Failed to set power lock %s with ret %d",
+       if (g_variant_is_of_type(reply, G_VARIANT_TYPE_INT32)) {
+               ret = g_variant_get_int32(reply);
+               if (ret < 0)
+                       ERR("Failed to set power lock %s with ret %d",
                                power_lock == TRUE ? "enable" : "disable", ret);
-       else
-               old_state = power_lock;
+               else
+                       old_state = power_lock;
+       }
 
        g_variant_unref(reply);
 
@@ -485,6 +488,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 */
@@ -508,7 +512,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);
@@ -610,14 +613,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);
@@ -693,7 +694,6 @@ wifi_tech_state_e wifi_state_get_technology_state(void)
                                DBG("%s", sdata);
                        }
                }
-               g_variant_iter_free(next);
        }
 
        g_variant_unref(message);