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

Commit 174ac5dc authored by Manish Dungriyal's avatar Manish Dungriyal Committed by Android (Google) Code Review
Browse files

Merge "Support Hysteresis Db settings"

parents 384234e2 8f62aa3c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -43827,6 +43827,7 @@ package android.telephony {
  public final class SignalThresholdInfo implements android.os.Parcelable {
    method public int describeContents();
    method public int getHysteresisDb();
    method public static int getMaximumNumberOfThresholdsAllowed();
    method public static int getMinimumNumberOfThresholdsAllowed();
    method public int getRadioAccessNetworkType();
@@ -43849,6 +43850,7 @@ package android.telephony {
  public static final class SignalThresholdInfo.Builder {
    ctor public SignalThresholdInfo.Builder();
    method @NonNull public android.telephony.SignalThresholdInfo build();
    method @NonNull public android.telephony.SignalThresholdInfo.Builder setHysteresisDb(@IntRange(from=0) int);
    method @NonNull public android.telephony.SignalThresholdInfo.Builder setRadioAccessNetworkType(int);
    method @NonNull public android.telephony.SignalThresholdInfo.Builder setSignalMeasurementType(int);
    method @NonNull public android.telephony.SignalThresholdInfo.Builder setThresholds(@NonNull int[]);
+104 −0
Original line number Diff line number Diff line
@@ -2989,6 +2989,39 @@ public class CarrierConfigManager {
    public static final String KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY =
            "5g_nr_sssinr_thresholds_int_array";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_SSRSRP} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     * @hide
     */
    public static final String
            KEY_NGRAN_SSRSRP_HYSTERESIS_DB_INT = "ngran_ssrsrp_hysteresis_db_int";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_SSRSRQ} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     *@hide
     */
    public static final String
            KEY_NGRAN_SSRSRQ_HYSTERESIS_DB_INT = "ngran_ssrsrq_hysteresis_db_int";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_SSSINR} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     * @hide
     */
    public static final String
            KEY_NGRAN_SSSINR_HYSTERESIS_DB_INT = "ngran_sssinr_hysteresis_db_int";

    /**
     * Bit-field integer to determine whether to use SS reference signal received power (SSRSRP),
     * SS reference signal received quality (SSRSRQ), or/and SS signal-to-noise and interference
@@ -3325,6 +3358,38 @@ public class CarrierConfigManager {
    public static final String KEY_LTE_RSSNR_THRESHOLDS_INT_ARRAY =
            "lte_rssnr_thresholds_int_array";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_RSRP} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     * @hide
     */
    public static final String
            KEY_EUTRAN_RSRP_HYSTERESIS_DB_INT = "eutran_rsrp_hysteresis_db_int";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_RSRQ} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     * @hide
     */
    public static final String KEY_EUTRAN_RSRQ_HYSTERESIS_DB_INT = "eutran_rsrq_hysteresis_db_int";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_RSSNR} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     * @hide
     */
    public static final String
            KEY_EUTRAN_RSSNR_HYSTERESIS_DB_INT = "eutran_rssnr_hysteresis_db_int";

    /**
     * Decides when clients try to bind to iwlan network service, which package name will
     * the binding intent go to.
@@ -3401,6 +3466,26 @@ public class CarrierConfigManager {
    public static final String KEY_WCDMA_ECNO_THRESHOLDS_INT_ARRAY =
            "wcdma_ecno_thresholds_int_array";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_RSCP} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     * @hide
     */
    public static final String KEY_UTRAN_RSCP_HYSTERESIS_DB_INT = "utran_rscp_hysteresis_db_int";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_ECNO} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     * @hide
     */
    public static final String KEY_UTRAN_ECNO_HYSTERESIS_DB_INT = "utran_ecno_hysteresis_db_int";

    /**
     * The default measurement to use for signal strength reporting. If this is not specified, the
     * RSSI is used.
@@ -8685,6 +8770,16 @@ public class CarrierConfigManager {
    public static final String KEY_GSM_RSSI_THRESHOLDS_INT_ARRAY =
            "gsm_rssi_thresholds_int_array";

    /**
     * An interval in dB for {@link SignalThresholdInfo#SIGNAL_MEASUREMENT_TYPE_RSSI} measurement
     * type defining the required magnitude change between reports.
     *
     * <p>The default value is 2 and the minimum allowed value is 0. If no value or negative value
     * is set, the default value 2 is used.
     * @hide
     */
    public static final String KEY_GERAN_RSSI_HYSTERESIS_DB_INT = "geran_rssi_hysteresis_db_int";

    /**
     * Determines whether Wireless Priority Service call is supported over IMS.
     *
@@ -9666,6 +9761,15 @@ public class CarrierConfigManager {
                    15, /* SIGNAL_STRENGTH_GOOD */
                    30  /* SIGNAL_STRENGTH_GREAT */
                });
        sDefaults.putInt(KEY_GERAN_RSSI_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_UTRAN_RSCP_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_EUTRAN_RSRP_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_EUTRAN_RSRQ_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_EUTRAN_RSSNR_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_NGRAN_SSRSRP_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_NGRAN_SSRSRQ_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_NGRAN_SSSINR_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_UTRAN_ECNO_HYSTERESIS_DB_INT, 2);
        sDefaults.putInt(KEY_PARAMETERS_USE_FOR_5G_NR_SIGNAL_BAR_INT,
                CellSignalStrengthNr.USE_SSRSRP);
        sDefaults.putBoolean(KEY_SIGNAL_STRENGTH_NR_NSA_USE_LTE_AS_PRIMARY_BOOL, true);
+49 −20
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.telephony;

import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.os.Parcel;
import android.os.Parcelable;
@@ -169,11 +170,18 @@ public final class SignalThresholdInfo implements Parcelable {
    public static final int HYSTERESIS_MS_DISABLED = 0;

    /**
     * Indicates the hysteresisDb is disabled.
     * Indicates the default hysteresis value in dB.
     *
     * @hide
     */
    public static final int HYSTERESIS_DB_DISABLED = 0;
    private static final int HYSTERESIS_DB_DEFAULT = 2;

    /**
     * Indicates the hysteresisDb value is not set and to be initialised to default value.
     *
     * @hide
     */
    public static final int HYSTERESIS_DB_MINIMUM = 0;

    /**
     * Minimum valid value for {@link #SIGNAL_MEASUREMENT_TYPE_RSSI}.
@@ -339,7 +347,7 @@ public final class SignalThresholdInfo implements Parcelable {
        mRan = ran;
        mSignalMeasurementType = signalMeasurementType;
        mHysteresisMs = hysteresisMs < 0 ? HYSTERESIS_MS_DISABLED : hysteresisMs;
        mHysteresisDb = hysteresisDb < 0 ? HYSTERESIS_DB_DISABLED : hysteresisDb;
        mHysteresisDb = hysteresisDb;
        mThresholds = thresholds;
        mIsEnabled = isEnabled;
    }
@@ -351,7 +359,7 @@ public final class SignalThresholdInfo implements Parcelable {
        private int mRan = AccessNetworkConstants.AccessNetworkType.UNKNOWN;
        private int mSignalMeasurementType = SIGNAL_MEASUREMENT_TYPE_UNKNOWN;
        private int mHysteresisMs = HYSTERESIS_MS_DISABLED;
        private int mHysteresisDb = HYSTERESIS_DB_DISABLED;
        private int mHysteresisDb = HYSTERESIS_DB_DEFAULT;
        private int[] mThresholds = null;
        private boolean mIsEnabled = false;

@@ -361,7 +369,8 @@ public final class SignalThresholdInfo implements Parcelable {
         * @param ran The radio access network type
         * @return the builder to facilitate the chaining
         */
        public @NonNull Builder setRadioAccessNetworkType(
        @NonNull
        public Builder setRadioAccessNetworkType(
                @AccessNetworkConstants.RadioAccessNetworkType int ran) {
            mRan = ran;
            return this;
@@ -373,7 +382,8 @@ public final class SignalThresholdInfo implements Parcelable {
         * @param signalMeasurementType The signal measurement type
         * @return the builder to facilitate the chaining
         */
        public @NonNull Builder setSignalMeasurementType(
        @NonNull
        public Builder setSignalMeasurementType(
                @SignalMeasurementType int signalMeasurementType) {
            mSignalMeasurementType = signalMeasurementType;
            return this;
@@ -387,20 +397,27 @@ public final class SignalThresholdInfo implements Parcelable {
         * @return the builder to facilitate the chaining
         * @hide
         */
        public @NonNull Builder setHysteresisMs(int hysteresisMs) {
        @NonNull
        public Builder setHysteresisMs(int hysteresisMs) {
            mHysteresisMs = hysteresisMs;
            return this;
        }

        /**
         * Set the interval in dB defining the required magnitude change between reports. A value of
         * zero disabled dB-based hysteresis restrictions.
         * Set the interval in dB defining the required minimum magnitude change to report a
         * signal strength change. A value of zero disables dB-based hysteresis restrictions.
         * Note:
         * <p>Default hysteresis db value is 2. Minimum hysteresis db value allowed to set is 0.
         * If hysteresis db value is not set, default hysteresis db value of 2 will be used.
         *
         * @param hysteresisDb the interval in dB
         * @return the builder to facilitate the chaining
         * @hide
         */
        public @NonNull Builder setHysteresisDb(int hysteresisDb) {
        @NonNull
        public Builder setHysteresisDb(@IntRange(from = 0) int hysteresisDb) {
            if (hysteresisDb < 0) {
                throw new IllegalArgumentException("hysteresis db value should not be less than 0");
            }
            mHysteresisDb = hysteresisDb;
            return this;
        }
@@ -428,7 +445,8 @@ public final class SignalThresholdInfo implements Parcelable {
         * @see #SIGNAL_MEASUREMENT_TYPE_ECNO
         * @see #getThresholds() for more details on signal strength thresholds
         */
        public @NonNull Builder setThresholds(@NonNull int[] thresholds) {
        @NonNull
        public Builder setThresholds(@NonNull int[] thresholds) {
            return setThresholds(thresholds, false /*isSystem*/);
        }

@@ -442,7 +460,8 @@ public final class SignalThresholdInfo implements Parcelable {
         *
         * @hide
         */
        public @NonNull Builder setThresholds(@NonNull int[] thresholds, boolean isSystem) {
        @NonNull
        public Builder setThresholds(@NonNull int[] thresholds, boolean isSystem) {
            Objects.requireNonNull(thresholds, "thresholds must not be null");
            if (!isSystem
                    && (thresholds.length < MINIMUM_NUMBER_OF_THRESHOLDS_ALLOWED
@@ -465,7 +484,8 @@ public final class SignalThresholdInfo implements Parcelable {
         * @return the builder to facilitate the chaining
         * @hide
         */
        public @NonNull Builder setIsEnabled(boolean isEnabled) {
        @NonNull
        public Builder setIsEnabled(boolean isEnabled) {
            mIsEnabled = isEnabled;
            return this;
        }
@@ -479,7 +499,8 @@ public final class SignalThresholdInfo implements Parcelable {
         * the thresholds is out of range, or the RAN is not allowed to set with the signal
         * measurement type
         */
        public @NonNull SignalThresholdInfo build() {
        @NonNull
        public SignalThresholdInfo build() {
            return new SignalThresholdInfo(
                    mRan,
                    mSignalMeasurementType,
@@ -495,7 +516,8 @@ public final class SignalThresholdInfo implements Parcelable {
     *
     * @return radio access network type
     */
    public @AccessNetworkConstants.RadioAccessNetworkType int getRadioAccessNetworkType() {
    @AccessNetworkConstants.RadioAccessNetworkType
    public int getRadioAccessNetworkType() {
        return mRan;
    }

@@ -504,7 +526,8 @@ public final class SignalThresholdInfo implements Parcelable {
     *
     * @return the SignalMeasurementType value
     */
    public @SignalMeasurementType int getSignalMeasurementType() {
    @SignalMeasurementType
    public int getSignalMeasurementType() {
        return mSignalMeasurementType;
    }

@@ -513,7 +536,11 @@ public final class SignalThresholdInfo implements Parcelable {
        return mHysteresisMs;
    }

    /** @hide */
    /**
     * Get measurement hysteresis db.
     *
     * @return hysteresis db value
     */
    public int getHysteresisDb() {
        return mHysteresisDb;
    }
@@ -544,7 +571,8 @@ public final class SignalThresholdInfo implements Parcelable {
     * @see #SIGNAL_MEASUREMENT_TYPE_SSSINR
     * @see #SIGNAL_MEASUREMENT_TYPE_ECNO
     */
    public @NonNull int[] getThresholds() {
    @NonNull
    public int[] getThresholds() {
        return mThresholds.clone();
    }

@@ -618,7 +646,8 @@ public final class SignalThresholdInfo implements Parcelable {
                mIsEnabled);
    }

    public static final @NonNull Parcelable.Creator<SignalThresholdInfo> CREATOR =
    @NonNull
    public static final Parcelable.Creator<SignalThresholdInfo> CREATOR =
            new Parcelable.Creator<SignalThresholdInfo>() {
                @Override
                public SignalThresholdInfo createFromParcel(Parcel in) {