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

Commit 7b632fd4 authored by Tyler Gunn's avatar Tyler Gunn Committed by android-build-merger
Browse files

Merge "Ensure USSD codes are sent over IMS when CS is out of service."

am: eb2de356

Change-Id: Iba80312fc5d25c9f8e0181276a0f97784f7f7dbf
parents cc0a2f69 eb2de356
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1860,6 +1860,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
                    ImsCallProfile.DIALSTRING_USSD);

            mUssdSession = mImsManager.makeCall(profile, callees, mImsUssdListener);
            mPendingUssd = response;
        } catch (ImsException e) {
            loge("sendUSSD : " + e);
            mPhone.sendErrorResponse(response, e);
+15 −3
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.internal.telephony.imsphone;

import static android.telephony.ServiceState.STATE_IN_SERVICE;

import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_DATA;
import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_DATA_ASYNC;
import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_DATA_SYNC;
@@ -1001,9 +1003,19 @@ public final class ImsPhoneMmiCode extends Handler implements MmiCode {
                    throw new RuntimeException ("Invalid or Unsupported MMI Code");
                }
            } else if (mPoundString != null) {
                Rlog.d(LOG_TAG, "processCode: Sending pound string '"
                       + mDialingNumber + "' over CS pipe.");
                // We'll normally send USSD over the CS pipe, but if it happens that the CS phone
                // is out of service, we'll just try over IMS instead.
                if (mPhone.getDefaultPhone().getServiceStateTracker().mSS.getState()
                        == STATE_IN_SERVICE) {
                    Rlog.i(LOG_TAG, "processCode: Sending ussd string '"
                            + Rlog.pii(LOG_TAG, mPoundString) + "' over CS pipe.");
                    throw new CallStateException(Phone.CS_FALLBACK);
                } else {
                    Rlog.i(LOG_TAG, "processCode: CS is out of service, sending ussd string '"
                            + Rlog.pii(LOG_TAG, mPoundString) + "' over IMS pipe.");
                    sendUssd(mPoundString);
                }

            } else {
                Rlog.d(LOG_TAG, "processCode: invalid or unsupported MMI");
                throw new RuntimeException ("Invalid or Unsupported MMI Code");