Check already powered during Wi-Fi enable/disable
[framework/connectivity/net-config.git] / src / wifi-state.c
index 6293f13..9028b5b 100644 (file)
@@ -309,37 +309,47 @@ void netconfig_wifi_update_power_state(gboolean powered)
 {
        int wifi_state = 0;
 
+       /* It's automatically updated by signal-handler
+        * DO NOT update manually
+        * It includes Wi-Fi state configuration
+        */
        vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_state);
 
        if (powered == TRUE) {
                if (wifi_state == VCONFKEY_WIFI_OFF &&
                                netconfig_is_wifi_direct_on() != TRUE &&
                                netconfig_is_wifi_tethering_on() != TRUE) {
-                       DBG("Wi-Fi successfully turned on");
+                       DBG("Wi-Fi successfully turned on or waken up from power-save mode");
 
                        vconf_set_int(VCONFKEY_NETWORK_WIFI_STATE, VCONFKEY_NETWORK_WIFI_NOT_CONNECTED);
-
                        vconf_set_int(VCONF_WIFI_LAST_POWER_STATE, WIFI_POWER_ON);
-
                        vconf_set_int(VCONFKEY_WIFI_STATE, VCONFKEY_WIFI_UNCONNECTED);
 
+                       netconfig_wifi_notify_power_completed(TRUE);
+
+                       netconfig_wifi_device_picker_service_start();
+
                        netconfig_wifi_bgscan_start();
                }
        } else {
                if (wifi_state != VCONFKEY_WIFI_OFF) {
-                       DBG("Wi-Fi successfully turned off");
+                       DBG("Wi-Fi successfully turned off or in power-save mode");
 
-                       netconfig_del_wifi_found_notification();
+                       netconfig_wifi_device_picker_service_stop();
 
-                       netconfig_wifi_bgscan_stop();
-
-                       __netconfig_wifi_set_profiles_count(0);
+                       netconfig_wifi_remove_driver();
 
                        vconf_set_int(VCONFKEY_NETWORK_WIFI_STATE, VCONFKEY_NETWORK_WIFI_OFF);
-
                        vconf_set_int(VCONF_WIFI_LAST_POWER_STATE, WIFI_POWER_OFF);
-
                        vconf_set_int(VCONFKEY_WIFI_STATE, VCONFKEY_WIFI_OFF);
+
+                       netconfig_wifi_notify_power_completed(FALSE);
+
+                       netconfig_del_wifi_found_notification();
+
+                       netconfig_wifi_bgscan_stop();
+
+                       __netconfig_wifi_set_profiles_count(0);
                }
        }
 }