summaryrefslogtreecommitdiffstats
path: root/libs/WifiTrackerLib/src
diff options
context:
space:
mode:
authorArc Wang <arcwang@google.com>2020-04-24 20:36:43 +0800
committerArc Wang <arcwang@google.com>2020-04-27 11:20:17 +0800
commit06c4ec9a1638a0b57d68bc023d4ab000f7cdde63 (patch)
tree82681a61d45f81cffd7c62d5e6a669310c6bb66d /libs/WifiTrackerLib/src
parentfc9e8316cd8b3f97e994815f5fe692c894f38e59 (diff)
downloadframeworks_opt_net_wifi-06c4ec9a1638a0b57d68bc023d4ab000f7cdde63.tar.gz
frameworks_opt_net_wifi-06c4ec9a1638a0b57d68bc023d4ab000f7cdde63.tar.bz2
frameworks_opt_net_wifi-06c4ec9a1638a0b57d68bc023d4ab000f7cdde63.zip
Add Wi-Fi network selection verbose logging
Bug: 154548505 Test: atest com.android.wifitrackerlib.UtilsTest Change-Id: Iaf21a44948663a4d4b2d5ab150a6d7c9a20f1011
Diffstat (limited to 'libs/WifiTrackerLib/src')
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java5
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java5
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java40
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java5
4 files changed, 55 insertions, 0 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
index 3b2ad3f33..0a1487a39 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
@@ -478,4 +478,9 @@ public class PasspointWifiEntry extends WifiEntry {
// TODO(b/70983952): Fill this method in.
return "";
}
+
+ @Override
+ String getNetworkSelectionDescription() {
+ return Utils.getNetworkSelectionDescription(mWifiConfig);
+ }
}
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
index b6afa984a..965a1c21d 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
@@ -852,4 +852,9 @@ public class StandardWifiEntry extends WifiEntry {
description.append("}");
return description.toString();
}
+
+ @Override
+ String getNetworkSelectionDescription() {
+ return Utils.getNetworkSelectionDescription(getWifiConfiguration());
+ }
}
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
index 5cdecd48e..00a8dcf30 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
@@ -41,6 +41,7 @@ import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiConfiguration.NetworkSelectionStatus;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.UserHandle;
@@ -52,6 +53,7 @@ import android.text.Annotation;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
+import android.text.format.DateUtils;
import android.text.style.ClickableSpan;
import android.view.View;
@@ -443,9 +445,47 @@ class Utils {
sj.add(scanResultsDescription);
}
+ final String networkSelectionDescription = wifiEntry.getNetworkSelectionDescription();
+ if (!TextUtils.isEmpty(networkSelectionDescription)) {
+ sj.add(networkSelectionDescription);
+ }
+
return sj.toString();
}
+ static String getNetworkSelectionDescription(WifiConfiguration wifiConfig) {
+ if (wifiConfig == null) {
+ return "";
+ }
+
+ StringBuilder description = new StringBuilder();
+ NetworkSelectionStatus networkSelectionStatus = wifiConfig.getNetworkSelectionStatus();
+
+ if (networkSelectionStatus.getNetworkSelectionStatus() != NETWORK_SELECTION_ENABLED) {
+ description.append(" (" + networkSelectionStatus.getNetworkStatusString());
+ if (networkSelectionStatus.getDisableTime() > 0) {
+ long now = System.currentTimeMillis();
+ long elapsedSeconds = (now - networkSelectionStatus.getDisableTime()) / 1000;
+ description.append(" " + DateUtils.formatElapsedTime(elapsedSeconds));
+ }
+ description.append(")");
+ }
+
+ int maxNetworkSelectionDisableReason =
+ NetworkSelectionStatus.getMaxNetworkSelectionDisableReason();
+ for (int reason = 0; reason <= maxNetworkSelectionDisableReason; reason++) {
+ int disableReasonCounter = networkSelectionStatus.getDisableReasonCounter(reason);
+ if (disableReasonCounter == 0) {
+ continue;
+ }
+ description.append(" ")
+ .append(NetworkSelectionStatus.getNetworkSelectionDisableReasonString(reason))
+ .append("=")
+ .append(disableReasonCounter);
+ }
+ return description.toString();
+ }
+
static String getCurrentNetworkCapabilitiesInformation(Context context,
NetworkCapabilities networkCapabilities) {
if (context == null || networkCapabilities == null) {
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
index 989c764aa..59062505f 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
@@ -428,6 +428,11 @@ public abstract class WifiEntry implements Comparable<WifiEntry> {
/** Returns the ScanResult information of a WifiEntry */
abstract String getScanResultDescription();
+ /** Returns the network selection information of a WifiEntry */
+ String getNetworkSelectionDescription() {
+ return "";
+ }
+
/**
* Sets the callback listener for WifiEntryCallback methods.
* Subsequent calls will overwrite the previous listener.