diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk index 72d8de1..7ad52ed 100644 --- a/BoardConfigCommon.mk +++ b/BoardConfigCommon.mk @@ -38,6 +38,9 @@ BOARD_CHARGING_CMDLINE_NAME := "androidboot.bootchg" BOARD_CHARGING_CMDLINE_VALUE := "true" WITH_LINEAGE_CHARGER := false +# CMHW +BOARD_HARDWARE_CLASS += device/samsung/msm8974-common/lineagehw + # Dexpreopt ifeq ($(HOST_OS),linux) ifneq ($(TARGET_BUILD_VARIANT),eng) diff --git a/lineagehw/org/lineageos/hardware/SunlightEnhancement.java b/lineagehw/org/lineageos/hardware/SunlightEnhancement.java new file mode 100644 index 0000000..69e97e0 --- /dev/null +++ b/lineagehw/org/lineageos/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.lineageos.hardware; + +import org.lineageos.internal.util.FileUtils; + +/** + * 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 FILE_SRE = "/sys/class/mdnie/mdnie/outdoor"; + private static final String FILE_HBM = "/sys/class/lcd/panel/panel/auto_brightness"; + + /** + * Whether device supports SRE + * + * @return boolean Supported devices must return always true + */ + public static boolean isSupported() { + return FileUtils.isFileWritable(FILE_SRE) && + FileUtils.isFileReadable(FILE_SRE) && + FileUtils.isFileWritable(FILE_HBM) && + FileUtils.isFileReadable(FILE_HBM); + } + + /** + * 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() { + return "1".equals(FileUtils.readOneLine(FILE_SRE)) && + "6".equals(FileUtils.readOneLine(FILE_HBM)); + } + + /** + * 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(FILE_SRE, status ? "1" : "0") && + FileUtils.writeLine(FILE_HBM, status ? "6" : "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; + } +}