Add keepAlive message type in send request API for satellite service
Bug: 327032155
Test: atest DatagramControllerTest DatagramDispatcherTest PointingAppControllerTest
SatelliteManagerTestOnMockService
SMS/MMS/Call with live network
Change-Id: Id28a4106a6ff9ab00c638640874762a437392c5f
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramController.java b/src/java/com/android/internal/telephony/satellite/DatagramController.java
index 204fc8e..d4e97db 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramController.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramController.java
@@ -17,6 +17,7 @@
package com.android.internal.telephony.satellite;
import static android.telephony.SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
+import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_UNKNOWN;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
import static android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED;
import static android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING;
@@ -74,6 +75,8 @@
@GuardedBy("mLock")
private int mSendSubId;
@GuardedBy("mLock")
+ private @SatelliteManager.DatagramType int mDatagramType = DATAGRAM_TYPE_UNKNOWN;
+ @GuardedBy("mLock")
private @SatelliteManager.SatelliteDatagramTransferState int mSendDatagramTransferState =
SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
@GuardedBy("mLock")
@@ -229,21 +232,23 @@
* @param sendPendingCount number of datagrams that are currently being sent
* @param errorCode If datagram transfer failed, the reason for failure.
*/
- public void updateSendStatus(int subId,
+ public void updateSendStatus(int subId, @SatelliteManager.DatagramType int datagramType,
@SatelliteManager.SatelliteDatagramTransferState int datagramTransferState,
int sendPendingCount, int errorCode) {
synchronized (mLock) {
logd("updateSendStatus"
+ " subId: " + subId
+ + " datagramType: " + datagramType
+ " datagramTransferState: " + datagramTransferState
+ " sendPendingCount: " + sendPendingCount + " errorCode: " + errorCode);
mSendSubId = subId;
+ mDatagramType = datagramType;
mSendDatagramTransferState = datagramTransferState;
mSendPendingCount = sendPendingCount;
mSendErrorCode = errorCode;
notifyDatagramTransferStateChangedToSessionController();
- mPointingAppController.updateSendDatagramTransferState(mSendSubId,
+ mPointingAppController.updateSendDatagramTransferState(mSendSubId, mDatagramType,
mSendDatagramTransferState, mSendPendingCount, mSendErrorCode);
retryPollPendingDatagramsInDemoMode();
}
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
index 1f98168..2d052b6 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
@@ -16,6 +16,7 @@
package com.android.internal.telephony.satellite;
+import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_UNKNOWN;
import static android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED;
import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_MODEM_TIMEOUT;
import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NOT_REACHABLE;
@@ -101,6 +102,8 @@
mPendingNonEmergencyDatagramsMap = new LinkedHashMap<>();
private long mWaitTimeForDatagramSendingResponse;
+ @SatelliteManager.DatagramType
+ private int mLastSendRequestDatagramType = DATAGRAM_TYPE_UNKNOWN;
/**
* Create the DatagramDispatcher singleton instance.
@@ -268,7 +271,7 @@
if (error == SatelliteManager.SATELLITE_RESULT_SUCCESS) {
// Update send status for current datagram
- mDatagramController.updateSendStatus(argument.subId,
+ mDatagramController.updateSendStatus(argument.subId, argument.datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS,
getPendingDatagramCount(), error);
mControllerMetricsStats.reportOutgoingDatagramSuccessCount(
@@ -281,17 +284,18 @@
sendPendingDatagrams();
} else {
mDatagramController.updateSendStatus(argument.subId,
- SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
- 0, SatelliteManager.SATELLITE_RESULT_SUCCESS);
+ argument.datagramType,
+ SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE, 0,
+ SatelliteManager.SATELLITE_RESULT_SUCCESS);
// Send response for current datagram
argument.callback.accept(error);
}
} else {
// Update send status
- mDatagramController.updateSendStatus(argument.subId,
+ mDatagramController.updateSendStatus(argument.subId, argument.datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED,
getPendingDatagramCount(), error);
- mDatagramController.updateSendStatus(argument.subId,
+ mDatagramController.updateSendStatus(argument.subId, argument.datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
0, SatelliteManager.SATELLITE_RESULT_SUCCESS);
// Send response for current datagram
@@ -318,7 +322,8 @@
}
case EVENT_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMED_OUT:
- handleEventDatagramWaitForConnectedStateTimedOut();
+ handleEventDatagramWaitForConnectedStateTimedOut(
+ (SendSatelliteDatagramArgument) msg.obj);
break;
case EVENT_WAIT_FOR_SIMULATED_POLL_DATAGRAMS_DELAY_TIMED_OUT:
@@ -356,10 +361,10 @@
long datagramId = mNextDatagramId.getAndUpdate(
n -> ((n + 1) % DatagramController.MAX_DATAGRAM_ID));
-
SendSatelliteDatagramArgument datagramArgs =
new SendSatelliteDatagramArgument(subId, datagramId, datagramType, datagram,
needFullScreenPointingUI, callback);
+ mLastSendRequestDatagramType = datagramType;
synchronized (mLock) {
// Add datagram to pending datagram map
@@ -371,16 +376,16 @@
if (mDatagramController.needsWaitingForSatelliteConnected()) {
logd("sendDatagram: wait for satellite connected");
- mDatagramController.updateSendStatus(subId,
+ mDatagramController.updateSendStatus(subId, datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_WAITING_TO_CONNECT,
getPendingDatagramCount(), SatelliteManager.SATELLITE_RESULT_SUCCESS);
- startDatagramWaitForConnectedStateTimer();
+ startDatagramWaitForConnectedStateTimer(datagramArgs);
} else if (!mSendingDatagramInProgress && mDatagramController.isPollingInIdleState()) {
// Modem can be busy receiving datagrams, so send datagram only when modem is
// not busy.
mSendingDatagramInProgress = true;
datagramArgs.setDatagramStartTime();
- mDatagramController.updateSendStatus(subId,
+ mDatagramController.updateSendStatus(subId, datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING,
getPendingDatagramCount(), SatelliteManager.SATELLITE_RESULT_SUCCESS);
sendRequestAsync(CMD_SEND_SATELLITE_DATAGRAM, datagramArgs, phone);
@@ -508,7 +513,7 @@
pendingDatagram.iterator().next().getValue();
// Sets the trigger time for getting pending datagrams
datagramArg.setDatagramStartTime();
- mDatagramController.updateSendStatus(datagramArg.subId,
+ mDatagramController.updateSendStatus(datagramArg.subId, datagramArg.datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING,
getPendingDatagramCount(), SatelliteManager.SATELLITE_RESULT_SUCCESS);
sendRequestAsync(CMD_SEND_SATELLITE_DATAGRAM, datagramArg, phone);
@@ -630,12 +635,13 @@
logd("cleanUpResources");
mSendingDatagramInProgress = false;
if (getPendingDatagramCount() > 0) {
- mDatagramController.updateSendStatus(
- SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
+ mDatagramController.updateSendStatus(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
+ mLastSendRequestDatagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED,
getPendingDatagramCount(), SatelliteManager.SATELLITE_RESULT_REQUEST_ABORTED);
}
mDatagramController.updateSendStatus(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
+ mLastSendRequestDatagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
0, SatelliteManager.SATELLITE_RESULT_SUCCESS);
abortSendingPendingDatagrams(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
@@ -648,15 +654,17 @@
mIsDemoMode = false;
mSendSatelliteDatagramRequest = null;
mIsAligned = false;
+ mLastSendRequestDatagramType = DATAGRAM_TYPE_UNKNOWN;
}
- private void startDatagramWaitForConnectedStateTimer() {
+ private void startDatagramWaitForConnectedStateTimer(
+ @NonNull SendSatelliteDatagramArgument datagramArgs) {
if (isDatagramWaitForConnectedStateTimerStarted()) {
logd("DatagramWaitForConnectedStateTimer is already started");
return;
}
sendMessageDelayed(obtainMessage(
- EVENT_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMED_OUT),
+ EVENT_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMED_OUT, datagramArgs),
mDatagramController.getDatagramWaitTimeForConnectedState());
}
@@ -695,15 +703,18 @@
removeMessages(EVENT_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_TIMED_OUT);
}
- private void handleEventDatagramWaitForConnectedStateTimedOut() {
+ private void handleEventDatagramWaitForConnectedStateTimedOut(
+ @NonNull SendSatelliteDatagramArgument argument) {
logw("Timed out to wait for satellite connected before sending datagrams");
synchronized (mLock) {
// Update send status
mDatagramController.updateSendStatus(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
+ argument.datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED,
getPendingDatagramCount(),
SATELLITE_RESULT_NOT_REACHABLE);
mDatagramController.updateSendStatus(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
+ argument.datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
0, SatelliteManager.SATELLITE_RESULT_SUCCESS);
abortSendingPendingDatagrams(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
@@ -757,10 +768,10 @@
mSendingDatagramInProgress = false;
// Update send status
- mDatagramController.updateSendStatus(argument.subId,
+ mDatagramController.updateSendStatus(argument.subId, argument.datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED,
getPendingDatagramCount(), SATELLITE_RESULT_MODEM_TIMEOUT);
- mDatagramController.updateSendStatus(argument.subId,
+ mDatagramController.updateSendStatus(argument.subId, argument.datagramType,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
0, SatelliteManager.SATELLITE_RESULT_SUCCESS);
diff --git a/src/java/com/android/internal/telephony/satellite/PointingAppController.java b/src/java/com/android/internal/telephony/satellite/PointingAppController.java
index 878ee96..5e79a06 100644
--- a/src/java/com/android/internal/telephony/satellite/PointingAppController.java
+++ b/src/java/com/android/internal/telephony/satellite/PointingAppController.java
@@ -160,12 +160,14 @@
}
private static final class DatagramTransferStateHandlerRequest {
+ public int datagramType;
public int datagramTransferState;
public int pendingCount;
public int errorCode;
- DatagramTransferStateHandlerRequest(int datagramTransferState, int pendingCount,
- int errorCode) {
+ DatagramTransferStateHandlerRequest(int datagramType, int datagramTransferState,
+ int pendingCount, int errorCode) {
+ this.datagramType = datagramType;
this.datagramTransferState = datagramTransferState;
this.pendingCount = pendingCount;
this.errorCode = errorCode;
@@ -232,8 +234,9 @@
List<IBinder> toBeRemoved = new ArrayList<>();
mListeners.values().forEach(listener -> {
try {
- listener.onSendDatagramStateChanged(request.datagramTransferState,
- request.pendingCount, request.errorCode);
+ listener.onSendDatagramStateChanged(request.datagramType,
+ request.datagramTransferState, request.pendingCount,
+ request.errorCode);
} catch (RemoteException e) {
logd("EVENT_SEND_DATAGRAM_STATE_CHANGED RemoteException: " + e);
toBeRemoved.add(listener.asBinder());
@@ -403,10 +406,11 @@
}
public void updateSendDatagramTransferState(int subId,
+ @SatelliteManager.DatagramType int datagramType,
@SatelliteManager.SatelliteDatagramTransferState int datagramTransferState,
int sendPendingCount, int errorCode) {
DatagramTransferStateHandlerRequest request = new DatagramTransferStateHandlerRequest(
- datagramTransferState, sendPendingCount, errorCode);
+ datagramType, datagramTransferState, sendPendingCount, errorCode);
SatelliteTransmissionUpdateHandler handler =
mSatelliteTransmissionUpdateHandlers.get(subId);
@@ -424,7 +428,8 @@
@SatelliteManager.SatelliteDatagramTransferState int datagramTransferState,
int receivePendingCount, int errorCode) {
DatagramTransferStateHandlerRequest request = new DatagramTransferStateHandlerRequest(
- datagramTransferState, receivePendingCount, errorCode);
+ SatelliteManager.DATAGRAM_TYPE_UNKNOWN, datagramTransferState, receivePendingCount,
+ errorCode);
SatelliteTransmissionUpdateHandler handler =
mSatelliteTransmissionUpdateHandlers.get(subId);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java
index e6689dd..78322ff 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java
@@ -16,7 +16,10 @@
package com.android.internal.telephony.satellite;
+import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE;
+import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING;
import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE;
+import static android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_UNKNOWN;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING;
@@ -77,10 +80,10 @@
mContext, Looper.myLooper(), mMockPointingAppController);
// Move both send and receive to IDLE state
- mDatagramControllerUT.updateSendStatus(SUB_ID, SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
- 0, SATELLITE_RESULT_SUCCESS);
- mDatagramControllerUT.updateReceiveStatus(SUB_ID, SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
- 0, SATELLITE_RESULT_SUCCESS);
+ mDatagramControllerUT.updateSendStatus(SUB_ID, DATAGRAM_TYPE_UNKNOWN,
+ SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE, 0, SATELLITE_RESULT_SUCCESS);
+ mDatagramControllerUT.updateReceiveStatus(SUB_ID, SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE, 0,
+ SATELLITE_RESULT_SUCCESS);
pushDemoModeSosDatagram();
}
@@ -92,9 +95,12 @@
@Test
public void testUpdateSendStatus() throws Exception {
- testUpdateSendStatus(true, SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING);
- testUpdateSendStatus(true, SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE);
- testUpdateSendStatus(false, SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING);
+ testUpdateSendStatus(true, DATAGRAM_TYPE_SOS_MESSAGE,
+ SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING);
+ testUpdateSendStatus(true, DATAGRAM_TYPE_LOCATION_SHARING,
+ SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE);
+ testUpdateSendStatus(false, DATAGRAM_TYPE_KEEP_ALIVE,
+ SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING);
}
@Test
@@ -110,18 +116,19 @@
testSetDeviceAlignedWithSatellite(false);
}
- private void testUpdateSendStatus(boolean isDemoMode, int sendState) {
+ private void testUpdateSendStatus(boolean isDemoMode, int datagramType, int sendState) {
mDatagramControllerUT.setDemoMode(isDemoMode);
clearAllInvocations();
int sendPendingCount = 1;
int errorCode = SATELLITE_RESULT_SUCCESS;
- mDatagramControllerUT.updateSendStatus(SUB_ID, sendState, sendPendingCount, errorCode);
+ mDatagramControllerUT.updateSendStatus(SUB_ID, datagramType, sendState, sendPendingCount,
+ errorCode);
verify(mMockSatelliteSessionController)
.onDatagramTransferStateChanged(eq(sendState), anyInt());
verify(mMockPointingAppController).updateSendDatagramTransferState(
- eq(SUB_ID), eq(sendState), eq(sendPendingCount), eq(errorCode));
+ eq(SUB_ID), eq(datagramType), eq(sendState), eq(sendPendingCount), eq(errorCode));
if (isDemoMode) {
if (sendState == SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE) {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
index cfb8a8d..3d6f617 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramDispatcherTest.java
@@ -84,6 +84,7 @@
private static final int SUB_ID = 0;
private static final int DATAGRAM_TYPE1 = SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE;
private static final int DATAGRAM_TYPE2 = SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING;
+ private static final int DATAGRAM_TYPE3 = SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE;
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 int TEST_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_TIMEOUT_MILLIS =
@@ -180,7 +181,7 @@
true, mResultListener::offer);
processAllMessages();
mInOrder.verify(mMockDatagramController).needsWaitingForSatelliteConnected();
- mInOrder.verify(mMockDatagramController).updateSendStatus(eq(SUB_ID),
+ mInOrder.verify(mMockDatagramController).updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_WAITING_TO_CONNECT), eq(1),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController).getDatagramWaitTimeForConnectedState();
@@ -193,15 +194,15 @@
mInOrder.verify(mMockDatagramController).isPollingInIdleState();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
verifyNoMoreInteractions(mMockDatagramController);
@@ -231,10 +232,12 @@
verifyZeroInteractions(mMockSatelliteModemInterface);
mInOrder.verify(mMockDatagramController)
.updateSendStatus(eq(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID),
+ eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED), eq(1),
eq(SatelliteManager.SATELLITE_RESULT_NOT_REACHABLE));
mInOrder.verify(mMockDatagramController)
.updateSendStatus(eq(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID),
+ eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
assertEquals(1, mResultListener.size());
@@ -303,15 +306,15 @@
mInOrder.verify(mMockDatagramController).needsWaitingForSatelliteConnected();
mInOrder.verify(mMockDatagramController).isPollingInIdleState();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
verifyNoMoreInteractions(mMockDatagramController);
@@ -333,15 +336,15 @@
mInOrder.verify(mMockDatagramController).needsWaitingForSatelliteConnected();
mInOrder.verify(mMockDatagramController).isPollingInIdleState();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED), eq(1),
eq(SATELLITE_RESULT_MODEM_TIMEOUT));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
verifyNoMoreInteractions(mMockDatagramController);
@@ -373,15 +376,15 @@
mInOrder.verify(mMockDatagramController).needsWaitingForSatelliteConnected();
mInOrder.verify(mMockDatagramController).isPollingInIdleState();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE2),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE2),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED), eq(0),
eq(SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE2),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
verifyNoMoreInteractions(mMockDatagramController);
@@ -411,15 +414,15 @@
processAllMessages();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
assertThat(mResultListener.peek()).isEqualTo(SATELLITE_RESULT_SUCCESS);
@@ -447,16 +450,16 @@
true, mResultListener::offer);
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
eq(SATELLITE_RESULT_SUCCESS));
processAllFutureMessages();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED),
anyInt(), eq(SatelliteManager.SATELLITE_RESULT_NOT_REACHABLE));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
assertThat(mResultListener.peek()).isEqualTo(
@@ -491,19 +494,19 @@
processAllMessages();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE2),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
eq(SATELLITE_RESULT_SUCCESS));
assertThat(mResultListener.peek()).isEqualTo(SATELLITE_RESULT_SUCCESS);
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE2),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(eq(SUB_ID),
+ .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE2),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
eq(SATELLITE_RESULT_SUCCESS));
@@ -543,11 +546,11 @@
processAllMessages();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(anyInt(),
+ .updateSendStatus(anyInt(), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED),
eq(1), eq(SatelliteManager.SATELLITE_RESULT_REQUEST_ABORTED));
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(anyInt(),
+ .updateSendStatus(anyInt(), eq(DATAGRAM_TYPE1),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE),
eq(0), eq(SATELLITE_RESULT_SUCCESS));
}
@@ -560,7 +563,7 @@
processAllMessages();
mInOrder.verify(mMockDatagramController)
- .updateSendStatus(anyInt(),
+ .updateSendStatus(anyInt(), anyInt(),
eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE),
eq(0), eq(SATELLITE_RESULT_SUCCESS));
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java
index 3917a32..0fe48c8 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java
@@ -150,6 +150,7 @@
}
private class TestSatelliteTransmissionUpdateCallback
extends ISatelliteTransmissionUpdateCallback.Stub {
+ int mDatagramType;
int mState;
int mSendPendingCount;
int mReceivePendingCount;
@@ -163,8 +164,9 @@
}
@Override
- public void onSendDatagramStateChanged(int state, int sendPendingCount,
+ public void onSendDatagramStateChanged(int datagramType, int state, int sendPendingCount,
int errorCode) {
+ mDatagramType = datagramType;
mState = state;
mSendPendingCount = sendPendingCount;
mErrorCode = errorCode;
@@ -191,6 +193,10 @@
}
}
+ public int getDatagramType() {
+ return mDatagramType;
+ }
+
public int getState() {
return mState;
}
@@ -208,7 +214,7 @@
}
}
- private boolean waitForReceiveDatagramStateChangedRessult(
+ private boolean waitForReceiveDatagramStateChangedResult(
int expectedNumberOfEvents) {
for (int i = 0; i < expectedNumberOfEvents; i++) {
try {
@@ -218,7 +224,7 @@
return false;
}
} catch (Exception ex) {
- loge("waitForReceiveDatagramStateChangedRessult: Got exception=" + ex);
+ loge("waitForReceiveDatagramStateChangedResult: Got exception=" + ex);
return false;
}
}
@@ -347,9 +353,12 @@
mPointingAppController.registerForSatelliteTransmissionUpdates(SUB_ID,
mSatelliteTransmissionUpdateCallback);
mPointingAppController.updateSendDatagramTransferState(SUB_ID,
+ SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS, 1,
SatelliteManager.SATELLITE_RESULT_SUCCESS);
assertTrue(waitForSendDatagramStateChangedRessult(1));
+ assertEquals(SatelliteManager.DATAGRAM_TYPE_KEEP_ALIVE,
+ mSatelliteTransmissionUpdateCallback.getDatagramType());
assertEquals(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS,
mSatelliteTransmissionUpdateCallback.getState());
assertEquals(1, mSatelliteTransmissionUpdateCallback.getSendPendingCount());
@@ -368,7 +377,7 @@
mPointingAppController.updateReceiveDatagramTransferState(SUB_ID,
SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_SUCCESS, 2,
SatelliteManager.SATELLITE_RESULT_SUCCESS);
- assertTrue(waitForReceiveDatagramStateChangedRessult(1));
+ assertTrue(waitForReceiveDatagramStateChangedResult(1));
assertEquals(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_SUCCESS,
mSatelliteTransmissionUpdateCallback.getState());
assertEquals(2, mSatelliteTransmissionUpdateCallback.getReceivePendingCount());