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
This commit is contained in:
Sewook Seo
2022-08-31 21:19:29 +00:00
parent 051894e03b
commit a16a45e4a2
3 changed files with 32 additions and 0 deletions

View File

@@ -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<android.telephony.data.ThrottleStatus>);
method public final void updateQualifiedNetworkTypes(int, @NonNull java.util.List<java.lang.Integer>);
}

View File

@@ -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<ThrottleStatus> statuses);
oneway void reportEmergencyDataNetworkPreferredTransportChanged (int slotId, int transportType);
}

View File

@@ -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) {