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

Commit 6d9f4455 authored by virkumar's avatar virkumar
Browse files

Allow of messageRef (TP-MR) increment/save/update logic at Framework based on device config

when config_stk_sms_send_support is set to false - modem to manage increment and saving of messageRef(TP-MR) value along with updating value to SIM card.
when config_stk_sms_send_support is set to true - framework increments/updates an saves messageRef(TP-MR) value along with updating value to SIM card.

Test: Multipart and normal SMS on live NW over CS and IMS, Unit Test.
Bug: 265245128
Change-Id: I964189f49205106af1b9aafab8e3e579bc5bf9d4
parent 2932295d
Loading
Loading
Loading
Loading
+29 −3
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.AsyncResult;
@@ -519,11 +520,36 @@ public abstract class SMSDispatcher extends Handler {
     * @return messageRef TP message Reference value
     */
    public int nextMessageRef() {
        if (!isMessageRefIncrementViaTelephony()) {
            return 0;
        }

        mMessageRef = (mMessageRef + 1) % 256;
        updateTPMessageReference();
        return mMessageRef;
    }

    /**
     * As modem is using the last used TP-MR value present in SIM card, increment of
     * messageRef(TP-MR) value should be prevented (config_stk_sms_send_support set to false)
     * at telephony framework. In future, config_stk_sms_send_support flag will be enabled
     * so that messageRef(TP-MR) increment will be done at framework side only.
     *
     * TODO:- Need to have new flag to control writing TP-MR value to SIM or shared prefrence.
     */
    public boolean isMessageRefIncrementViaTelephony() {
        boolean isMessageRefIncrementEnabled = false;
        try {
            isMessageRefIncrementEnabled = mContext.getResources().getBoolean(
                    com.android.internal.R.bool.config_stk_sms_send_support);
        } catch (NotFoundException e) {
            Rlog.e(TAG, "isMessageRefIncrementViaTelephony NotFoundException Exception");
        }

        Rlog.i(TAG, "bool.config_stk_sms_send_support= " + isMessageRefIncrementEnabled);
        return isMessageRefIncrementEnabled;
    }

    /**
     * Use the carrier messaging service to send a data or text SMS.
     */
+23 −5
Original line number Diff line number Diff line
@@ -322,7 +322,10 @@ public class ImsSmsDispatcherTest extends TelephonyTest {
    @Test
    public void testSendSmswithMessageRef() throws Exception {
        int token = mImsSmsDispatcher.mNextToken.get();
        int messageRef = mImsSmsDispatcher.nextMessageRef() + 1;
        int messageRef = mImsSmsDispatcher.nextMessageRef();
        if (mImsSmsDispatcher.isMessageRefIncrementViaTelephony()) {
            messageRef += 1;
        }

        when(mImsManager.getSmsFormat()).thenReturn(SmsMessage.FORMAT_3GPP);
        when(mPhone.getPhoneType()).thenReturn(PhoneConstants.PHONE_TYPE_GSM);
@@ -338,7 +341,10 @@ public class ImsSmsDispatcherTest extends TelephonyTest {
    @Test
    public void testFallbackGsmRetrywithMessageRef() throws Exception {
        int token = mImsSmsDispatcher.mNextToken.get();
        int messageRef = mImsSmsDispatcher.nextMessageRef() + 1;
        int messageRef = mImsSmsDispatcher.nextMessageRef();
        if (mImsSmsDispatcher.isMessageRefIncrementViaTelephony()) {
            messageRef += 1;
        }

        when(mImsManager.getSmsFormat()).thenReturn(SmsMessage.FORMAT_3GPP);
        when(mPhone.getPhoneType()).thenReturn(PhoneConstants.PHONE_TYPE_GSM);
@@ -357,13 +363,21 @@ public class ImsSmsDispatcherTest extends TelephonyTest {
        ArgumentCaptor<SMSDispatcher.SmsTracker> captor =
                ArgumentCaptor.forClass(SMSDispatcher.SmsTracker.class);
        verify(mSmsDispatchersController).sendRetrySms(captor.capture());
        if (mImsSmsDispatcher.isMessageRefIncrementViaTelephony()) {
            assertTrue(messageRef + 1 == captor.getValue().mMessageRef);
        } else {
            assertTrue(messageRef == captor.getValue().mMessageRef);
        }
    }

    @Test
    public void testErrorImsRetrywithMessageRef() throws Exception {
        int token = mImsSmsDispatcher.mNextToken.get();
        int messageRef = mImsSmsDispatcher.nextMessageRef() + 1;
        int messageRef = mImsSmsDispatcher.nextMessageRef();
        if (mImsSmsDispatcher.isMessageRefIncrementViaTelephony()) {
            messageRef += 1;
        }

        mContextFixture.getCarrierConfigBundle().putInt(CarrierConfigManager.ImsSms
                                                .KEY_SMS_OVER_IMS_SEND_RETRY_DELAY_MILLIS_INT,
                                                2000);
@@ -399,7 +413,11 @@ public class ImsSmsDispatcherTest extends TelephonyTest {
    @Test
    public void testErrorImsRetrywithRetryConfig() throws Exception {
        int token = mImsSmsDispatcher.mNextToken.get();
        int messageRef = mImsSmsDispatcher.nextMessageRef() + 1;
        int messageRef = mImsSmsDispatcher.nextMessageRef();
        if (mImsSmsDispatcher.isMessageRefIncrementViaTelephony()) {
            messageRef += 1;
        }

        mContextFixture.getCarrierConfigBundle().putInt(CarrierConfigManager.ImsSms
                                                .KEY_SMS_OVER_IMS_SEND_RETRY_DELAY_MILLIS_INT,
                                                3000);
+10 −2
Original line number Diff line number Diff line
@@ -519,7 +519,11 @@ public class GsmSmsDispatcherTest extends TelephonyTest {

    @Test
    public void testSendTextWithMessageRef() throws Exception {
        int messageRef = mGsmSmsDispatcher.nextMessageRef() + 1;
        int messageRef = mGsmSmsDispatcher.nextMessageRef();
        if (mGsmSmsDispatcher.isMessageRefIncrementViaTelephony()) {
            messageRef += 1;
        }

        mGsmSmsDispatcher.sendText("111", "222" /*scAddr*/, TAG,
                null, null, null, null, false, -1, false, -1, false, 0L);

@@ -536,7 +540,11 @@ public class GsmSmsDispatcherTest extends TelephonyTest {
        parts.add("segment1");
        parts.add("segment2");
        parts.add("segment3");
        int messageRef = mGsmSmsDispatcher.nextMessageRef() + parts.size();

        int messageRef = mGsmSmsDispatcher.nextMessageRef();
        if (mGsmSmsDispatcher.isMessageRefIncrementViaTelephony()) {
            messageRef += parts.size();
        }
        mGsmSmsDispatcher.sendMultipartText("6501002000" /*destAddr*/, "222" /*scAddr*/, parts,
                null, null, null, null, false, -1, false, -1, 0L);
        waitForMs(150);