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

Commit 2934e84b authored by Ling Ma's avatar Ling Ma Committed by Android (Google) Code Review
Browse files

Merge "Add satellite log" into 24D1-dev

parents 1dfef654 5e9a2990
Loading
Loading
Loading
Loading
+18 −15
Original line number Diff line number Diff line
@@ -558,6 +558,16 @@ public class DataNetworkController extends Handler {
                    + get(0) : "") + "]";
        }

        /**
         * Print "capabilities - connectivity transport". e.g. INTERNET|NOT_RESTRICTED-SATELLITE
         */
        @NonNull
        public String toStringSimplified() {
            return size() > 0 ? DataUtils.networkCapabilitiesToString(get(0).getCapabilities())
                    + "-" + DataUtils.connectivityTransportsToString(get(0).getTransportTypes())
                    : "";
        }

        /**
         * Dump the network request list.
         *
@@ -1838,8 +1848,7 @@ public class DataNetworkController extends Handler {
        log("Re-evaluating " + networkRequestLists.stream().mapToInt(List::size).sum()
                + " unsatisfied network requests in " + networkRequestLists.size()
                + " groups, " + networkRequestLists.stream().map(
                        requestList -> DataUtils.networkCapabilitiesToString(
                                requestList.get(0).getCapabilities()))
                        NetworkRequestList::toStringSimplified)
                .collect(Collectors.joining(", ")) + " due to " + reason);

        // Second, see if any existing network can satisfy those network requests.
@@ -2115,23 +2124,20 @@ public class DataNetworkController extends Handler {
            @NonNull TelephonyNetworkRequest networkRequest, @TransportType int transport) {
        // When the device is on satellite, only restricted network request can request network.
        if (mServiceState.isUsingNonTerrestrialNetwork()
                && networkRequest.getNativeNetworkRequest().hasCapability(
                && networkRequest.hasCapability(
                        NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)) {
            return false;
        }

        // If the network request does not specify cellular or satellite, then it can be
        // satisfied when the device is either on cellular ot satellite.
        if (!networkRequest.getNativeNetworkRequest().hasTransport(
                NetworkCapabilities.TRANSPORT_CELLULAR)
                && !networkRequest.getNativeNetworkRequest().hasTransport(
                        NetworkCapabilities.TRANSPORT_SATELLITE)) {
        if (!networkRequest.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                && !networkRequest.hasTransport(NetworkCapabilities.TRANSPORT_SATELLITE)) {
            return true;
        }

        // Check if this is a IWLAN network request.
        if (networkRequest.getNativeNetworkRequest().hasTransport(
                NetworkCapabilities.TRANSPORT_CELLULAR)
        if (networkRequest.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                && transport == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) {
            // If the cellular request would result in bringing up network on IWLAN, then no
            // need to check if the device is using satellite network.
@@ -2140,8 +2146,7 @@ public class DataNetworkController extends Handler {

        // As a short term solution, allowing some networks to be always marked as cellular
        // transport if certain capabilities are in the network request.
        if (networkRequest.getNativeNetworkRequest().hasTransport(
                NetworkCapabilities.TRANSPORT_CELLULAR) && Arrays.stream(
        if (networkRequest.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) && Arrays.stream(
                        networkRequest.getCapabilities())
                .anyMatch(mDataConfigManager.getForcedCellularTransportCapabilities()::contains)) {
            return true;
@@ -2151,11 +2156,9 @@ public class DataNetworkController extends Handler {
        // the network is satellite, then the request must specify satellite transport and
        // restricted.
        return (mServiceState.isUsingNonTerrestrialNetwork()
                && networkRequest.getNativeNetworkRequest().hasTransport(
                        NetworkCapabilities.TRANSPORT_SATELLITE))
                && networkRequest.hasTransport(NetworkCapabilities.TRANSPORT_SATELLITE))
                || (!mServiceState.isUsingNonTerrestrialNetwork()
                        && networkRequest.getNativeNetworkRequest().hasTransport(
                        NetworkCapabilities.TRANSPORT_CELLULAR));
                        && networkRequest.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR));
    }

    /**
+40 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.AccessNetworkConstants.RadioAccessNetworkType;
import android.telephony.AccessNetworkConstants.TransportType;
import android.telephony.Annotation.ConnectivityTransport;
import android.telephony.Annotation.DataActivityType;
import android.telephony.Annotation.NetCapability;
import android.telephony.Annotation.NetworkType;
@@ -175,6 +176,44 @@ public class DataUtils {
        }
    }

    /**
     * Concat an array of {@link NetworkCapabilities.Transport} in string format.
     *
     * @param transports an array of connectivity transports
     * @return a string of the array of transports.
     */
    @NonNull
    public static String connectivityTransportsToString(
            @NonNull @ConnectivityTransport int[] transports) {
        return Arrays.stream(transports).mapToObj(DataUtils::connectivityTransportToString)
                .collect(Collectors.joining("|"));
    }

    /**
     * Convert a {@link NetworkCapabilities.Transport} to a string.
     *
     * @param transport the connectivity transport
     * @return the transport in string
     */
    @NonNull
    public static String connectivityTransportToString(
            @ConnectivityTransport int transport) {
        return switch (transport) {
            case NetworkCapabilities.TRANSPORT_CELLULAR -> "CELLULAR";
            case NetworkCapabilities.TRANSPORT_WIFI -> "WIFI";
            case NetworkCapabilities.TRANSPORT_BLUETOOTH -> "BLUETOOTH";
            case NetworkCapabilities.TRANSPORT_ETHERNET -> "ETHERNET";
            case NetworkCapabilities.TRANSPORT_VPN -> "VPN";
            case NetworkCapabilities.TRANSPORT_WIFI_AWARE -> "WIFI_AWARE";
            case NetworkCapabilities.TRANSPORT_LOWPAN -> "LOWPAN";
            case NetworkCapabilities.TRANSPORT_TEST -> "TEST";
            case NetworkCapabilities.TRANSPORT_USB -> "USB";
            case NetworkCapabilities.TRANSPORT_THREAD -> "THREAD";
            case NetworkCapabilities.TRANSPORT_SATELLITE -> "SATELLITE";
            default -> "Unknown(" + transport + ")";
        };
    }

    /**
     * Convert network capabilities to string.
     *
@@ -427,8 +466,7 @@ public class DataUtils {
                                Arrays.stream(networkRequest.getNativeNetworkRequest()
                                                .getEnterpriseIds())
                                        .boxed().collect(Collectors.toSet()),
                                Arrays.stream(networkRequest.getNativeNetworkRequest()
                                                .getTransportTypes())
                                Arrays.stream(networkRequest.getTransportTypes())
                                        .boxed().collect(Collectors.toSet())
                                ),
                        v -> new NetworkRequestList()).add(networkRequest);
+18 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.net.NetworkSpecifier;
import android.os.SystemClock;
import android.telephony.Annotation.ConnectivityTransport;
import android.telephony.Annotation.NetCapability;
import android.telephony.data.ApnSetting;
import android.telephony.data.DataProfile;
@@ -237,6 +238,23 @@ public class TelephonyNetworkRequest {
        return mNativeNetworkRequest.hasCapability(capability);
    }

    /**
     * @see NetworkRequest#getTransportTypes()
     */
    @NonNull
    @ConnectivityTransport
    public int[] getTransportTypes() {
        return mNativeNetworkRequest.getTransportTypes();
    }

    /**
     * @return {@code true} if the request can be served on the specified transport.
     * @see NetworkRequest#hasTransport
     */
    public boolean hasTransport(@ConnectivityTransport int transport) {
        return mNativeNetworkRequest.hasTransport(transport);
    }

    /**
     * @see NetworkRequest#canBeSatisfiedBy(NetworkCapabilities)
     */