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

Commit 7125d3ba authored by Jack Yu's avatar Jack Yu Committed by Sarah Chin
Browse files

Added NR band support

Added band info in cell identity.

Test: Telephony sanity tests
Bug: 131061889
Change-Id: I0fb0e7e466a0188f04db595b8e417870666005ba
parent ac37b634
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -46202,6 +46202,7 @@ package android.telephony {
  public final class CellIdentityNr extends android.telephony.CellIdentity {
    method @NonNull public java.util.List<java.lang.String> getAdditionalPlmns();
    method public int getBand();
    method @Nullable public String getMccString();
    method @Nullable public String getMncString();
    method public long getNci();
+7 −0
Original line number Diff line number Diff line
@@ -10676,6 +10676,13 @@ package android.telephony {
    field public static final int TRANSPORT_TYPE_INVALID = -1; // 0xffffffff
  }
  public static final class AccessNetworkConstants.NgranBands {
    method public static int getFrequencyRangeGroup(int);
    field public static final int FREQUENCY_RANGE_GROUP_1 = 1; // 0x1
    field public static final int FREQUENCY_RANGE_GROUP_2 = 2; // 0x2
    field public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0; // 0x0
  }
  public final class BarringInfo implements android.os.Parcelable {
    ctor public BarringInfo();
    method @NonNull public android.telephony.BarringInfo createLocationInfoSanitizedCopy();
+7 −0
Original line number Diff line number Diff line
@@ -3160,6 +3160,13 @@ package android.telephony {
    field public static final int TRANSPORT_TYPE_INVALID = -1; // 0xffffffff
  }

  public static final class AccessNetworkConstants.NgranBands {
    method public static int getFrequencyRangeGroup(int);
    field public static final int FREQUENCY_RANGE_GROUP_1 = 1; // 0x1
    field public static final int FREQUENCY_RANGE_GROUP_2 = 2; // 0x2
    field public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0; // 0x0
  }

  public final class BarringInfo implements android.os.Parcelable {
    ctor public BarringInfo();
    ctor public BarringInfo(@Nullable android.telephony.CellIdentity, @NonNull android.util.SparseArray<android.telephony.BarringInfo.BarringServiceInfo>);
+153 −0
Original line number Diff line number Diff line
@@ -317,6 +317,159 @@ public final class AccessNetworkConstants {
        public static final int BAND_260 = 260;
        public static final int BAND_261 = 261;

        /**
         * NR Bands
         *
         * @hide */
        @Retention(RetentionPolicy.SOURCE)
        @IntDef(prefix = {"BAND_"},
                value = {BAND_1,
                        BAND_2,
                        BAND_3,
                        BAND_5,
                        BAND_7,
                        BAND_8,
                        BAND_12,
                        BAND_14,
                        BAND_18,
                        BAND_20,
                        BAND_25,
                        BAND_28,
                        BAND_29,
                        BAND_30,
                        BAND_34,
                        BAND_38,
                        BAND_39,
                        BAND_40,
                        BAND_41,
                        BAND_48,
                        BAND_50,
                        BAND_51,
                        BAND_65,
                        BAND_66,
                        BAND_70,
                        BAND_71,
                        BAND_74,
                        BAND_75,
                        BAND_76,
                        BAND_77,
                        BAND_78,
                        BAND_79,
                        BAND_80,
                        BAND_81,
                        BAND_82,
                        BAND_83,
                        BAND_84,
                        BAND_86,
                        BAND_90,
                        BAND_257,
                        BAND_258,
                        BAND_260,
                        BAND_261})
        public @interface NgranBand {}

        /**
         * Unknown NR frequency.
         *
         * @hide
         */
        @SystemApi
        @TestApi
        public static final int FREQUENCY_RANGE_GROUP_UNKNOWN = 0;

        /**
         * NR frequency group 1 defined in 3GPP TS 38.101-1 table 5.2-1
         *
         * @hide
         */
        @SystemApi
        @TestApi
        public static final int FREQUENCY_RANGE_GROUP_1 = 1;

        /**
         * NR frequency group 2 defined in 3GPP TS 38.101-2 table 5.2-1
         *
         * @hide
         */
        @SystemApi
        @TestApi
        public static final int FREQUENCY_RANGE_GROUP_2 = 2;

        /**
         * Radio frequency range group
         *
         * @hide
         */
        @Retention(RetentionPolicy.SOURCE)
        @IntDef(prefix = {"FREQUENCY_RANGE_GROUP_"},
                value = {
                        FREQUENCY_RANGE_GROUP_UNKNOWN,
                        FREQUENCY_RANGE_GROUP_1,
                        FREQUENCY_RANGE_GROUP_2})
        public @interface FrequencyRangeGroup {}

        /**
         * Get frequency range group
         *
         * @param band NR band
         * @return The frequency range group
         *
         * @hide
         */
        @SystemApi
        @TestApi
        public static @FrequencyRangeGroup int getFrequencyRangeGroup(@NgranBand int band) {
            switch (band) {
                case BAND_1:
                case BAND_2:
                case BAND_3:
                case BAND_5:
                case BAND_7:
                case BAND_8:
                case BAND_12:
                case BAND_14:
                case BAND_18:
                case BAND_20:
                case BAND_25:
                case BAND_28:
                case BAND_29:
                case BAND_30:
                case BAND_34:
                case BAND_38:
                case BAND_39:
                case BAND_40:
                case BAND_41:
                case BAND_48:
                case BAND_50:
                case BAND_51:
                case BAND_65:
                case BAND_66:
                case BAND_70:
                case BAND_71:
                case BAND_74:
                case BAND_75:
                case BAND_76:
                case BAND_77:
                case BAND_78:
                case BAND_79:
                case BAND_80:
                case BAND_81:
                case BAND_82:
                case BAND_83:
                case BAND_84:
                case BAND_86:
                case BAND_90:
                    return FREQUENCY_RANGE_GROUP_1;
                case BAND_257:
                case BAND_258:
                case BAND_260:
                case BAND_261:
                    return FREQUENCY_RANGE_GROUP_2;
                default:
                    return FREQUENCY_RANGE_GROUP_UNKNOWN;
            }
        };

        /** @hide */
        private NgranBands() {}
    }
+33 −9
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.telephony.AccessNetworkConstants.NgranBands.NgranBand;
import android.telephony.gsm.GsmCellLocation;

import java.util.Collections;
@@ -41,6 +42,7 @@ public final class CellIdentityNr extends CellIdentity {
    private final int mPci;
    private final int mTac;
    private final long mNci;
    private final int mBand;

    // a list of additional PLMN-IDs reported for this cell
    private final List<String> mAdditionalPlmns;
@@ -50,6 +52,7 @@ public final class CellIdentityNr extends CellIdentity {
     * @param pci Physical Cell Id in range [0, 1007].
     * @param tac 16-bit Tracking Area Code.
     * @param nrArfcn NR Absolute Radio Frequency Channel Number, in range [0, 3279165].
     * @param band Band number defined in 3GPP TS 38.101-1 and TS 38.101-2.
     * @param mccStr 3-digit Mobile Country Code in string format.
     * @param mncStr 2 or 3-digit Mobile Network Code in string format.
     * @param nci The 36-bit NR Cell Identity in range [0, 68719476735].
@@ -59,25 +62,28 @@ public final class CellIdentityNr extends CellIdentity {
     *
     * @hide
     */
    public CellIdentityNr(int pci, int tac, int nrArfcn, String mccStr, String mncStr,
            long nci, String alphal, String alphas, List<String> additionalPlmns) {
    public CellIdentityNr(int pci, int tac, int nrArfcn, @NgranBand int band, String mccStr,
            String mncStr, long nci, String alphal, String alphas, List<String> additionalPlmns) {
        super(TAG, CellInfo.TYPE_NR, mccStr, mncStr, alphal, alphas);
        mPci = inRangeOrUnavailable(pci, 0, MAX_PCI);
        mTac = inRangeOrUnavailable(tac, 0, MAX_TAC);
        mNrArfcn = inRangeOrUnavailable(nrArfcn, 0, MAX_NRARFCN);
        mBand = inRangeOrUnavailable(band, AccessNetworkConstants.NgranBands.BAND_1,
                AccessNetworkConstants.NgranBands.BAND_261);
        mNci = inRangeOrUnavailable(nci, 0, MAX_NCI);
        mAdditionalPlmns = additionalPlmns;
    }

    /** @hide */
    public CellIdentityNr(android.hardware.radio.V1_4.CellIdentityNr cid) {
        this(cid.pci, cid.tac, cid.nrarfcn, cid.mcc, cid.mnc, cid.nci, cid.operatorNames.alphaLong,
                cid.operatorNames.alphaShort, Collections.emptyList());
        this(cid.pci, cid.tac, cid.nrarfcn, 0, cid.mcc, cid.mnc, cid.nci,
                cid.operatorNames.alphaLong, cid.operatorNames.alphaShort,
                Collections.emptyList());
    }

    /** @hide */
    public CellIdentityNr(android.hardware.radio.V1_5.CellIdentityNr cid) {
        this(cid.base.pci, cid.base.tac, cid.base.nrarfcn, cid.base.mcc, cid.base.mnc,
        this(cid.base.pci, cid.base.tac, cid.base.nrarfcn, cid.band, cid.base.mcc, cid.base.mnc,
                cid.base.nci, cid.base.operatorNames.alphaLong,
                cid.base.operatorNames.alphaShort, cid.additionalPlmns);
    }
@@ -85,8 +91,9 @@ public final class CellIdentityNr extends CellIdentity {
    /** @hide */
    @Override
    public @NonNull CellIdentityNr sanitizeLocationInfo() {
        return new CellIdentityNr(CellInfo.UNAVAILABLE, CellInfo.UNAVAILABLE, CellInfo.UNAVAILABLE,
                mMccStr, mMncStr, CellInfo.UNAVAILABLE, mAlphaLong, mAlphaShort, mAdditionalPlmns);
        return new CellIdentityNr(CellInfo.UNAVAILABLE, CellInfo.UNAVAILABLE, mNrArfcn,
                mBand, mMccStr, mMncStr, CellInfo.UNAVAILABLE, mAlphaLong, mAlphaShort,
                mAdditionalPlmns);
    }

    /**
@@ -102,7 +109,7 @@ public final class CellIdentityNr extends CellIdentity {
    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), mPci, mTac,
                mNrArfcn, mNci, mAdditionalPlmns.hashCode());
                mNrArfcn, mBand, mNci, mAdditionalPlmns.hashCode());
    }

    @Override
@@ -113,7 +120,8 @@ public final class CellIdentityNr extends CellIdentity {

        CellIdentityNr o = (CellIdentityNr) other;
        return super.equals(o) && mPci == o.mPci && mTac == o.mTac && mNrArfcn == o.mNrArfcn
                && mNci == o.mNci && mAdditionalPlmns.equals(o.mAdditionalPlmns);
                && mBand == o.mBand && mNci == o.mNci
                && mAdditionalPlmns.equals(o.mAdditionalPlmns);
    }

    /**
@@ -139,6 +147,19 @@ public final class CellIdentityNr extends CellIdentity {
        return mNrArfcn;
    }

    /**
     * Get band of the cell
     *
     * Reference: TS 38.101-1 table 5.2-1
     * Reference: TS 38.101-2 table 5.2-1
     *
     * @return band number or {@link CellInfo@UNAVAILABLE} if not available.
     */
    @NgranBand
    public int getBand() {
        return mBand;
    }

    /**
     * Get the physical cell id.
     * @return Integer value in range [0, 1007] or {@link CellInfo#UNAVAILABLE} if unknown.
@@ -193,6 +214,7 @@ public final class CellIdentityNr extends CellIdentity {
                .append(" mPci = ").append(mPci)
                .append(" mTac = ").append(mTac)
                .append(" mNrArfcn = ").append(mNrArfcn)
                .append(" mBand = ").append(mBand)
                .append(" mMcc = ").append(mMccStr)
                .append(" mMnc = ").append(mMncStr)
                .append(" mNci = ").append(mNci)
@@ -209,6 +231,7 @@ public final class CellIdentityNr extends CellIdentity {
        dest.writeInt(mPci);
        dest.writeInt(mTac);
        dest.writeInt(mNrArfcn);
        dest.writeInt(mBand);
        dest.writeLong(mNci);
        dest.writeList(mAdditionalPlmns);
    }
@@ -219,6 +242,7 @@ public final class CellIdentityNr extends CellIdentity {
        mPci = in.readInt();
        mTac = in.readInt();
        mNrArfcn = in.readInt();
        mBand = in.readInt();
        mNci = in.readLong();
        mAdditionalPlmns = in.readArrayList(null);
    }