| /* |
| * Copyright (C) 2018 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.hardware.thermal@2.0; |
| |
| import android.hardware.thermal@1.0::types; |
| |
| /** Device temperature types */ |
| enum TemperatureType : @1.0::TemperatureType { |
| USB_PORT = 4, |
| POWER_AMPLIFIER = 5, |
| |
| /** Battery Charge Limit - virtual thermal sensors */ |
| BCL_VOLTAGE = 6, |
| BCL_CURRENT = 7, |
| BCL_PERCENTAGE = 8, |
| |
| /** Neural Processing Unit */ |
| NPU = 9, |
| }; |
| |
| |
| /** Device cooling device types */ |
| enum CoolingType : uint32_t { |
| FAN, |
| BATTERY, |
| CPU, |
| GPU, |
| MODEM, |
| NPU, |
| COMPONENT, // for the rest of components |
| }; |
| |
| /** Device throttling severity */ |
| enum ThrottlingSeverity : uint32_t { |
| /** |
| * Not under throttling. |
| */ |
| NONE = 0, |
| |
| /** |
| * Light throttling where UX is not impacted. |
| */ |
| LIGHT, |
| |
| /** |
| * Moderate throttling where UX is not largely impacted. |
| */ |
| MODERATE, |
| |
| /** |
| * Severe throttling where UX is largely impacted. |
| * Similar to 1.0 throttlingThreshold. |
| */ |
| SEVERE, |
| |
| /** |
| * Platform has done everything to reduce power. |
| */ |
| CRITICAL, |
| |
| /** |
| * Key components in platform are shutting down due to thermal condition. |
| * Device functionalities will be limited. |
| */ |
| EMERGENCY, |
| |
| /** |
| * Need shutdown immediately. |
| */ |
| SHUTDOWN, |
| }; |
| |
| struct TemperatureThreshold { |
| /** |
| * This temperature's type. |
| */ |
| TemperatureType type; |
| |
| /** |
| * Name of this temperature matching the Temperature struct. |
| * All temperatures of the same "type" must have a different "name", |
| * e.g., cpu0, battery. Clients use it to match Temperature struct. |
| */ |
| string name; |
| |
| /** |
| * Hot throttling temperature constant for this temperature sensor in |
| * level defined in ThrottlingSeverity including shutdown. Throttling |
| * happens when temperature >= threshold. If not available, set to NAN. |
| * Unit is same as Temperature's value. |
| */ |
| float[ThrottlingSeverity#len] hotThrottlingThresholds; |
| |
| /** |
| * Cold throttling temperature constant for this temperature sensor in |
| * level defined in ThrottlingSeverity including shutdown. Throttling |
| * happens when temperature <= threshold. If not available, set to NAN. |
| * Unit is same as Temperature's value. |
| */ |
| float[ThrottlingSeverity#len] coldThrottlingThresholds; |
| |
| /** |
| * Threshold temperature above which the VR mode clockrate minimums cannot |
| * be maintained for this device. If not available, set by HAL to NAN. |
| * Unit is same as Temperature's value. |
| */ |
| float vrThrottlingThreshold; |
| }; |
| |
| struct Temperature { |
| /** |
| * This temperature's type. |
| */ |
| TemperatureType type; |
| |
| /** |
| * Name of this temperature matching the TemperatureThreshold. |
| * All temperatures of the same "type" must have a different "name", |
| * e.g., cpu0, battery. Clients use it to match with TemperatureThreshold |
| * struct. |
| */ |
| string name; |
| |
| /** |
| * For BCL, this is the current reading of the virtual sensor and the unit is |
| * millivolt, milliamp, percentage for BCL_VOLTAGE, BCL_CURRENT and BCL_PERCENTAGE |
| * respectively. For everything else, this is the current temperature in Celsius. |
| * If not available set by HAL to NAN. |
| */ |
| float value; |
| |
| /** |
| * The current throttling level of the sensor. |
| */ |
| ThrottlingSeverity throttlingStatus; |
| }; |
| |
| struct CoolingDevice { |
| /** |
| * This cooling device type, CPU, GPU, BATTERY, and etc. |
| */ |
| CoolingType type; |
| |
| /** |
| * Name of this cooling device. |
| * All cooling devices of the same "type" must have a different "name". |
| * The name is usually defined in kernel device tree, and this is for client |
| * logging purpose. |
| */ |
| string name; |
| |
| /** |
| * Current throttle state of the cooling device. The value can any unsigned integer |
| * numbers between 0 and max_state defined in its driver, usually representing the |
| * associated device's power state. 0 means device is not in throttling, higher value |
| * means deeper throttling. |
| */ |
| uint64_t value; |
| }; |