aboutsummaryrefslogtreecommitdiffstats
path: root/sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2016-03-31 11:23:36 -0700
committerSteve Kondik <shade@chemlab.org>2016-04-13 01:37:08 -0700
commit1dab5a0ca90d877c2f1728e75176e100547192ea (patch)
treef71cc31de251eaf59b5ee307113142667595f3d0 /sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java
parent620b1eb9084c2ea1d15ab20946f4c391588135c2 (diff)
downloadvendor_cmsdk-1dab5a0ca90d877c2f1728e75176e100547192ea.zip
vendor_cmsdk-1dab5a0ca90d877c2f1728e75176e100547192ea.tar.gz
vendor_cmsdk-1dab5a0ca90d877c2f1728e75176e100547192ea.tar.bz2
cmsdk: Refactoring LiveDisplay
* Moving LiveDisplay to CMSDK! * Completely redesigned the feature for future expansion. * No new features in this patch, but a proper API is being designed. Change-Id: Ic8f55678f9141bf3386b2a1cf2fd1e8b3916c278
Diffstat (limited to 'sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java')
-rw-r--r--sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java244
1 files changed, 244 insertions, 0 deletions
diff --git a/sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java b/sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java
new file mode 100644
index 0000000..0a569d3
--- /dev/null
+++ b/sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java
@@ -0,0 +1,244 @@
+/*
+ * 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 cyanogenmod.hardware;
+
+import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_FIRST;
+import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_LAST;
+import static cyanogenmod.hardware.LiveDisplayManager.MODE_FIRST;
+import static cyanogenmod.hardware.LiveDisplayManager.MODE_LAST;
+import static cyanogenmod.hardware.LiveDisplayManager.MODE_OFF;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.BitSet;
+
+import cyanogenmod.os.Build;
+import cyanogenmod.os.Concierge;
+import cyanogenmod.os.Concierge.ParcelInfo;
+
+/**
+ * Holder class for LiveDisplay static configuration.
+ *
+ * This class holds various defaults and hardware capabilities
+ * which are involved with LiveDisplay.
+ */
+public class LiveDisplayConfig implements Parcelable {
+
+ private final BitSet mCapabilities;
+ private final int mDefaultDayTemperature;
+ private final int mDefaultNightTemperature;
+ private final int mDefaultMode;
+
+ private final boolean mDefaultAutoContrast;
+ private final boolean mDefaultAutoOutdoorMode;
+ private final boolean mDefaultCABC;
+ private final boolean mDefaultColorEnhancement;
+
+ public LiveDisplayConfig(BitSet capabilities, int defaultMode,
+ int defaultDayTemperature, int defaultNightTemperature,
+ boolean defaultAutoOutdoorMode, boolean defaultAutoContrast,
+ boolean defaultCABC, boolean defaultColorEnhancement) {
+ super();
+ mCapabilities = (BitSet) capabilities.clone();
+ mDefaultMode = defaultMode;
+ mDefaultDayTemperature = defaultDayTemperature;
+ mDefaultNightTemperature = defaultNightTemperature;
+ mDefaultAutoContrast = defaultAutoContrast;
+ mDefaultAutoOutdoorMode = defaultAutoOutdoorMode;
+ mDefaultCABC = defaultCABC;
+ mDefaultColorEnhancement = defaultColorEnhancement;
+ }
+
+ private LiveDisplayConfig(Parcel parcel) {
+ // Read parcelable version via the Concierge
+ ParcelInfo parcelInfo = Concierge.receiveParcel(parcel);
+ int parcelableVersion = parcelInfo.getParcelVersion();
+
+ // temp vars
+ long capabilities = 0;
+ int defaultMode = 0;
+ int defaultDayTemperature = -1;
+ int defaultNightTemperature = -1;
+ boolean defaultAutoContrast = false;
+ boolean defaultAutoOutdoorMode = false;
+ boolean defaultCABC = false;
+ boolean defaultColorEnhancement = false;
+
+ if (parcelableVersion >= Build.CM_VERSION_CODES.FIG) {
+ capabilities = parcel.readLong();
+ defaultMode = parcel.readInt();
+ defaultDayTemperature = parcel.readInt();
+ defaultNightTemperature = parcel.readInt();
+ defaultAutoContrast = parcel.readInt() == 1;
+ defaultAutoOutdoorMode = parcel.readInt() == 1;
+ defaultCABC = parcel.readInt() == 1;
+ defaultColorEnhancement = parcel.readInt() == 1;
+ }
+
+ // set temps
+ mCapabilities = BitSet.valueOf(new long[] { capabilities });
+ mDefaultMode = defaultMode;
+ mDefaultDayTemperature = defaultDayTemperature;
+ mDefaultNightTemperature = defaultNightTemperature;
+ mDefaultAutoContrast = defaultAutoContrast;
+ mDefaultAutoOutdoorMode = defaultAutoOutdoorMode;
+ mDefaultCABC = defaultCABC;
+ mDefaultColorEnhancement = defaultColorEnhancement;
+
+ // Complete parcel info for the concierge
+ parcelInfo.complete();
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("capabilities=").append(mCapabilities.toString());
+ sb.append(" defaultMode=").append(mDefaultMode);
+ sb.append(" defaultDayTemperature=").append(mDefaultDayTemperature);
+ sb.append(" defaultNightTemperature=").append(mDefaultNightTemperature);
+ sb.append(" defaultAutoOutdoorMode=").append(mDefaultAutoOutdoorMode);
+ sb.append(" defaultAutoContrast=").append(mDefaultAutoContrast);
+ sb.append(" defaultCABC=").append(mDefaultCABC);
+ sb.append(" defaultColorEnhancement=").append(mDefaultColorEnhancement);
+ return sb.toString();
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ // Tell the concierge to prepare the parcel
+ ParcelInfo parcelInfo = Concierge.prepareParcel(out);
+
+ // ==== FIG =====
+ out.writeLong(mCapabilities.toLongArray()[0]);
+ out.writeInt(mDefaultMode);
+ out.writeInt(mDefaultDayTemperature);
+ out.writeInt(mDefaultNightTemperature);
+ out.writeInt(mDefaultAutoContrast ? 1 : 0);
+ out.writeInt(mDefaultAutoOutdoorMode ? 1 : 0);
+ out.writeInt(mDefaultCABC ? 1 : 0);
+ out.writeInt(mDefaultColorEnhancement ? 1 : 0);
+
+ // Complete the parcel info for the concierge
+ parcelInfo.complete();
+ }
+
+ /**
+ * Checks if a particular feature or mode is supported by the system.
+ *
+ * @param feature
+ * @return true if capable
+ */
+ public boolean hasFeature(int feature) {
+ return ((feature >= MODE_FIRST && feature <= MODE_LAST) ||
+ (feature >= FEATURE_FIRST && feature <= FEATURE_LAST)) &&
+ (feature == MODE_OFF || mCapabilities.get(feature));
+ }
+
+ /**
+ * Checks if LiveDisplay is available for use on this device.
+ *
+ * @return true if any feature is enabled
+ */
+ public boolean isAvailable() {
+ return !mCapabilities.isEmpty();
+ }
+
+ /**
+ * Gets the default color temperature to use in the daytime. This is typically
+ * set to 6500K, however this may not be entirely accurate. Use this value for
+ * resetting controls to the default.
+ *
+ * @return the default day temperature in K
+ */
+ public int getDefaultDayTemperature() {
+ return mDefaultDayTemperature;
+ }
+
+ /**
+ * Gets the default color temperature to use at night. This is typically set
+ * to 4500K, but this may not be entirely accurate. Use this value for resetting
+ * controls to defaults.
+ *
+ * @return the default night color temperature
+ */
+ public int getDefaultNightTemperature() {
+ return mDefaultNightTemperature;
+ }
+
+ /**
+ * Get the default adaptive mode.
+ *
+ * @return the default mode
+ */
+ public int getDefaultMode() {
+ return mDefaultMode;
+ }
+
+ /**
+ * Get the default value for auto contrast
+ *
+ * @return true if enabled
+ */
+ public boolean getDefaultAutoContrast() {
+ return mDefaultAutoContrast;
+ }
+
+ /**
+ * Get the default value for automatic outdoor mode
+ *
+ * @return true if enabled
+ */
+ public boolean getDefaultAutoOutdoorMode() {
+ return mDefaultAutoOutdoorMode;
+ }
+
+ /**
+ * Get the default value for CABC
+ *
+ * @return true if enabled
+ */
+ public boolean getDefaultCABC() {
+ return mDefaultCABC;
+ }
+
+ /**
+ * Get the default value for color enhancement
+ *
+ * @return true if enabled
+ */
+ public boolean getDefaultColorEnhancement() {
+ return mDefaultColorEnhancement;
+ }
+
+ /** @hide */
+ public static final Parcelable.Creator<LiveDisplayConfig> CREATOR =
+ new Parcelable.Creator<LiveDisplayConfig>() {
+ public LiveDisplayConfig createFromParcel(Parcel in) {
+ return new LiveDisplayConfig(in);
+ }
+
+ @Override
+ public LiveDisplayConfig[] newArray(int size) {
+ return new LiveDisplayConfig[size];
+ }
+ };
+}