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

Commit f32be166 authored by Mike Lockwood's avatar Mike Lockwood
Browse files

wifi: Disable RSSI polling when the screen is off.

parent b82759a0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -192,6 +192,7 @@ public class WifiService extends IWifiManager.Stub {
    WifiService(Context context, WifiStateTracker tracker) {
        mContext = context;
        mWifiStateTracker = tracker;
        mWifiStateTracker.enableRssiPolling(true);
        mBatteryStats = BatteryStatsService.getService();
        
        /*
@@ -1560,9 +1561,11 @@ public class WifiService extends IWifiManager.Stub {
                mAlarmManager.cancel(mIdleIntent);
                mDeviceIdle = false;
                mScreenOff = false;
                mWifiStateTracker.enableRssiPolling(true);
            } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
                Log.d(TAG, "ACTION_SCREEN_OFF");
                mScreenOff = true;
                mWifiStateTracker.enableRssiPolling(false);
                /*
                 * Set a timer to put Wi-Fi to sleep, but only if the screen is off
                 * AND the "stay on while plugged in" setting doesn't match the
+16 −6
Original line number Diff line number Diff line
@@ -239,6 +239,7 @@ public class WifiStateTracker extends NetworkStateTracker {
    
    private boolean mIsScanModeActive;
    private boolean mIsScanModeSetDueToAHiddenNetwork;
    private boolean mEnableRssiPolling;

    // Wi-Fi run states:
    private static final int RUN_STATE_STARTING = 1;
@@ -338,6 +339,7 @@ public class WifiStateTracker extends NetworkStateTracker {
    private void setSupplicantState(SupplicantState state) {
        mWifiInfo.setSupplicantState(state);
        updateNetworkInfo();
        checkPollTimer();
    }

    public SupplicantState getSupplicantState() {
@@ -352,6 +354,7 @@ public class WifiStateTracker extends NetworkStateTracker {
    private void setSupplicantState(String stateName) {
        mWifiInfo.setSupplicantState(stateName);
        updateNetworkInfo();
        checkPollTimer();
    }

    /**
@@ -540,8 +543,10 @@ public class WifiStateTracker extends NetworkStateTracker {
     * Set the interval timer for polling connection information
     * that is not delivered asynchronously.
     */
    private synchronized void setPollTimer () {
        if (!hasMessages(EVENT_POLL_INTERVAL)) {
    private synchronized void checkPollTimer() {
        if (mEnableRssiPolling &&
                mWifiInfo.getSupplicantState() == SupplicantState.COMPLETED &&
                !hasMessages(EVENT_POLL_INTERVAL)) {
            sendEmptyMessageDelayed(EVENT_POLL_INTERVAL, POLL_STATUS_INTERVAL_MSECS);
        }
    }
@@ -637,6 +642,13 @@ public class WifiStateTracker extends NetworkStateTracker {
        setBluetoothScanMode(isBluetoothPlaying);
    }

    public void enableRssiPolling(boolean enable) {
        if (mEnableRssiPolling != enable) {
            mEnableRssiPolling = enable;
            checkPollTimer();
        }
    }

    @Override
    public void releaseWakeLock() {
        if (mReleaseWakeLockCallback != null) {
@@ -1022,9 +1034,7 @@ public class WifiStateTracker extends NetworkStateTracker {
            case EVENT_POLL_INTERVAL:
                if (mWifiInfo.getSupplicantState() != SupplicantState.UNINITIALIZED) {
                    requestPolledInfo(mWifiInfo);
                    if (mWifiInfo.getSupplicantState() == SupplicantState.COMPLETED) {
                        setPollTimer();
                    }
                    checkPollTimer();
                }
                break;
            
@@ -1163,7 +1173,7 @@ public class WifiStateTracker extends NetworkStateTracker {
    }

    private void configureInterface() {
        setPollTimer();
        checkPollTimer();
        mLastSignalLevel = -1;
        if (!mUseStaticIp) {
            if (!mHaveIpAddress && !mObtainingIpAddress) {