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

Commit 3f6296a7 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati Committed by Evan Laird
Browse files

Add onCarrierRoamingNtnSignalStrengthChanged callback.

Bug: 377030018
Test: atest TelephonyCallbackTest, atest TelephonyRegistryManagerTest
FLAG: com.android.internal.telephony.flags.carrier_roaming_nb_iot_ntn
Change-Id: I8a84a6aef82baa463c2ba94bc0295d47c1fb8df5
parent 73cdce53
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.telephony.TelephonyManager.EmergencyCallbackModeType;
import android.telephony.emergency.EmergencyNumber;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.MediaQualityStatus;
import android.telephony.satellite.NtnSignalStrength;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.IPhoneStateListener;
@@ -1706,6 +1707,11 @@ public class PhoneStateListener {
                @NetworkRegistrationInfo.ServiceType int[] availableServices) {
            // not supported on the deprecated interface - Use TelephonyCallback instead
        }

        public final void onCarrierRoamingNtnSignalStrengthChanged(
                @NonNull NtnSignalStrength ntnSignalStrength) {
            // not supported on the deprecated interface - Use TelephonyCallback instead
        }
    }

    private void log(String s) {
+33 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.telephony.emergency.EmergencyNumber;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.MediaQualityStatus;
import android.telephony.ims.MediaThreshold;
import android.telephony.satellite.NtnSignalStrength;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
@@ -694,6 +695,15 @@ public class TelephonyCallback {
     */
    public static final int EVENT_CARRIER_ROAMING_NTN_AVAILABLE_SERVICES_CHANGED = 44;

    /**
     * Event for listening to carrier roaming non-terrestrial network signal strength changes.
     *
     * @see CarrierRoamingNtnModeListener
     *
     * @hide
     */
    public static final int EVENT_CARRIER_ROAMING_NTN_SIGNAL_STRENGTH_CHANGED = 45;

    /**
     * @hide
     */
@@ -741,7 +751,8 @@ public class TelephonyCallback {
            EVENT_SIMULTANEOUS_CELLULAR_CALLING_SUBSCRIPTIONS_CHANGED,
            EVENT_CARRIER_ROAMING_NTN_MODE_CHANGED,
            EVENT_CARRIER_ROAMING_NTN_ELIGIBLE_STATE_CHANGED,
            EVENT_CARRIER_ROAMING_NTN_AVAILABLE_SERVICES_CHANGED
            EVENT_CARRIER_ROAMING_NTN_AVAILABLE_SERVICES_CHANGED,
            EVENT_CARRIER_ROAMING_NTN_SIGNAL_STRENGTH_CHANGED
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface TelephonyEvent {
@@ -1805,6 +1816,14 @@ public class TelephonyCallback {
         */
        default void onCarrierRoamingNtnAvailableServicesChanged(
                @NetworkRegistrationInfo.ServiceType List<Integer> availableServices) {}

        /**
         * Callback invoked when carrier roaming non-terrestrial network signal strength changes.
         *
         * @param ntnSignalStrength non-terrestrial network signal strength.
         */
        default void onCarrierRoamingNtnSignalStrengthChanged(
                @NonNull NtnSignalStrength ntnSignalStrength) {}
    }

    /**
@@ -2270,5 +2289,18 @@ public class TelephonyCallback {
            Binder.withCleanCallingIdentity(() -> mExecutor.execute(
                    () -> listener.onCarrierRoamingNtnAvailableServicesChanged(ServiceList)));
        }

        public void onCarrierRoamingNtnSignalStrengthChanged(
                @NonNull NtnSignalStrength ntnSignalStrength) {
            if (!Flags.carrierRoamingNbIotNtn()) return;

            CarrierRoamingNtnModeListener listener =
                    (CarrierRoamingNtnModeListener) mTelephonyCallbackWeakRef.get();
            if (listener == null) return;

            Binder.withCleanCallingIdentity(() -> mExecutor.execute(
                    () -> listener.onCarrierRoamingNtnSignalStrengthChanged(ntnSignalStrength)));

        }
    }
}
+19 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import android.telephony.emergency.EmergencyNumber;
import android.telephony.ims.ImsCallSession;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.MediaQualityStatus;
import android.telephony.satellite.NtnSignalStrength;
import android.telephony.satellite.SatelliteStateChangeListener;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -1136,6 +1137,23 @@ public class TelephonyRegistryManager {
        }
    }

    /**
     * Notify external listeners that carrier roaming non-terrestrial network
     * signal strength changed.
     * @param subId subscription ID.
     * @param ntnSignalStrength non-terrestrial network signal strength.
     * @hide
     */
    public final void notifyCarrierRoamingNtnSignalStrengthChanged(int subId,
            @NonNull NtnSignalStrength ntnSignalStrength) {
        try {
            sRegistry.notifyCarrierRoamingNtnSignalStrengthChanged(subId, ntnSignalStrength);
        } catch (RemoteException ex) {
            // system server crash
            throw ex.rethrowFromSystemServer();
        }
    }

    /**
     * Processes potential event changes from the provided {@link TelephonyCallback}.
     *
@@ -1293,6 +1311,7 @@ public class TelephonyRegistryManager {
            eventList.add(TelephonyCallback.EVENT_CARRIER_ROAMING_NTN_MODE_CHANGED);
            eventList.add(TelephonyCallback.EVENT_CARRIER_ROAMING_NTN_ELIGIBLE_STATE_CHANGED);
            eventList.add(TelephonyCallback.EVENT_CARRIER_ROAMING_NTN_AVAILABLE_SERVICES_CHANGED);
            eventList.add(TelephonyCallback.EVENT_CARRIER_ROAMING_NTN_SIGNAL_STRENGTH_CHANGED);
        }
        return eventList;
    }
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.telephony.PhoneCapability;
import android.telephony.PhysicalChannelConfig;
import android.telephony.PreciseCallState;
import android.telephony.PreciseDataConnectionState;
import android.telephony.satellite.NtnSignalStrength;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.emergency.EmergencyNumber;
@@ -85,4 +86,5 @@ oneway interface IPhoneStateListener {
    void onCarrierRoamingNtnModeChanged(in boolean active);
    void onCarrierRoamingNtnEligibleStateChanged(in boolean eligible);
    void onCarrierRoamingNtnAvailableServicesChanged(in int[] availableServices);
    void onCarrierRoamingNtnSignalStrengthChanged(in NtnSignalStrength ntnSignalStrength);
}
+3 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.telephony.ims.ImsReasonInfo;
import android.telephony.PhoneCapability;
import android.telephony.PhysicalChannelConfig;
import android.telephony.PreciseDataConnectionState;
import android.telephony.satellite.NtnSignalStrength;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.emergency.EmergencyNumber;
@@ -125,8 +126,10 @@ interface ITelephonyRegistry {
    void notifyCarrierRoamingNtnModeChanged(int subId, in boolean active);
    void notifyCarrierRoamingNtnEligibleStateChanged(int subId, in boolean eligible);
    void notifyCarrierRoamingNtnAvailableServicesChanged(int subId, in int[] availableServices);
    void notifyCarrierRoamingNtnSignalStrengthChanged(int subId, in NtnSignalStrength ntnSignalStrength);

    void addSatelliteStateChangeListener(ISatelliteStateChangeListener listener, String pkg, String featureId);
    void removeSatelliteStateChangeListener(ISatelliteStateChangeListener listener, String pkg);
    void notifySatelliteStateChanged(boolean isEnabled);

}
Loading