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

Commit 2705ce38 authored by Brad Ebinger's avatar Brad Ebinger Committed by Android (Google) Code Review
Browse files

Merge "Fix ECBM during test mode" into rvc-dev

parents 545dd777 30b1d925
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -160,6 +160,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;

    // A runnable which is used to automatically exit from Ecm after a period of time.
    private Runnable mExitEcmRunnable = new Runnable() {
@@ -1413,6 +1416,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()) {
@@ -3435,7 +3439,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);
        }
    }

@@ -3475,8 +3487,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);
            }
@@ -3492,6 +3505,7 @@ public class GsmCdmaPhone extends Phone {
            mDataEnabledSettings.setInternalDataEnabled(true);
            notifyEmergencyCallRegistrants(false);
        }
        mIsTestingEmergencyCallbackMode = false;
    }

    //CDMA
+2 −1
Original line number Diff line number Diff line
@@ -228,7 +228,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);