Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fae66c3a authored by Irfan Sheriff's avatar Irfan Sheriff
Browse files

DO NOT MERGE Enable all networks on screen on

Connectivity to a disabled network never happens.
An old dhcp issue for example prevents
connectivity again in future. Allow connectivity
on all networks on screen on.

Bug: 2129037
Change-Id: I42afc17ddb5cd238e46d7e50f1b6e708e107b35d
parent 581f7861
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -171,6 +171,7 @@ public class WifiService extends IWifiManager.Stub {
    private static final int MESSAGE_START_ACCESS_POINT = 6;
    private static final int MESSAGE_STOP_ACCESS_POINT  = 7;
    private static final int MESSAGE_SET_CHANNELS       = 8;
    private static final int MESSAGE_ENABLE_NETWORKS    = 9;


    private final  WifiHandler mWifiHandler;
@@ -1663,6 +1664,12 @@ public class WifiService extends IWifiManager.Stub {
                mDeviceIdle = false;
                mScreenOff = false;
                mWifiStateTracker.enableRssiPolling(true);
                /* DHCP or other temporary failures in the past can prevent
                 * a disabled network from being connected to, enable on screen on
                 */
                if (mWifiStateTracker.isAnyNetworkDisabled()) {
                    sendEnableNetworksMessage();
                }
            } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
                Slog.d(TAG, "ACTION_SCREEN_OFF");
                mScreenOff = true;
@@ -1794,6 +1801,10 @@ public class WifiService extends IWifiManager.Stub {
                uid, 0, wifiConfig).sendToTarget();
    }

    private void sendEnableNetworksMessage() {
        Message.obtain(mWifiHandler, MESSAGE_ENABLE_NETWORKS).sendToTarget();
    }

    private void updateWifiState() {
        // send a message so it's all serialized
        Message.obtain(mWifiHandler, MESSAGE_UPDATE_STATE, 0, 0).sendToTarget();
@@ -1956,6 +1967,10 @@ public class WifiService extends IWifiManager.Stub {
                    setNumAllowedChannelsBlocking(msg.arg1, msg.arg2 == 1);
                    break;

                case MESSAGE_ENABLE_NETWORKS:
                    mWifiStateTracker.enableAllNetworks(getConfiguredNetworks());
                    break;

            }
        }
    }
+28 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicBoolean;

/**
 * Track the state of Wifi connectivity. All event handling is done here,
@@ -216,6 +217,9 @@ public class WifiStateTracker extends NetworkStateTracker {
    private boolean mUseStaticIp = false;
    private int mReconnectCount;

    /* Tracks if any network in the configuration is disabled */
    private AtomicBoolean mIsAnyNetworkDisabled = new AtomicBoolean(false);

    // used to store the (non-persisted) num determined during device boot 
    // (from mcc or other phone info) before the driver is started.
    private int mNumAllowedChannels = 0;
@@ -814,6 +818,7 @@ public class WifiStateTracker extends NetworkStateTracker {
                mTornDownByConnMgr = false;
                mLastBssid = null;
                mLastSsid = null;
                mIsAnyNetworkDisabled.set(false);
                requestConnectionInfo();
                SupplicantState supplState = mWifiInfo.getSupplicantState();
                /**
@@ -1585,6 +1590,10 @@ public class WifiStateTracker extends NetworkStateTracker {
        mWifiState.set(wifiState);
    }

    public boolean isAnyNetworkDisabled() {
        return mIsAnyNetworkDisabled.get();
    }

   /**
     * The WifiNative interface functions are listed below.
     * The only native call that is not synchronized on
@@ -1785,9 +1794,27 @@ public class WifiStateTracker extends NetworkStateTracker {
        if (mWifiState.get() != WIFI_STATE_ENABLED) {
            return false;
        }
        if (disableOthers) mIsAnyNetworkDisabled.set(true);
        return WifiNative.enableNetworkCommand(netId, disableOthers);
    }

    /**
     * Enable all networks
     *
     * @param networks list of configured networks
     */
    public synchronized void enableAllNetworks(List<WifiConfiguration> networks) {
        if (mWifiState.get() != WIFI_STATE_ENABLED) {
            return;
        }
        mIsAnyNetworkDisabled.set(false);
        for (WifiConfiguration config : networks) {
            if (config.status == WifiConfiguration.Status.DISABLED) {
                WifiNative.enableNetworkCommand(config.networkId, false);
            }
        }
    }

    /**
     * Disable a network
     *
@@ -1798,6 +1825,7 @@ public class WifiStateTracker extends NetworkStateTracker {
        if (mWifiState.get() != WIFI_STATE_ENABLED) {
            return false;
        }
        mIsAnyNetworkDisabled.set(true);
        return WifiNative.disableNetworkCommand(netId);
    }