From d5f8d84d4573e17d87dc41000314156b08d9beec Mon Sep 17 00:00:00 2001 From: Ramesh Sudini Date: Wed, 27 Jul 2011 20:33:19 -0700 Subject: [PATCH] Support of LTE Only mode In CDMA-LTE hybrid mode, the service state is derived based on CDMA state. However, CDMA radio is off while in LTE only mode so thre will be no signal bar or data type icon displayed on the status UI. This patch handles LTE only mode scenario. The service state is derived from LTE if CDMA is OOS and LTE only mode is used. Bug: 5070240 Change-Id: Ie55daaf9eea1b16ca73312ebab208810b145d2bc --- .../cdma/CdmaLteServiceStateTracker.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java index aa56ccabb9c1e..018b72c817d21 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java @@ -217,6 +217,26 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { " mNewDataConnectionState = " + mNewDataConnectionState); } + // TODO: Add proper support for LTE Only, we should be looking at + // the preferred network mode, to know when newSS state should + // be coming from mLteSs state. This was needed to pass a VZW + // LTE Only test. + // + // If CDMA service is OOS, double check if the device is running with LTE only + // mode. If that is the case, derive the service state from LTE side. + // To set in LTE only mode, sqlite3 /data/data/com.android.providers.settings/ + // databases/settings.db "update secure set value='11' where name='preferred_network_mode'" + if (newSS.getState() == ServiceState.STATE_OUT_OF_SERVICE) { + int networkMode = android.provider.Settings.Secure.getInt(phone.getContext() + .getContentResolver(), + android.provider.Settings.Secure.PREFERRED_NETWORK_MODE, + RILConstants.PREFERRED_NETWORK_MODE); + if (networkMode == RILConstants.NETWORK_MODE_LTE_ONLY) { + if (DBG) log("pollState: LTE Only mode"); + newSS.setState(mLteSS.getState()); + } + } + if (DBG) log("pollStateDone: oldSS=[" + ss + "] newSS=[" + newSS + "]"); boolean hasRegistered = ss.getState() != ServiceState.STATE_IN_SERVICE