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

Commit 3fb4ba61 authored by Irfan Sheriff's avatar Irfan Sheriff
Browse files

Add control to disable suspend optimizations

Add an advanced setting that allows user to turn off power savings at screen off.

Bug: 5885175
Change-Id: I2dd013b86d7500a2ad1f9ec75d86551808f05543
parent 2c02933b
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -3287,6 +3287,14 @@ public final class Settings {
        public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED =
                "wifi_watchdog_poor_network_test_enabled";

        /**
         * Setting to turn on suspend optimizations at screen off on Wi-Fi. Enabled by default and
         * needs to be set to 0 to disable it.
         * @hide
         */
        public static final String WIFI_SUSPEND_OPTIMIZATIONS_ENABLED =
                "wifi_suspend_optimizations_enabled";

        /**
         * Setting to turn off walled garden test on Wi-Fi. Feature is enabled by default and
         * the setting needs to be set to 0 to disable it.
+29 −4
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.net.ConnectivityManager;
import android.net.DhcpInfo;
import android.net.DhcpInfoInternal;
@@ -138,6 +139,8 @@ public class WifiStateMachine extends StateMachine {
    private boolean mSetScanActive = false;
    /* High perf mode is true if an app has held a high perf Wifi Lock */
    private boolean mHighPerfMode = false;
    /* Tracks if user has disabled suspend optimizations through settings */
    private AtomicBoolean mSuspendOptEnabled = new AtomicBoolean(true);

    private boolean mBluetoothConnectionActive = false;

@@ -591,6 +594,9 @@ public class WifiStateMachine extends StateMachine {
        mPrimaryDeviceType = mContext.getResources().getString(
                com.android.internal.R.string.config_wifi_p2p_device_type);

        mSuspendOptEnabled.set(Settings.Secure.getInt(mContext.getContentResolver(),
                    Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED, 1) == 1);

        mContext.registerReceiver(
            new BroadcastReceiver() {
                @Override
@@ -626,18 +632,25 @@ public class WifiStateMachine extends StateMachine {
                        enableBackgroundScanCommand(false);
                    }
                    enableAllNetworks();
                    if (mSuspendOptEnabled.get()) {
                        if (DBG) log("Clear suspend optimizations");
                        sendMessage(CMD_CLEAR_SUSPEND_OPTIMIZATIONS);
                    }
                } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
                    enableRssiPolling(false);
                    if (mBackgroundScanSupported) {
                        enableBackgroundScanCommand(true);
                    }
                    if (mSuspendOptEnabled.get()) {
                        if (DBG) log("Enable suspend optimizations");
                        //Allow 2s for suspend optimizations to be set
                        mSuspendWakeLock.acquire(2000);
                        sendMessage(CMD_SET_SUSPEND_OPTIMIZATIONS);
                    }
                }
            }
        };

        mContext.registerReceiver(
                new BroadcastReceiver() {
                    @Override
@@ -648,6 +661,16 @@ public class WifiStateMachine extends StateMachine {
                },
                new IntentFilter(ACTION_DELAYED_DRIVER_STOP));

        mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
                Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED), false,
                new ContentObserver(getHandler()) {
                    @Override
                    public void onChange(boolean selfChange) {
                        mSuspendOptEnabled.set(Settings.Secure.getInt(mContext.getContentResolver(),
                                Settings.Secure.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED, 1) == 1);
                    }
                });

        mScanResultCache = new LruCache<String, ScanResult>(SCAN_RESULT_CACHE_SIZE);

        PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
@@ -1133,6 +1156,8 @@ public class WifiStateMachine extends StateMachine {
        sb.append("mLastNetworkId ").append(mLastNetworkId).append(LS);
        sb.append("mReconnectCount ").append(mReconnectCount).append(LS);
        sb.append("mIsScanMode ").append(mIsScanMode).append(LS);
        sb.append("mHighPerfMode").append(mHighPerfMode).append(LS);
        sb.append("mSuspendOptEnabled").append(mSuspendOptEnabled).append(LS);
        sb.append("Supplicant status").append(LS)
                .append(mWifiNative.status()).append(LS).append(LS);