WCM: track PNO scan state
Add a flag to track if PNO scan is started.
Bug: 29822923
Change-Id: I96416eb5a6590a52800b962838d2e87d9f52bb1a
Tests: Wifi Framework Unit Tests
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index e781d07..fa50bb0 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -148,6 +148,7 @@
private String mLastConnectionAttemptBssid = null;
private int mPeriodicSingleScanInterval = PERIODIC_SCAN_INTERVAL_MS;
private long mLastPeriodicSingleScanTimeStamp = RESET_TIME_STAMP;
+ private boolean mPnoScanStarted = false;
// PNO settings
private int mMin5GHzRssi;
@@ -332,7 +333,7 @@
// while PNO scan didn't.
// Note: We don't update the background scan metrics any more as it is
// not in use.
- if (!mScreenOn && mWifiState == WIFI_STATE_DISCONNECTED) {
+ if (mPnoScanStarted) {
if (wasConnectAttempted) {
mWifiMetrics.incrementNumConnectivityWatchdogPnoBad();
} else {
@@ -860,6 +861,7 @@
mPnoScanListener.clearScanDetails();
mScanner.startDisconnectedPnoScan(scanSettings, pnoSettings, mPnoScanListener);
+ mPnoScanStarted = true;
}
// Start a ConnectedPNO scan when screen is off and Wifi is connected
@@ -903,6 +905,16 @@
mPnoScanListener.clearScanDetails();
mScanner.startConnectedPnoScan(scanSettings, pnoSettings, mPnoScanListener);
+ mPnoScanStarted = true;
+ }
+
+ // Stop a PNO scan. This includes both DisconnectedPNO and ConnectedPNO scans.
+ private void stopPnoScan() {
+ if (mPnoScanStarted) {
+ mScanner.stopPnoScan(mPnoScanListener);
+ }
+
+ mPnoScanStarted = false;
}
// Set up watchdog timer
@@ -989,7 +1001,7 @@
} else {
mScanner.stopBackgroundScan(mPeriodicScanListener);
}
- mScanner.stopPnoScan(mPnoScanListener);
+ stopPnoScan();
mScanRestartCount = 0;
}