Add APIs to update satellite listening timeout duration from CTS
Bug: 276762737
Test: Call/SMS/MMS with live network.
atest android.telephony.satellite.cts.SatelliteManagerTestOnMockService
atest android.telephony.satellite.cts.SatelliteManagerTest
Change-Id: I234cd2acd0627036c9e48cb3f5d021df99bf42cd
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 8849a77..538e2b2 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -180,7 +180,6 @@
import com.android.internal.telephony.ICallForwardingInfoCallback;
import com.android.internal.telephony.IImsStateCallback;
import com.android.internal.telephony.IIntegerConsumer;
-import com.android.internal.telephony.ILongConsumer;
import com.android.internal.telephony.INumberVerificationCallback;
import com.android.internal.telephony.ITelephony;
import com.android.internal.telephony.IccCard;
@@ -12513,6 +12512,24 @@
}
/**
+ * This API can be used by only CTS to update the timeout duration in milliseconds that
+ * satellite should stay at listening mode to wait for the next incoming page before disabling
+ * listening mode.
+ *
+ * @param timeoutMillis The timeout duration in millisecond.
+ * @return {@code true} if the timeout duration is set successfully, {@code false} otherwise.
+ */
+ public boolean setSatelliteListeningTimeoutDuration(long timeoutMillis) {
+ Log.d(LOG_TAG, "setSatelliteListeningTimeoutDuration - " + timeoutMillis);
+ TelephonyPermissions.enforceShellOnly(
+ Binder.getCallingUid(), "setSatelliteListeningTimeoutDuration");
+ TelephonyPermissions.enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(mApp,
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID,
+ "setSatelliteListeningTimeoutDuration");
+ return mSatelliteController.setSatelliteListeningTimeoutDuration(timeoutMillis);
+ }
+
+ /**
* Check whether the caller (or self, if not processing an IPC) can read device identifiers.
*
* <p>This method behaves in one of the following ways:
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index 53c7f4e..80df099 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -181,6 +181,8 @@
private static final String DISALLOW_THERMAL_MITIGATION_PACKAGE_SUBCOMMAND = "disallow-package";
private static final String SET_SATELLITE_SERVICE_PACKAGE_NAME =
"set-satellite-service-package-name";
+ private static final String SET_SATELLITE_LISTENING_TIMEOUT_DURATION =
+ "set-satellite-listening-timeout-duration";
private static final String INVALID_ENTRY_ERROR = "An emergency number (only allow '0'-'9', "
+ "'*', '#' or '+') needs to be specified after -a in the command ";
@@ -364,6 +366,8 @@
return clearCarrierServicePackageOverride();
case SET_SATELLITE_SERVICE_PACKAGE_NAME:
return handleSetSatelliteServicePackageNameCommand();
+ case SET_SATELLITE_LISTENING_TIMEOUT_DURATION:
+ return handleSetSatelliteListeningTimeoutDuration();
default: {
return handleDefaultCommands(cmd);
}
@@ -743,9 +747,14 @@
pw.println("Satellite Commands:");
pw.println(" set-satellite-service-package-name [-s SERVICE_PACKAGE_NAME]");
pw.println(" Sets the package name of satellite service defined in");
- pw.println(" SERVICE_PACKAGE_NAME to be the bound. Options are:");
+ pw.println(" SERVICE_PACKAGE_NAME to be bound. Options are:");
pw.println(" -s: the satellite service package name that Telephony will bind to.");
pw.println(" If no option is specified, it will bind to the default.");
+ pw.println(" set-satellite-listening-timeout-duration [-t TIMEOUT_MILLIS]");
+ pw.println(" Sets the timeout duration in millis that satellite will stay at listening");
+ pw.println(" mode. Options are:");
+ pw.println(" -t: the timeout duration in milliseconds.");
+ pw.println(" If no option is specified, it will use the default values.");
}
private void onHelpImei() {
@@ -3116,6 +3125,38 @@
return 0;
}
+ private int handleSetSatelliteListeningTimeoutDuration() {
+ PrintWriter errPw = getErrPrintWriter();
+ long timeoutMillis = 0;
+
+ String opt;
+ while ((opt = getNextOption()) != null) {
+ switch (opt) {
+ case "-t": {
+ timeoutMillis = Long.parseLong(getNextArgRequired());
+ break;
+ }
+ }
+ }
+ Log.d(LOG_TAG, "handleSetSatelliteListeningTimeoutDuration: timeoutMillis="
+ + timeoutMillis);
+
+ try {
+ boolean result = mInterface.setSatelliteListeningTimeoutDuration(timeoutMillis);
+ if (VDBG) {
+ Log.v(LOG_TAG, "setSatelliteListeningTimeoutDuration " + timeoutMillis
+ + ", result = " + result);
+ }
+ getOutPrintWriter().println(result);
+ } catch (RemoteException e) {
+ Log.w(LOG_TAG, "setSatelliteListeningTimeoutDuration: " + timeoutMillis
+ + ", error = " + e.getMessage());
+ errPw.println("Exception: " + e.getMessage());
+ return -1;
+ }
+ return 0;
+ }
+
private int handleCarrierRestrictionStatusCommand() {
try {
String MOCK_MODEM_SERVICE_NAME = "android.telephony.mockmodem.MockModemService";