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

Commit a16a45e4 authored by Sewook Seo's avatar Sewook Seo
Browse files

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
parent 051894e0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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>);
  }
+1 −0
Original line number Diff line number Diff line
@@ -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);
}
+30 −0
Original line number Diff line number Diff line
@@ -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) {