Merge "Add satellite log" into 24D1-dev am: 2934e84b47
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/27425583
Change-Id: I404dfea090712e75e5550ced03f747a0f18c6ed7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/java/com/android/internal/telephony/data/DataNetworkController.java b/src/java/com/android/internal/telephony/data/DataNetworkController.java
index 6dba1a7..4c7ff2b 100644
--- a/src/java/com/android/internal/telephony/data/DataNetworkController.java
+++ b/src/java/com/android/internal/telephony/data/DataNetworkController.java
@@ -594,6 +594,16 @@
}
/**
+ * 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.
*
* @param pw print writer.
@@ -1863,8 +1873,7 @@
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.
@@ -2141,23 +2150,20 @@
@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.
@@ -2166,8 +2172,7 @@
// 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;
@@ -2177,11 +2182,9 @@
// 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));
}
/**
diff --git a/src/java/com/android/internal/telephony/data/DataUtils.java b/src/java/com/android/internal/telephony/data/DataUtils.java
index a7a7282..8b95913 100644
--- a/src/java/com/android/internal/telephony/data/DataUtils.java
+++ b/src/java/com/android/internal/telephony/data/DataUtils.java
@@ -27,6 +27,7 @@
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;
@@ -172,6 +173,44 @@
}
/**
+ * 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.
* <p>
* This is for debugging and logging purposes only.
@@ -372,8 +411,7 @@
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);
diff --git a/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java b/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java
index 6e5e1f8..117eb36 100644
--- a/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java
+++ b/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java
@@ -24,6 +24,7 @@
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;
@@ -250,6 +251,23 @@
}
/**
+ * @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)
*/
public boolean canBeSatisfiedBy(@Nullable NetworkCapabilities nc) {