Loading src/java/com/android/internal/telephony/SMSDispatcher.java +29 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. */ Loading tests/telephonytests/src/com/android/internal/telephony/ImsSmsDispatcherTest.java +23 −5 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading tests/telephonytests/src/com/android/internal/telephony/gsm/GsmSmsDispatcherTest.java +10 −2 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading Loading
src/java/com/android/internal/telephony/SMSDispatcher.java +29 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. */ Loading
tests/telephonytests/src/com/android/internal/telephony/ImsSmsDispatcherTest.java +23 −5 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading
tests/telephonytests/src/com/android/internal/telephony/gsm/GsmSmsDispatcherTest.java +10 −2 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading