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

Commit 5ff5ab56 authored by Jack Yu's avatar Jack Yu
Browse files

Removed data and voice RAT from service state

The voice and data RAT are now derived from
CS and PS network registration info.

Test: Manual + unit tests
Bug: 129863444

Change-Id: I3f4cb6057a4ae821363099583eeac7c867147afb
parent e247b8e1
Loading
Loading
Loading
Loading
+25 −7
Original line number Original line Diff line number Diff line
@@ -78,7 +78,7 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
     *
     *
     * @hide
     * @hide
     */
     */
    public final boolean isUsingCarrierAggregation;
    public boolean mIsUsingCarrierAggregation;


    /**
    /**
     * @hide
     * @hide
@@ -92,7 +92,7 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
        this.isNrAvailable = isNrAvailable;
        this.isNrAvailable = isNrAvailable;
        this.isEnDcAvailable = isEnDcAvailable;
        this.isEnDcAvailable = isEnDcAvailable;
        this.mLteVopsSupportInfo = lteVops;
        this.mLteVopsSupportInfo = lteVops;
        this.isUsingCarrierAggregation = isUsingCarrierAggregation;
        this.mIsUsingCarrierAggregation = isUsingCarrierAggregation;
    }
    }


    private DataSpecificRegistrationInfo(Parcel source) {
    private DataSpecificRegistrationInfo(Parcel source) {
@@ -101,7 +101,7 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
        isNrAvailable = source.readBoolean();
        isNrAvailable = source.readBoolean();
        isEnDcAvailable = source.readBoolean();
        isEnDcAvailable = source.readBoolean();
        mLteVopsSupportInfo = LteVopsSupportInfo.CREATOR.createFromParcel(source);
        mLteVopsSupportInfo = LteVopsSupportInfo.CREATOR.createFromParcel(source);
        isUsingCarrierAggregation = source.readBoolean();
        mIsUsingCarrierAggregation = source.readBoolean();
    }
    }


    @Override
    @Override
@@ -111,7 +111,7 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
        dest.writeBoolean(isNrAvailable);
        dest.writeBoolean(isNrAvailable);
        dest.writeBoolean(isEnDcAvailable);
        dest.writeBoolean(isEnDcAvailable);
        mLteVopsSupportInfo.writeToParcel(dest, flags);
        mLteVopsSupportInfo.writeToParcel(dest, flags);
        dest.writeBoolean(isUsingCarrierAggregation);
        dest.writeBoolean(mIsUsingCarrierAggregation);
    }
    }


    @Override
    @Override
@@ -128,7 +128,7 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
                .append(" isNrAvailable = " + isNrAvailable)
                .append(" isNrAvailable = " + isNrAvailable)
                .append(" isEnDcAvailable = " + isEnDcAvailable)
                .append(" isEnDcAvailable = " + isEnDcAvailable)
                .append(" " + mLteVopsSupportInfo.toString())
                .append(" " + mLteVopsSupportInfo.toString())
                .append(" isUsingCarrierAggregation = " + isUsingCarrierAggregation)
                .append(" mIsUsingCarrierAggregation = " + mIsUsingCarrierAggregation)
                .append(" }")
                .append(" }")
                .toString();
                .toString();
    }
    }
@@ -136,7 +136,7 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
    @Override
    @Override
    public int hashCode() {
    public int hashCode() {
        return Objects.hash(maxDataCalls, isDcNrRestricted, isNrAvailable, isEnDcAvailable,
        return Objects.hash(maxDataCalls, isDcNrRestricted, isNrAvailable, isEnDcAvailable,
                mLteVopsSupportInfo, isUsingCarrierAggregation);
                mLteVopsSupportInfo, mIsUsingCarrierAggregation);
    }
    }


    @Override
    @Override
@@ -151,7 +151,7 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
                && this.isNrAvailable == other.isNrAvailable
                && this.isNrAvailable == other.isNrAvailable
                && this.isEnDcAvailable == other.isEnDcAvailable
                && this.isEnDcAvailable == other.isEnDcAvailable
                && this.mLteVopsSupportInfo.equals(other.mLteVopsSupportInfo)
                && this.mLteVopsSupportInfo.equals(other.mLteVopsSupportInfo)
                && this.isUsingCarrierAggregation == other.isUsingCarrierAggregation;
                && this.mIsUsingCarrierAggregation == other.mIsUsingCarrierAggregation;
    }
    }


    public static final @NonNull Parcelable.Creator<DataSpecificRegistrationInfo> CREATOR =
    public static final @NonNull Parcelable.Creator<DataSpecificRegistrationInfo> CREATOR =
@@ -174,4 +174,22 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
    public LteVopsSupportInfo getLteVopsSupportInfo() {
    public LteVopsSupportInfo getLteVopsSupportInfo() {
        return mLteVopsSupportInfo;
        return mLteVopsSupportInfo;
    }
    }

    /**
     * Set the flag indicating if using carrier aggregation.
     *
     * @param isUsingCarrierAggregation {@code true} if using carrier aggregation.
     * @hide
     */
    public void setIsUsingCarrierAggregation(boolean isUsingCarrierAggregation) {
        mIsUsingCarrierAggregation = isUsingCarrierAggregation;
    }

    /**
     * @return {@code true} if using carrier aggregation.
     * @hide
     */
    public boolean isUsingCarrierAggregation() {
        return mIsUsingCarrierAggregation;
    }
}
}
+7 −0
Original line number Original line Diff line number Diff line
@@ -368,6 +368,13 @@ public final class NetworkRegistrationInfo implements Parcelable {
     * @hide
     * @hide
     */
     */
    public void setAccessNetworkTechnology(@NetworkType int tech) {
    public void setAccessNetworkTechnology(@NetworkType int tech) {
        if (tech == TelephonyManager.NETWORK_TYPE_LTE_CA) {
            // For old device backward compatibility support
            tech = TelephonyManager.NETWORK_TYPE_LTE;
            if (mDataSpecificInfo != null) {
                mDataSpecificInfo.setIsUsingCarrierAggregation(true);
            }
        }
        mAccessNetworkTechnology = tech;
        mAccessNetworkTechnology = tech;
    }
    }


+75 −76
Original line number Original line Diff line number Diff line
@@ -312,18 +312,6 @@ public class ServiceState implements Parcelable {
    private boolean mIsManualNetworkSelection;
    private boolean mIsManualNetworkSelection;


    private boolean mIsEmergencyOnly;
    private boolean mIsEmergencyOnly;
    /**
     * TODO: remove mRilVoiceRadioTechnology after completely migrate to
     * {@link TelephonyManager.NetworkType}
     */
    @RilRadioTechnology
    private int mRilVoiceRadioTechnology;
    /**
     * TODO: remove mRilDataRadioTechnology after completely migrate to
     * {@link TelephonyManager.NetworkType}
     */
    @RilRadioTechnology
    private int mRilDataRadioTechnology;


    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
    private boolean mCssIndicator;
    private boolean mCssIndicator;
@@ -340,9 +328,6 @@ public class ServiceState implements Parcelable {
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
    private int mCdmaEriIconMode;
    private int mCdmaEriIconMode;


    @UnsupportedAppUsage
    private boolean mIsUsingCarrierAggregation;

    @FrequencyRange
    @FrequencyRange
    private int mNrFrequencyRange;
    private int mNrFrequencyRange;
    private int mChannelNumber;
    private int mChannelNumber;
@@ -420,8 +405,6 @@ public class ServiceState implements Parcelable {
        mDataOperatorAlphaShort = s.mDataOperatorAlphaShort;
        mDataOperatorAlphaShort = s.mDataOperatorAlphaShort;
        mDataOperatorNumeric = s.mDataOperatorNumeric;
        mDataOperatorNumeric = s.mDataOperatorNumeric;
        mIsManualNetworkSelection = s.mIsManualNetworkSelection;
        mIsManualNetworkSelection = s.mIsManualNetworkSelection;
        mRilVoiceRadioTechnology = s.mRilVoiceRadioTechnology;
        mRilDataRadioTechnology = s.mRilDataRadioTechnology;
        mCssIndicator = s.mCssIndicator;
        mCssIndicator = s.mCssIndicator;
        mNetworkId = s.mNetworkId;
        mNetworkId = s.mNetworkId;
        mSystemId = s.mSystemId;
        mSystemId = s.mSystemId;
@@ -430,7 +413,6 @@ public class ServiceState implements Parcelable {
        mCdmaEriIconIndex = s.mCdmaEriIconIndex;
        mCdmaEriIconIndex = s.mCdmaEriIconIndex;
        mCdmaEriIconMode = s.mCdmaEriIconMode;
        mCdmaEriIconMode = s.mCdmaEriIconMode;
        mIsEmergencyOnly = s.mIsEmergencyOnly;
        mIsEmergencyOnly = s.mIsEmergencyOnly;
        mIsUsingCarrierAggregation = s.mIsUsingCarrierAggregation;
        mChannelNumber = s.mChannelNumber;
        mChannelNumber = s.mChannelNumber;
        mCellBandwidths = s.mCellBandwidths == null ? null :
        mCellBandwidths = s.mCellBandwidths == null ? null :
                Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length);
                Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length);
@@ -457,8 +439,6 @@ public class ServiceState implements Parcelable {
        mDataOperatorAlphaShort = in.readString();
        mDataOperatorAlphaShort = in.readString();
        mDataOperatorNumeric = in.readString();
        mDataOperatorNumeric = in.readString();
        mIsManualNetworkSelection = in.readInt() != 0;
        mIsManualNetworkSelection = in.readInt() != 0;
        mRilVoiceRadioTechnology = in.readInt();
        mRilDataRadioTechnology = in.readInt();
        mCssIndicator = (in.readInt() != 0);
        mCssIndicator = (in.readInt() != 0);
        mNetworkId = in.readInt();
        mNetworkId = in.readInt();
        mSystemId = in.readInt();
        mSystemId = in.readInt();
@@ -467,7 +447,6 @@ public class ServiceState implements Parcelable {
        mCdmaEriIconIndex = in.readInt();
        mCdmaEriIconIndex = in.readInt();
        mCdmaEriIconMode = in.readInt();
        mCdmaEriIconMode = in.readInt();
        mIsEmergencyOnly = in.readInt() != 0;
        mIsEmergencyOnly = in.readInt() != 0;
        mIsUsingCarrierAggregation = in.readInt() != 0;
        mLteEarfcnRsrpBoost = in.readInt();
        mLteEarfcnRsrpBoost = in.readInt();
        mNetworkRegistrationInfos = new ArrayList<>();
        mNetworkRegistrationInfos = new ArrayList<>();
        in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader());
        in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader());
@@ -486,8 +465,6 @@ public class ServiceState implements Parcelable {
        out.writeString(mDataOperatorAlphaShort);
        out.writeString(mDataOperatorAlphaShort);
        out.writeString(mDataOperatorNumeric);
        out.writeString(mDataOperatorNumeric);
        out.writeInt(mIsManualNetworkSelection ? 1 : 0);
        out.writeInt(mIsManualNetworkSelection ? 1 : 0);
        out.writeInt(mRilVoiceRadioTechnology);
        out.writeInt(mRilDataRadioTechnology);
        out.writeInt(mCssIndicator ? 1 : 0);
        out.writeInt(mCssIndicator ? 1 : 0);
        out.writeInt(mNetworkId);
        out.writeInt(mNetworkId);
        out.writeInt(mSystemId);
        out.writeInt(mSystemId);
@@ -496,7 +473,6 @@ public class ServiceState implements Parcelable {
        out.writeInt(mCdmaEriIconIndex);
        out.writeInt(mCdmaEriIconIndex);
        out.writeInt(mCdmaEriIconMode);
        out.writeInt(mCdmaEriIconMode);
        out.writeInt(mIsEmergencyOnly ? 1 : 0);
        out.writeInt(mIsEmergencyOnly ? 1 : 0);
        out.writeInt(mIsUsingCarrierAggregation ? 1 : 0);
        out.writeInt(mLteEarfcnRsrpBoost);
        out.writeInt(mLteEarfcnRsrpBoost);
        out.writeList(mNetworkRegistrationInfos);
        out.writeList(mNetworkRegistrationInfos);
        out.writeInt(mChannelNumber);
        out.writeInt(mChannelNumber);
@@ -568,7 +544,7 @@ public class ServiceState implements Parcelable {
    @DuplexMode
    @DuplexMode
    public int getDuplexMode() {
    public int getDuplexMode() {
        // only support LTE duplex mode
        // only support LTE duplex mode
        if (!isLte(mRilDataRadioTechnology)) {
        if (!isLte(getRilDataRadioTechnology())) {
            return DUPLEX_MODE_UNKNOWN;
            return DUPLEX_MODE_UNKNOWN;
        }
        }


@@ -850,8 +826,6 @@ public class ServiceState implements Parcelable {
                mDataOperatorAlphaShort,
                mDataOperatorAlphaShort,
                mDataOperatorNumeric,
                mDataOperatorNumeric,
                mIsManualNetworkSelection,
                mIsManualNetworkSelection,
                mRilVoiceRadioTechnology,
                mRilDataRadioTechnology,
                mCssIndicator,
                mCssIndicator,
                mNetworkId,
                mNetworkId,
                mSystemId,
                mSystemId,
@@ -860,7 +834,6 @@ public class ServiceState implements Parcelable {
                mCdmaEriIconIndex,
                mCdmaEriIconIndex,
                mCdmaEriIconMode,
                mCdmaEriIconMode,
                mIsEmergencyOnly,
                mIsEmergencyOnly,
                mIsUsingCarrierAggregation,
                mLteEarfcnRsrpBoost,
                mLteEarfcnRsrpBoost,
                mNetworkRegistrationInfos,
                mNetworkRegistrationInfos,
                mNrFrequencyRange);
                mNrFrequencyRange);
@@ -871,7 +844,7 @@ public class ServiceState implements Parcelable {
        if (!(o instanceof ServiceState)) return false;
        if (!(o instanceof ServiceState)) return false;
        ServiceState s = (ServiceState) o;
        ServiceState s = (ServiceState) o;


        return (mVoiceRegState == s.mVoiceRegState
        return mVoiceRegState == s.mVoiceRegState
                && mDataRegState == s.mDataRegState
                && mDataRegState == s.mDataRegState
                && mIsManualNetworkSelection == s.mIsManualNetworkSelection
                && mIsManualNetworkSelection == s.mIsManualNetworkSelection
                && mChannelNumber == s.mChannelNumber
                && mChannelNumber == s.mChannelNumber
@@ -882,8 +855,6 @@ public class ServiceState implements Parcelable {
                && equalsHandlesNulls(mDataOperatorAlphaLong, s.mDataOperatorAlphaLong)
                && equalsHandlesNulls(mDataOperatorAlphaLong, s.mDataOperatorAlphaLong)
                && equalsHandlesNulls(mDataOperatorAlphaShort, s.mDataOperatorAlphaShort)
                && equalsHandlesNulls(mDataOperatorAlphaShort, s.mDataOperatorAlphaShort)
                && equalsHandlesNulls(mDataOperatorNumeric, s.mDataOperatorNumeric)
                && equalsHandlesNulls(mDataOperatorNumeric, s.mDataOperatorNumeric)
                && equalsHandlesNulls(mRilVoiceRadioTechnology, s.mRilVoiceRadioTechnology)
                && equalsHandlesNulls(mRilDataRadioTechnology, s.mRilDataRadioTechnology)
                && equalsHandlesNulls(mCssIndicator, s.mCssIndicator)
                && equalsHandlesNulls(mCssIndicator, s.mCssIndicator)
                && equalsHandlesNulls(mNetworkId, s.mNetworkId)
                && equalsHandlesNulls(mNetworkId, s.mNetworkId)
                && equalsHandlesNulls(mSystemId, s.mSystemId)
                && equalsHandlesNulls(mSystemId, s.mSystemId)
@@ -891,7 +862,6 @@ public class ServiceState implements Parcelable {
                && equalsHandlesNulls(mCdmaDefaultRoamingIndicator,
                && equalsHandlesNulls(mCdmaDefaultRoamingIndicator,
                        s.mCdmaDefaultRoamingIndicator)
                        s.mCdmaDefaultRoamingIndicator)
                && mIsEmergencyOnly == s.mIsEmergencyOnly
                && mIsEmergencyOnly == s.mIsEmergencyOnly
                && mIsUsingCarrierAggregation == s.mIsUsingCarrierAggregation)
                && (mNetworkRegistrationInfos == null
                && (mNetworkRegistrationInfos == null
                ? s.mNetworkRegistrationInfos == null : s.mNetworkRegistrationInfos != null
                ? s.mNetworkRegistrationInfos == null : s.mNetworkRegistrationInfos != null
                && mNetworkRegistrationInfos.containsAll(s.mNetworkRegistrationInfos))
                && mNetworkRegistrationInfos.containsAll(s.mNetworkRegistrationInfos))
@@ -1035,27 +1005,27 @@ public class ServiceState implements Parcelable {
            .append(", mDataOperatorAlphaShort=").append(mDataOperatorAlphaShort)
            .append(", mDataOperatorAlphaShort=").append(mDataOperatorAlphaShort)
            .append(", isManualNetworkSelection=").append(mIsManualNetworkSelection)
            .append(", isManualNetworkSelection=").append(mIsManualNetworkSelection)
            .append(mIsManualNetworkSelection ? "(manual)" : "(automatic)")
            .append(mIsManualNetworkSelection ? "(manual)" : "(automatic)")
            .append(", mRilVoiceRadioTechnology=").append(mRilVoiceRadioTechnology)
            .append(", getRilVoiceRadioTechnology=").append(getRilVoiceRadioTechnology())
            .append("(" + rilRadioTechnologyToString(mRilVoiceRadioTechnology) + ")")
            .append("(" + rilRadioTechnologyToString(getRilVoiceRadioTechnology()) + ")")
            .append(", mRilDataRadioTechnology=").append(mRilDataRadioTechnology)
            .append(", getRilDataRadioTechnology=").append(getRilDataRadioTechnology())
            .append("(" + rilRadioTechnologyToString(mRilDataRadioTechnology) + ")")
            .append("(" + rilRadioTechnologyToString(getRilDataRadioTechnology()) + ")")
            .append(", mCssIndicator=").append(mCssIndicator ? "supported" : "unsupported")
            .append(", mCssIndicator=").append(mCssIndicator ? "supported" : "unsupported")
            .append(", mNetworkId=").append(mNetworkId)
            .append(", mNetworkId=").append(mNetworkId)
            .append(", mSystemId=").append(mSystemId)
            .append(", mSystemId=").append(mSystemId)
            .append(", mCdmaRoamingIndicator=").append(mCdmaRoamingIndicator)
            .append(", mCdmaRoamingIndicator=").append(mCdmaRoamingIndicator)
            .append(", mCdmaDefaultRoamingIndicator=").append(mCdmaDefaultRoamingIndicator)
            .append(", mCdmaDefaultRoamingIndicator=").append(mCdmaDefaultRoamingIndicator)
            .append(", mIsEmergencyOnly=").append(mIsEmergencyOnly)
            .append(", mIsEmergencyOnly=").append(mIsEmergencyOnly)
            .append(", mIsUsingCarrierAggregation=").append(mIsUsingCarrierAggregation)
            .append(", isUsingCarrierAggregation=").append(isUsingCarrierAggregation())
            .append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost)
            .append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost)
            .append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
            .append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
            .append(", mNrFrequencyRange=").append(mNrFrequencyRange)
            .append(", mNrFrequencyRange=").append(mNrFrequencyRange)
            .append("}").toString();
            .append("}").toString();
    }
    }


    private void setNullState(int state) {
    private void init() {
        if (DBG) Rlog.d(LOG_TAG, "[ServiceState] setNullState=" + state);
        if (DBG) Rlog.d(LOG_TAG, "init");
        mVoiceRegState = state;
        mVoiceRegState = STATE_OUT_OF_SERVICE;
        mDataRegState = state;
        mDataRegState = STATE_OUT_OF_SERVICE;
        mChannelNumber = -1;
        mChannelNumber = -1;
        mCellBandwidths = new int[0];
        mCellBandwidths = new int[0];
        mVoiceOperatorAlphaLong = null;
        mVoiceOperatorAlphaLong = null;
@@ -1065,8 +1035,6 @@ public class ServiceState implements Parcelable {
        mDataOperatorAlphaShort = null;
        mDataOperatorAlphaShort = null;
        mDataOperatorNumeric = null;
        mDataOperatorNumeric = null;
        mIsManualNetworkSelection = false;
        mIsManualNetworkSelection = false;
        mRilVoiceRadioTechnology = 0;
        mRilDataRadioTechnology = 0;
        mCssIndicator = false;
        mCssIndicator = false;
        mNetworkId = -1;
        mNetworkId = -1;
        mSystemId = -1;
        mSystemId = -1;
@@ -1075,18 +1043,28 @@ public class ServiceState implements Parcelable {
        mCdmaEriIconIndex = -1;
        mCdmaEriIconIndex = -1;
        mCdmaEriIconMode = -1;
        mCdmaEriIconMode = -1;
        mIsEmergencyOnly = false;
        mIsEmergencyOnly = false;
        mIsUsingCarrierAggregation = false;
        mLteEarfcnRsrpBoost = 0;
        mLteEarfcnRsrpBoost = 0;
        mNetworkRegistrationInfos = new ArrayList<>();
        mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN;
        mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN;
        addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
                .setDomain(NetworkRegistrationInfo.DOMAIN_CS)
                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
                .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
                .build());
        addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
                .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
                .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
                .build());
    }
    }


    public void setStateOutOfService() {
    public void setStateOutOfService() {
        setNullState(STATE_OUT_OF_SERVICE);
        init();
    }
    }


    public void setStateOff() {
    public void setStateOff() {
        setNullState(STATE_POWER_OFF);
        init();
        mVoiceRegState = STATE_POWER_OFF;
        mDataRegState = STATE_POWER_OFF;
    }
    }


    public void setState(int state) {
    public void setState(int state) {
@@ -1304,8 +1282,8 @@ public class ServiceState implements Parcelable {
        m.putString("data-operator-alpha-short", mDataOperatorAlphaShort);
        m.putString("data-operator-alpha-short", mDataOperatorAlphaShort);
        m.putString("data-operator-numeric", mDataOperatorNumeric);
        m.putString("data-operator-numeric", mDataOperatorNumeric);
        m.putBoolean("manual", mIsManualNetworkSelection);
        m.putBoolean("manual", mIsManualNetworkSelection);
        m.putInt("radioTechnology", mRilVoiceRadioTechnology);
        m.putInt("radioTechnology", getRilVoiceRadioTechnology());
        m.putInt("dataRadioTechnology", mRilDataRadioTechnology);
        m.putInt("dataRadioTechnology", getRadioTechnology());
        m.putBoolean("cssIndicator", mCssIndicator);
        m.putBoolean("cssIndicator", mCssIndicator);
        m.putInt("networkId", mNetworkId);
        m.putInt("networkId", mNetworkId);
        m.putInt("systemId", mSystemId);
        m.putInt("systemId", mSystemId);
@@ -1313,7 +1291,7 @@ public class ServiceState implements Parcelable {
        m.putInt("cdmaDefaultRoamingIndicator", mCdmaDefaultRoamingIndicator);
        m.putInt("cdmaDefaultRoamingIndicator", mCdmaDefaultRoamingIndicator);
        m.putBoolean("emergencyOnly", mIsEmergencyOnly);
        m.putBoolean("emergencyOnly", mIsEmergencyOnly);
        m.putBoolean("isDataRoamingFromRegistration", getDataRoamingFromRegistration());
        m.putBoolean("isDataRoamingFromRegistration", getDataRoamingFromRegistration());
        m.putBoolean("isUsingCarrierAggregation", mIsUsingCarrierAggregation);
        m.putBoolean("isUsingCarrierAggregation", isUsingCarrierAggregation());
        m.putInt("LteEarfcnRsrpBoost", mLteEarfcnRsrpBoost);
        m.putInt("LteEarfcnRsrpBoost", mLteEarfcnRsrpBoost);
        m.putInt("ChannelNumber", mChannelNumber);
        m.putInt("ChannelNumber", mChannelNumber);
        m.putIntArray("CellBandwidths", mCellBandwidths);
        m.putIntArray("CellBandwidths", mCellBandwidths);
@@ -1323,13 +1301,9 @@ public class ServiceState implements Parcelable {
    /** @hide */
    /** @hide */
    @TestApi
    @TestApi
    public void setRilVoiceRadioTechnology(@RilRadioTechnology int rt) {
    public void setRilVoiceRadioTechnology(@RilRadioTechnology int rt) {
        if (rt == RIL_RADIO_TECHNOLOGY_LTE_CA) {
        Rlog.e(LOG_TAG, "ServiceState.setRilVoiceRadioTechnology() called. It's encouraged to "
            rt = RIL_RADIO_TECHNOLOGY_LTE;
                + "use addNetworkRegistrationInfo() instead *******");
        }
        // Sync to network registration state

        this.mRilVoiceRadioTechnology = rt;

        // sync to network registration state
        NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
        NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
                NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        if (regState == null) {
        if (regState == null) {
@@ -1339,24 +1313,18 @@ public class ServiceState implements Parcelable {
                    .build();
                    .build();
            addNetworkRegistrationInfo(regState);
            addNetworkRegistrationInfo(regState);
        }
        }
        regState.setAccessNetworkTechnology(
        regState.setAccessNetworkTechnology(rilRadioTechnologyToNetworkType(rt));
                rilRadioTechnologyToNetworkType(mRilVoiceRadioTechnology));
    }
    }



    /** @hide */
    /** @hide */
    @TestApi
    @TestApi
    public void setRilDataRadioTechnology(@RilRadioTechnology int rt) {
    public void setRilDataRadioTechnology(@RilRadioTechnology int rt) {
        if (rt == RIL_RADIO_TECHNOLOGY_LTE_CA) {
        Rlog.e(LOG_TAG, "ServiceState.setRilDataRadioTechnology() called. It's encouraged to "
            rt = RIL_RADIO_TECHNOLOGY_LTE;
                + "use addNetworkRegistrationInfo() instead *******");
            this.mIsUsingCarrierAggregation = true;
        // Sync to network registration state. Always write down the WWAN transport. For AP-assisted
        } else {
        // mode device, use addNetworkRegistrationInfo() to set the correct transport if RAT
            this.mIsUsingCarrierAggregation = false;
        // is IWLAN.
        }
        this.mRilDataRadioTechnology = rt;
        if (VDBG) Rlog.d(LOG_TAG, "[ServiceState] setRilDataRadioTechnology=" +
                mRilDataRadioTechnology);

        // sync to network registration state
        NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
        NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);


@@ -1367,18 +1335,32 @@ public class ServiceState implements Parcelable {
                    .build();
                    .build();
            addNetworkRegistrationInfo(regState);
            addNetworkRegistrationInfo(regState);
        }
        }
        regState.setAccessNetworkTechnology(
        regState.setAccessNetworkTechnology(rilRadioTechnologyToNetworkType(rt));
                rilRadioTechnologyToNetworkType(mRilDataRadioTechnology));
    }
    }


    /** @hide */
    /** @hide */
    public boolean isUsingCarrierAggregation() {
    public boolean isUsingCarrierAggregation() {
        return mIsUsingCarrierAggregation;
        NetworkRegistrationInfo nri = getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        if (nri != null) {
            DataSpecificRegistrationInfo dsri = nri.getDataSpecificInfo();
            if (dsri != null) {
                return dsri.isUsingCarrierAggregation();
            }
        }
        return false;
    }
    }


    /** @hide */
    /** @hide */
    public void setIsUsingCarrierAggregation(boolean ca) {
    public void setIsUsingCarrierAggregation(boolean ca) {
        mIsUsingCarrierAggregation = ca;
        NetworkRegistrationInfo nri = getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        if (nri != null) {
            DataSpecificRegistrationInfo dsri = nri.getDataSpecificInfo();
            if (dsri != null) {
                dsri.setIsUsingCarrierAggregation(ca);
            }
        }
    }
    }


    /**
    /**
@@ -1435,12 +1417,29 @@ public class ServiceState implements Parcelable {
    /** @hide */
    /** @hide */
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    public int getRilVoiceRadioTechnology() {
    public int getRilVoiceRadioTechnology() {
        return this.mRilVoiceRadioTechnology;
        NetworkRegistrationInfo wwanRegInfo = getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        if (wwanRegInfo != null) {
            return networkTypeToRilRadioTechnology(wwanRegInfo.getAccessNetworkTechnology());
        }
        return RIL_RADIO_TECHNOLOGY_UNKNOWN;
    }
    }
    /** @hide */
    /** @hide */
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    public int getRilDataRadioTechnology() {
    public int getRilDataRadioTechnology() {
        return this.mRilDataRadioTechnology;
        NetworkRegistrationInfo wwanRegInfo = getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        NetworkRegistrationInfo wlanRegInfo = getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
        if (wlanRegInfo != null
                && wlanRegInfo.getAccessNetworkTechnology() == TelephonyManager.NETWORK_TYPE_IWLAN
                && wlanRegInfo.getRegistrationState()
                == NetworkRegistrationInfo.REGISTRATION_STATE_HOME) {
            return RIL_RADIO_TECHNOLOGY_IWLAN;
        } else if (wwanRegInfo != null) {
            return networkTypeToRilRadioTechnology(wwanRegInfo.getAccessNetworkTechnology());
        }
        return RIL_RADIO_TECHNOLOGY_UNKNOWN;
    }
    }
    /**
    /**
     * @hide
     * @hide