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

Commit 4a52cf2e authored by Jang Hayeong's avatar Jang Hayeong Committed by Sungjae
Browse files

IMS: implementation of CSFB USSD



If UT enabled (CABILITY_TYPE_UT), the USSD is first requested
to IMS svc and IMS svc determines whether the USSD UT is supported.
If not supported, start fail with CSFB reason
(ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED).
UT is enabled if either SS or USSD is supported on UT.
Duplicated pending MMI codes can be made.
IMS pending MMI codes should be cleared.

Bug: 146513393

Change-Id: Iaef36925658ae9d86fa55202d992a807b62d35fe
Signed-off-by: default avatarJang Hayeong <hayeong.jang@samsung.com>
parent 7ad39e83
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1226,6 +1226,8 @@ public class ImsPhone extends ImsPhoneBase {
    }

    public void sendUSSD(String ussdString, Message response) {
        Rlog.d(LOG_TAG, "sendUssd ussdString = " + ussdString);
        mLastDialString = ussdString;
        mCT.sendUSSD(ussdString, response);
    }

+14 −0
Original line number Diff line number Diff line
@@ -3208,6 +3208,20 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        public void onCallStartFailed(ImsCall imsCall, ImsReasonInfo reasonInfo) {
            if (DBG) log("mImsUssdListener onCallStartFailed reasonCode=" + reasonInfo.getCode());

            if (mUssdSession != null) {
                if (DBG) log("mUssdSession is not null");
                // To initiate sending Ussd under circuit-switched call
                if (reasonInfo.getCode() == ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED) {
                    mUssdSession = null;
                    mPhone.getPendingMmiCodes().clear();
                    mPhone.initiateSilentRedial();
                    if (DBG) log("Initiated sending ussd by using silent redial.");
                    return;
                } else {
                    if (DBG) log("Failed to start sending ussd by using silent resendUssd.!!");
                }
            }

            onCallTerminated(imsCall, reasonInfo);
        }