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

Commit 5c4cd154 authored by Chaitanya Saggurthi's avatar Chaitanya Saggurthi Committed by Steve Kondik
Browse files

Frameworks: Add TD-SCDMA support

1)TD-SCDMA Signal Strength display changes.
2)Add TD-SCDMA network type support in MobileDataStateTracker class
to identify TD-SCDMA as UMTS variant and use the relevant
kernel data stack tcp buffer sizes defined.

+ Telephony: Display 3g icons for tdscdma

Updated: As per technology order & keeping in view of
future changes, add TDSCDMA case along with UMTS type.

Change-Id: I158821574484bfaf47d1660406e591e2afb3be5e
CRs-Fixed: 403258
parent 28aded52
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -343,6 +343,7 @@ public class MobileDataStateTracker implements NetworkStateTracker {
            networkTypeStr = "edge";
            networkTypeStr = "edge";
            break;
            break;
        case TelephonyManager.NETWORK_TYPE_UMTS:
        case TelephonyManager.NETWORK_TYPE_UMTS:
        case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
            networkTypeStr = "umts";
            networkTypeStr = "umts";
            break;
            break;
        case TelephonyManager.NETWORK_TYPE_HSDPA:
        case TelephonyManager.NETWORK_TYPE_HSDPA:
+1 −0
Original line number Original line Diff line number Diff line
@@ -640,6 +640,7 @@ public class NetworkController extends BroadcastReceiver {
                        // fall through
                        // fall through
                    }
                    }
                case TelephonyManager.NETWORK_TYPE_UMTS:
                case TelephonyManager.NETWORK_TYPE_UMTS:
                case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
                    mDataIconList = TelephonyIcons.DATA_3G[mInetCondition];
                    mDataIconList = TelephonyIcons.DATA_3G[mInetCondition];
                    mDataTypeIconId = R.drawable.stat_sys_data_connected_3g;
                    mDataTypeIconId = R.drawable.stat_sys_data_connected_3g;
                    mQSDataTypeIconId = R.drawable.ic_qs_signal_3g;
                    mQSDataTypeIconId = R.drawable.ic_qs_signal_3g;
+12 −1
Original line number Original line Diff line number Diff line
@@ -148,6 +148,11 @@ public class ServiceState implements Parcelable {
     * @hide
     * @hide
     */
     */
    public static final int RIL_RADIO_TECHNOLOGY_GSM = 16;
    public static final int RIL_RADIO_TECHNOLOGY_GSM = 16;
    /**
     * TD-SCDMA
     * @hide
     */
    public static final int RIL_RADIO_TECHNOLOGY_TD_SCDMA = 17;


    /**
    /**
     * Available registration states for GSM, UMTS and CDMA.
     * Available registration states for GSM, UMTS and CDMA.
@@ -538,6 +543,9 @@ public class ServiceState implements Parcelable {
            case RIL_RADIO_TECHNOLOGY_GSM:
            case RIL_RADIO_TECHNOLOGY_GSM:
                rtString = "GSM";
                rtString = "GSM";
                break;
                break;
            case RIL_RADIO_TECHNOLOGY_TD_SCDMA:
                rtString = "TD-SCDMA";
                break;
            default:
            default:
                rtString = "Unexpected";
                rtString = "Unexpected";
                Rlog.w(LOG_TAG, "Unexpected radioTechnology=" + rt);
                Rlog.w(LOG_TAG, "Unexpected radioTechnology=" + rt);
@@ -804,6 +812,8 @@ public class ServiceState implements Parcelable {
            return TelephonyManager.NETWORK_TYPE_HSPAP;
            return TelephonyManager.NETWORK_TYPE_HSPAP;
        case ServiceState.RIL_RADIO_TECHNOLOGY_DCHSPAP:
        case ServiceState.RIL_RADIO_TECHNOLOGY_DCHSPAP:
            return TelephonyManager.NETWORK_TYPE_DCHSPAP;
            return TelephonyManager.NETWORK_TYPE_DCHSPAP;
        case ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA:
            return TelephonyManager.NETWORK_TYPE_TD_SCDMA;
        default:
        default:
            return TelephonyManager.NETWORK_TYPE_UNKNOWN;
            return TelephonyManager.NETWORK_TYPE_UNKNOWN;
        }
        }
@@ -854,7 +864,8 @@ public class ServiceState implements Parcelable {
                || radioTechnology == RIL_RADIO_TECHNOLOGY_LTE
                || radioTechnology == RIL_RADIO_TECHNOLOGY_LTE
                || radioTechnology == RIL_RADIO_TECHNOLOGY_HSPAP
                || radioTechnology == RIL_RADIO_TECHNOLOGY_HSPAP
                || radioTechnology == RIL_RADIO_TECHNOLOGY_DCHSPAP
                || radioTechnology == RIL_RADIO_TECHNOLOGY_DCHSPAP
                || radioTechnology == RIL_RADIO_TECHNOLOGY_GSM;
                || radioTechnology == RIL_RADIO_TECHNOLOGY_GSM
                || radioTechnology == RIL_RADIO_TECHNOLOGY_TD_SCDMA;
    }
    }


    /** @hide */
    /** @hide */
+98 −8
Original line number Original line Diff line number Diff line
@@ -63,6 +63,7 @@ public class SignalStrength implements Parcelable {
    private int mLteRsrq;
    private int mLteRsrq;
    private int mLteRssnr;
    private int mLteRssnr;
    private int mLteCqi;
    private int mLteCqi;
    private int mTdScdmaRscp;


    private boolean isGsm; // This value is set by the ServiceStateTracker onSignalStrengthResult
    private boolean isGsm; // This value is set by the ServiceStateTracker onSignalStrengthResult


@@ -102,6 +103,7 @@ public class SignalStrength implements Parcelable {
        mLteRsrq = INVALID;
        mLteRsrq = INVALID;
        mLteRssnr = INVALID;
        mLteRssnr = INVALID;
        mLteCqi = INVALID;
        mLteCqi = INVALID;
        mTdScdmaRscp = INVALID;
        isGsm = true;
        isGsm = true;
    }
    }


@@ -126,6 +128,7 @@ public class SignalStrength implements Parcelable {
        mLteRsrq = INVALID;
        mLteRsrq = INVALID;
        mLteRssnr = INVALID;
        mLteRssnr = INVALID;
        mLteCqi = INVALID;
        mLteCqi = INVALID;
        mTdScdmaRscp = INVALID;
        isGsm = gsmFlag;
        isGsm = gsmFlag;
    }
    }


@@ -144,6 +147,22 @@ public class SignalStrength implements Parcelable {
                lteRsrq, lteRssnr, lteCqi, gsmFlag);
                lteRsrq, lteRssnr, lteCqi, 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
     * Constructor
     *
     *
@@ -228,6 +247,7 @@ public class SignalStrength implements Parcelable {
        mLteRsrq = lteRsrq;
        mLteRsrq = lteRsrq;
        mLteRssnr = lteRssnr;
        mLteRssnr = lteRssnr;
        mLteCqi = lteCqi;
        mLteCqi = lteCqi;
        mTdScdmaRscp = INVALID;
        isGsm = gsm;
        isGsm = gsm;
        if (DBG) log("initialize: " + toString());
        if (DBG) log("initialize: " + toString());
    }
    }
@@ -248,6 +268,7 @@ public class SignalStrength implements Parcelable {
        mLteRsrq = s.mLteRsrq;
        mLteRsrq = s.mLteRsrq;
        mLteRssnr = s.mLteRssnr;
        mLteRssnr = s.mLteRssnr;
        mLteCqi = s.mLteCqi;
        mLteCqi = s.mLteCqi;
        mTdScdmaRscp = s.mTdScdmaRscp;
        isGsm = s.isGsm;
        isGsm = s.isGsm;
    }
    }


@@ -271,6 +292,7 @@ public class SignalStrength implements Parcelable {
        mLteRsrq = in.readInt();
        mLteRsrq = in.readInt();
        mLteRssnr = in.readInt();
        mLteRssnr = in.readInt();
        mLteCqi = in.readInt();
        mLteCqi = in.readInt();
        mTdScdmaRscp = in.readInt();
        isGsm = (in.readInt() != 0);
        isGsm = (in.readInt() != 0);
    }
    }


@@ -297,7 +319,7 @@ public class SignalStrength implements Parcelable {
        ss.mLteRsrq = in.readInt();
        ss.mLteRsrq = in.readInt();
        ss.mLteRssnr = in.readInt();
        ss.mLteRssnr = in.readInt();
        ss.mLteCqi = in.readInt();
        ss.mLteCqi = in.readInt();

        ss.mTdScdmaRscp = in.readInt();
        return ss;
        return ss;
    }
    }


@@ -317,6 +339,7 @@ public class SignalStrength implements Parcelable {
        out.writeInt(mLteRsrq);
        out.writeInt(mLteRsrq);
        out.writeInt(mLteRssnr);
        out.writeInt(mLteRssnr);
        out.writeInt(mLteCqi);
        out.writeInt(mLteCqi);
        out.writeInt(mTdScdmaRscp);
        out.writeInt(isGsm ? 1 : 0);
        out.writeInt(isGsm ? 1 : 0);
    }
    }


@@ -372,6 +395,10 @@ public class SignalStrength implements Parcelable {
        mLteRsrq = ((mLteRsrq >= 3) && (mLteRsrq <= 20)) ? -mLteRsrq : SignalStrength.INVALID;
        mLteRsrq = ((mLteRsrq >= 3) && (mLteRsrq <= 20)) ? -mLteRsrq : SignalStrength.INVALID;
        mLteRssnr = ((mLteRssnr >= -200) && (mLteRssnr <= 300) && !(mLteRsrq == SignalStrength.INVALID && mLteRssnr == -1)) ? mLteRssnr
        mLteRssnr = ((mLteRssnr >= -200) && (mLteRssnr <= 300) && !(mLteRsrq == SignalStrength.INVALID && mLteRssnr == -1)) ? mLteRssnr
                : SignalStrength.INVALID;
                : SignalStrength.INVALID;

        mTdScdmaRscp = ((mTdScdmaRscp >= 25) && (mTdScdmaRscp <= 120))
                ? -mTdScdmaRscp : SignalStrength.INVALID;

        // Cqi no change
        // Cqi no change
        if (DBG) log("Signal after validate=" + this);
        if (DBG) log("Signal after validate=" + this);
    }
    }
@@ -479,15 +506,18 @@ public class SignalStrength implements Parcelable {
     * @hide
     * @hide
     */
     */
    public int getLevel() {
    public int getLevel() {
        int level;
        int level = 0;


        if (isGsm) {
        if (isGsm) {
            boolean lteChecks = (getLteRsrp() == INVALID && getLteRsrq() == INVALID && getLteRssnr() == INVALID && getLteSignalStrenght() == 99);
            boolean lteChecks = (getLteRsrp() == INVALID && getLteRsrq() == INVALID && getLteRssnr() == INVALID && getLteSignalStrenght() == 99);
            boolean oldRil = needsOldRilFeature("signalstrength");
            boolean oldRil = needsOldRilFeature("signalstrength");
            level = getLteLevel();
            level = getLteLevel();
            if ((level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN && getGsmAsuLevel() != 99 && lteChecks) || oldRil) {
            if ((level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN && getGsmAsuLevel() != 99 && lteChecks) || oldRil) {
                level = getTdScdmaLevel();
                if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
                    level = getGsmLevel();
                    level = getGsmLevel();
                }
                }
            }
        } else {
        } else {
            int cdmaLevel = getCdmaLevel();
            int cdmaLevel = getCdmaLevel();
            int evdoLevel = getEvdoLevel();
            int evdoLevel = getEvdoLevel();
@@ -512,12 +542,16 @@ public class SignalStrength implements Parcelable {
     * @hide
     * @hide
     */
     */
    public int getAsuLevel() {
    public int getAsuLevel() {
        int asuLevel;
        int asuLevel = 0;
        if (isGsm) {
        if (isGsm) {
            boolean oldRil = needsOldRilFeature("signalstrength");
            boolean oldRil = needsOldRilFeature("signalstrength");
            boolean lteChecks = (getLteRsrp() == INVALID && getLteRsrq() == INVALID && getLteRssnr() == INVALID && getLteSignalStrenght() == 99);
            boolean lteChecks = (getLteRsrp() == INVALID && getLteRsrq() == INVALID && getLteRssnr() == INVALID && getLteSignalStrenght() == 99);
            if ((getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN && getGsmAsuLevel() != 99 && lteChecks) || oldRil) {
            if ((getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN && getGsmAsuLevel() != 99 && lteChecks) || oldRil) {
                if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
                    asuLevel = getGsmAsuLevel();
                    asuLevel = getGsmAsuLevel();
                } else {
                    asuLevel = getTdScdmaAsuLevel();
                }
            } else {
            } else {
                asuLevel = getLteAsuLevel();
                asuLevel = getLteAsuLevel();
            }
            }
@@ -545,13 +579,17 @@ public class SignalStrength implements Parcelable {
     * @hide
     * @hide
     */
     */
    public int getDbm() {
    public int getDbm() {
        int dBm;
        int dBm = INVALID;


        if(isGsm()) {
        if(isGsm()) {
            boolean oldRil = needsOldRilFeature("signalstrength");
            boolean oldRil = needsOldRilFeature("signalstrength");
            boolean lteChecks = (getLteRsrp() == INVALID && getLteRsrq() == INVALID && getLteRssnr() == INVALID && getLteSignalStrenght() == 99);
            boolean lteChecks = (getLteRsrp() == INVALID && getLteRsrq() == INVALID && getLteRssnr() == INVALID && getLteSignalStrenght() == 99);
            if ((getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN && getGsmAsuLevel() != 99 && lteChecks) || oldRil) {
            if ((getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN && getGsmAsuLevel() != 99 && lteChecks) || oldRil) {
                if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
                    dBm = getGsmDbm();
                    dBm = getGsmDbm();
                } else {
                    dBm = getTdScdmaDbm();
                }
            } else {
            } else {
                dBm = getLteDbm();
                dBm = getLteDbm();
            }
            }
@@ -847,6 +885,54 @@ public class SignalStrength implements Parcelable {
        return this.isGsm;
        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
     * @return hash code
     */
     */
@@ -859,7 +945,7 @@ public class SignalStrength implements Parcelable {
                + (mEvdoDbm * primeNum) + (mEvdoEcio * primeNum) + (mEvdoSnr * primeNum)
                + (mEvdoDbm * primeNum) + (mEvdoEcio * primeNum) + (mEvdoSnr * primeNum)
                + (mLteSignalStrength * primeNum) + (mLteRsrp * primeNum)
                + (mLteSignalStrength * primeNum) + (mLteRsrp * primeNum)
                + (mLteRsrq * primeNum) + (mLteRssnr * primeNum) + (mLteCqi * primeNum)
                + (mLteRsrq * primeNum) + (mLteRssnr * primeNum) + (mLteCqi * primeNum)
                + (isGsm ? 1 : 0));
                + (mTdScdmaRscp * primeNum) + (isGsm ? 1 : 0));
    }
    }


    /**
    /**
@@ -891,6 +977,7 @@ public class SignalStrength implements Parcelable {
                && mLteRsrq == s.mLteRsrq
                && mLteRsrq == s.mLteRsrq
                && mLteRssnr == s.mLteRssnr
                && mLteRssnr == s.mLteRssnr
                && mLteCqi == s.mLteCqi
                && mLteCqi == s.mLteCqi
                && mTdScdmaRscp == s.mTdScdmaRscp
                && isGsm == s.isGsm);
                && isGsm == s.isGsm);
    }
    }


@@ -912,6 +999,7 @@ public class SignalStrength implements Parcelable {
                + " " + mLteRsrq
                + " " + mLteRsrq
                + " " + mLteRssnr
                + " " + mLteRssnr
                + " " + mLteCqi
                + " " + mLteCqi
                + " " + mTdScdmaRscp
                + " " + (isGsm ? "gsm|lte" : "cdma"));
                + " " + (isGsm ? "gsm|lte" : "cdma"));
    }
    }


@@ -934,6 +1022,7 @@ public class SignalStrength implements Parcelable {
        mLteRsrq = m.getInt("LteRsrq");
        mLteRsrq = m.getInt("LteRsrq");
        mLteRssnr = m.getInt("LteRssnr");
        mLteRssnr = m.getInt("LteRssnr");
        mLteCqi = m.getInt("LteCqi");
        mLteCqi = m.getInt("LteCqi");
        mTdScdmaRscp = m.getInt("TdScdma");
        isGsm = m.getBoolean("isGsm");
        isGsm = m.getBoolean("isGsm");
    }
    }


@@ -956,6 +1045,7 @@ public class SignalStrength implements Parcelable {
        m.putInt("LteRsrq", mLteRsrq);
        m.putInt("LteRsrq", mLteRsrq);
        m.putInt("LteRssnr", mLteRssnr);
        m.putInt("LteRssnr", mLteRssnr);
        m.putInt("LteCqi", mLteCqi);
        m.putInt("LteCqi", mLteCqi);
        m.putInt("TdScdma", mTdScdmaRscp);
        m.putBoolean("isGsm", Boolean.valueOf(isGsm));
        m.putBoolean("isGsm", Boolean.valueOf(isGsm));
    }
    }


+6 −0
Original line number Original line Diff line number Diff line
@@ -599,6 +599,8 @@ public class TelephonyManager {
    public static final int NETWORK_TYPE_EHRPD = 14;
    public static final int NETWORK_TYPE_EHRPD = 14;
    /** Current network is HSPA+ */
    /** Current network is HSPA+ */
    public static final int NETWORK_TYPE_HSPAP = 15;
    public static final int NETWORK_TYPE_HSPAP = 15;
    /** Current network is TD_SCDMA {@hide} */
    public static final int NETWORK_TYPE_TD_SCDMA = 17;
    /** Current network is DC-HSPAP
    /** Current network is DC-HSPAP
     * @hide
     * @hide
     */
     */
@@ -632,6 +634,7 @@ public class TelephonyManager {
     * @see #NETWORK_TYPE_LTE
     * @see #NETWORK_TYPE_LTE
     * @see #NETWORK_TYPE_EHRPD
     * @see #NETWORK_TYPE_EHRPD
     * @see #NETWORK_TYPE_HSPAP
     * @see #NETWORK_TYPE_HSPAP
     * @see #NETWORK_TYPE_TD_SCDMA
     * @see #NETWORK_TYPE_DCHSPAP
     * @see #NETWORK_TYPE_DCHSPAP
     *
     *
     * @hide
     * @hide
@@ -721,6 +724,7 @@ public class TelephonyManager {
            case NETWORK_TYPE_EHRPD:
            case NETWORK_TYPE_EHRPD:
            case NETWORK_TYPE_HSPAP:
            case NETWORK_TYPE_HSPAP:
            case NETWORK_TYPE_DCHSPAP:
            case NETWORK_TYPE_DCHSPAP:
            case NETWORK_TYPE_TD_SCDMA:
                return NETWORK_CLASS_3_G;
                return NETWORK_CLASS_3_G;
            case NETWORK_TYPE_LTE:
            case NETWORK_TYPE_LTE:
                return NETWORK_CLASS_4_G;
                return NETWORK_CLASS_4_G;
@@ -775,6 +779,8 @@ public class TelephonyManager {
                return "HSPA+";
                return "HSPA+";
            case NETWORK_TYPE_DCHSPAP:
            case NETWORK_TYPE_DCHSPAP:
                return "DCHSPAP";
                return "DCHSPAP";
            case NETWORK_TYPE_TD_SCDMA:
                return "TD_SCDMA";
            default:
            default:
                return "UNKNOWN";
                return "UNKNOWN";
        }
        }