From 1e4c0b0eeeb3d966c5da4e137b1af09568edc566 Mon Sep 17 00:00:00 2001 From: Wileen Chiu Date: Mon, 22 Feb 2016 13:11:31 -0800 Subject: Send shutdown command to modem - The shutdown command is not sent to the modem for a graceful shutdown when the modem is in offline state in which, the RADIO_POWER off request is rejected - Send the shutdown command as soon as the device has been given a chance to power down the radio Change-Id: I2fc2eae04918f3927e93924f6ae7b3e19f920de2 CRs-Fixed: 977534 --- .../com/android/internal/telephony/ServiceStateTracker.java | 11 +++++++++++ .../internal/telephony/cdma/CdmaServiceStateTracker.java | 2 +- .../internal/telephony/gsm/GsmServiceStateTracker.java | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java index 1c831f126..f8ab9ad99 100644 --- a/src/java/com/android/internal/telephony/ServiceStateTracker.java +++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java @@ -185,6 +185,7 @@ public abstract class ServiceStateTracker extends Handler { protected static final int EVENT_IMS_STATE_CHANGED = 46; protected static final int EVENT_IMS_STATE_DONE = 47; protected static final int EVENT_IMS_CAPABILITY_CHANGED = 48; + protected static final int EVENT_RADIO_POWER_OFF_DONE = 49; protected static final String TIMEZONE_PROPERTY = "persist.sys.timezone"; @@ -632,6 +633,16 @@ public abstract class ServiceStateTracker extends Handler { } break; + case EVENT_RADIO_POWER_OFF_DONE: + if (DBG) log("EVENT_RADIO_POWER_OFF_DONE"); + if (mDeviceShuttingDown && mCi.getRadioState().isAvailable()) { + // during shutdown the modem may not send radio state changed event + // as a result of radio power request + // Hence, issuing shut down regardless of radio power response + mCi.requestShutdown(null); + } + break; + default: log("Unhandled message with number: " + msg.what); break; diff --git a/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index 1ebd7a72b..0c38e279d 100644 --- a/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -1994,7 +1994,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { mPhone.mCT.mRingingCall.hangupIfAlive(); mPhone.mCT.mBackgroundCall.hangupIfAlive(); mPhone.mCT.mForegroundCall.hangupIfAlive(); - mCi.setRadioPower(false, null); + mCi.setRadioPower(false, obtainMessage(EVENT_RADIO_POWER_OFF_DONE)); } protected void parseSidNid (String sidStr, String nidStr) { diff --git a/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index 6bb5cfaf2..531f393dd 100644 --- a/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -575,7 +575,7 @@ public class GsmServiceStateTracker extends ServiceStateTracker { mPhone.mCT.mForegroundCall.hangupIfAlive(); } - mCi.setRadioPower(false, null); + mCi.setRadioPower(false, obtainMessage(EVENT_RADIO_POWER_OFF_DONE)); } @Override -- cgit v1.2.3