diff options
author | Mehdi Alizadeh <mett@google.com> | 2017-08-10 18:16:38 -0700 |
---|---|---|
committer | Mehdi Alizadeh <mett@google.com> | 2017-09-01 20:14:10 +0000 |
commit | a2dae3436431f3fe2ac79ad087fe62f6fcda8ad7 (patch) | |
tree | ee23392efeb18b3a08ce3b314dcb9d62c64b1b2a /service | |
parent | d2c7a6041bbdf91d3cedbcb16ca06d37f449d95a (diff) |
Adds definitions to collect wifi Pno metrics
Provide APIs from WifiMetrics to update PNO scan counters. Include these
metrics in dumpsys and update unit tests to verify deserialization of
newly added metrics.
Bug: 32842314
Test: Unit test and verify values in dumpsys
Change-Id: I536cd9081a8cfe70f044818e7febd08003ccc702
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/WifiMetrics.java | 61 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/WificondControl.java | 16 |
2 files changed, 72 insertions, 5 deletions
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java index 7dfdb86d3..8e6cd8e10 100644 --- a/service/java/com/android/server/wifi/WifiMetrics.java +++ b/service/java/com/android/server/wifi/WifiMetrics.java @@ -37,6 +37,7 @@ import com.android.server.wifi.hotspot2.PasspointManager; import com.android.server.wifi.hotspot2.PasspointMatch; import com.android.server.wifi.hotspot2.PasspointProvider; import com.android.server.wifi.nano.WifiMetricsProto; +import com.android.server.wifi.nano.WifiMetricsProto.PnoScanMetrics; import com.android.server.wifi.nano.WifiMetricsProto.StaEvent; import com.android.server.wifi.nano.WifiMetricsProto.StaEvent.ConfigInfo; import com.android.server.wifi.util.InformationElementUtil; @@ -86,6 +87,7 @@ public class WifiMetrics { private boolean mScreenOn; private int mWifiState; private WifiAwareMetrics mWifiAwareMetrics; + private final PnoScanMetrics mPnoScanMetrics = new PnoScanMetrics(); private Handler mHandler; private WifiConfigManager mWifiConfigManager; private WifiNetworkSelector mWifiNetworkSelector; @@ -407,6 +409,51 @@ public class WifiMetrics { mPasspointManager = passpointManager; } + /** + * Increment total number of attempts to start a pno scan + */ + public void incrementPnoScanStartAttempCount() { + synchronized (mLock) { + mPnoScanMetrics.numPnoScanAttempts++; + } + } + + /** + * Increment total number of attempts with pno scan failed + */ + public void incrementPnoScanFailedCount() { + synchronized (mLock) { + mPnoScanMetrics.numPnoScanFailed++; + } + } + + /** + * Increment number of pno scans started successfully over offload + */ + public void incrementPnoScanStartedOverOffloadCount() { + synchronized (mLock) { + mPnoScanMetrics.numPnoScanStartedOverOffload++; + } + } + + /** + * Increment number of pno scans failed over offload + */ + public void incrementPnoScanFailedOverOffloadCount() { + synchronized (mLock) { + mPnoScanMetrics.numPnoScanFailedOverOffload++; + } + } + + /** + * Increment number of times pno scan found a result + */ + public void incrementPnoFoundNetworkEventCount() { + synchronized (mLock) { + mPnoScanMetrics.numPnoFoundNetworkEvents++; + } + } + // Values used for indexing SystemStateEntries private static final int SCREEN_ON = 1; private static final int SCREEN_OFF = 0; @@ -1430,6 +1477,17 @@ public class WifiMetrics { + mWifiLogProto.fullBandAllSingleScanListenerResults); pw.println("mWifiAwareMetrics:"); mWifiAwareMetrics.dump(fd, pw, args); + + pw.println("mPnoScanMetrics.numPnoScanAttempts=" + + mPnoScanMetrics.numPnoScanAttempts); + pw.println("mPnoScanMetrics.numPnoScanFailed=" + + mPnoScanMetrics.numPnoScanFailed); + pw.println("mPnoScanMetrics.numPnoScanStartedOverOffload=" + + mPnoScanMetrics.numPnoScanStartedOverOffload); + pw.println("mPnoScanMetrics.numPnoScanFailedOverOffload=" + + mPnoScanMetrics.numPnoScanFailedOverOffload); + pw.println("mPnoScanMetrics.numPnoFoundNetworkEvents=" + + mPnoScanMetrics.numPnoFoundNetworkEvents); } } } @@ -1631,6 +1689,8 @@ public class WifiMetrics { mAvailableSavedPasspointProviderBssidsInScanHistogram); mWifiLogProto.staEventList = mStaEventList.toArray(mWifiLogProto.staEventList); mWifiLogProto.wifiAwareLog = mWifiAwareMetrics.consolidateProto(); + + mWifiLogProto.pnoScanMetrics = mPnoScanMetrics; } } @@ -1679,6 +1739,7 @@ public class WifiMetrics { mAvailableOpenOrSavedBssidsInScanHistogram.clear(); mAvailableSavedPasspointProviderProfilesInScanHistogram.clear(); mAvailableSavedPasspointProviderBssidsInScanHistogram.clear(); + mPnoScanMetrics.clear(); } } diff --git a/service/java/com/android/server/wifi/WificondControl.java b/service/java/com/android/server/wifi/WificondControl.java index 70ecabccf..056777fd9 100644 --- a/service/java/com/android/server/wifi/WificondControl.java +++ b/service/java/com/android/server/wifi/WificondControl.java @@ -99,24 +99,25 @@ public class WificondControl { public void OnPnoNetworkFound() { Log.d(TAG, "Pno scan result event"); mWifiMonitor.broadcastPnoScanResultEvent(mClientInterfaceName); + mWifiInjector.getWifiMetrics().incrementPnoFoundNetworkEventCount(); } @Override public void OnPnoScanFailed() { Log.d(TAG, "Pno Scan failed event"); - // Nothing to do for now. + mWifiInjector.getWifiMetrics().incrementPnoScanFailedCount(); } @Override public void OnPnoScanOverOffloadStarted() { Log.d(TAG, "Pno scan over offload started"); - // Update metrics + mWifiInjector.getWifiMetrics().incrementPnoScanStartedOverOffloadCount(); } @Override public void OnPnoScanOverOffloadFailed(int reason) { Log.d(TAG, "Pno scan over offload failed"); - // Update metrics + mWifiInjector.getWifiMetrics().incrementPnoScanFailedOverOffloadCount(); } } @@ -475,9 +476,14 @@ public class WificondControl { } try { - return mWificondScanner.startPnoScan(settings); + boolean success = mWificondScanner.startPnoScan(settings); + mWifiInjector.getWifiMetrics().incrementPnoScanStartAttempCount(); + if (!success) { + mWifiInjector.getWifiMetrics().incrementPnoScanFailedCount(); + } + return success; } catch (RemoteException e1) { - Log.e(TAG, "Failed to stop pno scan due to remote exception"); + Log.e(TAG, "Failed to start pno scan due to remote exception"); } return false; } |