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

Commit 815c5f21 authored by Bart Sears's avatar Bart Sears Committed by Android (Google) Code Review
Browse files

Revert "No sensors support in DDC rework"

This reverts commit 7f6c32e5.

Reason for revert: b/287573309 | Google Assistant Crash and rebooting the device with "G" Logo [UQ1A] [VIC] 

Change-Id: I1a2f708ef8a03223fc88470b70f0b20897c26582
parent 7f6c32e5
Loading
Loading
Loading
Loading
+18 −26
Original line number Original line Diff line number Diff line
@@ -515,9 +515,7 @@ public class DisplayDeviceConfig {
    private final SensorData mScreenOffBrightnessSensor = new SensorData();
    private final SensorData mScreenOffBrightnessSensor = new SensorData();


    // The details of the proximity sensor associated with this display.
    // The details of the proximity sensor associated with this display.
    // Is null when no sensor should be used for that display
    private final SensorData mProximitySensor = new SensorData();
    @Nullable
    private SensorData mProximitySensor = new SensorData();


    private final List<RefreshRateLimitation> mRefreshRateLimitations =
    private final List<RefreshRateLimitation> mRefreshRateLimitations =
            new ArrayList<>(2 /*initialCapacity*/);
            new ArrayList<>(2 /*initialCapacity*/);
@@ -1339,7 +1337,6 @@ public class DisplayDeviceConfig {
        return mScreenOffBrightnessSensor;
        return mScreenOffBrightnessSensor;
    }
    }


    @Nullable
    SensorData getProximitySensor() {
    SensorData getProximitySensor() {
        return mProximitySensor;
        return mProximitySensor;
    }
    }
@@ -2566,51 +2563,46 @@ public class DisplayDeviceConfig {
    private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) {
    private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) {
        final SensorDetails sensorDetails = config.getLightSensor();
        final SensorDetails sensorDetails = config.getLightSensor();
        if (sensorDetails != null) {
        if (sensorDetails != null) {
            loadSensorData(sensorDetails, mAmbientLightSensor);
            mAmbientLightSensor.type = sensorDetails.getType();
            mAmbientLightSensor.name = sensorDetails.getName();
            final RefreshRateRange rr = sensorDetails.getRefreshRate();
            if (rr != null) {
                mAmbientLightSensor.minRefreshRate = rr.getMinimum().floatValue();
                mAmbientLightSensor.maxRefreshRate = rr.getMaximum().floatValue();
            }
        } else {
        } else {
            loadAmbientLightSensorFromConfigXml();
            loadAmbientLightSensorFromConfigXml();
        }
        }
    }
    }


    private void setProxSensorUnspecified() {
    private void setProxSensorUnspecified() {
        mProximitySensor = new SensorData();
        mProximitySensor.name = null;
        mProximitySensor.type = null;
    }
    }


    private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) {
    private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) {
        final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor();
        final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor();
        if (sensorDetails != null) {
        if (sensorDetails != null) {
            loadSensorData(sensorDetails, mScreenOffBrightnessSensor);
            mScreenOffBrightnessSensor.type = sensorDetails.getType();
            mScreenOffBrightnessSensor.name = sensorDetails.getName();
        }
        }
    }
    }


    private void loadProxSensorFromDdc(DisplayConfiguration config) {
    private void loadProxSensorFromDdc(DisplayConfiguration config) {
        SensorDetails sensorDetails = config.getProxSensor();
        SensorDetails sensorDetails = config.getProxSensor();
        if (sensorDetails != null) {
        if (sensorDetails != null) {
            String name = sensorDetails.getName();
            mProximitySensor.name = sensorDetails.getName();
            String type = sensorDetails.getType();
            mProximitySensor.type = sensorDetails.getType();
            if ("".equals(name) && "".equals(type)) {
            final RefreshRateRange rr = sensorDetails.getRefreshRate();
                // <proxSensor> with empty values to the config means no sensor should be used
            if (rr != null) {
                mProximitySensor = null;
                mProximitySensor.minRefreshRate = rr.getMinimum().floatValue();
            } else {
                mProximitySensor.maxRefreshRate = rr.getMaximum().floatValue();
                mProximitySensor = new SensorData();
                loadSensorData(sensorDetails, mProximitySensor);
            }
            }
        } else {
        } else {
            setProxSensorUnspecified();
            setProxSensorUnspecified();
        }
        }
    }
    }


    private void loadSensorData(@NonNull SensorDetails sensorDetails,
            @NonNull SensorData sensorData) {
        sensorData.name = sensorDetails.getName();
        sensorData.type = sensorDetails.getType();
        final RefreshRateRange rr = sensorDetails.getRefreshRate();
        if (rr != null) {
            sensorData.minRefreshRate = rr.getMinimum().floatValue();
            sensorData.maxRefreshRate = rr.getMaximum().floatValue();
        }
    }

    private void loadBrightnessChangeThresholdsFromXml() {
    private void loadBrightnessChangeThresholdsFromXml() {
        loadBrightnessChangeThresholds(/* config= */ null);
        loadBrightnessChangeThresholds(/* config= */ null);
    }
    }
+11 −5
Original line number Original line Diff line number Diff line
@@ -2294,23 +2294,29 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    }
    }


    private void loadAmbientLightSensor() {
    private void loadAmbientLightSensor() {
        DisplayDeviceConfig.SensorData lightSensor = mDisplayDeviceConfig.getAmbientLightSensor();
        final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY
        final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY
                ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK;
                ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK;
        mLightSensor = SensorUtils.findSensor(mSensorManager,
        mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name,
                mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType);
                fallbackType);
    }
    }


    private void loadScreenOffBrightnessSensor() {
    private void loadScreenOffBrightnessSensor() {
        DisplayDeviceConfig.SensorData screenOffBrightnessSensor =
                mDisplayDeviceConfig.getScreenOffBrightnessSensor();
        mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager,
        mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager,
                mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK);
                screenOffBrightnessSensor.type, screenOffBrightnessSensor.name,
                SensorUtils.NO_FALLBACK);
    }
    }


    private void loadProximitySensor() {
    private void loadProximitySensor() {
        if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) {
        if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) {
            return;
            return;
        }
        }
        mProximitySensor = SensorUtils.findSensor(mSensorManager,
        final DisplayDeviceConfig.SensorData proxSensor =
                mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY);
                mDisplayDeviceConfig.getProximitySensor();
        mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name,
                Sensor.TYPE_PROXIMITY);
        if (mProximitySensor != null) {
        if (mProximitySensor != null) {
            mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
            mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
                    TYPICAL_PROXIMITY_THRESHOLD);
                    TYPICAL_PROXIMITY_THRESHOLD);
+7 −3
Original line number Original line Diff line number Diff line
@@ -1936,15 +1936,19 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
    }
    }


    private void loadAmbientLightSensor() {
    private void loadAmbientLightSensor() {
        DisplayDeviceConfig.SensorData lightSensor = mDisplayDeviceConfig.getAmbientLightSensor();
        final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY
        final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY
                ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK;
                ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK;
        mLightSensor = SensorUtils.findSensor(mSensorManager,
        mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name,
                mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType);
                fallbackType);
    }
    }


    private void loadScreenOffBrightnessSensor() {
    private void loadScreenOffBrightnessSensor() {
        DisplayDeviceConfig.SensorData screenOffBrightnessSensor =
                mDisplayDeviceConfig.getScreenOffBrightnessSensor();
        mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager,
        mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager,
                mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK);
                screenOffBrightnessSensor.type, screenOffBrightnessSensor.name,
                SensorUtils.NO_FALLBACK);
    }
    }


    private float clampScreenBrightness(float value) {
    private float clampScreenBrightness(float value) {
+4 −2
Original line number Original line Diff line number Diff line
@@ -358,8 +358,10 @@ public final class DisplayPowerProximityStateController {
        if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) {
        if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) {
            return;
            return;
        }
        }
        mProximitySensor = SensorUtils.findSensor(mSensorManager,
        final DisplayDeviceConfig.SensorData proxSensor =
                mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY);
                mDisplayDeviceConfig.getProximitySensor();
        mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name,
                Sensor.TYPE_PROXIMITY);
        if (mProximitySensor != null) {
        if (mProximitySensor != null) {
            mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
            mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
                    TYPICAL_PROXIMITY_THRESHOLD);
                    TYPICAL_PROXIMITY_THRESHOLD);
+6 −18
Original line number Original line Diff line number Diff line
@@ -16,13 +16,10 @@


package com.android.server.display.utils;
package com.android.server.display.utils;


import android.annotation.Nullable;
import android.hardware.Sensor;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.hardware.SensorManager;
import android.text.TextUtils;
import android.text.TextUtils;


import com.android.server.display.DisplayDeviceConfig;

import java.util.List;
import java.util.List;


/**
/**
@@ -31,27 +28,18 @@ import java.util.List;
public class SensorUtils {
public class SensorUtils {
    public static final int NO_FALLBACK = 0;
    public static final int NO_FALLBACK = 0;


    /**
     * Finds the specified sensor for SensorData from DisplayDeviceConfig.
     */
    @Nullable
    public static Sensor findSensor(@Nullable SensorManager sensorManager,
            @Nullable DisplayDeviceConfig.SensorData sensorData, int fallbackType) {
        if (sensorData == null) {
            return null;
        } else {
            return findSensor(sensorManager, sensorData.type, sensorData.name, fallbackType);
        }
    }
    /**
    /**
     * Finds the specified sensor by type and name using SensorManager.
     * Finds the specified sensor by type and name using SensorManager.
     */
     */
    @Nullable
    public static Sensor findSensor(SensorManager sensorManager, String sensorType,
    public static Sensor findSensor(@Nullable SensorManager sensorManager,
            String sensorName, int fallbackType) {
            @Nullable String sensorType, @Nullable String sensorName, int fallbackType) {
        if (sensorManager == null) {
        if (sensorManager == null) {
            return null;
            return null;
        }
        }

        if ("".equals(sensorName) && "".equals(sensorType)) {
            return null;
        }
        final boolean isNameSpecified = !TextUtils.isEmpty(sensorName);
        final boolean isNameSpecified = !TextUtils.isEmpty(sensorName);
        final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType);
        final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType);
        if (isNameSpecified || isTypeSpecified) {
        if (isNameSpecified || isTypeSpecified) {
Loading