From a16a45e4a24e24667f014ce07f45163f104bb8d1 Mon Sep 17 00:00:00 2001 From: Sewook Seo Date: Wed, 31 Aug 2022 21:19:29 +0000 Subject: [PATCH] Guide transport type for emergency connection Add interface(FWK->QNS) to inform preferred tranport type which is required for emergency data connection setup. Bug: 242935332 CTS-Coverage-Bug: 244513375 Test: Android build Change-Id: Ieab62a917a90c6198c051996df6471cb30f29c31 --- core/api/system-current.txt | 1 + .../data/IQualifiedNetworksService.aidl | 1 + .../data/QualifiedNetworksService.java | 30 +++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 2b2f2023bef61..9d20eda2b7f65 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -13976,6 +13976,7 @@ package android.telephony.data { ctor public QualifiedNetworksService.NetworkAvailabilityProvider(int); method public abstract void close(); method public final int getSlotIndex(); + method public void reportEmergencyDataNetworkPreferredTransportChanged(int); method public void reportThrottleStatusChanged(@NonNull java.util.List); method public final void updateQualifiedNetworkTypes(int, @NonNull java.util.List); } diff --git a/telephony/java/android/telephony/data/IQualifiedNetworksService.aidl b/telephony/java/android/telephony/data/IQualifiedNetworksService.aidl index ba2b62d14bece..8e2707735f63b 100644 --- a/telephony/java/android/telephony/data/IQualifiedNetworksService.aidl +++ b/telephony/java/android/telephony/data/IQualifiedNetworksService.aidl @@ -27,4 +27,5 @@ interface IQualifiedNetworksService oneway void createNetworkAvailabilityProvider(int slotId, IQualifiedNetworksServiceCallback callback); oneway void removeNetworkAvailabilityProvider(int slotId); oneway void reportThrottleStatusChanged(int slotId, in List statuses); + oneway void reportEmergencyDataNetworkPreferredTransportChanged (int slotId, int transportType); } diff --git a/telephony/java/android/telephony/data/QualifiedNetworksService.java b/telephony/java/android/telephony/data/QualifiedNetworksService.java index fb973361e398f..56f0f9f137727 100644 --- a/telephony/java/android/telephony/data/QualifiedNetworksService.java +++ b/telephony/java/android/telephony/data/QualifiedNetworksService.java @@ -68,6 +68,7 @@ public abstract class QualifiedNetworksService extends Service { private static final int QNS_REMOVE_ALL_NETWORK_AVAILABILITY_PROVIDERS = 3; private static final int QNS_UPDATE_QUALIFIED_NETWORKS = 4; private static final int QNS_APN_THROTTLE_STATUS_CHANGED = 5; + private static final int QNS_EMERGENCY_DATA_NETWORK_PREFERRED_TRANSPORT_CHANGED = 6; private final HandlerThread mHandlerThread; @@ -192,6 +193,20 @@ public abstract class QualifiedNetworksService extends Service { Log.d(TAG, "reportThrottleStatusChanged: statuses size=" + statuses.size()); } + /** + * The framework calls this method when the preferred transport type used to set up + * emergency data network is changed. + * + * This method is meant to be overridden. + * + * @param transportType transport type changed to be preferred + */ + public void reportEmergencyDataNetworkPreferredTransportChanged( + @AccessNetworkConstants.TransportType int transportType) { + Log.d(TAG, "reportEmergencyDataNetworkPreferredTransportChanged: " + + AccessNetworkConstants.transportTypeToString(transportType)); + } + /** * Called when the qualified networks provider is removed. The extended class should * implement this method to perform cleanup works. @@ -237,6 +252,13 @@ public abstract class QualifiedNetworksService extends Service { } break; + case QNS_EMERGENCY_DATA_NETWORK_PREFERRED_TRANSPORT_CHANGED: + if (provider != null) { + int transportType = (int) message.arg2; + provider.reportEmergencyDataNetworkPreferredTransportChanged(transportType); + } + break; + case QNS_REMOVE_NETWORK_AVAILABILITY_PROVIDER: if (provider != null) { provider.close(); @@ -332,6 +354,14 @@ public abstract class QualifiedNetworksService extends Service { mHandler.obtainMessage(QNS_APN_THROTTLE_STATUS_CHANGED, slotIndex, 0, statuses) .sendToTarget(); } + + @Override + public void reportEmergencyDataNetworkPreferredTransportChanged(int slotIndex, + @AccessNetworkConstants.TransportType int transportType) { + mHandler.obtainMessage( + QNS_EMERGENCY_DATA_NETWORK_PREFERRED_TRANSPORT_CHANGED, + slotIndex, transportType).sendToTarget(); + } } private void log(String s) {