Modified way of update rssi value
[platform/core/connectivity/net-config.git] / src / wifi-power.c
index c34bccf..c0236c7 100755 (executable)
@@ -23,6 +23,7 @@
 #include <ITapiSim.h>
 #include <TapiUtility.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <tzplatform_config.h>
 
 #if defined TIZEN_P2P_ENABLE && !defined WLAN_CONCURRENT_MODE
@@ -246,6 +247,7 @@ static int _remove_driver_and_supplicant(void)
 {
        int err = 0;
 
+       INFO("remove driver and supplicant");
        if (wifi_firmware_recovery_mode != TRUE &&
                                        netconfig_wifi_is_wps_enabled() == TRUE) {
                DBG("Wi-Fi WPS mode");
@@ -262,6 +264,9 @@ static int _remove_driver_and_supplicant(void)
 
        wifi_state_set_tech_state(NETCONFIG_WIFI_TECH_OFF);
 
+       // reset service state
+       wifi_state_set_service_state(NETCONFIG_WIFI_IDLE);
+
        if (wifi_firmware_recovery_mode == TRUE) {
                if (wifi_power_on() < 0)
                        ERR("Failed to recover Wi-Fi firmware");
@@ -340,28 +345,6 @@ static void __netconfig_set_wifi_bssid(void)
        fclose(fp);
 }
 
-int netconfig_wifi_driver_and_supplicant(gboolean enable)
-{
-       /* There are 3 thumb rules for Wi-Fi power management
-        *   1. Do not make exposed API to control wpa_supplicant and driver directly.
-        *      It probably breaks ConnMan technology operation.
-        *
-        *   2. Do not remove driver and wpa_supplicant if ConnMan already enabled.
-        *      It breaks ConnMan technology operation.
-        *
-        *   3. Final the best rule: make it as simple as possible.
-        *      Simple code enables easy maintenance and reduces logical errors.
-        */
-       if (enable == TRUE)
-               return _load_driver_and_supplicant();
-       else {
-               if (connman_wifi_technology_state == TRUE)
-                       return -ENOSYS;
-
-               return _load_driver_and_supplicant();
-       }
-}
-
 void netconfig_wifi_disable_technology_state_by_only_connman_signal(void)
 {
        /* Important: it's only done by ConnMan technology signal update */
@@ -786,8 +769,23 @@ int wifi_power_on(void)
        wifi_tech_state_e tech_state;
 
        tech_state = wifi_state_get_technology_state();
-       if (tech_state >= NETCONFIG_WIFI_TECH_POWERED)
+       if (tech_state >= NETCONFIG_WIFI_TECH_POWERED) {
+               /* There can be a scenario where wifi is automatically *
+                * activated by connman if wifi was powered in last boot. *
+                * So we should update connman_wifi_technology_state variable *
+                * if it is found that wifi_tech_state variable is *
+                * NETCONFIG_WIFI_TECH_POWERED and connman_wifi_technology_state *
+                * variable is FALSE. Earlier connman_wifi_technology_state *
+                * variable was only updated when wifi was Powered on from *
+                * net-config resulting in variable not getting updated. *
+                * This caused wifi to not get deactivated after reboot if *
+                * last power state was activated */
+               ERR("Net-Config WiFi connman technology state %d",
+                               connman_wifi_technology_state);
+               if (connman_wifi_technology_state == FALSE)
+                       connman_wifi_technology_state = TRUE;
                return -EALREADY;
+       }
 
        if (__is_wifi_restricted() == TRUE)
                return -EPERM;