summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiMetrics.java80
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointManager.java1
2 files changed, 81 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java
index a3bd1697c..0b746196f 100644
--- a/service/java/com/android/server/wifi/WifiMetrics.java
+++ b/service/java/com/android/server/wifi/WifiMetrics.java
@@ -18,11 +18,13 @@ package com.android.server.wifi;
import android.hardware.wifi.supplicant.V1_0.ISupplicantStaIfaceCallback;
import android.net.NetworkAgent;
+import android.net.wifi.EAPConstants;
import android.net.wifi.ScanResult;
import android.net.wifi.SupplicantState;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import android.net.wifi.hotspot2.PasspointConfiguration;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -175,6 +177,8 @@ public class WifiMetrics {
private final SparseIntArray mAvailableSavedPasspointProviderBssidsInScanHistogram =
new SparseIntArray();
+ private final SparseIntArray mInstalledPasspointProfileType = new SparseIntArray();
+
/** Mapping of "Connect to Network" notifications to counts. */
private final SparseIntArray mConnectToNetworkNotificationCount = new SparseIntArray();
/** Mapping of "Connect to Network" notification user actions to counts. */
@@ -2028,6 +2032,14 @@ public class WifiMetrics {
+ mWifiLogProto.numPasspointProviderUninstallSuccess);
pw.println("mWifiLogProto.numPasspointProvidersSuccessfullyConnected="
+ mWifiLogProto.numPasspointProvidersSuccessfullyConnected);
+
+ pw.println("mWifiLogProto.installedPasspointProfileType: ");
+ for (int i = 0; i < mInstalledPasspointProfileType.size(); i++) {
+ int eapType = mInstalledPasspointProfileType.keyAt(i);
+ pw.println("EAP_METHOD (" + eapType + "): "
+ + mInstalledPasspointProfileType.valueAt(i));
+ }
+
pw.println("mWifiLogProto.numRadioModeChangeToMcc="
+ mWifiLogProto.numRadioModeChangeToMcc);
pw.println("mWifiLogProto.numRadioModeChangeToScc="
@@ -2206,6 +2218,56 @@ public class WifiMetrics {
}
/**
+ * Update number of times for type of saved Passpoint profile.
+ *
+ * @param providers Passpoint providers installed on the device.
+ */
+ public void updateSavedPasspointProfilesInfo(
+ Map<String, PasspointProvider> providers) {
+ int passpointType;
+ int eapType;
+ PasspointConfiguration config;
+ synchronized (mLock) {
+ mInstalledPasspointProfileType.clear();
+ for (Map.Entry<String, PasspointProvider> entry : providers.entrySet()) {
+ config = entry.getValue().getConfig();
+ if (config.getCredential().getUserCredential() != null) {
+ eapType = EAPConstants.EAP_TTLS;
+ } else if (config.getCredential().getCertCredential() != null) {
+ eapType = EAPConstants.EAP_TLS;
+ } else if (config.getCredential().getSimCredential() != null) {
+ eapType = config.getCredential().getSimCredential().getEapType();
+ } else {
+ eapType = -1;
+ }
+ switch (eapType) {
+ case EAPConstants.EAP_TLS:
+ passpointType = WifiMetricsProto.PasspointProfileTypeCount.TYPE_EAP_TLS;
+ break;
+ case EAPConstants.EAP_TTLS:
+ passpointType = WifiMetricsProto.PasspointProfileTypeCount.TYPE_EAP_TTLS;
+ break;
+ case EAPConstants.EAP_SIM:
+ passpointType = WifiMetricsProto.PasspointProfileTypeCount.TYPE_EAP_SIM;
+ break;
+ case EAPConstants.EAP_AKA:
+ passpointType = WifiMetricsProto.PasspointProfileTypeCount.TYPE_EAP_AKA;
+ break;
+ case EAPConstants.EAP_AKA_PRIME:
+ passpointType =
+ WifiMetricsProto.PasspointProfileTypeCount.TYPE_EAP_AKA_PRIME;
+ break;
+ default:
+ passpointType = WifiMetricsProto.PasspointProfileTypeCount.TYPE_UNKNOWN;
+
+ }
+ int count = mInstalledPasspointProfileType.get(passpointType);
+ mInstalledPasspointProfileType.put(passpointType, count + 1);
+ }
+ }
+ }
+
+ /**
* append the separate ConnectionEvent, SystemStateEntry and ScanReturnCode collections to their
* respective lists within mWifiLogProto
*
@@ -2405,6 +2467,23 @@ public class WifiMetrics {
keyVal.count = mConnectToNetworkNotificationActionCount.valueAt(i);
notificationActionCountArray[i] = keyVal;
}
+
+ /**
+ * Convert the SparseIntArray of saved Passpoint profile types and counts to proto's
+ * repeated IntKeyVal array.
+ */
+ int counts = mInstalledPasspointProfileType.size();
+ mWifiLogProto.installedPasspointProfileType =
+ new WifiMetricsProto.PasspointProfileTypeCount[counts];
+ for (int i = 0; i < counts; i++) {
+ mWifiLogProto.installedPasspointProfileType[i] =
+ new WifiMetricsProto.PasspointProfileTypeCount();
+ mWifiLogProto.installedPasspointProfileType[i].eapMethodType =
+ mInstalledPasspointProfileType.keyAt(i);
+ mWifiLogProto.installedPasspointProfileType[i].count =
+ mInstalledPasspointProfileType.valueAt(i);
+ }
+
mWifiLogProto.connectToNetworkNotificationActionCount = notificationActionCountArray;
mWifiLogProto.openNetworkRecommenderBlacklistSize =
@@ -2529,6 +2608,7 @@ public class WifiMetrics {
mWpsMetrics.clear();
mWifiWakeMetrics.clear();
mObserved80211mcApInScanHistogram.clear();
+ mInstalledPasspointProfileType.clear();
}
}
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
index a0915fa52..4c2937cb5 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
@@ -656,6 +656,7 @@ public class PasspointManager {
numConnectedProviders++;
}
}
+ mWifiMetrics.updateSavedPasspointProfilesInfo(mProviders);
mWifiMetrics.updateSavedPasspointProfiles(numProviders, numConnectedProviders);
}