Merge "Add configurable RSRP boost for 5G NR SA."

This commit is contained in:
Rambo Wang
2021-06-30 21:58:30 +00:00
committed by Gerrit Code Review
4 changed files with 44 additions and 18 deletions

View File

@@ -2604,14 +2604,32 @@ public class CarrierConfigManager {
/** /**
* List of EARFCN (E-UTRA Absolute Radio Frequency Channel Number, * 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 * 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 {"erafcn1_start-earfcn1_end", * will be applied. Format of the String array is expected to be {"earfcn1_start-earfcn1_end",
* "earfcn2_start-earfcn2_end" ... } * "earfcn2_start-earfcn2_end" ... }
* @hide * @hide
*/ */
public static final String KEY_BOOSTED_LTE_EARFCNS_STRING_ARRAY = public static final String KEY_BOOSTED_LTE_EARFCNS_STRING_ARRAY =
"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. * Determine whether to use only RSRP for the number of LTE signal bars.
* @hide * @hide
@@ -4780,6 +4798,8 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_SUPPORT_IMS_CALL_FORWARDING_WHILE_ROAMING_BOOL, true); sDefaults.putBoolean(KEY_SUPPORT_IMS_CALL_FORWARDING_WHILE_ROAMING_BOOL, true);
sDefaults.putInt(KEY_LTE_EARFCNS_RSRP_BOOST_INT, 0); sDefaults.putInt(KEY_LTE_EARFCNS_RSRP_BOOST_INT, 0);
sDefaults.putStringArray(KEY_BOOSTED_LTE_EARFCNS_STRING_ARRAY, null); 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_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL, false);
sDefaults.putBoolean(KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL, false); sDefaults.putBoolean(KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL, false);
sDefaults.putInt(IMSI_KEY_AVAILABILITY_INT, 0); sDefaults.putInt(IMSI_KEY_AVAILABILITY_INT, 0);

View File

@@ -314,7 +314,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
int rsrpBoost = 0; int rsrpBoost = 0;
if (ss != null) { if (ss != null) {
rsrpBoost = ss.getLteEarfcnRsrpBoost(); rsrpBoost = ss.getArfcnRsrpBoost();
} }
int rsrp = inRangeOrUnavailable(mRsrp + rsrpBoost, MIN_LTE_RSRP, MAX_LTE_RSRP); int rsrp = inRangeOrUnavailable(mRsrp + rsrpBoost, MIN_LTE_RSRP, MAX_LTE_RSRP);

View File

@@ -419,7 +419,11 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
int ssRsrqLevel = SignalStrength.INVALID; int ssRsrqLevel = SignalStrength.INVALID;
int ssSinrLevel = SignalStrength.INVALID; int ssSinrLevel = SignalStrength.INVALID;
if (isLevelForParameter(USE_SSRSRP)) { if (isLevelForParameter(USE_SSRSRP)) {
ssRsrpLevel = updateLevelWithMeasure(mSsRsrp, mSsRsrpThresholds); int rsrpBoost = 0;
if (ss != null) {
rsrpBoost = ss.getArfcnRsrpBoost();
}
ssRsrpLevel = updateLevelWithMeasure(mSsRsrp + rsrpBoost, mSsRsrpThresholds);
if (VDBG) { if (VDBG) {
Rlog.i(TAG, "Updated 5G NR SSRSRP Level: " + ssRsrpLevel); Rlog.i(TAG, "Updated 5G NR SSRSRP Level: " + ssRsrpLevel);
} }

View File

@@ -353,9 +353,11 @@ public class ServiceState implements Parcelable {
private int mChannelNumber; private int mChannelNumber;
private int[] mCellBandwidths = new int[0]; private int[] mCellBandwidths = new int[0];
/* EARFCN stands for E-UTRA Absolute Radio Frequency Channel Number, /**
* Reference: 3GPP TS 36.104 5.4.3 */ * ARFCN stands for Absolute Radio Frequency Channel Number. This field is current used for
private int mLteEarfcnRsrpBoost = 0; * 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<>(); private final List<NetworkRegistrationInfo> mNetworkRegistrationInfos = new ArrayList<>();
@@ -439,7 +441,7 @@ public class ServiceState implements Parcelable {
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);
mLteEarfcnRsrpBoost = s.mLteEarfcnRsrpBoost; mArfcnRsrpBoost = s.mArfcnRsrpBoost;
synchronized (mNetworkRegistrationInfos) { synchronized (mNetworkRegistrationInfos) {
mNetworkRegistrationInfos.clear(); mNetworkRegistrationInfos.clear();
mNetworkRegistrationInfos.addAll(s.getNetworkRegistrationInfoList()); mNetworkRegistrationInfos.addAll(s.getNetworkRegistrationInfoList());
@@ -473,7 +475,7 @@ 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;
mLteEarfcnRsrpBoost = in.readInt(); mArfcnRsrpBoost = in.readInt();
synchronized (mNetworkRegistrationInfos) { synchronized (mNetworkRegistrationInfos) {
in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader()); in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader());
} }
@@ -501,7 +503,7 @@ 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(mLteEarfcnRsrpBoost); out.writeInt(mArfcnRsrpBoost);
synchronized (mNetworkRegistrationInfos) { synchronized (mNetworkRegistrationInfos) {
out.writeList(mNetworkRegistrationInfos); out.writeList(mNetworkRegistrationInfos);
} }
@@ -890,7 +892,7 @@ public class ServiceState implements Parcelable {
mCdmaEriIconIndex, mCdmaEriIconIndex,
mCdmaEriIconMode, mCdmaEriIconMode,
mIsEmergencyOnly, mIsEmergencyOnly,
mLteEarfcnRsrpBoost, mArfcnRsrpBoost,
mNetworkRegistrationInfos, mNetworkRegistrationInfos,
mNrFrequencyRange, mNrFrequencyRange,
mOperatorAlphaLongRaw, mOperatorAlphaLongRaw,
@@ -1101,7 +1103,7 @@ public class ServiceState implements Parcelable {
.append(", mCdmaDefaultRoamingIndicator=").append(mCdmaDefaultRoamingIndicator) .append(", mCdmaDefaultRoamingIndicator=").append(mCdmaDefaultRoamingIndicator)
.append(", mIsEmergencyOnly=").append(mIsEmergencyOnly) .append(", mIsEmergencyOnly=").append(mIsEmergencyOnly)
.append(", isUsingCarrierAggregation=").append(isUsingCarrierAggregation()) .append(", isUsingCarrierAggregation=").append(isUsingCarrierAggregation())
.append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost) .append(", mArfcnRsrpBoost=").append(mArfcnRsrpBoost)
.append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos) .append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
.append(", mNrFrequencyRange=").append(Build.IS_DEBUGGABLE .append(", mNrFrequencyRange=").append(Build.IS_DEBUGGABLE
? mNrFrequencyRange : FREQUENCY_RANGE_UNKNOWN) ? mNrFrequencyRange : FREQUENCY_RANGE_UNKNOWN)
@@ -1132,7 +1134,7 @@ public class ServiceState implements Parcelable {
mCdmaEriIconIndex = -1; mCdmaEriIconIndex = -1;
mCdmaEriIconMode = -1; mCdmaEriIconMode = -1;
mIsEmergencyOnly = false; mIsEmergencyOnly = false;
mLteEarfcnRsrpBoost = 0; mArfcnRsrpBoost = 0;
mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN; mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN;
synchronized (mNetworkRegistrationInfos) { synchronized (mNetworkRegistrationInfos) {
mNetworkRegistrationInfos.clear(); mNetworkRegistrationInfos.clear();
@@ -1364,7 +1366,7 @@ public class ServiceState implements Parcelable {
m.putBoolean("emergencyOnly", mIsEmergencyOnly); m.putBoolean("emergencyOnly", mIsEmergencyOnly);
m.putBoolean("isDataRoamingFromRegistration", getDataRoamingFromRegistration()); m.putBoolean("isDataRoamingFromRegistration", getDataRoamingFromRegistration());
m.putBoolean("isUsingCarrierAggregation", isUsingCarrierAggregation()); m.putBoolean("isUsingCarrierAggregation", isUsingCarrierAggregation());
m.putInt("LteEarfcnRsrpBoost", mLteEarfcnRsrpBoost); m.putInt("ArfcnRsrpBoost", mArfcnRsrpBoost);
m.putInt("ChannelNumber", mChannelNumber); m.putInt("ChannelNumber", mChannelNumber);
m.putIntArray("CellBandwidths", mCellBandwidths); m.putIntArray("CellBandwidths", mCellBandwidths);
m.putInt("mNrFrequencyRange", mNrFrequencyRange); m.putInt("mNrFrequencyRange", mNrFrequencyRange);
@@ -1455,13 +1457,13 @@ public class ServiceState implements Parcelable {
} }
/** @hide */ /** @hide */
public int getLteEarfcnRsrpBoost() { public int getArfcnRsrpBoost() {
return mLteEarfcnRsrpBoost; return mArfcnRsrpBoost;
} }
/** @hide */ /** @hide */
public void setLteEarfcnRsrpBoost(int LteEarfcnRsrpBoost) { public void setArfcnRsrpBoost(int arfcnRsrpBoost) {
mLteEarfcnRsrpBoost = LteEarfcnRsrpBoost; mArfcnRsrpBoost = arfcnRsrpBoost;
} }
/** @hide */ /** @hide */