Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +5 −5 Original line number Diff line number Diff line Loading @@ -636,6 +636,7 @@ public class ServiceStateTracker extends Handler { public boolean getDesiredPowerState() { return mDesiredPowerState; } public boolean getPowerStateFromCarrier() { return !mRadioDisabledByCarrier; } private SignalStrength mLastSignalStrength = null; protected boolean notifySignalStrength() { Loading Loading @@ -808,7 +809,7 @@ public class ServiceStateTracker extends Handler { */ public void setRadioPowerFromCarrier(boolean enable) { mRadioDisabledByCarrier = !enable; setRadioPower(enable); setPowerStateToDesired(); } /** Loading Loading @@ -2291,11 +2292,10 @@ public class ServiceStateTracker extends Handler { } // If we want it on and it's off, turn it on if (mDesiredPowerState && mCi.getRadioState() == CommandsInterface.RadioState.RADIO_OFF && !mRadioDisabledByCarrier) { if (mDesiredPowerState && !mRadioDisabledByCarrier && mCi.getRadioState() == CommandsInterface.RadioState.RADIO_OFF) { mCi.setRadioPower(true, null); } else if (!mDesiredPowerState && mCi.getRadioState().isOn()) { } else if ((!mDesiredPowerState || mRadioDisabledByCarrier) && mCi.getRadioState().isOn()) { // If it's on and available and we want it off gracefully if (mPhone.isPhoneTypeGsm() && mPowerOffDelayNeed) { if (mImsRegistrationOnOff && !mAlarmSwitch) { Loading src/java/com/android/internal/telephony/dataconnection/DcTracker.java +8 −1 Original line number Diff line number Diff line Loading @@ -208,7 +208,8 @@ public class DcTracker extends Handler { PS_RESTRICTED(" - mIsPsRestricted= true"), UNDESIRED_POWER_STATE(" - desiredPowerState= false"), INTERNAL_DATA_DISABLED(" - mInternalDataEnabled= false"), DEFAULT_DATA_UNSELECTED(" - defaultDataSelected= false"); DEFAULT_DATA_UNSELECTED(" - defaultDataSelected= false"), RADIO_DISABLED_BY_CARRIER(" - powerStateFromCarrier= false"); public String mFailReasonStr; Loading Loading @@ -1369,9 +1370,11 @@ public class DcTracker extends Handler { boolean attachedState = mAttached.get(); boolean desiredPowerState = mPhone.getServiceStateTracker().getDesiredPowerState(); boolean radioStateFromCarrier = mPhone.getServiceStateTracker().getPowerStateFromCarrier(); int radioTech = mPhone.getServiceState().getRilDataRadioTechnology(); if (radioTech == ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN) { desiredPowerState = true; radioStateFromCarrier = true; } IccRecords r = mIccRecords.get(); Loading Loading @@ -1433,6 +1436,10 @@ public class DcTracker extends Handler { if(failureReason == null) return false; failureReason.addDataAllowFailReason(DataAllowFailReasonType.UNDESIRED_POWER_STATE); } if (!radioStateFromCarrier) { if(failureReason == null) return false; failureReason.addDataAllowFailReason(DataAllowFailReasonType.RADIO_DISABLED_BY_CARRIER); } return failureReason == null || !failureReason.isFailed(); } Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +33 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,39 @@ public class ServiceStateTrackerTest extends TelephonyTest { assertTrue(oldState != mSimulatedCommands.getRadioState().isOn()); } @Test @MediumTest public void testSetRadioPowerFromCarrier() { // Carrier disable radio power sst.setRadioPowerFromCarrier(false); waitForMs(100); assertFalse(mSimulatedCommands.getRadioState().isOn()); assertTrue(sst.getDesiredPowerState()); assertFalse(sst.getPowerStateFromCarrier()); // User toggle radio power will not overrides carrier settings sst.setRadioPower(true); waitForMs(100); assertFalse(mSimulatedCommands.getRadioState().isOn()); assertTrue(sst.getDesiredPowerState()); assertFalse(sst.getPowerStateFromCarrier()); // Carrier re-enable radio power sst.setRadioPowerFromCarrier(true); waitForMs(100); assertTrue(mSimulatedCommands.getRadioState().isOn()); assertTrue(sst.getDesiredPowerState()); assertTrue(sst.getPowerStateFromCarrier()); // User toggle radio power off (airplane mode) and set carrier on sst.setRadioPower(false); sst.setRadioPowerFromCarrier(true); waitForMs(100); assertFalse(mSimulatedCommands.getRadioState().isOn()); assertFalse(sst.getDesiredPowerState()); assertTrue(sst.getPowerStateFromCarrier()); } @Test @MediumTest public void testNoRilTrafficAfterSetRadioPower() { Loading Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +5 −5 Original line number Diff line number Diff line Loading @@ -636,6 +636,7 @@ public class ServiceStateTracker extends Handler { public boolean getDesiredPowerState() { return mDesiredPowerState; } public boolean getPowerStateFromCarrier() { return !mRadioDisabledByCarrier; } private SignalStrength mLastSignalStrength = null; protected boolean notifySignalStrength() { Loading Loading @@ -808,7 +809,7 @@ public class ServiceStateTracker extends Handler { */ public void setRadioPowerFromCarrier(boolean enable) { mRadioDisabledByCarrier = !enable; setRadioPower(enable); setPowerStateToDesired(); } /** Loading Loading @@ -2291,11 +2292,10 @@ public class ServiceStateTracker extends Handler { } // If we want it on and it's off, turn it on if (mDesiredPowerState && mCi.getRadioState() == CommandsInterface.RadioState.RADIO_OFF && !mRadioDisabledByCarrier) { if (mDesiredPowerState && !mRadioDisabledByCarrier && mCi.getRadioState() == CommandsInterface.RadioState.RADIO_OFF) { mCi.setRadioPower(true, null); } else if (!mDesiredPowerState && mCi.getRadioState().isOn()) { } else if ((!mDesiredPowerState || mRadioDisabledByCarrier) && mCi.getRadioState().isOn()) { // If it's on and available and we want it off gracefully if (mPhone.isPhoneTypeGsm() && mPowerOffDelayNeed) { if (mImsRegistrationOnOff && !mAlarmSwitch) { Loading
src/java/com/android/internal/telephony/dataconnection/DcTracker.java +8 −1 Original line number Diff line number Diff line Loading @@ -208,7 +208,8 @@ public class DcTracker extends Handler { PS_RESTRICTED(" - mIsPsRestricted= true"), UNDESIRED_POWER_STATE(" - desiredPowerState= false"), INTERNAL_DATA_DISABLED(" - mInternalDataEnabled= false"), DEFAULT_DATA_UNSELECTED(" - defaultDataSelected= false"); DEFAULT_DATA_UNSELECTED(" - defaultDataSelected= false"), RADIO_DISABLED_BY_CARRIER(" - powerStateFromCarrier= false"); public String mFailReasonStr; Loading Loading @@ -1369,9 +1370,11 @@ public class DcTracker extends Handler { boolean attachedState = mAttached.get(); boolean desiredPowerState = mPhone.getServiceStateTracker().getDesiredPowerState(); boolean radioStateFromCarrier = mPhone.getServiceStateTracker().getPowerStateFromCarrier(); int radioTech = mPhone.getServiceState().getRilDataRadioTechnology(); if (radioTech == ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN) { desiredPowerState = true; radioStateFromCarrier = true; } IccRecords r = mIccRecords.get(); Loading Loading @@ -1433,6 +1436,10 @@ public class DcTracker extends Handler { if(failureReason == null) return false; failureReason.addDataAllowFailReason(DataAllowFailReasonType.UNDESIRED_POWER_STATE); } if (!radioStateFromCarrier) { if(failureReason == null) return false; failureReason.addDataAllowFailReason(DataAllowFailReasonType.RADIO_DISABLED_BY_CARRIER); } return failureReason == null || !failureReason.isFailed(); } Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +33 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,39 @@ public class ServiceStateTrackerTest extends TelephonyTest { assertTrue(oldState != mSimulatedCommands.getRadioState().isOn()); } @Test @MediumTest public void testSetRadioPowerFromCarrier() { // Carrier disable radio power sst.setRadioPowerFromCarrier(false); waitForMs(100); assertFalse(mSimulatedCommands.getRadioState().isOn()); assertTrue(sst.getDesiredPowerState()); assertFalse(sst.getPowerStateFromCarrier()); // User toggle radio power will not overrides carrier settings sst.setRadioPower(true); waitForMs(100); assertFalse(mSimulatedCommands.getRadioState().isOn()); assertTrue(sst.getDesiredPowerState()); assertFalse(sst.getPowerStateFromCarrier()); // Carrier re-enable radio power sst.setRadioPowerFromCarrier(true); waitForMs(100); assertTrue(mSimulatedCommands.getRadioState().isOn()); assertTrue(sst.getDesiredPowerState()); assertTrue(sst.getPowerStateFromCarrier()); // User toggle radio power off (airplane mode) and set carrier on sst.setRadioPower(false); sst.setRadioPowerFromCarrier(true); waitForMs(100); assertFalse(mSimulatedCommands.getRadioState().isOn()); assertFalse(sst.getDesiredPowerState()); assertTrue(sst.getPowerStateFromCarrier()); } @Test @MediumTest public void testNoRilTrafficAfterSetRadioPower() { Loading