From e802d02eb96d3cbe774110c432f957976deb92b3 Mon Sep 17 00:00:00 2001 From: Michael Plass Date: Wed, 19 Apr 2017 16:45:08 -0700 Subject: [WifiScoreReport] Simplifed scorer/quick handover Introduce a simplified scorer for the currently-connected wifi. For now, this is only in effect when the developer preference for aggressive handover of wifi to cellular is in effect. Bug: 37577414 Test: manual, added unit tests Change-Id: I7a27c5d3686a4fbb9429f68497d47e6ea9ae7a85 --- .../com/android/server/wifi/WifiScoreReport.java | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'service') diff --git a/service/java/com/android/server/wifi/WifiScoreReport.java b/service/java/com/android/server/wifi/WifiScoreReport.java index 8bc8bf37a..74ddf99ec 100644 --- a/service/java/com/android/server/wifi/WifiScoreReport.java +++ b/service/java/com/android/server/wifi/WifiScoreReport.java @@ -148,8 +148,13 @@ public class WifiScoreReport { int aggressiveHandover, WifiMetrics wifiMetrics) { int score; - updateScoringState(wifiInfo, aggressiveHandover); - score = calculateScore(wifiInfo, aggressiveHandover); + if (aggressiveHandover == 0) { + // Use the old method + updateScoringState(wifiInfo, aggressiveHandover); + score = calculateScore(wifiInfo, aggressiveHandover); + } else { + score = calculateAlternativeScore(wifiInfo); + } //sanitize boundaries if (score > NetworkAgent.WIFI_BASE_SCORE) { @@ -320,4 +325,17 @@ public class WifiScoreReport { } return false; } + + /** + * Experimental scorer, used when aggressive handover preference is set + */ + private int calculateAlternativeScore(WifiInfo wifiInfo) { + double rssi = wifiInfo.getRssi(); + double badRssi = wifiInfo.is5GHz() ? mThresholdQualifiedRssi5 : mThresholdQualifiedRssi24; + + double baseScore = 50.0; // The score to beat to be chosen over mobile data + double score = (rssi - badRssi) + baseScore; + return (int) Math.round(score); + } + } -- cgit v1.2.3