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

Commit c723b32a authored by Sukanya Rajkhowa's avatar Sukanya Rajkhowa Committed by Gerrit - the friendly Code Review server
Browse files

Telephony: Set data registration state in APM for IWLAN RAT

- APM causes data registration state to be POWER_OFF. Set it
  to IN_SERVICE for iwlan case
- In APM, UNSOL_VOICE_NETWORK_STATE_CHANGED resets data RAT and
  registration state to POWER_OFF. Ensure that this is done only
  when current RAT is not IWLAN or when iwlan feature is not
  available.

CRs-Fixed: 754338

Change-Id: I4c9bff1663837530349cb53027e2ef9b7dc873d6
parent a6b11c92
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -912,4 +912,28 @@ public abstract class ServiceStateTracker extends Handler {

    }


    /* Reset Service state when IWLAN is enabled as polling in airplane mode
     * causes state to go to OUT_OF_SERVICE state instead of STATE_OFF
     */
    protected void resetServiceStateInIwlanMode() {
        if (mCi.getRadioState() == CommandsInterface.RadioState.RADIO_OFF) {
            boolean resetIwlanRatVal = false;
            log("set service state as POWER_OFF");
            if (isIwlanFeatureAvailable()
                    && (ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN
                        == mNewSS.getRilDataRadioTechnology())) {
                log("pollStateDone: mNewSS = " + mNewSS);
                log("pollStateDone: reset iwlan RAT value");
                resetIwlanRatVal = true;
            }
            mNewSS.setStateOff();
            if (resetIwlanRatVal) {
                mNewSS.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN);
                mNewSS.setDataRegState(ServiceState.STATE_IN_SERVICE);
                log("pollStateDone: mNewSS = " + mNewSS);
                resetIwlanRatVal = false;
            }
        }
    }
}
+6 −18
Original line number Diff line number Diff line
@@ -269,7 +269,11 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
                setSignalStrengthDefaultValues();
                mGotCountryCode = false;

                if (!isIwlanFeatureAvailable()
                    || (ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN
                        != mSS.getRilDataRadioTechnology())) {
                    pollStateDone();
                }

                /**
                 * If iwlan feature is enabled then we do get
@@ -343,23 +347,7 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {

        boolean hasLocationChanged = !mNewCellLoc.equals(mCellLoc);

        if (mCi.getRadioState() == CommandsInterface.RadioState.RADIO_OFF) {
            boolean resetIwlanRatVal = false;
            log("set service state as POWER_OFF");
            if (isIwlanFeatureAvailable()
                    && (ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN
                        == mNewSS.getRilDataRadioTechnology())) {
                log("pollStateDone: mNewSS = " + mNewSS);
                log("pollStateDone: reset iwlan RAT value");
                resetIwlanRatVal = true;
            }
            mNewSS.setStateOff();
            if (resetIwlanRatVal) {
                mNewSS.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN);
                log("pollStateDone: mNewSS = " + mNewSS);
                resetIwlanRatVal = false;
            }
        }
        resetServiceStateInIwlanMode();

        boolean has4gHandoff =
                mNewSS.getDataRegState() == ServiceState.STATE_IN_SERVICE &&
+6 −18
Original line number Diff line number Diff line
@@ -966,7 +966,11 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
            setSignalStrengthDefaultValues();
            mGotCountryCode = false;

            if (!isIwlanFeatureAvailable()
                    || (ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN
                        != mSS.getRilDataRadioTechnology())) {
                pollStateDone();
            }

            /**
             * If iwlan feature is enabled then we do get
@@ -1106,23 +1110,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {

        boolean hasLocationChanged = !mNewCellLoc.equals(mCellLoc);

        if (mCi.getRadioState() == CommandsInterface.RadioState.RADIO_OFF) {
            boolean resetIwlanRatVal = false;
            log("set service state as POWER_OFF");
            if (isIwlanFeatureAvailable()
                    && (ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN
                        == mNewSS.getRilDataRadioTechnology())) {
                log("pollStateDone: mNewSS = " + mNewSS);
                log("pollStateDone: reset iwlan RAT value");
                resetIwlanRatVal = true;
            }
            mNewSS.setStateOff();
            if (resetIwlanRatVal) {
                mNewSS.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN);
                log("pollStateDone: mNewSS = " + mNewSS);
                resetIwlanRatVal = false;
            }
        }
        resetServiceStateInIwlanMode();

        // Add an event log when connection state changes
        if (mSS.getVoiceRegState() != mNewSS.getVoiceRegState() ||
+6 −18
Original line number Diff line number Diff line
@@ -918,8 +918,12 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
                setSignalStrengthDefaultValues();
                mGotCountryCode = false;
                mNitzUpdatedTime = false;
                if (!isIwlanFeatureAvailable()
                    || (ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN
                        != mSS.getRilDataRadioTechnology())) {
                    pollStateDone();

                }
                /**
                 * If iwlan feature is enabled then we do get
                 * voice_network_change indication from RIL. At this moment we
@@ -1015,23 +1019,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {

        boolean needNotifyData = (mSS.getCssIndicator() != mNewSS.getCssIndicator());

        if (mCi.getRadioState() == CommandsInterface.RadioState.RADIO_OFF) {
            boolean resetIwlanRatVal = false;
            log("set service state as POWER_OFF");
            if (isIwlanFeatureAvailable()
                    && (ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN
                        == mNewSS.getRilDataRadioTechnology())) {
                log("pollStateDone: mNewSS = " + mNewSS);
                log("pollStateDone: reset iwlan RAT value");
                resetIwlanRatVal = true;
            }
            mNewSS.setStateOff();
            if (resetIwlanRatVal) {
                mNewSS.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN);
                log("pollStateDone: mNewSS = " + mNewSS);
                resetIwlanRatVal = false;
            }
        }
        resetServiceStateInIwlanMode();

        // Add an event log when connection state changes
        if (hasVoiceRegStateChanged || hasDataRegStateChanged) {