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

Commit 0a2cf1d7 authored by Sarah Chin's avatar Sarah Chin
Browse files

Update 5G DeviceStateMonitor indications based on settings

Test: atest DeviceStateMonitorTest
Bug: 15421884
Change-Id: I91cfea4cfe2afd0d92ab55e607b69e99447778c9
parent 2705ce38
Loading
Loading
Loading
Loading
+33 −3
Original line number Diff line number Diff line
@@ -37,8 +37,10 @@ import android.os.Message;
import android.os.PowerManager;
import android.os.Registrant;
import android.os.RegistrantList;
import android.provider.Settings;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.CarrierConfigManager;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.SignalThresholdInfo;
import android.util.LocalLog;
import android.view.Display;
@@ -81,6 +83,10 @@ public class DeviceStateMonitor extends Handler {
    private static final int WIFI_UNAVAILABLE = 0;
    private static final int WIFI_AVAILABLE = 1;

    private static final int NR_NSA_TRACKING_INDICATIONS_OFF = 0;
    private static final int NR_NSA_TRACKING_INDICATIONS_EXTENDED = 1;
    private static final int NR_NSA_TRACKING_INDICATIONS_ALWAYS_ON = 2;

    private final Phone mPhone;

    private final LocalLog mLocalLog = new LocalLog(100);
@@ -329,7 +335,7 @@ public class DeviceStateMonitor extends Handler {
     *         android.hardware.radio@1.2::IndicationFilter::FULL_NETWORK_STATE.
     */
    private boolean shouldEnableFullNetworkStateReports() {
        return shouldEnableHighPowerConsumptionIndications();
        return shouldEnableNrTrackingIndications();
    }

    /**
@@ -337,7 +343,7 @@ public class DeviceStateMonitor extends Handler {
     *         android.hardware.radio@1.2::IndicationFilter::DATA_CALL_DORMANCY_CHANGED.
     */
    private boolean shouldEnableDataCallDormancyChangedReports() {
        return shouldEnableHighPowerConsumptionIndications();
        return shouldEnableNrTrackingIndications();
    }

    /**
@@ -353,7 +359,7 @@ public class DeviceStateMonitor extends Handler {
     *         android.hardware.radio@1.2::IndicationFilter::PHYSICAL_CHANNEL_CONFIG.
     */
    private boolean shouldEnablePhysicalChannelConfigReports() {
        return shouldEnableHighPowerConsumptionIndications();
        return shouldEnableNrTrackingIndications();
    }

    /**
@@ -378,6 +384,30 @@ public class DeviceStateMonitor extends Handler {
        return mIsCharging || mIsScreenOn || mIsTetheringOn;
    }

    /**
     * For 5G NSA devices, a policy to determine if we should enable NR tracking indications.
     *
     * @return True if the response update should be enabled.
     */
    private boolean shouldEnableNrTrackingIndications() {
        int trackingMode = Settings.Global.getInt(mPhone.getContext().getContentResolver(),
                Settings.Global.NR_NSA_TRACKING_SCREEN_OFF_MODE, NR_NSA_TRACKING_INDICATIONS_OFF);
        switch (trackingMode) {
            case NR_NSA_TRACKING_INDICATIONS_ALWAYS_ON:
                return true;
            case NR_NSA_TRACKING_INDICATIONS_EXTENDED:
                if (mPhone.getServiceState().getNrState()
                        == NetworkRegistrationInfo.NR_STATE_CONNECTED) {
                    return true;
                }
                // fallthrough
            case NR_NSA_TRACKING_INDICATIONS_OFF:
                return shouldEnableHighPowerConsumptionIndications();
            default:
                return shouldEnableHighPowerConsumptionIndications();
        }
    }

    /**
     * Set if Telephony need always report signal strength.
     *