From c8623f0fe9ba447c890063bc74850a06b9022bf5 Mon Sep 17 00:00:00 2001 From: Mingguang Xu Date: Thu, 3 Sep 2020 15:50:12 -0700 Subject: Add metrics for Adaptive Connectivity toggle Add a new UserActionEvent to track the state change of Adaptive Connectivity and attach its state to StaEvent. Bug: 166644305 Test: atest com.android.server.wifi Updated-PDD: TRUE Signed-off-by: Mingguang Xu Change-Id: If33df01ec4292afae29eae61f129923ec82bd0ae Merged-In: I72762fc129c9f026ca9323b11e4e159ed2706cb7 --- .../java/com/android/server/wifi/WifiMetrics.java | 21 +++++++++++++++++++++ .../com/android/server/wifi/WifiScoreReport.java | 5 +++++ service/proto/src/metrics.proto | 7 +++++++ 3 files changed, 33 insertions(+) (limited to 'service') diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java index 1ac361ef3..75d53fc95 100644 --- a/service/java/com/android/server/wifi/WifiMetrics.java +++ b/service/java/com/android/server/wifi/WifiMetrics.java @@ -242,6 +242,7 @@ public class WifiMetrics { private int mLastPollRxLinkSpeed = -1; private int mLastPollFreq = -1; private int mLastScore = -1; + private boolean mAdaptiveConnectivityEnabled = true; /** * Metrics are stored within an instance of the WifiLog proto during runtime, @@ -4908,6 +4909,7 @@ public class WifiMetrics { if (mWifiDataStall != null) { staEvent.isCellularDataAvailable = mWifiDataStall.isCellularDataAvailable(); } + staEvent.isAdaptiveConnectivityEnabled = mAdaptiveConnectivityEnabled; mSupplicantStateChangeBitmask = 0; mLastPollRssi = -127; mLastPollFreq = -1; @@ -5124,6 +5126,7 @@ public class WifiMetrics { if (event.totalRxBytes > 0) sb.append(" totalRxBytes=").append(event.totalRxBytes); sb.append(" screenOn=").append(event.screenOn); sb.append(" cellularData=").append(event.isCellularDataAvailable); + sb.append(" adaptiveConnectivity=").append(event.isAdaptiveConnectivityEnabled); if (event.supplicantStateChangesBitmask != 0) { sb.append(", ").append(supplicantStateChangesBitmaskToString( event.supplicantStateChangesBitmask)); @@ -5343,6 +5346,15 @@ public class WifiMetrics { return result; } + /** + * Converts Adaptive Connectivity state to UserActionEvent type. + * @param value + */ + public static int convertAdaptiveConnectivityStateToUserActionEventType(boolean value) { + return value ? UserActionEvent.EVENT_CONFIGURE_ADAPTIVE_CONNECTIVITY_ON + : UserActionEvent.EVENT_CONFIGURE_ADAPTIVE_CONNECTIVITY_OFF; + } + static class MeteredNetworkStatsBuilder { // A map from network identifier to MeteredDetail Map mNetworkMap = new ArrayMap<>(); @@ -6713,4 +6725,13 @@ public class WifiMetrics { mCarrierWifiMetrics.numConnectionNonAuthFailure++; } } + + /** + * Set Adaptive Connectivity state (On/Off) + */ + public void setAdaptiveConnectivityState(boolean adaptiveConnectivityEnabled) { + synchronized (mLock) { + mAdaptiveConnectivityEnabled = adaptiveConnectivityEnabled; + } + } } diff --git a/service/java/com/android/server/wifi/WifiScoreReport.java b/service/java/com/android/server/wifi/WifiScoreReport.java index 381be7f2b..f6eed70ee 100644 --- a/service/java/com/android/server/wifi/WifiScoreReport.java +++ b/service/java/com/android/server/wifi/WifiScoreReport.java @@ -322,6 +322,10 @@ public class WifiScoreReport { super.onChange(selfChange); mAdaptiveConnectivityEnabled = getValue(); Log.d(TAG, "Adaptive connectivity status changed: " + mAdaptiveConnectivityEnabled); + mWifiMetrics.setAdaptiveConnectivityState(mAdaptiveConnectivityEnabled); + mWifiMetrics.logUserActionEvent( + mWifiMetrics.convertAdaptiveConnectivityStateToUserActionEventType( + mAdaptiveConnectivityEnabled)); } /** @@ -335,6 +339,7 @@ public class WifiScoreReport { } mFrameworkFacade.registerContentObserver(mContext, uri, true, this); mAdaptiveConnectivityEnabled = mAdaptiveConnectivityEnabledSettingObserver.getValue(); + mWifiMetrics.setAdaptiveConnectivityState(mAdaptiveConnectivityEnabled); } public boolean getValue() { diff --git a/service/proto/src/metrics.proto b/service/proto/src/metrics.proto index a7f706fb8..1c3b27872 100644 --- a/service/proto/src/metrics.proto +++ b/service/proto/src/metrics.proto @@ -1471,6 +1471,9 @@ message StaEvent { // Whether cellular data network is available optional bool is_cellular_data_available = 25; + + //Whether Adaptive Connectivity is enabled + optional bool is_adaptive_connectivity_enabled = 26; } // Wi-Fi Aware metrics @@ -3158,6 +3161,10 @@ message UserActionEvent { EVENT_CONFIGURE_METERED_STATUS_AUTO = 12; // User adds a new network or updates configurations for an existing network. EVENT_ADD_OR_UPDATE_NETWORK = 13; + // User sets the adaptive connectivity to on + EVENT_CONFIGURE_ADAPTIVE_CONNECTIVITY_ON = 14; + // User sets the adaptive connectivity to off + EVENT_CONFIGURE_ADAPTIVE_CONNECTIVITY_OFF = 15; } // The type of user action -- cgit v1.2.3