Loading src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java +42 −29 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ public class DatagramDispatcher extends Handler { private static final int CMD_SEND_SMS = 8; private static final int EVENT_SEND_SMS_DONE = 9; private static final int EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT = 10; private static final int CMD_SEND_MT_SMS_POLLING_MESSAGE = 11; private static final Long TIMEOUT_DATAGRAM_DELAY_IN_DEMO_MODE = TimeUnit.SECONDS.toMillis(10); @NonNull private static DatagramDispatcher sInstance; @NonNull private final Context mContext; Loading Loading @@ -422,10 +424,16 @@ public class DatagramDispatcher extends Handler { case EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT: { synchronized (mLock) { mIsMtSmsPollingThrottled = false; } if (allowMtSmsPolling()) { sendMtSmsPollingMessage(); sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE)); } break; } case CMD_SEND_MT_SMS_POLLING_MESSAGE: { plogd("CMD_SEND_MT_SMS_POLLING_MESSAGE"); handleCmdSendMtSmsPollingMessage(); break; } Loading Loading @@ -517,9 +525,9 @@ public class DatagramDispatcher extends Handler { mIsAligned = isAligned; plogd("setDeviceAlignedWithSatellite: " + mIsAligned); if (isAligned && mIsDemoMode) handleEventSatelliteAligned(); if (allowMtSmsPolling()) { sendMtSmsPollingMessage(); } if (allowMtSmsPolling()) { sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE)); } } Loading Loading @@ -841,10 +849,9 @@ public class DatagramDispatcher extends Handler { mShouldPollMtSms = shouldPollMtSms(); } } if (allowMtSmsPolling()) { sendMtSmsPollingMessage(); } if (allowMtSmsPolling()) { sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE)); } } Loading Loading @@ -1321,9 +1328,10 @@ public class DatagramDispatcher extends Handler { && satelliteController.shouldSendSmsToDatagramDispatcher(satellitePhone); } @GuardedBy("mLock") private void sendMtSmsPollingMessage() { private void handleCmdSendMtSmsPollingMessage() { synchronized (mLock) { if (!mShouldPollMtSms) { plogd("sendMtSmsPollingMessage: mShouldPollMtSms=" + mShouldPollMtSms); return; } Loading @@ -1335,10 +1343,12 @@ public class DatagramDispatcher extends Handler { for (Entry<Long, PendingRequest> entry : mPendingSmsMap.entrySet()) { PendingRequest pendingRequest = entry.getValue(); if (pendingRequest.isMtSmsPolling) { plogd("sendMtSmsPollingMessage: mPendingSmsMap already has the polling message."); plogd("sendMtSmsPollingMessage: mPendingSmsMap already " + "has the polling message."); return; } } } Phone satellitePhone = SatelliteController.getInstance().getSatellitePhone(); if (satellitePhone == null) { Loading Loading @@ -1370,7 +1380,6 @@ public class DatagramDispatcher extends Handler { removeMessages(EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT); } @GuardedBy("mLock") private boolean allowMtSmsPolling() { if (!mFeatureFlags.carrierRoamingNbIotNtn()) return false; Loading @@ -1383,11 +1392,15 @@ public class DatagramDispatcher extends Handler { return false; } boolean isModemStateConnectedOrTransferring; synchronized (mLock) { if (!mIsAligned) return false; boolean isModemStateConnectedOrTransferring = isModemStateConnectedOrTransferring = mModemState == SATELLITE_MODEM_STATE_CONNECTED || mModemState == SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING; } if (!isModemStateConnectedOrTransferring && !allowCheckMessageInNotConnected()) { plogd("EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT:" + " allow_check_message_in_not_connected is disabled"); Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +10 −17 Original line number Diff line number Diff line Loading @@ -626,7 +626,6 @@ public class SatelliteController extends Handler { private List<SatelliteSubscriberProvisionStatus> mLastEvaluatedSubscriberProvisionStatus = new ArrayList<>(); // The ID of the satellite subscription that has highest priority and is provisioned. @GuardedBy("mSatelliteTokenProvisionedLock") @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; // The last ICC ID that framework configured to modem. Loading Loading @@ -6733,10 +6732,7 @@ public class SatelliteController extends Handler { SATELLITE_SYSTEM_NOTIFICATION_TIME, 0L); logv("determineAutoConnectSystemNotification lastSetTimestamp = " + lastSetTimestamp); long currentTime = System.currentTimeMillis(); int subId; synchronized (mSatellitePhoneLock) { subId = mSatellitePhone.getSubId(); } int subId = getSelectedSatelliteSubId(); long throttleTime = getNotificationDisplayThrottleTimeout(subId); if (lastSetTimestamp == 0L || currentTime - lastSetTimestamp >= throttleTime) { // Reset the flag and update the timestamp Loading Loading @@ -7532,6 +7528,7 @@ public class SatelliteController extends Handler { */ public void requestSatelliteSubscriberProvisionStatus(@NonNull ResultReceiver result) { if (!mFeatureFlags.carrierRoamingNbIotNtn()) { logd("requestSatelliteSubscriberProvisionStatus: carrierRoamingNbIotNtn is disabled"); result.send(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, null); return; } Loading Loading @@ -7599,11 +7596,9 @@ public class SatelliteController extends Handler { } public int getSelectedSatelliteSubId() { synchronized (mSatelliteTokenProvisionedLock) { plogd("getSelectedSatelliteSubId: subId=" + mSelectedSatelliteSubId); return mSelectedSatelliteSubId; } } /** * Request to get the currently selected satellite subscription id. Loading Loading @@ -7970,7 +7965,6 @@ public class SatelliteController extends Handler { /** Return the carrier ID of the binding satellite subscription. */ public int getSatelliteCarrierId() { synchronized (mSatelliteTokenProvisionedLock) { SubscriptionInfo subInfo = mSubscriptionManagerService.getSubscriptionInfo( mSelectedSatelliteSubId); if (subInfo == null) { Loading @@ -7979,7 +7973,6 @@ public class SatelliteController extends Handler { } return subInfo.getCarrierId(); } } /** * Get whether phone is eligible to connect to carrier roaming non-terrestrial network. Loading tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java +8 −0 Original line number Diff line number Diff line Loading @@ -1153,6 +1153,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.handleMessage( mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/, new AsyncResult(null, null, null))); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading Loading @@ -1201,6 +1202,7 @@ public class DatagramDispatcherTest extends TelephonyTest { R.bool.config_satellite_allow_check_message_in_not_connected, true); mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading @@ -1227,6 +1229,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading @@ -1239,6 +1242,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading @@ -1251,6 +1255,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading Loading @@ -1278,6 +1283,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading @@ -1295,6 +1301,7 @@ public class DatagramDispatcherTest extends TelephonyTest { .thenReturn(true); mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(0)).sendMtSmsPollingMessage(); Loading @@ -1303,6 +1310,7 @@ public class DatagramDispatcherTest extends TelephonyTest { .thenReturn(false); mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading Loading
src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java +42 −29 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ public class DatagramDispatcher extends Handler { private static final int CMD_SEND_SMS = 8; private static final int EVENT_SEND_SMS_DONE = 9; private static final int EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT = 10; private static final int CMD_SEND_MT_SMS_POLLING_MESSAGE = 11; private static final Long TIMEOUT_DATAGRAM_DELAY_IN_DEMO_MODE = TimeUnit.SECONDS.toMillis(10); @NonNull private static DatagramDispatcher sInstance; @NonNull private final Context mContext; Loading Loading @@ -422,10 +424,16 @@ public class DatagramDispatcher extends Handler { case EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT: { synchronized (mLock) { mIsMtSmsPollingThrottled = false; } if (allowMtSmsPolling()) { sendMtSmsPollingMessage(); sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE)); } break; } case CMD_SEND_MT_SMS_POLLING_MESSAGE: { plogd("CMD_SEND_MT_SMS_POLLING_MESSAGE"); handleCmdSendMtSmsPollingMessage(); break; } Loading Loading @@ -517,9 +525,9 @@ public class DatagramDispatcher extends Handler { mIsAligned = isAligned; plogd("setDeviceAlignedWithSatellite: " + mIsAligned); if (isAligned && mIsDemoMode) handleEventSatelliteAligned(); if (allowMtSmsPolling()) { sendMtSmsPollingMessage(); } if (allowMtSmsPolling()) { sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE)); } } Loading Loading @@ -841,10 +849,9 @@ public class DatagramDispatcher extends Handler { mShouldPollMtSms = shouldPollMtSms(); } } if (allowMtSmsPolling()) { sendMtSmsPollingMessage(); } if (allowMtSmsPolling()) { sendMessage(obtainMessage(CMD_SEND_MT_SMS_POLLING_MESSAGE)); } } Loading Loading @@ -1321,9 +1328,10 @@ public class DatagramDispatcher extends Handler { && satelliteController.shouldSendSmsToDatagramDispatcher(satellitePhone); } @GuardedBy("mLock") private void sendMtSmsPollingMessage() { private void handleCmdSendMtSmsPollingMessage() { synchronized (mLock) { if (!mShouldPollMtSms) { plogd("sendMtSmsPollingMessage: mShouldPollMtSms=" + mShouldPollMtSms); return; } Loading @@ -1335,10 +1343,12 @@ public class DatagramDispatcher extends Handler { for (Entry<Long, PendingRequest> entry : mPendingSmsMap.entrySet()) { PendingRequest pendingRequest = entry.getValue(); if (pendingRequest.isMtSmsPolling) { plogd("sendMtSmsPollingMessage: mPendingSmsMap already has the polling message."); plogd("sendMtSmsPollingMessage: mPendingSmsMap already " + "has the polling message."); return; } } } Phone satellitePhone = SatelliteController.getInstance().getSatellitePhone(); if (satellitePhone == null) { Loading Loading @@ -1370,7 +1380,6 @@ public class DatagramDispatcher extends Handler { removeMessages(EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT); } @GuardedBy("mLock") private boolean allowMtSmsPolling() { if (!mFeatureFlags.carrierRoamingNbIotNtn()) return false; Loading @@ -1383,11 +1392,15 @@ public class DatagramDispatcher extends Handler { return false; } boolean isModemStateConnectedOrTransferring; synchronized (mLock) { if (!mIsAligned) return false; boolean isModemStateConnectedOrTransferring = isModemStateConnectedOrTransferring = mModemState == SATELLITE_MODEM_STATE_CONNECTED || mModemState == SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING; } if (!isModemStateConnectedOrTransferring && !allowCheckMessageInNotConnected()) { plogd("EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT:" + " allow_check_message_in_not_connected is disabled"); Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +10 −17 Original line number Diff line number Diff line Loading @@ -626,7 +626,6 @@ public class SatelliteController extends Handler { private List<SatelliteSubscriberProvisionStatus> mLastEvaluatedSubscriberProvisionStatus = new ArrayList<>(); // The ID of the satellite subscription that has highest priority and is provisioned. @GuardedBy("mSatelliteTokenProvisionedLock") @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; // The last ICC ID that framework configured to modem. Loading Loading @@ -6733,10 +6732,7 @@ public class SatelliteController extends Handler { SATELLITE_SYSTEM_NOTIFICATION_TIME, 0L); logv("determineAutoConnectSystemNotification lastSetTimestamp = " + lastSetTimestamp); long currentTime = System.currentTimeMillis(); int subId; synchronized (mSatellitePhoneLock) { subId = mSatellitePhone.getSubId(); } int subId = getSelectedSatelliteSubId(); long throttleTime = getNotificationDisplayThrottleTimeout(subId); if (lastSetTimestamp == 0L || currentTime - lastSetTimestamp >= throttleTime) { // Reset the flag and update the timestamp Loading Loading @@ -7532,6 +7528,7 @@ public class SatelliteController extends Handler { */ public void requestSatelliteSubscriberProvisionStatus(@NonNull ResultReceiver result) { if (!mFeatureFlags.carrierRoamingNbIotNtn()) { logd("requestSatelliteSubscriberProvisionStatus: carrierRoamingNbIotNtn is disabled"); result.send(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, null); return; } Loading Loading @@ -7599,11 +7596,9 @@ public class SatelliteController extends Handler { } public int getSelectedSatelliteSubId() { synchronized (mSatelliteTokenProvisionedLock) { plogd("getSelectedSatelliteSubId: subId=" + mSelectedSatelliteSubId); return mSelectedSatelliteSubId; } } /** * Request to get the currently selected satellite subscription id. Loading Loading @@ -7970,7 +7965,6 @@ public class SatelliteController extends Handler { /** Return the carrier ID of the binding satellite subscription. */ public int getSatelliteCarrierId() { synchronized (mSatelliteTokenProvisionedLock) { SubscriptionInfo subInfo = mSubscriptionManagerService.getSubscriptionInfo( mSelectedSatelliteSubId); if (subInfo == null) { Loading @@ -7979,7 +7973,6 @@ public class SatelliteController extends Handler { } return subInfo.getCarrierId(); } } /** * Get whether phone is eligible to connect to carrier roaming non-terrestrial network. Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java +8 −0 Original line number Diff line number Diff line Loading @@ -1153,6 +1153,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.handleMessage( mDatagramDispatcherUT.obtainMessage(10 /*EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT*/, new AsyncResult(null, null, null))); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading Loading @@ -1201,6 +1202,7 @@ public class DatagramDispatcherTest extends TelephonyTest { R.bool.config_satellite_allow_check_message_in_not_connected, true); mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading @@ -1227,6 +1229,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading @@ -1239,6 +1242,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading @@ -1251,6 +1255,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading Loading @@ -1278,6 +1283,7 @@ public class DatagramDispatcherTest extends TelephonyTest { mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading @@ -1295,6 +1301,7 @@ public class DatagramDispatcherTest extends TelephonyTest { .thenReturn(true); mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(0)).sendMtSmsPollingMessage(); Loading @@ -1303,6 +1310,7 @@ public class DatagramDispatcherTest extends TelephonyTest { .thenReturn(false); mDatagramDispatcherUT.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED); processAllMessages(); verify(mMockSmsDispatchersController, times(1)).sendMtSmsPollingMessage(); } Loading