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

Commit 514d6279 authored by Thomas Nguyen's avatar Thomas Nguyen
Browse files

Select proper handler to process datagram transfer state

Flag: EXEMPT bugfix
Bug: 364902805
Test: Manually test with demo mode
SatelliteManagerTestOnMockService
PointingAppControllerTest DatagramReceiverTest

Change-Id: I2d0a69887ec625f10c7c26684dcea38d220e2f28
parent eb4a22b1
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.provider.Telephony;
import android.telephony.DropBoxManagerLoggerBackend;
import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.SubscriptionManager;
import android.telephony.satellite.ISatelliteDatagramCallback;
import android.telephony.satellite.SatelliteDatagram;
import android.telephony.satellite.SatelliteManager;
@@ -454,8 +455,7 @@ public class DatagramReceiver extends Handler {

                if (mIsDemoMode && error == SatelliteManager.SATELLITE_RESULT_SUCCESS) {
                    SatelliteDatagram datagram = mDatagramController.popDemoModeDatagram();
                    final int validSubId = SatelliteServiceUtils.getValidSatelliteSubId(
                            request.subId, mContext);
                    final int validSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
                    SatelliteDatagramListenerHandler listenerHandler =
                            mSatelliteDatagramListenerHandlers.get(validSubId);
                    if (listenerHandler != null) {
@@ -517,7 +517,7 @@ public class DatagramReceiver extends Handler {
            return SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED;
        }

        final int validSubId = SatelliteServiceUtils.getValidSatelliteSubId(subId, mContext);
        final int validSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        SatelliteDatagramListenerHandler satelliteDatagramListenerHandler =
                mSatelliteDatagramListenerHandlers.get(validSubId);
        if (satelliteDatagramListenerHandler == null) {
@@ -543,7 +543,7 @@ public class DatagramReceiver extends Handler {
     */
    public void unregisterForSatelliteDatagram(int subId,
            @NonNull ISatelliteDatagramCallback callback) {
        final int validSubId = SatelliteServiceUtils.getValidSatelliteSubId(subId, mContext);
        final int validSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        SatelliteDatagramListenerHandler handler =
                mSatelliteDatagramListenerHandlers.get(validSubId);
        if (handler != null) {
@@ -575,7 +575,8 @@ public class DatagramReceiver extends Handler {
            callback.accept(SatelliteManager.SATELLITE_RESULT_MODEM_BUSY);
            return;
        }
        pollPendingSatelliteDatagramsInternal(subId, callback);
        pollPendingSatelliteDatagramsInternal(
                SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, callback);
    }

    private void handleSatelliteConnectedEvent() {
+6 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.os.SystemProperties;
import android.telephony.DropBoxManagerLoggerBackend;
import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.SubscriptionManager;
import android.telephony.satellite.ISatelliteTransmissionUpdateCallback;
import android.telephony.satellite.PointingInfo;
import android.telephony.satellite.SatelliteManager;
@@ -309,6 +310,7 @@ public class PointingAppController {
     */
    public void registerForSatelliteTransmissionUpdates(int subId,
            ISatelliteTransmissionUpdateCallback callback) {
        subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        SatelliteTransmissionUpdateHandler handler =
                mSatelliteTransmissionUpdateHandlers.get(subId);
        if (handler != null) {
@@ -337,6 +339,7 @@ public class PointingAppController {
     */
    public void unregisterForSatelliteTransmissionUpdates(int subId, Consumer<Integer> result,
            ISatelliteTransmissionUpdateCallback callback) {
        subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        SatelliteTransmissionUpdateHandler handler =
                mSatelliteTransmissionUpdateHandlers.get(subId);
        if (handler != null) {
@@ -445,6 +448,7 @@ public class PointingAppController {
            int sendPendingCount, int errorCode) {
        DatagramTransferStateHandlerRequest request = new DatagramTransferStateHandlerRequest(
                datagramType, datagramTransferState, sendPendingCount, errorCode);
        subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        SatelliteTransmissionUpdateHandler handler =
                mSatelliteTransmissionUpdateHandlers.get(subId);

@@ -464,6 +468,7 @@ public class PointingAppController {
     */
    public void onSendDatagramRequested(
            int subId, @SatelliteManager.DatagramType int datagramType) {
        subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        SatelliteTransmissionUpdateHandler handler =
                mSatelliteTransmissionUpdateHandlers.get(subId);
        if (handler != null) {
@@ -482,6 +487,7 @@ public class PointingAppController {
        DatagramTransferStateHandlerRequest request = new DatagramTransferStateHandlerRequest(
                SatelliteManager.DATAGRAM_TYPE_UNKNOWN, datagramTransferState, receivePendingCount,
                errorCode);
        subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        SatelliteTransmissionUpdateHandler handler =
                mSatelliteTransmissionUpdateHandlers.get(subId);

+2 −1
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.provider.Telephony;
import android.telephony.SubscriptionManager;
import android.telephony.satellite.ISatelliteDatagramCallback;
import android.telephony.satellite.SatelliteDatagram;
import android.telephony.satellite.SatelliteManager;
@@ -80,7 +81,7 @@ import java.util.concurrent.TimeUnit;
@TestableLooper.RunWithLooper
public class DatagramReceiverTest extends TelephonyTest {
    private static final String TAG = "DatagramReceiverTest";
    private static final int SUB_ID = 0;
    private static final int SUB_ID = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
    private static final String TEST_MESSAGE = "This is a test datagram message";
    private static final long TEST_EXPIRE_TIMER_SATELLITE_ALIGN = TimeUnit.SECONDS.toMillis(1);
    private static final long TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMEOUT_MILLIS =
+0 −27
Original line number Diff line number Diff line
@@ -418,23 +418,12 @@ public class PointingAppControllerTest extends TelephonyTest {
        TestSatelliteTransmissionUpdateCallback callback2 = new
                TestSatelliteTransmissionUpdateCallback();
        int subId1 = 3;
        int subId2 = 4;
        mPointingAppController.registerForSatelliteTransmissionUpdates(subId1, callback1);
        mInOrder.verify(mMockSatelliteModemInterface).registerForSatellitePositionInfoChanged(any(),
                eq(1), eq(null));
        mInOrder.verify(mMockSatelliteModemInterface).registerForDatagramTransferStateChanged(any(),
                eq(4), eq(null));
        mPointingAppController.registerForSatelliteTransmissionUpdates(subId1, callback2);
        mInOrder.verify(mMockSatelliteModemInterface, never())
                .registerForSatellitePositionInfoChanged(any(), eq(1), eq(null));
        mInOrder.verify(mMockSatelliteModemInterface, never())
                .registerForDatagramTransferStateChanged(any(), eq(4), eq(null));
        mPointingAppController.registerForSatelliteTransmissionUpdates(subId2, callback1);
        mInOrder.verify(mMockSatelliteModemInterface).registerForSatellitePositionInfoChanged(any(),
                eq(1), eq(null));
        mInOrder.verify(mMockSatelliteModemInterface).registerForDatagramTransferStateChanged(any(),
                eq(4), eq(null));
        mPointingAppController.registerForSatelliteTransmissionUpdates(subId2, callback2);
        mInOrder.verify(mMockSatelliteModemInterface, never())
                .registerForSatellitePositionInfoChanged(any(), eq(1), eq(null));
        mInOrder.verify(mMockSatelliteModemInterface, never())
@@ -447,22 +436,6 @@ public class PointingAppControllerTest extends TelephonyTest {
        mResultListener.remove();
        mPointingAppController.unregisterForSatelliteTransmissionUpdates(subId1,
                mResultListener::offer, callback2);
        mInOrder.verify(mMockSatelliteModemInterface).unregisterForSatellitePositionInfoChanged(
                any(Handler.class));
        mInOrder.verify(mMockSatelliteModemInterface).unregisterForDatagramTransferStateChanged(
                any(Handler.class));
        mPointingAppController.unregisterForSatelliteTransmissionUpdates(subId2,
                mResultListener::offer, callback1);
        processAllMessages();
        assertThat(mResultListener.peek()).isEqualTo(SatelliteManager.SATELLITE_RESULT_SUCCESS);
        mResultListener.remove();
        mInOrder.verify(mMockSatelliteModemInterface, never())
                .unregisterForSatellitePositionInfoChanged(any(Handler.class));
        mInOrder.verify(mMockSatelliteModemInterface, never())
                .unregisterForDatagramTransferStateChanged(any(Handler.class));
        mPointingAppController.unregisterForSatelliteTransmissionUpdates(subId2,
                mResultListener::offer, callback2);
        processAllMessages();
        mInOrder.verify(mMockSatelliteModemInterface).unregisterForSatellitePositionInfoChanged(
                any(Handler.class));
        mInOrder.verify(mMockSatelliteModemInterface).unregisterForDatagramTransferStateChanged(