Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 70531992 authored by David Su's avatar David Su Committed by Android (Google) Code Review
Browse files

Merge changes from topic "rssi-level-thresholds"

* changes:
  Add new WifiManager API to calculate signal levels
  Fix broken test caused by calculateSignalLevel() migration
  Migrate WifiStatusTracker calculateSignalLevel()
parents 57503957 3c924107
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -30061,7 +30061,8 @@ package android.net.wifi {
    method public void addOrUpdatePasspointConfiguration(android.net.wifi.hotspot2.PasspointConfiguration);
    method public void addOrUpdatePasspointConfiguration(android.net.wifi.hotspot2.PasspointConfiguration);
    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void addScanResultsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.ScanResultsListener);
    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public void addScanResultsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.ScanResultsListener);
    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE}) public void addSuggestionConnectionStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.SuggestionConnectionStatusListener);
    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_WIFI_STATE}) public void addSuggestionConnectionStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.SuggestionConnectionStatusListener);
    method public static int calculateSignalLevel(int, int);
    method @Deprecated public static int calculateSignalLevel(int, int);
    method public int calculateSignalLevel(int);
    method @Deprecated public void cancelWps(android.net.wifi.WifiManager.WpsCallback);
    method @Deprecated public void cancelWps(android.net.wifi.WifiManager.WpsCallback);
    method public static int compareSignalLevel(int, int);
    method public static int compareSignalLevel(int, int);
    method public android.net.wifi.WifiManager.MulticastLock createMulticastLock(String);
    method public android.net.wifi.WifiManager.MulticastLock createMulticastLock(String);
@@ -30074,6 +30075,7 @@ package android.net.wifi {
    method public android.net.wifi.WifiInfo getConnectionInfo();
    method public android.net.wifi.WifiInfo getConnectionInfo();
    method public android.net.DhcpInfo getDhcpInfo();
    method public android.net.DhcpInfo getDhcpInfo();
    method public int getMaxNumberOfNetworkSuggestionsPerApp();
    method public int getMaxNumberOfNetworkSuggestionsPerApp();
    method public int getMaxSignalLevel();
    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public java.util.List<android.net.wifi.WifiNetworkSuggestion> getNetworkSuggestions();
    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public java.util.List<android.net.wifi.WifiNetworkSuggestion> getNetworkSuggestions();
    method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", "android.permission.NETWORK_SETUP_WIZARD"}) public java.util.List<android.net.wifi.hotspot2.PasspointConfiguration> getPasspointConfigurations();
    method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", "android.permission.NETWORK_SETUP_WIZARD"}) public java.util.List<android.net.wifi.hotspot2.PasspointConfiguration> getPasspointConfigurations();
    method public java.util.List<android.net.wifi.ScanResult> getScanResults();
    method public java.util.List<android.net.wifi.ScanResult> getScanResults();
+1 −1
Original line number Original line Diff line number Diff line
@@ -142,7 +142,7 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback {


    private void updateRssi(int newRssi) {
    private void updateRssi(int newRssi) {
        rssi = newRssi;
        rssi = newRssi;
        level = WifiManager.calculateSignalLevel(rssi, WifiManager.RSSI_LEVELS);
        level = mWifiManager.calculateSignalLevel(rssi);
    }
    }


    private void maybeRequestNetworkScore() {
    private void maybeRequestNetworkScore() {
+8 −0
Original line number Original line Diff line number Diff line
@@ -139,6 +139,14 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
        when(mMockCm.getDefaultNetworkCapabilitiesForUser(0)).thenReturn(
        when(mMockCm.getDefaultNetworkCapabilitiesForUser(0)).thenReturn(
                new NetworkCapabilities[] { mNetCapabilities });
                new NetworkCapabilities[] { mNetCapabilities });
        when(mMockTm.createForSubscriptionId(anyInt())).thenReturn(mMockTm);
        when(mMockTm.createForSubscriptionId(anyInt())).thenReturn(mMockTm);
        doAnswer(invocation -> {
            int rssi = invocation.getArgument(0);
            if (rssi < -88) return 0;
            if (rssi < -77) return 1;
            if (rssi < -66) return 2;
            if (rssi < -55) return 3;
            return 4;
        }).when(mMockWm).calculateSignalLevel(anyInt());


        mSignalStrength = mock(SignalStrength.class);
        mSignalStrength = mock(SignalStrength.class);
        mServiceState = mock(ServiceState.class);
        mServiceState = mock(ServiceState.class);
+2 −0
Original line number Original line Diff line number Diff line
@@ -240,4 +240,6 @@ interface IWifiManager
    void registerSuggestionConnectionStatusListener(in IBinder binder, in ISuggestionConnectionStatusListener listener, int listenerIdentifier, String packageName, String featureId);
    void registerSuggestionConnectionStatusListener(in IBinder binder, in ISuggestionConnectionStatusListener listener, int listenerIdentifier, String packageName, String featureId);


    void unregisterSuggestionConnectionStatusListener(int listenerIdentifier, String packageName);
    void unregisterSuggestionConnectionStatusListener(int listenerIdentifier, String packageName);

    int calculateSignalLevel(int rssi);
}
}
+34 −6
Original line number Original line Diff line number Diff line
@@ -1153,8 +1153,6 @@ public class WifiManager {
     * @hide
     * @hide
     */
     */
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    // TODO(b/140781184): need to support custom number of RSSI levels, as well as levels that are
    //  not evenly spaced
    public static final int RSSI_LEVELS = 5;
    public static final int RSSI_LEVELS = 5;


    /**
    /**
@@ -2782,11 +2780,13 @@ public class WifiManager {
     * is being shown.
     * is being shown.
     *
     *
     * @param rssi The power of the signal measured in RSSI.
     * @param rssi The power of the signal measured in RSSI.
     * @param numLevels The number of levels to consider in the calculated
     * @param numLevels The number of levels to consider in the calculated level.
     *            level.
     * @return A level of the signal, given in the range of 0 to numLevels-1 (both inclusive).
     * @return A level of the signal, given in the range of 0 to numLevels-1
     * @deprecated Callers should use {@link #calculateSignalLevel(int)} instead to get the
     *         (both inclusive).
     * signal level using the system default RSSI thresholds, or otherwise compute the RSSI level
     * themselves using their own formula.
     */
     */
    @Deprecated
    public static int calculateSignalLevel(int rssi, int numLevels) {
    public static int calculateSignalLevel(int rssi, int numLevels) {
        if (rssi <= MIN_RSSI) {
        if (rssi <= MIN_RSSI) {
            return 0;
            return 0;
@@ -2799,6 +2799,34 @@ public class WifiManager {
        }
        }
    }
    }


    /**
     * Given a raw RSSI, return the RSSI signal quality rating using the system default RSSI
     * quality rating thresholds.
     * @param rssi a raw RSSI value, in dBm, usually between -55 and -90
     * @return the RSSI signal quality rating, in the range
     * [0, {@link #getMaxSignalLevel()}], where 0 is the lowest (worst signal) RSSI
     * rating and {@link #getMaxSignalLevel()} is the highest (best signal) RSSI rating.
     */
    public int calculateSignalLevel(int rssi) {
        try {
            IWifiManager iWifiManager = getIWifiManager();
            if (iWifiManager == null) {
                throw new RemoteException("Wifi service is not running");
            }
            return iWifiManager.calculateSignalLevel(rssi);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Get the system default maximum signal level.
     * This is the maximum RSSI level returned by {@link #calculateSignalLevel(int)}.
     */
    public int getMaxSignalLevel() {
        return calculateSignalLevel(Integer.MAX_VALUE);
    }

    /**
    /**
     * Compares two signal strengths.
     * Compares two signal strengths.
     *
     *
Loading