summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorMehdi Alizadeh <mett@google.com>2017-08-10 18:16:38 -0700
committerMehdi Alizadeh <mett@google.com>2017-09-01 20:14:10 +0000
commita2dae3436431f3fe2ac79ad087fe62f6fcda8ad7 (patch)
treeee23392efeb18b3a08ce3b314dcb9d62c64b1b2a /service
parentd2c7a6041bbdf91d3cedbcb16ca06d37f449d95a (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.java61
-rw-r--r--service/java/com/android/server/wifi/WificondControl.java16
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;
}