237 lines
7.8 KiB
Java
237 lines
7.8 KiB
Java
![]() |
/*
|
||
|
* Copyright (c) 2017 The Android Open Source 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 android.os;
|
||
|
|
||
|
import android.annotation.IntDef;
|
||
|
import android.annotation.NonNull;
|
||
|
import android.annotation.Nullable;
|
||
|
import android.hardware.thermal.TemperatureType;
|
||
|
import android.hardware.thermal.ThrottlingSeverity;
|
||
|
|
||
|
import com.android.internal.util.Preconditions;
|
||
|
|
||
|
import java.lang.annotation.Retention;
|
||
|
import java.lang.annotation.RetentionPolicy;
|
||
|
|
||
|
/**
|
||
|
* Temperature values used by IThermalService.
|
||
|
*
|
||
|
* @hide
|
||
|
*/
|
||
|
public final class Temperature implements Parcelable {
|
||
|
/** Temperature value */
|
||
|
private final float mValue;
|
||
|
/** A Temperature type from ThermalHAL */
|
||
|
private final int mType;
|
||
|
/** Name of this Temperature */
|
||
|
private final String mName;
|
||
|
/** The level of the sensor is currently in throttling */
|
||
|
private final int mStatus;
|
||
|
|
||
|
@IntDef(prefix = { "THROTTLING_" }, value = {
|
||
|
THROTTLING_NONE,
|
||
|
THROTTLING_LIGHT,
|
||
|
THROTTLING_MODERATE,
|
||
|
THROTTLING_SEVERE,
|
||
|
THROTTLING_CRITICAL,
|
||
|
THROTTLING_EMERGENCY,
|
||
|
THROTTLING_SHUTDOWN,
|
||
|
})
|
||
|
@Retention(RetentionPolicy.SOURCE)
|
||
|
public @interface ThrottlingStatus {}
|
||
|
|
||
|
/** Keep in sync with hardware/interfaces/thermal/aidl/android/hardware/thermal
|
||
|
* /ThrottlingSeverity.aidl */
|
||
|
public static final int THROTTLING_NONE = ThrottlingSeverity.NONE;
|
||
|
public static final int THROTTLING_LIGHT = ThrottlingSeverity.LIGHT;
|
||
|
public static final int THROTTLING_MODERATE = ThrottlingSeverity.MODERATE;
|
||
|
public static final int THROTTLING_SEVERE = ThrottlingSeverity.SEVERE;
|
||
|
public static final int THROTTLING_CRITICAL = ThrottlingSeverity.CRITICAL;
|
||
|
public static final int THROTTLING_EMERGENCY = ThrottlingSeverity.EMERGENCY;
|
||
|
public static final int THROTTLING_SHUTDOWN = ThrottlingSeverity.SHUTDOWN;
|
||
|
|
||
|
@IntDef(prefix = { "TYPE_" }, value = {
|
||
|
TYPE_UNKNOWN,
|
||
|
TYPE_CPU,
|
||
|
TYPE_GPU,
|
||
|
TYPE_BATTERY,
|
||
|
TYPE_SKIN,
|
||
|
TYPE_USB_PORT,
|
||
|
TYPE_POWER_AMPLIFIER,
|
||
|
TYPE_BCL_VOLTAGE,
|
||
|
TYPE_BCL_CURRENT,
|
||
|
TYPE_BCL_PERCENTAGE,
|
||
|
TYPE_NPU,
|
||
|
TYPE_TPU,
|
||
|
TYPE_DISPLAY,
|
||
|
TYPE_MODEM,
|
||
|
TYPE_SOC,
|
||
|
TYPE_WIFI,
|
||
|
TYPE_CAMERA,
|
||
|
TYPE_FLASHLIGHT,
|
||
|
TYPE_SPEAKER,
|
||
|
TYPE_AMBIENT,
|
||
|
TYPE_POGO
|
||
|
})
|
||
|
@Retention(RetentionPolicy.SOURCE)
|
||
|
public @interface Type {}
|
||
|
|
||
|
/** Keep in sync with hardware/interfaces/thermal/aidl/android/hardware/thermal
|
||
|
* /TemperatureType.aidl */
|
||
|
public static final int TYPE_UNKNOWN = TemperatureType.UNKNOWN;
|
||
|
public static final int TYPE_CPU = TemperatureType.CPU;
|
||
|
public static final int TYPE_GPU = TemperatureType.GPU;
|
||
|
public static final int TYPE_BATTERY = TemperatureType.BATTERY;
|
||
|
public static final int TYPE_SKIN = TemperatureType.SKIN;
|
||
|
public static final int TYPE_USB_PORT = TemperatureType.USB_PORT;
|
||
|
public static final int TYPE_POWER_AMPLIFIER = TemperatureType.POWER_AMPLIFIER;
|
||
|
public static final int TYPE_BCL_VOLTAGE = TemperatureType.BCL_VOLTAGE;
|
||
|
public static final int TYPE_BCL_CURRENT = TemperatureType.BCL_CURRENT;
|
||
|
public static final int TYPE_BCL_PERCENTAGE = TemperatureType.BCL_PERCENTAGE;
|
||
|
public static final int TYPE_NPU = TemperatureType.NPU;
|
||
|
public static final int TYPE_TPU = TemperatureType.TPU;
|
||
|
public static final int TYPE_DISPLAY = TemperatureType.DISPLAY;
|
||
|
public static final int TYPE_MODEM = TemperatureType.MODEM;
|
||
|
public static final int TYPE_SOC = TemperatureType.SOC;
|
||
|
public static final int TYPE_WIFI = TemperatureType.WIFI;
|
||
|
public static final int TYPE_CAMERA = TemperatureType.CAMERA;
|
||
|
public static final int TYPE_FLASHLIGHT = TemperatureType.FLASHLIGHT;
|
||
|
public static final int TYPE_SPEAKER = TemperatureType.SPEAKER;
|
||
|
public static final int TYPE_AMBIENT = TemperatureType.AMBIENT;
|
||
|
public static final int TYPE_POGO = TemperatureType.POGO;
|
||
|
|
||
|
/**
|
||
|
* Verify a valid Temperature type.
|
||
|
*
|
||
|
* @return true if a Temperature type is valid otherwise false.
|
||
|
*/
|
||
|
public static boolean isValidType(@Type int type) {
|
||
|
return type >= TYPE_UNKNOWN && type <= TYPE_POGO;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Verify a valid throttling status.
|
||
|
*
|
||
|
* @return true if a status is valid otherwise false.
|
||
|
*/
|
||
|
public static boolean isValidStatus(@ThrottlingStatus int status) {
|
||
|
return status >= THROTTLING_NONE && status <= THROTTLING_SHUTDOWN;
|
||
|
}
|
||
|
|
||
|
public Temperature(float value, @Type int type,
|
||
|
@NonNull String name, @ThrottlingStatus int status) {
|
||
|
Preconditions.checkArgument(isValidType(type), "Invalid Type");
|
||
|
Preconditions.checkArgument(isValidStatus(status) , "Invalid Status");
|
||
|
mValue = value;
|
||
|
mType = type;
|
||
|
mName = Preconditions.checkStringNotEmpty(name);
|
||
|
mStatus = status;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return the Temperature value.
|
||
|
*
|
||
|
* @return a Temperature value in floating point could be NaN.
|
||
|
*/
|
||
|
public float getValue() {
|
||
|
return mValue;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return the Temperature type.
|
||
|
*
|
||
|
* @return a Temperature type: TYPE_*
|
||
|
*/
|
||
|
public @Type int getType() {
|
||
|
return mType;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return the Temperature name.
|
||
|
*
|
||
|
* @return a Temperature name as String.
|
||
|
*/
|
||
|
public String getName() {
|
||
|
return mName;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return the Temperature throttling status.
|
||
|
*
|
||
|
* @return a Temperature throttling status: THROTTLING_*
|
||
|
*/
|
||
|
public @ThrottlingStatus int getStatus() {
|
||
|
return mStatus;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String toString() {
|
||
|
return "Temperature{mValue=" + mValue + ", mType=" + mType
|
||
|
+ ", mName=" + mName + ", mStatus=" + mStatus + "}";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public int hashCode() {
|
||
|
int hash = mName.hashCode();
|
||
|
hash = 31 * hash + Float.hashCode(mValue);
|
||
|
hash = 31 * hash + mType;
|
||
|
hash = 31 * hash + mStatus;
|
||
|
return hash;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean equals(@Nullable Object o) {
|
||
|
if (!(o instanceof Temperature)) {
|
||
|
return false;
|
||
|
}
|
||
|
Temperature other = (Temperature) o;
|
||
|
return other.mValue == mValue && other.mType == mType
|
||
|
&& other.mName.equals(mName) && other.mStatus == mStatus;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void writeToParcel(Parcel p, int flags) {
|
||
|
p.writeFloat(mValue);
|
||
|
p.writeInt(mType);
|
||
|
p.writeString(mName);
|
||
|
p.writeInt(mStatus);
|
||
|
}
|
||
|
|
||
|
public static final @android.annotation.NonNull Parcelable.Creator<Temperature> CREATOR =
|
||
|
new Parcelable.Creator<Temperature>() {
|
||
|
@Override
|
||
|
public Temperature createFromParcel(Parcel p) {
|
||
|
float value = p.readFloat();
|
||
|
int type = p.readInt();
|
||
|
String name = p.readString();
|
||
|
int status = p.readInt();
|
||
|
return new Temperature(value, type, name, status);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public Temperature[] newArray(int size) {
|
||
|
return new Temperature[size];
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
@Override
|
||
|
public int describeContents() {
|
||
|
return 0;
|
||
|
}
|
||
|
}
|