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

Commit b39318b5 authored by Daniel Banta's avatar Daniel Banta Committed by Android (Google) Code Review
Browse files

Merge changes from topic "u-ds-7-ecbm"

* changes:
  Enhance existing ECBM CL to also include domain specific ECBM logic
  [EmergencyStateTracker] Enter/Exit Emergency Callback Mode and Notify Listeners
parents e974964f 472138ca
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ import android.util.EventLog;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.PhoneInternalInterface.DialArgs;
import com.android.internal.telephony.cdma.CdmaCallWaitingNotification;
import com.android.internal.telephony.domainselection.DomainSelectionResolver;
import com.android.internal.telephony.emergency.EmergencyStateTracker;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.telephony.Rlog;

@@ -483,8 +485,21 @@ public class GsmCdmaCallTracker extends CallTracker {
            if (!isPhoneInEcmMode || (isPhoneInEcmMode && isEmergencyCall)) {
                mCi.dial(mPendingMO.getAddress(), mPendingMO.isEmergencyCall(),
                        mPendingMO.getEmergencyNumberInfo(),
                        mPendingMO.hasKnownUserIntentEmergency(),
                        clirMode, obtainCompleteMessage());
                        mPendingMO.hasKnownUserIntentEmergency(), clirMode,
                        obtainCompleteMessage());
            } else if (DomainSelectionResolver.getInstance().isDomainSelectionSupported()) {
                mPendingCallInEcm = true;
                final int finalClirMode = clirMode;
                Runnable onComplete = new Runnable() {
                    @Override
                    public void run() {
                        mCi.dial(mPendingMO.getAddress(), mPendingMO.isEmergencyCall(),
                        mPendingMO.getEmergencyNumberInfo(),
                        mPendingMO.hasKnownUserIntentEmergency(), finalClirMode,
                        obtainCompleteMessage());
                    }
                };
                EmergencyStateTracker.getInstance().exitEmergencyCallbackMode(onComplete);
            } else {
                mPhone.exitEmergencyCallbackMode();
                mPhone.setOnEcbModeExitResponse(this, EVENT_EXIT_ECM_RESPONSE_CDMA, null);
+10 −4
Original line number Diff line number Diff line
@@ -98,7 +98,9 @@ import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
import com.android.internal.telephony.data.AccessNetworksManager;
import com.android.internal.telephony.data.DataNetworkController;
import com.android.internal.telephony.data.LinkBandwidthEstimator;
import com.android.internal.telephony.domainselection.DomainSelectionResolver;
import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.emergency.EmergencyStateTracker;
import com.android.internal.telephony.gsm.GsmMmiCode;
import com.android.internal.telephony.gsm.SsData;
import com.android.internal.telephony.gsm.SuppServiceNotification;
@@ -1512,11 +1514,14 @@ public class GsmCdmaPhone extends Phone {
        }
        if (DBG) logd("Trying (non-IMS) CS call");
        if (isDialedNumberSwapped && isEmergency) {
            // If domain selection is enabled, ECM testing is handled in EmergencyStateTracker
            if (!DomainSelectionResolver.getInstance().isDomainSelectionSupported()) {
                // Triggers ECM when CS call ends only for test emergency calls using
                // ril.test.emergencynumber.
                mIsTestingEmergencyCallbackMode = true;
                mCi.testingEmergencyCall();
            }
        }

        chosenPhoneConsumer.accept(this);
        return dialInternal(dialString, dialArgs);
@@ -3909,6 +3914,7 @@ public class GsmCdmaPhone extends Phone {
     * otherwise, restart Ecm timer and notify apps the timer is restarted.
     */
    public void handleTimerInEmergencyCallbackMode(int action) {
        if (DomainSelectionResolver.getInstance().isDomainSelectionSupported()) return;
        switch(action) {
            case CANCEL_ECM_TIMER:
                removeCallbacks(mExitEcmRunnable);
+11 −0
Original line number Diff line number Diff line
@@ -87,8 +87,10 @@ import com.android.internal.telephony.data.AccessNetworksManager;
import com.android.internal.telephony.data.DataNetworkController;
import com.android.internal.telephony.data.DataSettingsManager;
import com.android.internal.telephony.data.LinkBandwidthEstimator;
import com.android.internal.telephony.domainselection.DomainSelectionResolver;
import com.android.internal.telephony.emergency.EmergencyConstants;
import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.emergency.EmergencyStateTracker;
import com.android.internal.telephony.imsphone.ImsCallInfo;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.imsphone.ImsPhoneCall;
@@ -2981,6 +2983,9 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
    // This property is used to handle phone process crashes, and is the same for CDMA and IMS
    // phones
    protected static boolean getInEcmMode() {
        if (DomainSelectionResolver.getInstance().isDomainSelectionSupported()) {
            return EmergencyStateTracker.getInstance().isInEcm();
        }
        return TelephonyProperties.in_ecm_mode().orElse(false);
    }

@@ -2990,6 +2995,9 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
     * emergency operator.
     */
    public boolean isInEcm() {
        if (DomainSelectionResolver.getInstance().isDomainSelectionSupported()) {
            return EmergencyStateTracker.getInstance().isInEcm();
        }
        return mIsPhoneInEcmState;
    }

@@ -2998,6 +3006,9 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
    }

    public boolean isInCdmaEcm() {
        if (DomainSelectionResolver.getInstance().isDomainSelectionSupported()) {
            return EmergencyStateTracker.getInstance().isInCdmaEcm();
        }
        return getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA && isInEcm()
                && (mImsPhone == null || !mImsPhone.isInImsEcm());
    }
+314 −56

File changed.

Preview size limit exceeded, changes collapsed.

+6 −0
Original line number Diff line number Diff line
@@ -120,7 +120,9 @@ import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.TelephonyComponentFactory;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.domainselection.DomainSelectionResolver;
import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.emergency.EmergencyStateTracker;
import com.android.internal.telephony.gsm.SuppServiceNotification;
import com.android.internal.telephony.metrics.ImsStats;
import com.android.internal.telephony.metrics.TelephonyMetrics;
@@ -908,6 +910,9 @@ public class ImsPhone extends ImsPhoneBase {

    @Override
    public boolean isInImsEcm() {
        if (DomainSelectionResolver.getInstance().isDomainSelectionSupported()) {
            return EmergencyStateTracker.getInstance().isInImsEcm();
        }
        return mIsInImsEcm;
    }

@@ -2104,6 +2109,7 @@ public class ImsPhone extends ImsPhoneBase {
     * Ecm timer and notify apps the timer is restarted.
     */
    void handleTimerInEmergencyCallbackMode(int action) {
        if (DomainSelectionResolver.getInstance().isDomainSelectionSupported()) return;
        switch (action) {
            case CANCEL_ECM_TIMER:
                removeCallbacks(mExitEcmRunnable);
Loading