Add command to restart the modem
Bug: 175824420
Test: adb shell cmd phone restart-modem
Change-Id: I2c23d42954c7eebe4efafc6c6b938a3c0155155f
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index ed719b6..c64c375 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -24,6 +24,7 @@
import android.provider.BlockedNumberContract;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
import android.telephony.emergency.EmergencyNumber;
import android.telephony.ims.feature.ImsFeature;
import android.util.Log;
@@ -59,6 +60,7 @@
private static final String NUMBER_VERIFICATION_SUBCOMMAND = "numverify";
private static final String EMERGENCY_NUMBER_TEST_MODE = "emergency-number-test-mode";
private static final String END_BLOCK_SUPPRESSION = "end-block-suppression";
+ private static final String RESTART_MODEM = "restart-modem";
private static final String CARRIER_CONFIG_SUBCOMMAND = "cc";
private static final String DATA_TEST_MODE = "data";
private static final String DATA_ENABLE = "enable";
@@ -177,6 +179,8 @@
return handleGbaCommand();
case SINGLE_REGISTATION_CONFIG:
return handleSingleRegistrationConfigCommand();
+ case RESTART_MODEM:
+ return handleRestartModemCommand();
default: {
return handleDefaultCommands(cmd);
}
@@ -203,6 +207,8 @@
pw.println(" GBA Commands.");
pw.println(" src");
pw.println(" RCS VoLTE Single Registration Config Commands.");
+ pw.println(" restart-modem");
+ pw.println(" Restart modem command.");
onHelpIms();
onHelpEmergencyNumber();
onHelpEndBlockSupperssion();
@@ -1316,6 +1322,20 @@
return 0;
}
+ private int handleRestartModemCommand() {
+ // Verify that the user is allowed to run the command. Only allowed in rooted device in a
+ // non user build.
+ if (Binder.getCallingUid() != Process.ROOT_UID || TelephonyUtils.IS_USER) {
+ getErrPrintWriter().println("RestartModem: Permission denied.");
+ return -1;
+ }
+
+ boolean result = TelephonyManager.getDefault().rebootRadio();
+ getOutPrintWriter().println(result);
+
+ return result ? 0 : -1;
+ }
+
private int handleGbaCommand() {
String arg = getNextArg();
if (arg == null) {