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

Commit edec27a1 authored by Jake Hamby's avatar Jake Hamby Committed by Android Git Automerger
Browse files

am d531c9eb: Merge "Do not explicity disconnect Data during power down for 1x."

Merge commit 'd531c9eb' into gingerbread-plus-aosp

* commit 'd531c9eb':
  Do not explicity disconnect Data during power down for 1x.
parents de5e6afb d531c9eb
Loading
Loading
Loading
Loading
+41 −20
Original line number Diff line number Diff line
@@ -553,26 +553,45 @@ final class CdmaServiceStateTracker extends ServiceStateTracker {

    @Override
    protected void powerOffRadioSafely() {
        // clean data connection
        DataConnectionTracker dcTracker = phone.mDataConnection;

        Message msg = dcTracker.obtainMessage(DataConnectionTracker.EVENT_CLEAN_UP_CONNECTION);
        msg.arg1 = 1; // tearDown is true
        msg.obj = CDMAPhone.REASON_RADIO_TURNED_OFF;
        dcTracker.sendMessage(msg);

        synchronized (this) {
            if (networkType == ServiceState.RADIO_TECHNOLOGY_1xRTT) {
                /*
                 * In 1x CDMA , during radio power off modem will disconnect the
                 * data call and sends the power down registration message along
                 * with the data call release message to the network
                 */

                msg.arg1 = 0; // tearDown is false since modem does it anyway for 1X
                dcTracker.sendMessage(msg);

                Log.w(LOG_TAG, "Turn off the radio right away");
                hangupAndPowerOff();
            } else {
                if (!mPendingRadioPowerOffAfterDataOff) {
                    DataConnectionTracker.State currentState = dcTracker.getState();
                    if (currentState != DataConnectionTracker.State.CONNECTED
                            && currentState != DataConnectionTracker.State.DISCONNECTING
                            && currentState != DataConnectionTracker.State.INITING) {
                    if (DBG) log("Data disconnected, turn off radio right away.");

                        msg.arg1 = 0; // tearDown is false as it is not needed.
                        dcTracker.sendMessage(msg);

                        if (DBG)
                            log("Data disconnected, turn off radio right away.");
                        hangupAndPowerOff();
                }
                else if (sendEmptyMessageDelayed(EVENT_SET_RADIO_POWER_OFF, 30000)) {
                    } else {
                        // clean data connection
                        msg.arg1 = 1; // tearDown is true
                        dcTracker.sendMessage(msg);

                        if (sendEmptyMessageDelayed(EVENT_SET_RADIO_POWER_OFF, 30000)) {
                            if (DBG) {
                        log("Wait up to 30 sec for data to disconnect, then turn off radio.");
                                log("Wait upto 30s for data to disconnect, then turn off radio.");
                            }
                            mPendingRadioPowerOffAfterDataOff = true;
                        } else {
@@ -582,6 +601,8 @@ final class CdmaServiceStateTracker extends ServiceStateTracker {
                    }
                }
            }
        }
    }

    @Override
    protected void updateSpnDisplay() {