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

Commit 30b1d925 authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Fix ECBM during test mode

An upstream removed duplicate ECBM exit indications from being
generated during ECBM exit. This broke the test procedure using
ril.test.emergencynumber because the modem never sends an exit
inidication in this case.

Bug: 155926465
Test: manual; trigger test emergency call + ECBM
Change-Id: Ia78a839c5b4a66b605ae25041fd74738ff2ab06b
parent 1b9cd84d
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() {
@@ -1401,6 +1404,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()) {
@@ -3421,7 +3425,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);
        }
    }

@@ -3461,8 +3473,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);
            }
@@ -3478,6 +3491,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);