Loading telephony/java/android/telephony/RadioAccessFamily.java +60 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,36 @@ public class RadioAccessFamily implements Parcelable { case RILConstants.NETWORK_MODE_GLOBAL: raf = GSM | WCDMA | CDMA | EVDO; break; case RILConstants.NETWORK_MODE_TDSCDMA_ONLY: raf = RAF_TD_SCDMA; break; case RILConstants.NETWORK_MODE_TDSCDMA_WCDMA: raf = RAF_TD_SCDMA | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA: raf = RAF_LTE | RAF_TD_SCDMA; break; case RILConstants.NETWORK_MODE_TDSCDMA_GSM: raf = RAF_TD_SCDMA | GSM; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM: raf = RAF_LTE | RAF_TD_SCDMA | GSM; break; case RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA: raf = RAF_TD_SCDMA | GSM | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA: raf = RAF_LTE | RAF_TD_SCDMA | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA: raf = RAF_LTE | RAF_TD_SCDMA | GSM | WCDMA; break; case RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: raf = RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: raf = RAF_LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA; break; default: raf = RAF_UNKNOWN; break; Loading Loading @@ -248,6 +278,36 @@ public class RadioAccessFamily implements Parcelable { case (GSM | WCDMA | CDMA | EVDO): type = RILConstants.NETWORK_MODE_GLOBAL; break; case RAF_TD_SCDMA: type = RILConstants.NETWORK_MODE_TDSCDMA_ONLY; break; case (RAF_TD_SCDMA | WCDMA): type = RILConstants.NETWORK_MODE_TDSCDMA_WCDMA; break; case (RAF_LTE | RAF_TD_SCDMA): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA; break; case (RAF_TD_SCDMA | GSM): type = RILConstants.NETWORK_MODE_TDSCDMA_GSM; break; case (RAF_LTE | RAF_TD_SCDMA | GSM): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM; break; case (RAF_TD_SCDMA | GSM | WCDMA): type = RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA; break; case (RAF_LTE | RAF_TD_SCDMA | WCDMA): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA; break; case (RAF_LTE | RAF_TD_SCDMA | GSM | WCDMA): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA; break; case (RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA): type = RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA; break; case (RAF_LTE | RAF_TD_SCDMA | RAF_LTE | CDMA | EVDO | GSM | WCDMA): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA; break; default: type = RILConstants.PREFERRED_NETWORK_MODE ; break; Loading telephony/java/android/telephony/ServiceState.java +5 −0 Original line number Diff line number Diff line Loading @@ -731,6 +731,9 @@ public class ServiceState implements Parcelable { case RIL_RADIO_TECHNOLOGY_IWLAN: rtString = "IWLAN"; break; case RIL_RADIO_TECHNOLOGY_TD_SCDMA: rtString = "TD-SCDMA"; break; default: rtString = "Unexpected"; Rlog.w(LOG_TAG, "Unexpected radioTechnology=" + rt); Loading Loading @@ -1068,6 +1071,8 @@ public class ServiceState implements Parcelable { return TelephonyManager.NETWORK_TYPE_HSPAP; case ServiceState.RIL_RADIO_TECHNOLOGY_GSM: return TelephonyManager.NETWORK_TYPE_GSM; case ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA: return TelephonyManager.NETWORK_TYPE_TD_SCDMA; case ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN: return TelephonyManager.NETWORK_TYPE_IWLAN; default: Loading telephony/java/android/telephony/SignalStrength.java +97 −8 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ public class SignalStrength implements Parcelable { private int mLteRsrq; private int mLteRssnr; private int mLteCqi; private int mTdScdmaRscp; private boolean isGsm; // This value is set by the ServiceStateTracker onSignalStrengthResult Loading Loading @@ -107,6 +108,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = INVALID; mLteRssnr = INVALID; mLteCqi = INVALID; mTdScdmaRscp = INVALID; isGsm = true; } Loading @@ -131,9 +133,26 @@ public class SignalStrength implements Parcelable { mLteRsrq = INVALID; mLteRssnr = INVALID; mLteCqi = INVALID; mTdScdmaRscp = INVALID; isGsm = gsmFlag; } /** * Constructor * * @hide */ public SignalStrength(int gsmSignalStrength, int gsmBitErrorRate, int cdmaDbm, int cdmaEcio, int evdoDbm, int evdoEcio, int evdoSnr, int lteSignalStrength, int lteRsrp, int lteRsrq, int lteRssnr, int lteCqi, int tdScdmaRscp, boolean gsmFlag) { initialize(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio, evdoDbm, evdoEcio, evdoSnr, lteSignalStrength, lteRsrp, lteRsrq, lteRssnr, lteCqi, gsmFlag); mTdScdmaRscp = tdScdmaRscp; } /** * Constructor * Loading Loading @@ -233,6 +252,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = lteRsrq; mLteRssnr = lteRssnr; mLteCqi = lteCqi; mTdScdmaRscp = INVALID; isGsm = gsm; if (DBG) log("initialize: " + toString()); } Loading @@ -253,6 +273,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = s.mLteRsrq; mLteRssnr = s.mLteRssnr; mLteCqi = s.mLteCqi; mTdScdmaRscp = s.mTdScdmaRscp; isGsm = s.isGsm; } Loading @@ -276,6 +297,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = in.readInt(); mLteRssnr = in.readInt(); mLteCqi = in.readInt(); mTdScdmaRscp = in.readInt(); isGsm = (in.readInt() != 0); } Loading @@ -302,7 +324,7 @@ public class SignalStrength implements Parcelable { ss.mLteRsrq = in.readInt(); ss.mLteRssnr = in.readInt(); ss.mLteCqi = in.readInt(); ss.mTdScdmaRscp = in.readInt(); return ss; } Loading @@ -322,6 +344,7 @@ public class SignalStrength implements Parcelable { out.writeInt(mLteRsrq); out.writeInt(mLteRssnr); out.writeInt(mLteCqi); out.writeInt(mTdScdmaRscp); out.writeInt(isGsm ? 1 : 0); } Loading Loading @@ -377,6 +400,9 @@ public class SignalStrength implements Parcelable { mLteRsrq = ((mLteRsrq >= 3) && (mLteRsrq <= 20)) ? -mLteRsrq : SignalStrength.INVALID; mLteRssnr = ((mLteRssnr >= -200) && (mLteRssnr <= 300)) ? mLteRssnr : SignalStrength.INVALID; mTdScdmaRscp = ((mTdScdmaRscp >= 25) && (mTdScdmaRscp <= 120)) ? -mTdScdmaRscp : SignalStrength.INVALID; // Cqi no change if (DBG) log("Signal after validate=" + this); } Loading Loading @@ -477,13 +503,16 @@ public class SignalStrength implements Parcelable { * while 4 represents a very strong signal strength. */ public int getLevel() { int level; int level = 0; if (isGsm) { level = getLteLevel(); if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { level = getTdScdmaLevel(); if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { level = getGsmLevel(); } } } else { int cdmaLevel = getCdmaLevel(); int evdoLevel = getEvdoLevel(); Loading @@ -508,10 +537,14 @@ public class SignalStrength implements Parcelable { * @hide */ public int getAsuLevel() { int asuLevel; int asuLevel = 0; if (isGsm) { if (getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { asuLevel = getGsmAsuLevel(); } else { asuLevel = getTdScdmaAsuLevel(); } } else { asuLevel = getLteAsuLevel(); } Loading Loading @@ -539,12 +572,16 @@ public class SignalStrength implements Parcelable { * @hide */ public int getDbm() { int dBm; int dBm = INVALID; if(isGsm()) { dBm = getLteDbm(); if (dBm == INVALID) { if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { dBm = getGsmDbm(); } else { dBm = getTdScdmaDbm(); } } } else { int cdmaDbm = getCdmaDbm(); Loading Loading @@ -848,6 +885,54 @@ public class SignalStrength implements Parcelable { return this.isGsm; } /** * @return get TD_SCDMA dbm * * @hide */ public int getTdScdmaDbm() { return this.mTdScdmaRscp; } /** * Get TD-SCDMA as level 0..4 * Range : 25 to 120 * INT_MAX: 0x7FFFFFFF denotes invalid value * Reference: 3GPP TS 25.123, section 9.1.1.1 * * @hide */ public int getTdScdmaLevel() { final int tdScdmaDbm = getTdScdmaDbm(); int level; if ((tdScdmaDbm > -25) || (tdScdmaDbm == SignalStrength.INVALID)) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; else if (tdScdmaDbm >= -49) level = SIGNAL_STRENGTH_GREAT; else if (tdScdmaDbm >= -73) level = SIGNAL_STRENGTH_GOOD; else if (tdScdmaDbm >= -97) level = SIGNAL_STRENGTH_MODERATE; else if (tdScdmaDbm >= -120) level = SIGNAL_STRENGTH_POOR; else level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (DBG) log("getTdScdmaLevel = " + level); return level; } /** * Get the TD-SCDMA signal level as an asu value. * * @hide */ public int getTdScdmaAsuLevel() { final int tdScdmaDbm = getTdScdmaDbm(); int tdScdmaAsuLevel; if (tdScdmaDbm == INVALID) tdScdmaAsuLevel = 255; else tdScdmaAsuLevel = tdScdmaDbm + 120; if (DBG) log("TD-SCDMA Asu level: " + tdScdmaAsuLevel); return tdScdmaAsuLevel; } /** * @return hash code */ Loading @@ -860,7 +945,7 @@ public class SignalStrength implements Parcelable { + (mEvdoDbm * primeNum) + (mEvdoEcio * primeNum) + (mEvdoSnr * primeNum) + (mLteSignalStrength * primeNum) + (mLteRsrp * primeNum) + (mLteRsrq * primeNum) + (mLteRssnr * primeNum) + (mLteCqi * primeNum) + (isGsm ? 1 : 0)); + (mTdScdmaRscp * primeNum) + (isGsm ? 1 : 0)); } /** Loading Loading @@ -892,6 +977,7 @@ public class SignalStrength implements Parcelable { && mLteRsrq == s.mLteRsrq && mLteRssnr == s.mLteRssnr && mLteCqi == s.mLteCqi && mTdScdmaRscp == s.mTdScdmaRscp && isGsm == s.isGsm); } Loading @@ -913,6 +999,7 @@ public class SignalStrength implements Parcelable { + " " + mLteRsrq + " " + mLteRssnr + " " + mLteCqi + " " + mTdScdmaRscp + " " + (isGsm ? "gsm|lte" : "cdma")); } Loading @@ -935,6 +1022,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = m.getInt("LteRsrq"); mLteRssnr = m.getInt("LteRssnr"); mLteCqi = m.getInt("LteCqi"); mTdScdmaRscp = m.getInt("TdScdma"); isGsm = m.getBoolean("isGsm"); } Loading @@ -957,6 +1045,7 @@ public class SignalStrength implements Parcelable { m.putInt("LteRsrq", mLteRsrq); m.putInt("LteRssnr", mLteRssnr); m.putInt("LteCqi", mLteCqi); m.putInt("TdScdma", mTdScdmaRscp); m.putBoolean("isGsm", Boolean.valueOf(isGsm)); } Loading telephony/java/android/telephony/TelephonyManager.java +10 −0 Original line number Diff line number Diff line Loading @@ -1099,11 +1099,21 @@ public class TelephonyManager { case RILConstants.NETWORK_MODE_LTE_GSM_WCDMA: case RILConstants.NETWORK_MODE_LTE_WCDMA: case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA: case RILConstants.NETWORK_MODE_TDSCDMA_ONLY: case RILConstants.NETWORK_MODE_TDSCDMA_WCDMA: case RILConstants.NETWORK_MODE_LTE_TDSCDMA: case RILConstants.NETWORK_MODE_TDSCDMA_GSM: case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM: case RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA: case RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA: case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA: case RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: return PhoneConstants.PHONE_TYPE_GSM; // Use CDMA Phone for the global mode including CDMA case RILConstants.NETWORK_MODE_GLOBAL: case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO: case RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: return PhoneConstants.PHONE_TYPE_CDMA; case RILConstants.NETWORK_MODE_LTE_ONLY: Loading telephony/java/com/android/internal/telephony/RILConstants.java +10 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,16 @@ public interface RILConstants { int NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = 10; /* LTE, CDMA, EvDo, GSM/WCDMA */ int NETWORK_MODE_LTE_ONLY = 11; /* LTE Only mode. */ int NETWORK_MODE_LTE_WCDMA = 12; /* LTE/WCDMA */ int NETWORK_MODE_TDSCDMA_ONLY = 13; /* TD-SCDMA only */ int NETWORK_MODE_TDSCDMA_WCDMA = 14; /* TD-SCDMA and WCDMA */ int NETWORK_MODE_LTE_TDSCDMA = 15; /* TD-SCDMA and LTE */ int NETWORK_MODE_TDSCDMA_GSM = 16; /* TD-SCDMA and GSM */ int NETWORK_MODE_LTE_TDSCDMA_GSM = 17; /* TD-SCDMA,GSM and LTE */ int NETWORK_MODE_TDSCDMA_GSM_WCDMA = 18; /* TD-SCDMA, GSM/WCDMA */ int NETWORK_MODE_LTE_TDSCDMA_WCDMA = 19; /* TD-SCDMA, WCDMA and LTE */ int NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA = 20; /* TD-SCDMA, GSM/WCDMA and LTE */ int NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 21; /*TD-SCDMA,EvDo,CDMA,GSM/WCDMA*/ int NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 22; /* TD-SCDMA/LTE/GSM/WCDMA, CDMA, and EvDo */ int PREFERRED_NETWORK_MODE = SystemProperties.getInt("ro.telephony.default_network", NETWORK_MODE_WCDMA_PREF); Loading Loading
telephony/java/android/telephony/RadioAccessFamily.java +60 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,36 @@ public class RadioAccessFamily implements Parcelable { case RILConstants.NETWORK_MODE_GLOBAL: raf = GSM | WCDMA | CDMA | EVDO; break; case RILConstants.NETWORK_MODE_TDSCDMA_ONLY: raf = RAF_TD_SCDMA; break; case RILConstants.NETWORK_MODE_TDSCDMA_WCDMA: raf = RAF_TD_SCDMA | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA: raf = RAF_LTE | RAF_TD_SCDMA; break; case RILConstants.NETWORK_MODE_TDSCDMA_GSM: raf = RAF_TD_SCDMA | GSM; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM: raf = RAF_LTE | RAF_TD_SCDMA | GSM; break; case RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA: raf = RAF_TD_SCDMA | GSM | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA: raf = RAF_LTE | RAF_TD_SCDMA | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA: raf = RAF_LTE | RAF_TD_SCDMA | GSM | WCDMA; break; case RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: raf = RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA; break; case RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: raf = RAF_LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA; break; default: raf = RAF_UNKNOWN; break; Loading Loading @@ -248,6 +278,36 @@ public class RadioAccessFamily implements Parcelable { case (GSM | WCDMA | CDMA | EVDO): type = RILConstants.NETWORK_MODE_GLOBAL; break; case RAF_TD_SCDMA: type = RILConstants.NETWORK_MODE_TDSCDMA_ONLY; break; case (RAF_TD_SCDMA | WCDMA): type = RILConstants.NETWORK_MODE_TDSCDMA_WCDMA; break; case (RAF_LTE | RAF_TD_SCDMA): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA; break; case (RAF_TD_SCDMA | GSM): type = RILConstants.NETWORK_MODE_TDSCDMA_GSM; break; case (RAF_LTE | RAF_TD_SCDMA | GSM): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM; break; case (RAF_TD_SCDMA | GSM | WCDMA): type = RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA; break; case (RAF_LTE | RAF_TD_SCDMA | WCDMA): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA; break; case (RAF_LTE | RAF_TD_SCDMA | GSM | WCDMA): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA; break; case (RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA): type = RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA; break; case (RAF_LTE | RAF_TD_SCDMA | RAF_LTE | CDMA | EVDO | GSM | WCDMA): type = RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA; break; default: type = RILConstants.PREFERRED_NETWORK_MODE ; break; Loading
telephony/java/android/telephony/ServiceState.java +5 −0 Original line number Diff line number Diff line Loading @@ -731,6 +731,9 @@ public class ServiceState implements Parcelable { case RIL_RADIO_TECHNOLOGY_IWLAN: rtString = "IWLAN"; break; case RIL_RADIO_TECHNOLOGY_TD_SCDMA: rtString = "TD-SCDMA"; break; default: rtString = "Unexpected"; Rlog.w(LOG_TAG, "Unexpected radioTechnology=" + rt); Loading Loading @@ -1068,6 +1071,8 @@ public class ServiceState implements Parcelable { return TelephonyManager.NETWORK_TYPE_HSPAP; case ServiceState.RIL_RADIO_TECHNOLOGY_GSM: return TelephonyManager.NETWORK_TYPE_GSM; case ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA: return TelephonyManager.NETWORK_TYPE_TD_SCDMA; case ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN: return TelephonyManager.NETWORK_TYPE_IWLAN; default: Loading
telephony/java/android/telephony/SignalStrength.java +97 −8 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ public class SignalStrength implements Parcelable { private int mLteRsrq; private int mLteRssnr; private int mLteCqi; private int mTdScdmaRscp; private boolean isGsm; // This value is set by the ServiceStateTracker onSignalStrengthResult Loading Loading @@ -107,6 +108,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = INVALID; mLteRssnr = INVALID; mLteCqi = INVALID; mTdScdmaRscp = INVALID; isGsm = true; } Loading @@ -131,9 +133,26 @@ public class SignalStrength implements Parcelable { mLteRsrq = INVALID; mLteRssnr = INVALID; mLteCqi = INVALID; mTdScdmaRscp = INVALID; isGsm = gsmFlag; } /** * Constructor * * @hide */ public SignalStrength(int gsmSignalStrength, int gsmBitErrorRate, int cdmaDbm, int cdmaEcio, int evdoDbm, int evdoEcio, int evdoSnr, int lteSignalStrength, int lteRsrp, int lteRsrq, int lteRssnr, int lteCqi, int tdScdmaRscp, boolean gsmFlag) { initialize(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio, evdoDbm, evdoEcio, evdoSnr, lteSignalStrength, lteRsrp, lteRsrq, lteRssnr, lteCqi, gsmFlag); mTdScdmaRscp = tdScdmaRscp; } /** * Constructor * Loading Loading @@ -233,6 +252,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = lteRsrq; mLteRssnr = lteRssnr; mLteCqi = lteCqi; mTdScdmaRscp = INVALID; isGsm = gsm; if (DBG) log("initialize: " + toString()); } Loading @@ -253,6 +273,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = s.mLteRsrq; mLteRssnr = s.mLteRssnr; mLteCqi = s.mLteCqi; mTdScdmaRscp = s.mTdScdmaRscp; isGsm = s.isGsm; } Loading @@ -276,6 +297,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = in.readInt(); mLteRssnr = in.readInt(); mLteCqi = in.readInt(); mTdScdmaRscp = in.readInt(); isGsm = (in.readInt() != 0); } Loading @@ -302,7 +324,7 @@ public class SignalStrength implements Parcelable { ss.mLteRsrq = in.readInt(); ss.mLteRssnr = in.readInt(); ss.mLteCqi = in.readInt(); ss.mTdScdmaRscp = in.readInt(); return ss; } Loading @@ -322,6 +344,7 @@ public class SignalStrength implements Parcelable { out.writeInt(mLteRsrq); out.writeInt(mLteRssnr); out.writeInt(mLteCqi); out.writeInt(mTdScdmaRscp); out.writeInt(isGsm ? 1 : 0); } Loading Loading @@ -377,6 +400,9 @@ public class SignalStrength implements Parcelable { mLteRsrq = ((mLteRsrq >= 3) && (mLteRsrq <= 20)) ? -mLteRsrq : SignalStrength.INVALID; mLteRssnr = ((mLteRssnr >= -200) && (mLteRssnr <= 300)) ? mLteRssnr : SignalStrength.INVALID; mTdScdmaRscp = ((mTdScdmaRscp >= 25) && (mTdScdmaRscp <= 120)) ? -mTdScdmaRscp : SignalStrength.INVALID; // Cqi no change if (DBG) log("Signal after validate=" + this); } Loading Loading @@ -477,13 +503,16 @@ public class SignalStrength implements Parcelable { * while 4 represents a very strong signal strength. */ public int getLevel() { int level; int level = 0; if (isGsm) { level = getLteLevel(); if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { level = getTdScdmaLevel(); if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { level = getGsmLevel(); } } } else { int cdmaLevel = getCdmaLevel(); int evdoLevel = getEvdoLevel(); Loading @@ -508,10 +537,14 @@ public class SignalStrength implements Parcelable { * @hide */ public int getAsuLevel() { int asuLevel; int asuLevel = 0; if (isGsm) { if (getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { asuLevel = getGsmAsuLevel(); } else { asuLevel = getTdScdmaAsuLevel(); } } else { asuLevel = getLteAsuLevel(); } Loading Loading @@ -539,12 +572,16 @@ public class SignalStrength implements Parcelable { * @hide */ public int getDbm() { int dBm; int dBm = INVALID; if(isGsm()) { dBm = getLteDbm(); if (dBm == INVALID) { if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) { dBm = getGsmDbm(); } else { dBm = getTdScdmaDbm(); } } } else { int cdmaDbm = getCdmaDbm(); Loading Loading @@ -848,6 +885,54 @@ public class SignalStrength implements Parcelable { return this.isGsm; } /** * @return get TD_SCDMA dbm * * @hide */ public int getTdScdmaDbm() { return this.mTdScdmaRscp; } /** * Get TD-SCDMA as level 0..4 * Range : 25 to 120 * INT_MAX: 0x7FFFFFFF denotes invalid value * Reference: 3GPP TS 25.123, section 9.1.1.1 * * @hide */ public int getTdScdmaLevel() { final int tdScdmaDbm = getTdScdmaDbm(); int level; if ((tdScdmaDbm > -25) || (tdScdmaDbm == SignalStrength.INVALID)) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; else if (tdScdmaDbm >= -49) level = SIGNAL_STRENGTH_GREAT; else if (tdScdmaDbm >= -73) level = SIGNAL_STRENGTH_GOOD; else if (tdScdmaDbm >= -97) level = SIGNAL_STRENGTH_MODERATE; else if (tdScdmaDbm >= -120) level = SIGNAL_STRENGTH_POOR; else level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (DBG) log("getTdScdmaLevel = " + level); return level; } /** * Get the TD-SCDMA signal level as an asu value. * * @hide */ public int getTdScdmaAsuLevel() { final int tdScdmaDbm = getTdScdmaDbm(); int tdScdmaAsuLevel; if (tdScdmaDbm == INVALID) tdScdmaAsuLevel = 255; else tdScdmaAsuLevel = tdScdmaDbm + 120; if (DBG) log("TD-SCDMA Asu level: " + tdScdmaAsuLevel); return tdScdmaAsuLevel; } /** * @return hash code */ Loading @@ -860,7 +945,7 @@ public class SignalStrength implements Parcelable { + (mEvdoDbm * primeNum) + (mEvdoEcio * primeNum) + (mEvdoSnr * primeNum) + (mLteSignalStrength * primeNum) + (mLteRsrp * primeNum) + (mLteRsrq * primeNum) + (mLteRssnr * primeNum) + (mLteCqi * primeNum) + (isGsm ? 1 : 0)); + (mTdScdmaRscp * primeNum) + (isGsm ? 1 : 0)); } /** Loading Loading @@ -892,6 +977,7 @@ public class SignalStrength implements Parcelable { && mLteRsrq == s.mLteRsrq && mLteRssnr == s.mLteRssnr && mLteCqi == s.mLteCqi && mTdScdmaRscp == s.mTdScdmaRscp && isGsm == s.isGsm); } Loading @@ -913,6 +999,7 @@ public class SignalStrength implements Parcelable { + " " + mLteRsrq + " " + mLteRssnr + " " + mLteCqi + " " + mTdScdmaRscp + " " + (isGsm ? "gsm|lte" : "cdma")); } Loading @@ -935,6 +1022,7 @@ public class SignalStrength implements Parcelable { mLteRsrq = m.getInt("LteRsrq"); mLteRssnr = m.getInt("LteRssnr"); mLteCqi = m.getInt("LteCqi"); mTdScdmaRscp = m.getInt("TdScdma"); isGsm = m.getBoolean("isGsm"); } Loading @@ -957,6 +1045,7 @@ public class SignalStrength implements Parcelable { m.putInt("LteRsrq", mLteRsrq); m.putInt("LteRssnr", mLteRssnr); m.putInt("LteCqi", mLteCqi); m.putInt("TdScdma", mTdScdmaRscp); m.putBoolean("isGsm", Boolean.valueOf(isGsm)); } Loading
telephony/java/android/telephony/TelephonyManager.java +10 −0 Original line number Diff line number Diff line Loading @@ -1099,11 +1099,21 @@ public class TelephonyManager { case RILConstants.NETWORK_MODE_LTE_GSM_WCDMA: case RILConstants.NETWORK_MODE_LTE_WCDMA: case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA: case RILConstants.NETWORK_MODE_TDSCDMA_ONLY: case RILConstants.NETWORK_MODE_TDSCDMA_WCDMA: case RILConstants.NETWORK_MODE_LTE_TDSCDMA: case RILConstants.NETWORK_MODE_TDSCDMA_GSM: case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM: case RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA: case RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA: case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA: case RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: return PhoneConstants.PHONE_TYPE_GSM; // Use CDMA Phone for the global mode including CDMA case RILConstants.NETWORK_MODE_GLOBAL: case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO: case RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA: return PhoneConstants.PHONE_TYPE_CDMA; case RILConstants.NETWORK_MODE_LTE_ONLY: Loading
telephony/java/com/android/internal/telephony/RILConstants.java +10 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,16 @@ public interface RILConstants { int NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = 10; /* LTE, CDMA, EvDo, GSM/WCDMA */ int NETWORK_MODE_LTE_ONLY = 11; /* LTE Only mode. */ int NETWORK_MODE_LTE_WCDMA = 12; /* LTE/WCDMA */ int NETWORK_MODE_TDSCDMA_ONLY = 13; /* TD-SCDMA only */ int NETWORK_MODE_TDSCDMA_WCDMA = 14; /* TD-SCDMA and WCDMA */ int NETWORK_MODE_LTE_TDSCDMA = 15; /* TD-SCDMA and LTE */ int NETWORK_MODE_TDSCDMA_GSM = 16; /* TD-SCDMA and GSM */ int NETWORK_MODE_LTE_TDSCDMA_GSM = 17; /* TD-SCDMA,GSM and LTE */ int NETWORK_MODE_TDSCDMA_GSM_WCDMA = 18; /* TD-SCDMA, GSM/WCDMA */ int NETWORK_MODE_LTE_TDSCDMA_WCDMA = 19; /* TD-SCDMA, WCDMA and LTE */ int NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA = 20; /* TD-SCDMA, GSM/WCDMA and LTE */ int NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 21; /*TD-SCDMA,EvDo,CDMA,GSM/WCDMA*/ int NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 22; /* TD-SCDMA/LTE/GSM/WCDMA, CDMA, and EvDo */ int PREFERRED_NETWORK_MODE = SystemProperties.getInt("ro.telephony.default_network", NETWORK_MODE_WCDMA_PREF); Loading