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

Commit 8dedf2b5 authored by Jack Yu's avatar Jack Yu Committed by Gerrit Code Review
Browse files

Merge changes from topics "lte_ca_support", "ss_provider"

* changes:
  Correctly support LTE carrier aggregation
  Passing ServiceState as byte array into ServiceStateProvider
parents 3db9cfe6 27ff4071
Loading
Loading
Loading
Loading
+15 −22
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.database.Cursor;
import android.database.sqlite.SqliteWrapper;
import android.net.Uri;
import android.os.Build;
import android.os.Parcel;
import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.SmsMessage;
@@ -4066,31 +4067,23 @@ public final class Telephony {
         */
        public static ContentValues getContentValuesForServiceState(ServiceState state) {
            ContentValues values = new ContentValues();
            values.put(VOICE_REG_STATE, state.getVoiceRegState());
            values.put(DATA_REG_STATE, state.getDataRegState());
            values.put(VOICE_ROAMING_TYPE, state.getVoiceRoamingType());
            values.put(DATA_ROAMING_TYPE, state.getDataRoamingType());
            values.put(VOICE_OPERATOR_ALPHA_LONG, state.getVoiceOperatorAlphaLong());
            values.put(VOICE_OPERATOR_ALPHA_SHORT, state.getVoiceOperatorAlphaShort());
            values.put(VOICE_OPERATOR_NUMERIC, state.getVoiceOperatorNumeric());
            values.put(DATA_OPERATOR_ALPHA_LONG, state.getDataOperatorAlphaLong());
            values.put(DATA_OPERATOR_ALPHA_SHORT, state.getDataOperatorAlphaShort());
            values.put(DATA_OPERATOR_NUMERIC, state.getDataOperatorNumeric());
            values.put(IS_MANUAL_NETWORK_SELECTION, state.getIsManualSelection());
            values.put(RIL_VOICE_RADIO_TECHNOLOGY, state.getRilVoiceRadioTechnology());
            values.put(RIL_DATA_RADIO_TECHNOLOGY, state.getRilDataRadioTechnology());
            values.put(CSS_INDICATOR, state.getCssIndicator());
            values.put(NETWORK_ID, state.getCdmaNetworkId());
            values.put(SYSTEM_ID, state.getCdmaSystemId());
            values.put(CDMA_ROAMING_INDICATOR, state.getCdmaRoamingIndicator());
            values.put(CDMA_DEFAULT_ROAMING_INDICATOR, state.getCdmaDefaultRoamingIndicator());
            values.put(CDMA_ERI_ICON_INDEX, state.getCdmaEriIconIndex());
            values.put(CDMA_ERI_ICON_MODE, state.getCdmaEriIconMode());
            values.put(IS_EMERGENCY_ONLY, state.isEmergencyOnly());
            values.put(IS_USING_CARRIER_AGGREGATION, state.isUsingCarrierAggregation());
            final Parcel p = Parcel.obtain();
            state.writeToParcel(p, 0);
            // Turn the parcel to byte array. Safe to do this because the content values were never
            // written into a persistent storage. ServiceStateProvider keeps values in the memory.
            values.put(SERVICE_STATE, p.marshall());
            return values;
        }

        /**
         * The current service state.
         *
         * This is the entire {@link ServiceState} object in byte array.
         *
         * @hide
         */
        public static final String SERVICE_STATE = "service_state";

        /**
         * An integer value indicating the current voice service state.
         * <p>
+17 −4
Original line number Diff line number Diff line
@@ -73,17 +73,26 @@ public final class DataSpecificRegistrationInfo implements Parcelable {
     */
    private final LteVopsSupportInfo mLteVopsSupportInfo;

    /**
     * Indicates if it's using carrier aggregation
     *
     * @hide
     */
    public final boolean isUsingCarrierAggregation;

    /**
     * @hide
     */
    DataSpecificRegistrationInfo(
            int maxDataCalls, boolean isDcNrRestricted, boolean isNrAvailable,
            boolean isEnDcAvailable, LteVopsSupportInfo lteVops) {
            boolean isEnDcAvailable, LteVopsSupportInfo lteVops,
            boolean isUsingCarrierAggregation) {
        this.maxDataCalls = maxDataCalls;
        this.isDcNrRestricted = isDcNrRestricted;
        this.isNrAvailable = isNrAvailable;
        this.isEnDcAvailable = isEnDcAvailable;
        this.mLteVopsSupportInfo = lteVops;
        this.isUsingCarrierAggregation = isUsingCarrierAggregation;
    }

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

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

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

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

    public static final @NonNull Parcelable.Creator<DataSpecificRegistrationInfo> CREATOR =
+4 −3
Original line number Diff line number Diff line
@@ -251,12 +251,13 @@ public final class NetworkRegistrationInfo implements Parcelable {
                                   @Nullable CellIdentity cellIdentity, int maxDataCalls,
                                   boolean isDcNrRestricted, boolean isNrAvailable,
                                   boolean isEndcAvailable,
                                   LteVopsSupportInfo lteVopsSupportInfo) {
                                   LteVopsSupportInfo lteVopsSupportInfo,
                                   boolean isUsingCarrierAggregation) {
        this(domain, transportType, registrationState, accessNetworkTechnology, rejectCause,
                emergencyOnly, availableServices, cellIdentity);

        mDataSpecificInfo = new DataSpecificRegistrationInfo(
                maxDataCalls, isDcNrRestricted, isNrAvailable, isEndcAvailable, lteVopsSupportInfo);
                maxDataCalls, isDcNrRestricted, isNrAvailable, isEndcAvailable, lteVopsSupportInfo,
                isUsingCarrierAggregation);
        updateNrState(mDataSpecificInfo);
    }