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

Commit 9e4e6945 authored by Brad Ebinger's avatar Brad Ebinger Committed by Automerger Merge Worker
Browse files

Merge "Fix ECBM during test mode" am: cd12b81a

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/1344698

Change-Id: I5b405cea846c59ade84a17d15a8b8ffa8aa4bb2d
parents 5b2128d0 cd12b81a
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -167,6 +167,9 @@ public class GsmCdmaPhone extends Phone {
    // string to define how the carrier specifies its own ota sp number
    private String mCarrierOtaSpNumSchema;
    private Boolean mUiccApplicationsEnabled = null;
    // keeps track of when we have triggered an emergency call due to the ril.test.emergencynumber
    // param being set and we should generate a simulated exit from the modem upon exit of ECbM.
    private boolean mIsTestingEmergencyCallbackMode = false;
    @VisibleForTesting
    public static int ENABLE_UICC_APPS_MAX_RETRIES = 3;
    private static final int REAPPLY_UICC_APPS_SETTING_RETRY_TIME_GAP_IN_MS = 5000;
@@ -1408,6 +1411,7 @@ public class GsmCdmaPhone extends Phone {
        if (isDialedNumberSwapped && isEmergency) {
            // Triggers ECM when CS call ends only for test emergency calls using
            // ril.test.emergencynumber.
            mIsTestingEmergencyCallbackMode = true;
            mCi.testingEmergencyCall();
        }
        if (isPhoneTypeGsm()) {
@@ -3469,7 +3473,15 @@ public class GsmCdmaPhone extends Phone {
            if (mWakeLock.isHeld()) {
                mWakeLock.release();
            }
            mCi.exitEmergencyCallbackMode(null);
            Message msg = null;
            if (mIsTestingEmergencyCallbackMode) {
                // prevent duplicate exit messages from happening due to this message being handled
                // as well as an UNSOL when the modem exits ECbM. Instead, only register for this
                // message callback when this is a test and we will not be receiving the UNSOL from
                // the modem.
                msg = obtainMessage(EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE);
            }
            mCi.exitEmergencyCallbackMode(msg);
        }
    }

@@ -3509,8 +3521,9 @@ public class GsmCdmaPhone extends Phone {
        if (mEcmExitRespRegistrant != null) {
            mEcmExitRespRegistrant.notifyRegistrant(ar);
        }
        // if exiting ecm success
        if (ar.exception == null) {
        // if exiting is successful or we are testing and the modem responded with an error upon
        // exit, which may occur in some IRadio implementations.
        if (ar.exception == null || mIsTestingEmergencyCallbackMode) {
            if (isInEcm()) {
                setIsInEcm(false);
            }
@@ -3526,6 +3539,7 @@ public class GsmCdmaPhone extends Phone {
            mDataEnabledSettings.setInternalDataEnabled(true);
            notifyEmergencyCallRegistrants(false);
        }
        mIsTestingEmergencyCallbackMode = false;
    }

    //CDMA
+2 −1
Original line number Diff line number Diff line
@@ -230,7 +230,8 @@ public class RIL extends BaseCommands implements CommandsInterface {

    Object[] mLastNITZTimeInfo;

    // When we are testing emergency calls
    // When we are testing emergency calls using ril.test.emergencynumber, this will trigger test
    // ECbM when the call is ended.
    @UnsupportedAppUsage
    AtomicBoolean mTestingEmergencyCall = new AtomicBoolean(false);