2016-03-31 18:23:36 +00:00
|
|
|
/*
|
|
|
|
* 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;
|
2016-04-15 09:38:42 +00:00
|
|
|
private final BitSet mAllModes = new BitSet();
|
|
|
|
|
2016-03-31 18:23:36 +00:00
|
|
|
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();
|
2016-04-15 09:38:42 +00:00
|
|
|
mAllModes.set(MODE_FIRST, MODE_LAST);
|
2016-03-31 18:23:36 +00:00
|
|
|
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 });
|
2016-04-15 09:38:42 +00:00
|
|
|
mAllModes.set(MODE_FIRST, MODE_LAST);
|
2016-03-31 18:23:36 +00:00
|
|
|
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 =====
|
2016-04-25 23:34:21 +00:00
|
|
|
long[] caps = mCapabilities.toLongArray();
|
|
|
|
out.writeLong(caps != null && caps.length > 0 ? caps[0] : 0L);
|
2016-03-31 18:23:36 +00:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
|
2016-04-15 09:38:42 +00:00
|
|
|
/**
|
|
|
|
* Checks if LiveDisplay has support for adaptive modes.
|
|
|
|
*
|
|
|
|
* @return true if adaptive modes are available
|
|
|
|
*/
|
|
|
|
public boolean hasModeSupport() {
|
|
|
|
return isAvailable() && mCapabilities.intersects(mAllModes);
|
|
|
|
}
|
|
|
|
|
2016-03-31 18:23:36 +00:00
|
|
|
/**
|
|
|
|
* 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];
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|