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

Commit 0411ba61 authored by Amit Mahajan's avatar Amit Mahajan Committed by Rambo Wang
Browse files

Add configurable RSRP boost for 5G NR SA.

Test: atest CellSignalStrengthNrTest
Bug: 187679048
Merged-In: Ic6becca786e5f039194ffb48ca572ff1ab7ce305
Change-Id: Ic6becca786e5f039194ffb48ca572ff1ab7ce305
(cherry picked from commit ae5f04d4)
parent 8bae06f6
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -2604,14 +2604,32 @@ public class CarrierConfigManager {

    /**
     * List of EARFCN (E-UTRA Absolute Radio Frequency Channel Number,
     * Reference: 3GPP TS 36.104 5.4.3) inclusive ranges on which lte_rsrp_boost_int
     * will be applied. Format of the String array is expected to be {"erafcn1_start-earfcn1_end",
     * Reference: 3GPP TS 36.104 5.4.3) inclusive ranges on which lte_earfcns_rsrp_boost_int
     * will be applied. Format of the String array is expected to be {"earfcn1_start-earfcn1_end",
     * "earfcn2_start-earfcn2_end" ... }
     * @hide
     */
    public static final String KEY_BOOSTED_LTE_EARFCNS_STRING_ARRAY =
            "boosted_lte_earfcns_string_array";

    /**
     * Offset to be reduced from rsrp threshold while calculating signal strength level.
     * @hide
     */
    public static final String KEY_NRARFCNS_RSRP_BOOST_INT_ARRAY = "nrarfcns_rsrp_boost_int_array";

    /**
     * List of NR ARFCN (5G Absolute Radio Frequency Channel Number,
     * Reference: 3GPP TS 36.108) inclusive ranges on which corresponding
     * nrarfcns_rsrp_boost_int_array will be applied. The size of this array and
     * nrarfcns_rsrp_boost_int_array must be the same.
     * Format of the String array is expected to be {"nrarfcn1_start-nrarfcn1_end",
     * "nrarfcn2_start-nrarfcn2_end" ... }
     * @hide
     */
    public static final String KEY_BOOSTED_NRARFCNS_STRING_ARRAY =
            "boosted_nrarfcns_string_array";

    /**
     * Determine whether to use only RSRP for the number of LTE signal bars.
     * @hide
@@ -4780,6 +4798,8 @@ public class CarrierConfigManager {
        sDefaults.putBoolean(KEY_SUPPORT_IMS_CALL_FORWARDING_WHILE_ROAMING_BOOL, true);
        sDefaults.putInt(KEY_LTE_EARFCNS_RSRP_BOOST_INT, 0);
        sDefaults.putStringArray(KEY_BOOSTED_LTE_EARFCNS_STRING_ARRAY, null);
        sDefaults.putIntArray(KEY_NRARFCNS_RSRP_BOOST_INT_ARRAY, null);
        sDefaults.putStringArray(KEY_BOOSTED_NRARFCNS_STRING_ARRAY, null);
        sDefaults.putBoolean(KEY_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL, false);
        sDefaults.putBoolean(KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL, false);
        sDefaults.putInt(IMSI_KEY_AVAILABILITY_INT, 0);
+1 −1
Original line number Diff line number Diff line
@@ -314,7 +314,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P

        int rsrpBoost = 0;
        if (ss != null) {
            rsrpBoost = ss.getLteEarfcnRsrpBoost();
            rsrpBoost = ss.getArfcnRsrpBoost();
        }

        int rsrp = inRangeOrUnavailable(mRsrp + rsrpBoost, MIN_LTE_RSRP, MAX_LTE_RSRP);
+5 −1
Original line number Diff line number Diff line
@@ -419,7 +419,11 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
        int ssRsrqLevel = SignalStrength.INVALID;
        int ssSinrLevel = SignalStrength.INVALID;
        if (isLevelForParameter(USE_SSRSRP)) {
            ssRsrpLevel = updateLevelWithMeasure(mSsRsrp, mSsRsrpThresholds);
            int rsrpBoost = 0;
            if (ss != null) {
                rsrpBoost = ss.getArfcnRsrpBoost();
            }
            ssRsrpLevel = updateLevelWithMeasure(mSsRsrp + rsrpBoost, mSsRsrpThresholds);
            if (VDBG) {
                Rlog.i(TAG, "Updated 5G NR SSRSRP Level: " + ssRsrpLevel);
            }
+16 −14
Original line number Diff line number Diff line
@@ -353,9 +353,11 @@ public class ServiceState implements Parcelable {
    private int mChannelNumber;
    private int[] mCellBandwidths = new int[0];

    /* EARFCN stands for E-UTRA Absolute Radio Frequency Channel Number,
     * Reference: 3GPP TS 36.104 5.4.3 */
    private int mLteEarfcnRsrpBoost = 0;
    /**
     *  ARFCN stands for Absolute Radio Frequency Channel Number. This field is current used for
     *  LTE where it represents the boost for EARFCN (Reference: 3GPP TS 36.104 5.4.3) and for NR
     *  where it's for NR ARFCN (Reference: 3GPP TS 36.108) */
    private int mArfcnRsrpBoost = 0;

    private final List<NetworkRegistrationInfo> mNetworkRegistrationInfos = new ArrayList<>();

@@ -439,7 +441,7 @@ public class ServiceState implements Parcelable {
        mChannelNumber = s.mChannelNumber;
        mCellBandwidths = s.mCellBandwidths == null ? null :
                Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length);
        mLteEarfcnRsrpBoost = s.mLteEarfcnRsrpBoost;
        mArfcnRsrpBoost = s.mArfcnRsrpBoost;
        synchronized (mNetworkRegistrationInfos) {
            mNetworkRegistrationInfos.clear();
            mNetworkRegistrationInfos.addAll(s.getNetworkRegistrationInfoList());
@@ -473,7 +475,7 @@ public class ServiceState implements Parcelable {
        mCdmaEriIconIndex = in.readInt();
        mCdmaEriIconMode = in.readInt();
        mIsEmergencyOnly = in.readInt() != 0;
        mLteEarfcnRsrpBoost = in.readInt();
        mArfcnRsrpBoost = in.readInt();
        synchronized (mNetworkRegistrationInfos) {
            in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader());
        }
@@ -501,7 +503,7 @@ public class ServiceState implements Parcelable {
        out.writeInt(mCdmaEriIconIndex);
        out.writeInt(mCdmaEriIconMode);
        out.writeInt(mIsEmergencyOnly ? 1 : 0);
        out.writeInt(mLteEarfcnRsrpBoost);
        out.writeInt(mArfcnRsrpBoost);
        synchronized (mNetworkRegistrationInfos) {
            out.writeList(mNetworkRegistrationInfos);
        }
@@ -890,7 +892,7 @@ public class ServiceState implements Parcelable {
                    mCdmaEriIconIndex,
                    mCdmaEriIconMode,
                    mIsEmergencyOnly,
                    mLteEarfcnRsrpBoost,
                    mArfcnRsrpBoost,
                    mNetworkRegistrationInfos,
                    mNrFrequencyRange,
                    mOperatorAlphaLongRaw,
@@ -1101,7 +1103,7 @@ public class ServiceState implements Parcelable {
                    .append(", mCdmaDefaultRoamingIndicator=").append(mCdmaDefaultRoamingIndicator)
                    .append(", mIsEmergencyOnly=").append(mIsEmergencyOnly)
                    .append(", isUsingCarrierAggregation=").append(isUsingCarrierAggregation())
                    .append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost)
                    .append(", mArfcnRsrpBoost=").append(mArfcnRsrpBoost)
                    .append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
                    .append(", mNrFrequencyRange=").append(Build.IS_DEBUGGABLE
                            ? mNrFrequencyRange : FREQUENCY_RANGE_UNKNOWN)
@@ -1132,7 +1134,7 @@ public class ServiceState implements Parcelable {
        mCdmaEriIconIndex = -1;
        mCdmaEriIconMode = -1;
        mIsEmergencyOnly = false;
        mLteEarfcnRsrpBoost = 0;
        mArfcnRsrpBoost = 0;
        mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN;
        synchronized (mNetworkRegistrationInfos) {
            mNetworkRegistrationInfos.clear();
@@ -1364,7 +1366,7 @@ public class ServiceState implements Parcelable {
        m.putBoolean("emergencyOnly", mIsEmergencyOnly);
        m.putBoolean("isDataRoamingFromRegistration", getDataRoamingFromRegistration());
        m.putBoolean("isUsingCarrierAggregation", isUsingCarrierAggregation());
        m.putInt("LteEarfcnRsrpBoost", mLteEarfcnRsrpBoost);
        m.putInt("ArfcnRsrpBoost", mArfcnRsrpBoost);
        m.putInt("ChannelNumber", mChannelNumber);
        m.putIntArray("CellBandwidths", mCellBandwidths);
        m.putInt("mNrFrequencyRange", mNrFrequencyRange);
@@ -1455,13 +1457,13 @@ public class ServiceState implements Parcelable {
    }

    /** @hide */
    public int getLteEarfcnRsrpBoost() {
        return mLteEarfcnRsrpBoost;
    public int getArfcnRsrpBoost() {
        return mArfcnRsrpBoost;
    }

    /** @hide */
    public void setLteEarfcnRsrpBoost(int LteEarfcnRsrpBoost) {
        mLteEarfcnRsrpBoost = LteEarfcnRsrpBoost;
    public void setArfcnRsrpBoost(int arfcnRsrpBoost) {
        mArfcnRsrpBoost = arfcnRsrpBoost;
    }

    /** @hide */