Loading src/java/com/android/internal/telephony/SMSDispatcher.java +8 −0 Original line number Diff line number Diff line Loading @@ -2737,6 +2737,14 @@ public abstract class SMSDispatcher extends Handler { return mUnsentPartCount != null ? (mUnsentPartCount.get() == 0) : true; } /** * Returns the flag specifying whether any part of this {@link SmsTracker} failed to send * or not. */ protected boolean isAnyPartFailed() { return mAnyPartFailed != null && mAnyPartFailed.get(); } /** * Persist a sent SMS if required: * 1. It is a text message Loading src/java/com/android/internal/telephony/SmsDispatchersController.java +5 −3 Original line number Diff line number Diff line Loading @@ -1234,7 +1234,8 @@ public class SmsDispatchersController extends Handler { boolean isOverIms, boolean isLastSmsPart, boolean success) { notifySmsSentToEmergencyStateTracker(tracker.mDestAddress, tracker.mMessageId, isOverIms, isLastSmsPart, success); notifySmsSentToDatagramDispatcher(tracker.mUniqueMessageId, isLastSmsPart, success); notifySmsSentToDatagramDispatcher(tracker.mUniqueMessageId, tracker.isSinglePartOrLastPart(), !tracker.isAnyPartFailed()); } /** Loading @@ -1256,9 +1257,10 @@ public class SmsDispatchersController extends Handler { private void notifySmsSentToDatagramDispatcher( long messageId, boolean isLastSmsPart, boolean success) { if (SatelliteController.getInstance().shouldSendSmsToDatagramDispatcher(mPhone)) { if (SatelliteController.getInstance().shouldSendSmsToDatagramDispatcher(mPhone) && isLastSmsPart) { DatagramDispatcher.getInstance().onSendSmsDone( mPhone.getSubId(), messageId, isLastSmsPart, success); mPhone.getSubId(), messageId, success); } } Loading src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java +19 −19 Original line number Diff line number Diff line Loading @@ -406,10 +406,9 @@ public class DatagramDispatcher extends Handler { SomeArgs args = (SomeArgs) msg.obj; int subId = (int) args.arg1; long messageId = (long) args.arg2; boolean isLastPartSms = (boolean) args.arg3; boolean success = (boolean) args.arg4; boolean success = (boolean) args.arg3; try { handleEventSendSmsDone(subId, messageId, isLastPartSms, success); handleEventSendSmsDone(subId, messageId, success); } finally { args.recycle(); } Loading Loading @@ -1182,15 +1181,13 @@ public class DatagramDispatcher extends Handler { * Sending MO SMS is completed. * @param subId subscription ID * @param messageId message ID of MO SMS * @param isLastSmsPart whether this is the last sms part of MO SMS * @param success boolean specifying whether MO SMS is successfully sent or not. */ public void onSendSmsDone(int subId, long messageId, boolean isLastSmsPart, boolean success) { public void onSendSmsDone(int subId, long messageId, boolean success) { SomeArgs args = SomeArgs.obtain(); args.arg1 = subId; args.arg2 = messageId; args.arg3 = isLastSmsPart; args.arg4 = success; args.arg3 = success; sendMessage(obtainMessage(EVENT_SEND_SMS_DONE, args)); } Loading Loading @@ -1231,29 +1228,32 @@ public class DatagramDispatcher extends Handler { pendingSmsMap.clear(); } private void handleEventSendSmsDone( int subId, long messageId, boolean isLastPartSms, boolean success) { private void handleEventSendSmsDone(int subId, long messageId, boolean success) { synchronized (mLock) { mSendingInProgress = false; PendingRequest pendingSms = mPendingSmsMap.remove(messageId); int datagramType = pendingSms != null && pendingSms.isMtSmsPolling if (pendingSms == null) { // Just return, the SMS is not sent by DatagramDispatcher such as Data SMS plogd("handleEventSendSmsDone there is no pendingSms for messageId=" + messageId); return; } mSendingInProgress = false; int datagramType = pendingSms.isMtSmsPolling ? DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS : DATAGRAM_TYPE_SMS; plogd("handleEventSendSmsDone subId=" + subId + " messageId=" + messageId + " isLastPartSms=" + isLastPartSms + " success=" + success + " datagramType=" + datagramType); + " success=" + success + " datagramType=" + datagramType); if (success) { if (isLastPartSms) { // Update send status only after all parts of the SMS are sent // Update send status mDatagramController.updateSendStatus(subId, datagramType, SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS, getPendingMessagesCount(), SATELLITE_RESULT_SUCCESS); } if (datagramType == DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS) { startMtSmsPollingThrottle(); } } else { // Update send status mDatagramController.updateSendStatus(subId, datagramType, SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED, getPendingMessagesCount(), SATELLITE_RESULT_NETWORK_ERROR); Loading tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java +4 −8 Original line number Diff line number Diff line Loading @@ -824,8 +824,7 @@ public class DatagramDispatcherTest extends TelephonyTest { eq(SATELLITE_RESULT_SUCCESS)); verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms)); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true, true); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true); processAllMessages(); mInOrder.verify(mMockDatagramController) Loading Loading @@ -859,8 +858,7 @@ public class DatagramDispatcherTest extends TelephonyTest { eq(SATELLITE_RESULT_SUCCESS)); verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms)); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true, false); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, false); processAllMessages(); mInOrder.verify(mMockDatagramController) Loading Loading @@ -1058,8 +1056,7 @@ public class DatagramDispatcherTest extends TelephonyTest { eq(SATELLITE_RESULT_SUCCESS)); verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms)); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true, true); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true); processAllMessages(); mInOrder.verify(mMockDatagramController) Loading Loading @@ -1110,8 +1107,7 @@ public class DatagramDispatcherTest extends TelephonyTest { processAllMessages(); verifyZeroInteractions(mMockSatelliteModemInterface); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true, true); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true); processAllMessages(); mInOrder.verify(mMockDatagramController) .updateSendStatus(eq(SUB_ID), eq(datagramTypeSms), Loading Loading
src/java/com/android/internal/telephony/SMSDispatcher.java +8 −0 Original line number Diff line number Diff line Loading @@ -2737,6 +2737,14 @@ public abstract class SMSDispatcher extends Handler { return mUnsentPartCount != null ? (mUnsentPartCount.get() == 0) : true; } /** * Returns the flag specifying whether any part of this {@link SmsTracker} failed to send * or not. */ protected boolean isAnyPartFailed() { return mAnyPartFailed != null && mAnyPartFailed.get(); } /** * Persist a sent SMS if required: * 1. It is a text message Loading
src/java/com/android/internal/telephony/SmsDispatchersController.java +5 −3 Original line number Diff line number Diff line Loading @@ -1234,7 +1234,8 @@ public class SmsDispatchersController extends Handler { boolean isOverIms, boolean isLastSmsPart, boolean success) { notifySmsSentToEmergencyStateTracker(tracker.mDestAddress, tracker.mMessageId, isOverIms, isLastSmsPart, success); notifySmsSentToDatagramDispatcher(tracker.mUniqueMessageId, isLastSmsPart, success); notifySmsSentToDatagramDispatcher(tracker.mUniqueMessageId, tracker.isSinglePartOrLastPart(), !tracker.isAnyPartFailed()); } /** Loading @@ -1256,9 +1257,10 @@ public class SmsDispatchersController extends Handler { private void notifySmsSentToDatagramDispatcher( long messageId, boolean isLastSmsPart, boolean success) { if (SatelliteController.getInstance().shouldSendSmsToDatagramDispatcher(mPhone)) { if (SatelliteController.getInstance().shouldSendSmsToDatagramDispatcher(mPhone) && isLastSmsPart) { DatagramDispatcher.getInstance().onSendSmsDone( mPhone.getSubId(), messageId, isLastSmsPart, success); mPhone.getSubId(), messageId, success); } } Loading
src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java +19 −19 Original line number Diff line number Diff line Loading @@ -406,10 +406,9 @@ public class DatagramDispatcher extends Handler { SomeArgs args = (SomeArgs) msg.obj; int subId = (int) args.arg1; long messageId = (long) args.arg2; boolean isLastPartSms = (boolean) args.arg3; boolean success = (boolean) args.arg4; boolean success = (boolean) args.arg3; try { handleEventSendSmsDone(subId, messageId, isLastPartSms, success); handleEventSendSmsDone(subId, messageId, success); } finally { args.recycle(); } Loading Loading @@ -1182,15 +1181,13 @@ public class DatagramDispatcher extends Handler { * Sending MO SMS is completed. * @param subId subscription ID * @param messageId message ID of MO SMS * @param isLastSmsPart whether this is the last sms part of MO SMS * @param success boolean specifying whether MO SMS is successfully sent or not. */ public void onSendSmsDone(int subId, long messageId, boolean isLastSmsPart, boolean success) { public void onSendSmsDone(int subId, long messageId, boolean success) { SomeArgs args = SomeArgs.obtain(); args.arg1 = subId; args.arg2 = messageId; args.arg3 = isLastSmsPart; args.arg4 = success; args.arg3 = success; sendMessage(obtainMessage(EVENT_SEND_SMS_DONE, args)); } Loading Loading @@ -1231,29 +1228,32 @@ public class DatagramDispatcher extends Handler { pendingSmsMap.clear(); } private void handleEventSendSmsDone( int subId, long messageId, boolean isLastPartSms, boolean success) { private void handleEventSendSmsDone(int subId, long messageId, boolean success) { synchronized (mLock) { mSendingInProgress = false; PendingRequest pendingSms = mPendingSmsMap.remove(messageId); int datagramType = pendingSms != null && pendingSms.isMtSmsPolling if (pendingSms == null) { // Just return, the SMS is not sent by DatagramDispatcher such as Data SMS plogd("handleEventSendSmsDone there is no pendingSms for messageId=" + messageId); return; } mSendingInProgress = false; int datagramType = pendingSms.isMtSmsPolling ? DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS : DATAGRAM_TYPE_SMS; plogd("handleEventSendSmsDone subId=" + subId + " messageId=" + messageId + " isLastPartSms=" + isLastPartSms + " success=" + success + " datagramType=" + datagramType); + " success=" + success + " datagramType=" + datagramType); if (success) { if (isLastPartSms) { // Update send status only after all parts of the SMS are sent // Update send status mDatagramController.updateSendStatus(subId, datagramType, SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS, getPendingMessagesCount(), SATELLITE_RESULT_SUCCESS); } if (datagramType == DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS) { startMtSmsPollingThrottle(); } } else { // Update send status mDatagramController.updateSendStatus(subId, datagramType, SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED, getPendingMessagesCount(), SATELLITE_RESULT_NETWORK_ERROR); Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java +4 −8 Original line number Diff line number Diff line Loading @@ -824,8 +824,7 @@ public class DatagramDispatcherTest extends TelephonyTest { eq(SATELLITE_RESULT_SUCCESS)); verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms)); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true, true); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true); processAllMessages(); mInOrder.verify(mMockDatagramController) Loading Loading @@ -859,8 +858,7 @@ public class DatagramDispatcherTest extends TelephonyTest { eq(SATELLITE_RESULT_SUCCESS)); verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms)); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true, false); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, false); processAllMessages(); mInOrder.verify(mMockDatagramController) Loading Loading @@ -1058,8 +1056,7 @@ public class DatagramDispatcherTest extends TelephonyTest { eq(SATELLITE_RESULT_SUCCESS)); verify(mMockSmsDispatchersController).sendCarrierRoamingNbIotNtnText(eq(mPendingSms)); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true, true); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true); processAllMessages(); mInOrder.verify(mMockDatagramController) Loading Loading @@ -1110,8 +1107,7 @@ public class DatagramDispatcherTest extends TelephonyTest { processAllMessages(); verifyZeroInteractions(mMockSatelliteModemInterface); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true, true); mDatagramDispatcherUT.onSendSmsDone(mPhone.getSubId(), mPendingSms.uniqueMessageId, true); processAllMessages(); mInOrder.verify(mMockDatagramController) .updateSendStatus(eq(SUB_ID), eq(datagramTypeSms), Loading