diff options
author | Michael Plass <mplass@google.com> | 2019-02-26 19:21:16 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-02-26 19:21:16 +0000 |
commit | 9cacfa9fb65aa5001f78c9bddcda72be20281474 (patch) | |
tree | f3bf597ca0651ba2446c74fe0d1207f92d66618d /service | |
parent | 6b8686617794aafda79ca3c6a6e36d44098eaa59 (diff) | |
parent | bbb5163cf9b1b5664fa31ce5b20b0ea8dd0c349a (diff) | |
download | android_frameworks_opt_net_wifi-9cacfa9fb65aa5001f78c9bddcda72be20281474.tar.gz android_frameworks_opt_net_wifi-9cacfa9fb65aa5001f78c9bddcda72be20281474.tar.bz2 android_frameworks_opt_net_wifi-9cacfa9fb65aa5001f78c9bddcda72be20281474.zip |
Merge changes I84f39225,I4113ae74
* changes:
WakeupEvaluator - use ScoringParams properly
Don't cache wifi ScoringParams values
Diffstat (limited to 'service')
3 files changed, 29 insertions, 42 deletions
diff --git a/service/java/com/android/server/wifi/WakeupEvaluator.java b/service/java/com/android/server/wifi/WakeupEvaluator.java index b98a4fd23..63b88b542 100644 --- a/service/java/com/android/server/wifi/WakeupEvaluator.java +++ b/service/java/com/android/server/wifi/WakeupEvaluator.java @@ -16,11 +16,8 @@ package com.android.server.wifi; -import android.content.Context; import android.net.wifi.ScanResult; -import com.android.internal.annotations.VisibleForTesting; - import java.util.Collection; /** @@ -28,22 +25,10 @@ import java.util.Collection; */ public class WakeupEvaluator { - private final int mThresholdMinimumRssi24; - private final int mThresholdMinimumRssi5; - - /** - * Constructs a {@link WakeupEvaluator} using the given context. - */ - public static WakeupEvaluator fromContext(Context context) { - ScoringParams scoringParams = new ScoringParams(context); // TODO(b/74793980) - replumb - return new WakeupEvaluator(scoringParams.getEntryRssi(ScoringParams.BAND2), - scoringParams.getEntryRssi(ScoringParams.BAND5)); - } + private final ScoringParams mScoringParams; - @VisibleForTesting - WakeupEvaluator(int minimumRssi24, int minimumRssi5) { - mThresholdMinimumRssi24 = minimumRssi24; - mThresholdMinimumRssi5 = minimumRssi5; + WakeupEvaluator(ScoringParams scoringParams) { + mScoringParams = scoringParams; } /** @@ -80,7 +65,6 @@ public class WakeupEvaluator { * Returns whether the given ScanResult's signal strength is below the selection threshold. */ public boolean isBelowThreshold(ScanResult scanResult) { - return ((scanResult.is24GHz() && scanResult.level < mThresholdMinimumRssi24) - || (scanResult.is5GHz() && scanResult.level < mThresholdMinimumRssi5)); + return scanResult.level < mScoringParams.getEntryRssi(scanResult.frequency); } } diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java index 65ccc347d..fbb7365df 100644 --- a/service/java/com/android/server/wifi/WifiConnectivityManager.java +++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java @@ -180,14 +180,12 @@ public class WifiConnectivityManager { private int mFullScanMaxRxRate; // PNO settings - private int mMin5GHzRssi; - private int mMin24GHzRssi; - private int mInitialScoreMax; private int mCurrentConnectionBonus; private int mSameNetworkBonus; private int mSecureBonus; private int mBand5GHzBonus; - + private int mRssiScoreOffset; + private int mRssiScoreSlope; private int mPnoScanIntervalMs; // BSSID blacklist @@ -614,9 +612,6 @@ public class WifiConnectivityManager { mScoringParams = scoringParams; mConnectionAttemptTimeStamps = new LinkedList<>(); - //TODO(b/74793980) - handle these more dynamically - mMin5GHzRssi = mScoringParams.getEntryRssi(ScoringParams.BAND5); - mMin24GHzRssi = mScoringParams.getEntryRssi(ScoringParams.BAND2); mBand5GHzBonus = context.getResources().getInteger( R.integer.config_wifi_framework_5GHz_preference_boost_factor); mCurrentConnectionBonus = context.getResources().getInteger( @@ -625,16 +620,16 @@ public class WifiConnectivityManager { R.integer.config_wifi_framework_SAME_BSSID_AWARD); mSecureBonus = context.getResources().getInteger( R.integer.config_wifi_framework_SECURITY_AWARD); + mRssiScoreOffset = context.getResources().getInteger( + R.integer.config_wifi_framework_RSSI_SCORE_OFFSET); + mRssiScoreSlope = context.getResources().getInteger( + R.integer.config_wifi_framework_RSSI_SCORE_SLOPE); mEnableAutoJoinWhenAssociated = context.getResources().getBoolean( R.bool.config_wifi_framework_enable_associated_network_selection); mUseSingleRadioChainScanResults = context.getResources().getBoolean( R.bool.config_wifi_framework_use_single_radio_chain_scan_results_network_selection); - mInitialScoreMax = (Math.max(mScoringParams.getGoodRssi(ScoringParams.BAND2), - mScoringParams.getGoodRssi(ScoringParams.BAND5)) - + context.getResources().getInteger( - R.integer.config_wifi_framework_RSSI_SCORE_OFFSET)) - * context.getResources().getInteger( - R.integer.config_wifi_framework_RSSI_SCORE_SLOPE); + + mFullScanMaxTxRate = context.getResources().getInteger( R.integer.config_wifi_framework_max_tx_rate_for_full_scan); mFullScanMaxRxRate = context.getResources().getInteger( @@ -642,12 +637,13 @@ public class WifiConnectivityManager { mPnoScanIntervalMs = MOVING_PNO_SCAN_INTERVAL_MS; - localLog("PNO settings:" + " min5GHzRssi " + mMin5GHzRssi - + " min24GHzRssi " + mMin24GHzRssi + localLog("PNO settings:" + + " min5GHzRssi " + mScoringParams.getEntryRssi(ScoringParams.BAND5) + + " min24GHzRssi " + mScoringParams.getEntryRssi(ScoringParams.BAND2) + " currentConnectionBonus " + mCurrentConnectionBonus + " sameNetworkBonus " + mSameNetworkBonus + " secureNetworkBonus " + mSecureBonus - + " initialScoreMax " + mInitialScoreMax); + + " initialScoreMax " + initialScoreMax()); boolean hs2Enabled = context.getPackageManager().hasSystemFeature( PackageManager.FEATURE_WIFI_PASSPOINT); @@ -666,6 +662,13 @@ public class WifiConnectivityManager { mConfigManager.setOnSavedNetworkUpdateListener(new OnSavedNetworkUpdateListener()); } + /** Returns maximum PNO score, before any awards/bonuses. */ + private int initialScoreMax() { + return mRssiScoreSlope * (Math.max(mScoringParams.getGoodRssi(ScoringParams.BAND2), + mScoringParams.getGoodRssi(ScoringParams.BAND5)) + + mRssiScoreOffset); + } + /** * This checks the connection attempt rate and recommends whether the connection attempt * should be skipped or not. This attempts to rate limit the rate of connections to @@ -1020,9 +1023,9 @@ public class WifiConnectivityManager { pnoSettings.networkList = new PnoSettings.PnoNetwork[listSize]; pnoSettings.networkList = pnoNetworkList.toArray(pnoSettings.networkList); - pnoSettings.min5GHzRssi = mMin5GHzRssi; - pnoSettings.min24GHzRssi = mMin24GHzRssi; - pnoSettings.initialScoreMax = mInitialScoreMax; + pnoSettings.min5GHzRssi = mScoringParams.getEntryRssi(ScoringParams.BAND5); + pnoSettings.min24GHzRssi = mScoringParams.getEntryRssi(ScoringParams.BAND2); + pnoSettings.initialScoreMax = initialScoreMax(); pnoSettings.currentConnectionBonus = mCurrentConnectionBonus; pnoSettings.sameNetworkBonus = mSameNetworkBonus; pnoSettings.secureBonus = mSecureBonus; diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java index 5c6a47423..cf1da31b5 100644 --- a/service/java/com/android/server/wifi/WifiInjector.java +++ b/service/java/com/android/server/wifi/WifiInjector.java @@ -302,7 +302,7 @@ public class WifiInjector { mWakeupController = new WakeupController(mContext, mWifiCoreHandlerThread.getLooper(), new WakeupLock(mWifiConfigManager, mWifiMetrics.getWakeupMetrics(), mClock), - WakeupEvaluator.fromContext(mContext), wakeupOnboarding, mWifiConfigManager, + new WakeupEvaluator(mScoringParams), wakeupOnboarding, mWifiConfigManager, mWifiConfigStore, mWifiMetrics.getWakeupMetrics(), this, mFrameworkFacade, mClock); mLockManager = new WifiLockManager(mContext, BatteryStatsService.getService(), @@ -472,8 +472,8 @@ public class WifiInjector { return mWifiScoreCard; } + /** Gets a TelephonyManager, which moy not be available early on. */ public TelephonyManager makeTelephonyManager() { - // may not be available when WiFi starts return (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); } @@ -485,6 +485,7 @@ public class WifiInjector { return mDppManager; } + /** Gets IWificond without caching. */ public IWificond makeWificond() { // We depend on being able to refresh our binder in ClientModeImpl, so don't cache it. IBinder binder = ServiceManager.getService(WIFICOND_SERVICE_NAME); @@ -493,7 +494,6 @@ public class WifiInjector { /** * Create a SoftApManager. - * @param listener listener for SoftApManager * @param config SoftApModeConfiguration object holding the config and mode * @return an instance of SoftApManager */ |