From 8c701ad1255a607e575f0d19ff76a8548626d61e Mon Sep 17 00:00:00 2001 From: Simon Shields Date: Tue, 9 Feb 2016 18:18:07 +1100 Subject: [PATCH] cmhw: add SunlightEnhancement/MDNIE Outdoor mode support Change-Id: I86ea442992a945cf6dcad939aa95f04caa72834c --- .../hardware/SunlightEnhancement.java | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 cmhw/org/cyanogenmod/hardware/SunlightEnhancement.java diff --git a/cmhw/org/cyanogenmod/hardware/SunlightEnhancement.java b/cmhw/org/cyanogenmod/hardware/SunlightEnhancement.java new file mode 100644 index 00000000..afcf33c0 --- /dev/null +++ b/cmhw/org/cyanogenmod/hardware/SunlightEnhancement.java @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2016 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.cyanogenmod.hardware; + +import org.cyanogenmod.hardware.util.FileUtils; + +import android.os.SystemProperties; + +import java.io.File; + +/** + * Sunlight Readability Enhancement support, aka Facemelt Mode. + * + * Brightens up the screen via image processing or other tricks when + * under aggressive lighting conditions. Usually depends on CABC + * support. + */ +public class SunlightEnhancement { + private static final String sOutdoorModePath = "/sys/class/mdnie/mdnie/outdoor"; + + /** + * Whether device supports SRE + * + * @return boolean Supported devices must return always true + */ + public static boolean isSupported() { + return new File(sOutdoorModePath).exists(); + } + + /** + * This method return the current activation status of SRE + * + * @return boolean Must be false when SRE is not supported or not activated, or + * the operation failed while reading the status; true in any other case. + */ + public static boolean isEnabled() { + String line = FileUtils.readOneLine(sOutdoorModePath); + if (line == null) + return false; + return line.equals("1"); + } + + /** + * This method allows to setup SRE. + * + * @param status The new SRE status + * @return boolean Must be false if SRE is not supported or the operation + * failed; true in any other case. + */ + public static boolean setEnabled(boolean status) { + return FileUtils.writeLine(sOutdoorModePath, status ? "1" : "0"); + } + + /** + * Whether adaptive backlight (CABL / CABC) is required to be enabled + * + * @return boolean False if adaptive backlight is not a dependency + */ + public static boolean isAdaptiveBacklightRequired() { + return false; + } + + /** + * Set this to true if the implementation is self-managed and does + * it's own ambient sensing. In this case, setEnabled is assumed + * to toggle the feature on or off, but not activate it. If set + * to false, LiveDisplay will call setEnabled when the ambient lux + * threshold is crossed. + * + * @return true if this enhancement is self-managed + */ + public static boolean isSelfManaged() { + return false; + } +}