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

Commit cd12b81a authored by Brad Ebinger's avatar Brad Ebinger Committed by Gerrit Code Review
Browse files

Merge "Fix ECBM during test mode"

parents e760d37b 6b2b1b53
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);