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

Commit 0983eadf authored by Robert Greenwalt's avatar Robert Greenwalt Committed by Android (Google) Code Review
Browse files

Merge "Fix BatchScan request coalesing" into klp-dev

parents ca833c38 13820af3
Loading
Loading
Loading
Loading
+15 −23
Original line number Diff line number Diff line
@@ -455,9 +455,7 @@ public final class WifiService extends IWifiManager.Stub {

    private void resolveBatchedScannersLocked() {
        BatchedScanSettings setting = new BatchedScanSettings();
        setting.scanIntervalSec = BatchedScanSettings.DEFAULT_INTERVAL_SEC;
        int responsibleUid = 0;
        setting.channelSet = new ArrayList<String>();

        if (mBatchedScanners.size() == 0) {
            mWifiStateMachine.setBatchedScanSettings(null, 0);
@@ -481,31 +479,25 @@ public final class WifiService extends IWifiManager.Stub {
                responsibleUid = r.uid;
            }
            if (s.maxApForDistance != BatchedScanSettings.UNSPECIFIED &&
                    s.maxApForDistance > setting.maxApForDistance) {
                    (setting.maxApForDistance == BatchedScanSettings.UNSPECIFIED ||
                    s.maxApForDistance > setting.maxApForDistance)) {
                setting.maxApForDistance = s.maxApForDistance;
            }
            if (s.channelSet != null) {
            if (s.channelSet != null && s.channelSet.size() != 0) {
                if (setting.channelSet == null || setting.channelSet.size() != 0) {
                    if (setting.channelSet == null) setting.channelSet = new ArrayList<String>();
                    for (String i : s.channelSet) {
                        if (setting.channelSet.contains(i) == false) setting.channelSet.add(i);
                    }
                } // else, ignore the constraint - we already use all channels
            } else {
                if (setting.channelSet == null || setting.channelSet.size() != 0) {
                    setting.channelSet = new ArrayList<String>();
                }
            }
        if (setting.channelSet.size() == 0) setting.channelSet = null;
        if (setting.scanIntervalSec < BatchedScanSettings.MIN_INTERVAL_SEC) {
            setting.scanIntervalSec = BatchedScanSettings.MIN_INTERVAL_SEC;
        }
        if (setting.maxScansPerBatch == BatchedScanSettings.UNSPECIFIED) {
            setting.maxScansPerBatch = BatchedScanSettings.DEFAULT_SCANS_PER_BATCH;
        }
        if (setting.maxApPerScan == BatchedScanSettings.UNSPECIFIED) {
            setting.maxApPerScan = BatchedScanSettings.DEFAULT_AP_PER_SCAN;
        }
        if (setting.scanIntervalSec == BatchedScanSettings.UNSPECIFIED) {
            setting.scanIntervalSec = BatchedScanSettings.DEFAULT_INTERVAL_SEC;
        }
        if (setting.maxApForDistance == BatchedScanSettings.UNSPECIFIED) {
            setting.maxApForDistance = BatchedScanSettings.DEFAULT_AP_FOR_DISTANCE;
        }

        setting.constrain();
        mWifiStateMachine.setBatchedScanSettings(setting, responsibleUid);
    }

+36 −0
Original line number Diff line number Diff line
@@ -135,6 +135,42 @@ public class BatchedScanSettings implements Parcelable {
        return false;
    }

    /** @hide */
    public void constrain() {
        if (scanIntervalSec == UNSPECIFIED) {
            scanIntervalSec = DEFAULT_INTERVAL_SEC;
        } else if (scanIntervalSec < MIN_INTERVAL_SEC) {
            scanIntervalSec = MIN_INTERVAL_SEC;
        } else if (scanIntervalSec > MAX_INTERVAL_SEC) {
            scanIntervalSec = MAX_INTERVAL_SEC;
        }

        if (maxScansPerBatch == UNSPECIFIED) {
            maxScansPerBatch = DEFAULT_SCANS_PER_BATCH;
        } else if (maxScansPerBatch < MIN_SCANS_PER_BATCH) {
            maxScansPerBatch = MIN_SCANS_PER_BATCH;
        } else if (maxScansPerBatch > MAX_SCANS_PER_BATCH) {
            maxScansPerBatch = MAX_SCANS_PER_BATCH;
        }

        if (maxApPerScan == UNSPECIFIED) {
            maxApPerScan = DEFAULT_AP_PER_SCAN;
        } else if (maxApPerScan < MIN_AP_PER_SCAN) {
            maxApPerScan = MIN_AP_PER_SCAN;
        } else if (maxApPerScan > MAX_AP_PER_SCAN) {
            maxApPerScan = MAX_AP_PER_SCAN;
        }

        if (maxApForDistance == UNSPECIFIED) {
            maxApForDistance = DEFAULT_AP_FOR_DISTANCE;
        } else if (maxApForDistance < MIN_AP_FOR_DISTANCE) {
            maxApForDistance = MIN_AP_FOR_DISTANCE;
        } else if (maxApForDistance > MAX_AP_FOR_DISTANCE) {
            maxApForDistance = MAX_AP_FOR_DISTANCE;
        }
    }


    @Override
    public boolean equals(Object obj) {
        if (obj instanceof BatchedScanSettings == false) return false;