Make the start range for rssi constant. am: 996de25b83
am: d921271b25

Change-Id: If872139dabce0379028152ed749694f73e162513
diff --git a/src/com/android/networkrecommendation/DefaultNetworkRecommendationProvider.java b/src/com/android/networkrecommendation/DefaultNetworkRecommendationProvider.java
index 5ab97f6..5698e7d 100644
--- a/src/com/android/networkrecommendation/DefaultNetworkRecommendationProvider.java
+++ b/src/com/android/networkrecommendation/DefaultNetworkRecommendationProvider.java
@@ -59,7 +59,7 @@
  *
  * <p>SCORE: "Quoted SSID",bssid|$RSSI_CURVE|metered|captivePortal|BADGE
  *
- * <p>RSSI_CURVE: start,bucketWidth,score,score,score,score,...
+ * <p>RSSI_CURVE: bucketWidth,score,score,score,score,...
  *
  * <p>curve, metered and captive portal are optional, as expressed by an empty value.
  *
@@ -69,17 +69,17 @@
  * <p>Eg, A high quality, paid network with captive portal:
  * $ adb shell dumpsys activity service DefaultNetworkRecommendationService addScore \
  * '\"Metered\",aa:bb:cc:dd:ee:ff\|
- * -150,10,-128,-128,-128,-128,-128,-128,-128,-128,27,27,27,27,27,-128\|1\|1'
+ * 10,-128,-128,-128,-128,-128,-128,-128,-128,27,27,27,27,27,-128\|1\|1'
  *
  * <p>Eg, A high quality, unmetered network with captive portal:
  * $ adb shell dumpsys activity service DefaultNetworkRecommendationService addScore \
  * '\"Captive\",aa:bb:cc:dd:ee:ff\|
- * -150,10,-128,-128,-128,-128,-128,-128,-128,-128,28,28,28,28,28,-128\|0\|1'
+ * 10,-128,-128,-128,-128,-128,-128,-128,-128,28,28,28,28,28,-128\|0\|1'
  *
  * <p>Eg, A high quality, unmetered network with any bssid:
  * $ adb shell dumpsys activity service DefaultNetworkRecommendationService addScore \
  * '\"AnySsid\",00:00:00:00:00:00\|
- * -150,10,-128,-128,-128,-128,-128,-128,-128,-128,29,29,29,29,29,-128\|0\|0'
+ * 10,-128,-128,-128,-128,-128,-128,-128,-128,29,29,29,29,29,-128\|0\|0'
  */
 @VisibleForTesting
 public class DefaultNetworkRecommendationProvider
@@ -90,10 +90,17 @@
 
     private static final String WILDCARD_MAC = "00:00:00:00:00:00";
 
+    /**
+     * The lowest RSSI value at which a fixed score should apply.
+     * Only used for development / testing purpose.
+     */
+    @VisibleForTesting
+    static final int CONSTANT_CURVE_START = -150;
+
     @VisibleForTesting
     static final RssiCurve BADGE_CURVE_SD =
             new RssiCurve(
-                    0 /* start */,
+                    CONSTANT_CURVE_START,
                     10 /* bucketWidth */,
                     new byte[] {0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
                     0 /* defaultActiveNetworkBoost */);
@@ -101,7 +108,7 @@
     @VisibleForTesting
     static final RssiCurve BADGE_CURVE_HD =
             new RssiCurve(
-                    0 /* start */,
+                    CONSTANT_CURVE_START,
                     10 /* bucketWidth */,
                     new byte[] {0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20},
                     0 /* defaultActiveNetworkBoost */);
@@ -109,7 +116,7 @@
     @VisibleForTesting
     static final RssiCurve BADGE_CURVE_4K =
             new RssiCurve(
-                    0 /* start */,
+                    CONSTANT_CURVE_START,
                     10 /* bucketWidth */,
                     new byte[] {0, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30},
                     0 /* defaultActiveNetworkBoost */);
@@ -306,11 +313,10 @@
         NetworkKey networkKey = new NetworkKey(new WifiKey(splitWifiKey[0], splitWifiKey[1]));
 
         String[] splitRssiCurve = splitScore[1].split(",");
-        int start = Integer.parseInt(splitRssiCurve[0]);
-        int bucketWidth = Integer.parseInt(splitRssiCurve[1]);
-        byte[] rssiBuckets = new byte[splitRssiCurve.length - 2];
-        for (int i = 2; i < splitRssiCurve.length; i++) {
-            rssiBuckets[i - 2] = Integer.valueOf(splitRssiCurve[i]).byteValue();
+        int bucketWidth = Integer.parseInt(splitRssiCurve[0]);
+        byte[] rssiBuckets = new byte[splitRssiCurve.length - 1];
+        for (int i = 1; i < splitRssiCurve.length; i++) {
+            rssiBuckets[i - 1] = Integer.valueOf(splitRssiCurve[i]).byteValue();
         }
 
         boolean meteredHint = "1".equals(splitScore[2]);
@@ -332,7 +338,7 @@
                         ScoredNetwork.ATTRIBUTES_KEY_BADGING_CURVE, BADGE_CURVE_4K);
             }
         }
-        RssiCurve rssiCurve = new RssiCurve(start, bucketWidth, rssiBuckets, 0);
+        RssiCurve rssiCurve = new RssiCurve(CONSTANT_CURVE_START, bucketWidth, rssiBuckets, 0);
         return new ScoredNetwork(networkKey, rssiCurve, meteredHint, attributes);
     }
 
diff --git a/tests/src/com/android/networkrecommendation/DefaultNetworkRecommendationProviderTest.java b/tests/src/com/android/networkrecommendation/DefaultNetworkRecommendationProviderTest.java
index fcc1c80..47d0fe7 100644
--- a/tests/src/com/android/networkrecommendation/DefaultNetworkRecommendationProviderTest.java
+++ b/tests/src/com/android/networkrecommendation/DefaultNetworkRecommendationProviderTest.java
@@ -60,9 +60,9 @@
 
     private static final String GOOD_METERED_NETWORK_STRING_UNQUOTED = "Metered";
     private static final String GOOD_METERED_NETWORK_STRING = "\"Metered\",aa:bb:cc:dd:ee:ff" +
-            "|-150,10,-128,-128,-128,-128,-128,-128,-128,-128,20,20,20,20,-128|1|0|4K";
+            "|10,-128,-128,-128,-128,-128,-128,-128,-128,20,20,20,20,-128|1|0|4K";
     private static final RssiCurve GOOD_METERED_NETWORK_CURVE = new RssiCurve(
-            -150 /* start */, 10 /* bucketWidth */,
+            DefaultNetworkRecommendationProvider.CONSTANT_CURVE_START, 10 /* bucketWidth */,
             new byte[]{-128, -128, -128, -128, -128, -128, -128, -128, 20, 20, 20, 20, -128},
             0 /* defaultActiveNetworkBoost */);
     private static final ScoredNetwork GOOD_METERED_NETWORK = new ScoredNetwork(
@@ -72,9 +72,9 @@
     private static final String GOOD_CAPTIVE_NETWORK_STRING_UNQUOTED = "Captive";
     private static final String GOOD_CAPTIVE_NETWORK_STRING =
             "\"Captive\",ff:ee:dd:cc:bb:aa"
-                    + "|-160,18,-128,-128,-128,-128,-128,-128,21,21,21,-128|0|1|HD";
+                    + "|18,-128,-128,-128,-128,-128,-128,21,21,21,-128|0|1|HD";
     private static final RssiCurve GOOD_CAPTIVE_NETWORK_CURVE = new RssiCurve(
-            -160 /* start */, 18 /* bucketWidth */,
+            DefaultNetworkRecommendationProvider.CONSTANT_CURVE_START, 18 /* bucketWidth */,
             new byte[]{-128, -128, -128, -128, -128, -128, 21, 21, 21, -128},
             0 /* defaultActiveNetworkBoost */);
     private static final ScoredNetwork GOOD_CAPTIVE_NETWORK;
@@ -89,9 +89,9 @@
     private static final String ANY_NETWORK_STRING_UNQUOTED = "AnySsid";
     private static final String ANY_NETWORK_STRING =
             "\"AnySsid\",00:00:00:00:00:00"
-                    + "|-160,18,-128,-128,-128,-128,-128,-128,22,22,22,-128|0|0|NONE";
+                    + "|18,-128,-128,-128,-128,-128,-128,22,22,22,-128|0|0|NONE";
     private static final RssiCurve ANY_NETWORK_CURVE = new RssiCurve(
-            -160 /* start */, 18 /* bucketWidth */,
+            DefaultNetworkRecommendationProvider.CONSTANT_CURVE_START, 18 /* bucketWidth */,
             new byte[]{-128, -128, -128, -128, -128, -128, 22, 22, 22, -128},
             0 /* defaultActiveNetworkBoost */);
     private static final ScoredNetwork ANY_NETWORK = new ScoredNetwork(
@@ -101,9 +101,9 @@
     private static final String ANY_NETWORK_SPECIFIC_STRING_UNQUOTED = "AnySsid";
     private static final String ANY_NETWORK_SPECIFIC_STRING =
             "\"AnySsid\",ee:ee:ee:ee:ee:ee"
-                    + "|-160,18,-128,-128,-128,-128,-128,-128,23,23,23,-128|0|0|NONE";
+                    + "|18,-128,-128,-128,-128,-128,-128,23,23,23,-128|0|0|NONE";
     private static final RssiCurve ANY_NETWORK_SPECIFIC_CURVE = new RssiCurve(
-            -160 /* start */, 18 /* bucketWidth */,
+            DefaultNetworkRecommendationProvider.CONSTANT_CURVE_START, 18 /* bucketWidth */,
             new byte[]{-128, -128, -128, -128, -128, -128, 23, 23, 23, -128},
             0 /* defaultActiveNetworkBoost */);
     private static final ScoredNetwork ANY_NETWORK_SPECIFIC = new ScoredNetwork(
@@ -113,11 +113,11 @@
     private static final String BAD_NETWORK_STRING_UNQUOTED = "Bad";
     private static final String BAD_NETWORK_STRING =
             "\"Bad\",aa:bb:cc:dd:ee:ff"
-                    + "|-150,10,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128"
+                    + "|10,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128,-128"
                     + "|1|0|SD";
     private static final RssiCurve BAD_NETWORK_CURVE =
             new RssiCurve(
-                    -150 /* start */,
+                    DefaultNetworkRecommendationProvider.CONSTANT_CURVE_START,
                     10 /* bucketWidth */,
                     new byte[] {-128, -128, -128, -128, -128, -128,
                             -128, -128, -128, -128, -128, -128, -128},