Loading src/java/com/android/internal/telephony/satellite/DatagramReceiver.java +18 −18 Original line number Diff line number Diff line Loading @@ -97,23 +97,11 @@ public class DatagramReceiver extends Handler { private AtomicLong mDatagramTransferStartTime = new AtomicLong(0); private AtomicBoolean mIsDemoMode = new AtomicBoolean(false); private AtomicBoolean mIsAligned = new AtomicBoolean(false); /** * All the variables declared here should only be accessed by methods that run inside the * handler thread. */ @Nullable private DatagramReceiverHandlerRequest mDemoPollPendingSatelliteDatagramsRequest = null; @Nullable private DatagramReceiverHandlerRequest mPendingPollSatelliteDatagramsRequest = null; /** * Map key: subId, value: SatelliteDatagramListenerHandler to notify registrants. */ private final ConcurrentHashMap<Integer, SatelliteDatagramListenerHandler> mSatelliteDatagramListenerHandlers = new ConcurrentHashMap<>(); /** * Map key: DatagramId, value: pendingAckCount * This map is used to track number of listeners that are yet to send ack for a particular Loading @@ -122,6 +110,15 @@ public class DatagramReceiver extends Handler { private final ConcurrentHashMap<Long, Integer> mPendingAckCountHashMap = new ConcurrentHashMap<>(); /** * All the variables declared here should only be accessed by methods that run inside the * handler thread. */ @Nullable private DatagramReceiverHandlerRequest mDemoPollPendingSatelliteDatagramsRequest = null; @Nullable private DatagramReceiverHandlerRequest mPendingPollSatelliteDatagramsRequest = null; /** * Create the DatagramReceiver singleton instance. * @param context The Context to use to create the DatagramReceiver. Loading @@ -130,6 +127,7 @@ public class DatagramReceiver extends Handler { * @param datagramController DatagramController which is used to update datagram transfer state. * @return The singleton instance of DatagramReceiver. */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) public static DatagramReceiver make(@NonNull Context context, @NonNull Looper looper, @NonNull FeatureFlags featureFlags, @NonNull DatagramController datagramController) { Loading @@ -148,7 +146,7 @@ public class DatagramReceiver extends Handler { * @param featureFlags The telephony feature flags. * @param datagramController DatagramController which is used to update datagram transfer state. */ @VisibleForTesting @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected DatagramReceiver(@NonNull Context context, @NonNull Looper looper, @NonNull FeatureFlags featureFlags, @NonNull DatagramController datagramController) { Loading Loading @@ -558,7 +556,8 @@ public class DatagramReceiver extends Handler { * * @return The {@link SatelliteManager.SatelliteResult} result of the operation. */ @SatelliteManager.SatelliteResult public int registerForSatelliteDatagram(int subId, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) @SatelliteManager.SatelliteResult protected int registerForSatelliteDatagram(int subId, @NonNull ISatelliteDatagramCallback callback) { if (!SatelliteController.getInstance().isSatelliteSupportedViaOem()) { return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED; Loading Loading @@ -588,8 +587,7 @@ public class DatagramReceiver extends Handler { * @param callback The callback that was passed to * {@link #registerForSatelliteDatagram(int, ISatelliteDatagramCallback)}. */ public void unregisterForSatelliteDatagram(int subId, @NonNull ISatelliteDatagramCallback callback) { void unregisterForSatelliteDatagram(int subId, @NonNull ISatelliteDatagramCallback callback) { final int validSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; SatelliteDatagramListenerHandler handler = mSatelliteDatagramListenerHandlers.get(validSubId); Loading @@ -615,7 +613,8 @@ public class DatagramReceiver extends Handler { * @param subId The subId of the subscription used for receiving datagrams. * @param callback The callback to get {@link SatelliteManager.SatelliteResult} of the request. */ public void pollPendingSatelliteDatagrams(int subId, @NonNull Consumer<Integer> callback) { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void pollPendingSatelliteDatagrams(int subId, @NonNull Consumer<Integer> callback) { if (mFeatureFlags.satelliteImproveMultiThreadDesign()) { SomeArgs args = SomeArgs.obtain(); args.arg1 = subId; Loading Loading @@ -711,7 +710,8 @@ public class DatagramReceiver extends Handler { * * @param state Current satellite modem state. */ public void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) { if (mFeatureFlags.satelliteImproveMultiThreadDesign()) { SomeArgs args = SomeArgs.obtain(); args.arg1 = state; Loading tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramReceiverTest.java +23 −2 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ import org.mockito.MockitoAnnotations; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper Loading @@ -86,7 +87,7 @@ public class DatagramReceiverTest extends TelephonyTest { private static final long TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(60); private DatagramReceiver mDatagramReceiverUT; private TestDatagramReceiver mDatagramReceiverUT; private DatagramReceiver.SatelliteDatagramListenerHandler mSatelliteDatagramListenerHandler; private TestDatagramReceiver mTestDemoModeDatagramReceiver; Loading Loading @@ -130,7 +131,7 @@ public class DatagramReceiverTest extends TelephonyTest { mMockSessionMetricsStats); doReturn(true).when(mFeatureFlags).satelliteImproveMultiThreadDesign(); mDatagramReceiverUT = DatagramReceiver.make(mContext, Looper.myLooper(), mFeatureFlags, mDatagramReceiverUT = new TestDatagramReceiver(mContext, Looper.myLooper(), mFeatureFlags, mMockDatagramController); mTestDemoModeDatagramReceiver = new TestDatagramReceiver(mContext, Looper.myLooper(), mFeatureFlags, Loading Loading @@ -521,6 +522,8 @@ public class DatagramReceiverTest extends TelephonyTest { @NonNull FeatureFlags featureFlags, @NonNull DatagramController datagramController) { super(context, looper, featureFlags, datagramController); make(context, looper, featureFlags, datagramController); } @Override Loading @@ -546,6 +549,24 @@ public class DatagramReceiverTest extends TelephonyTest { protected boolean isDatagramWaitForConnectedStateTimerStarted() { return super.isDatagramWaitForConnectedStateTimerStarted(); } @Override protected int registerForSatelliteDatagram(int subId, @NonNull ISatelliteDatagramCallback callback) { return super.registerForSatelliteDatagram(subId, callback); } @Override protected void pollPendingSatelliteDatagrams( int subId, @NonNull Consumer<Integer> callback) { super.pollPendingSatelliteDatagrams(subId, callback); } @Override protected void onSatelliteModemStateChanged( @SatelliteManager.SatelliteModemState int state) { super.onSatelliteModemStateChanged(state); } } private static class TestSatelliteDatagramCallback extends ISatelliteDatagramCallback.Stub { Loading Loading
src/java/com/android/internal/telephony/satellite/DatagramReceiver.java +18 −18 Original line number Diff line number Diff line Loading @@ -97,23 +97,11 @@ public class DatagramReceiver extends Handler { private AtomicLong mDatagramTransferStartTime = new AtomicLong(0); private AtomicBoolean mIsDemoMode = new AtomicBoolean(false); private AtomicBoolean mIsAligned = new AtomicBoolean(false); /** * All the variables declared here should only be accessed by methods that run inside the * handler thread. */ @Nullable private DatagramReceiverHandlerRequest mDemoPollPendingSatelliteDatagramsRequest = null; @Nullable private DatagramReceiverHandlerRequest mPendingPollSatelliteDatagramsRequest = null; /** * Map key: subId, value: SatelliteDatagramListenerHandler to notify registrants. */ private final ConcurrentHashMap<Integer, SatelliteDatagramListenerHandler> mSatelliteDatagramListenerHandlers = new ConcurrentHashMap<>(); /** * Map key: DatagramId, value: pendingAckCount * This map is used to track number of listeners that are yet to send ack for a particular Loading @@ -122,6 +110,15 @@ public class DatagramReceiver extends Handler { private final ConcurrentHashMap<Long, Integer> mPendingAckCountHashMap = new ConcurrentHashMap<>(); /** * All the variables declared here should only be accessed by methods that run inside the * handler thread. */ @Nullable private DatagramReceiverHandlerRequest mDemoPollPendingSatelliteDatagramsRequest = null; @Nullable private DatagramReceiverHandlerRequest mPendingPollSatelliteDatagramsRequest = null; /** * Create the DatagramReceiver singleton instance. * @param context The Context to use to create the DatagramReceiver. Loading @@ -130,6 +127,7 @@ public class DatagramReceiver extends Handler { * @param datagramController DatagramController which is used to update datagram transfer state. * @return The singleton instance of DatagramReceiver. */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) public static DatagramReceiver make(@NonNull Context context, @NonNull Looper looper, @NonNull FeatureFlags featureFlags, @NonNull DatagramController datagramController) { Loading @@ -148,7 +146,7 @@ public class DatagramReceiver extends Handler { * @param featureFlags The telephony feature flags. * @param datagramController DatagramController which is used to update datagram transfer state. */ @VisibleForTesting @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected DatagramReceiver(@NonNull Context context, @NonNull Looper looper, @NonNull FeatureFlags featureFlags, @NonNull DatagramController datagramController) { Loading Loading @@ -558,7 +556,8 @@ public class DatagramReceiver extends Handler { * * @return The {@link SatelliteManager.SatelliteResult} result of the operation. */ @SatelliteManager.SatelliteResult public int registerForSatelliteDatagram(int subId, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) @SatelliteManager.SatelliteResult protected int registerForSatelliteDatagram(int subId, @NonNull ISatelliteDatagramCallback callback) { if (!SatelliteController.getInstance().isSatelliteSupportedViaOem()) { return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED; Loading Loading @@ -588,8 +587,7 @@ public class DatagramReceiver extends Handler { * @param callback The callback that was passed to * {@link #registerForSatelliteDatagram(int, ISatelliteDatagramCallback)}. */ public void unregisterForSatelliteDatagram(int subId, @NonNull ISatelliteDatagramCallback callback) { void unregisterForSatelliteDatagram(int subId, @NonNull ISatelliteDatagramCallback callback) { final int validSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; SatelliteDatagramListenerHandler handler = mSatelliteDatagramListenerHandlers.get(validSubId); Loading @@ -615,7 +613,8 @@ public class DatagramReceiver extends Handler { * @param subId The subId of the subscription used for receiving datagrams. * @param callback The callback to get {@link SatelliteManager.SatelliteResult} of the request. */ public void pollPendingSatelliteDatagrams(int subId, @NonNull Consumer<Integer> callback) { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void pollPendingSatelliteDatagrams(int subId, @NonNull Consumer<Integer> callback) { if (mFeatureFlags.satelliteImproveMultiThreadDesign()) { SomeArgs args = SomeArgs.obtain(); args.arg1 = subId; Loading Loading @@ -711,7 +710,8 @@ public class DatagramReceiver extends Handler { * * @param state Current satellite modem state. */ public void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) { if (mFeatureFlags.satelliteImproveMultiThreadDesign()) { SomeArgs args = SomeArgs.obtain(); args.arg1 = state; Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramReceiverTest.java +23 −2 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ import org.mockito.MockitoAnnotations; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper Loading @@ -86,7 +87,7 @@ public class DatagramReceiverTest extends TelephonyTest { private static final long TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(60); private DatagramReceiver mDatagramReceiverUT; private TestDatagramReceiver mDatagramReceiverUT; private DatagramReceiver.SatelliteDatagramListenerHandler mSatelliteDatagramListenerHandler; private TestDatagramReceiver mTestDemoModeDatagramReceiver; Loading Loading @@ -130,7 +131,7 @@ public class DatagramReceiverTest extends TelephonyTest { mMockSessionMetricsStats); doReturn(true).when(mFeatureFlags).satelliteImproveMultiThreadDesign(); mDatagramReceiverUT = DatagramReceiver.make(mContext, Looper.myLooper(), mFeatureFlags, mDatagramReceiverUT = new TestDatagramReceiver(mContext, Looper.myLooper(), mFeatureFlags, mMockDatagramController); mTestDemoModeDatagramReceiver = new TestDatagramReceiver(mContext, Looper.myLooper(), mFeatureFlags, Loading Loading @@ -521,6 +522,8 @@ public class DatagramReceiverTest extends TelephonyTest { @NonNull FeatureFlags featureFlags, @NonNull DatagramController datagramController) { super(context, looper, featureFlags, datagramController); make(context, looper, featureFlags, datagramController); } @Override Loading @@ -546,6 +549,24 @@ public class DatagramReceiverTest extends TelephonyTest { protected boolean isDatagramWaitForConnectedStateTimerStarted() { return super.isDatagramWaitForConnectedStateTimerStarted(); } @Override protected int registerForSatelliteDatagram(int subId, @NonNull ISatelliteDatagramCallback callback) { return super.registerForSatelliteDatagram(subId, callback); } @Override protected void pollPendingSatelliteDatagrams( int subId, @NonNull Consumer<Integer> callback) { super.pollPendingSatelliteDatagrams(subId, callback); } @Override protected void onSatelliteModemStateChanged( @SatelliteManager.SatelliteModemState int state) { super.onSatelliteModemStateChanged(state); } } private static class TestSatelliteDatagramCallback extends ISatelliteDatagramCallback.Stub { Loading