1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.hardware.thermal@1.0; 18 19 /** Device temperature types */ 20 @export 21 enum TemperatureType : int32_t { 22 UNKNOWN = -1, 23 CPU = 0, 24 GPU = 1, 25 BATTERY = 2, 26 SKIN = 3, 27 }; 28 29 enum CoolingType : uint32_t { 30 /** Fan cooling device speed in RPM. */ 31 FAN_RPM = 0, 32 }; 33 34 struct Temperature { 35 /** 36 * This temperature's type. 37 */ 38 TemperatureType type; 39 40 /** 41 * Name of this temperature. 42 * All temperatures of the same "type" must have a different "name", 43 * e.g., cpu0, battery. 44 */ 45 string name; 46 47 /** 48 * Current temperature in Celsius. If not available set by HAL to NAN. 49 * Current temperature can be in any units if type=UNKNOWN. 50 */ 51 float currentValue; 52 53 /** 54 * Throttling temperature constant for this temperature. 55 * If not available, set by HAL to NAN. 56 */ 57 float throttlingThreshold; 58 59 /** 60 * Shutdown temperature constant for this temperature. 61 * If not available, set by HAL to NAN. 62 */ 63 float shutdownThreshold; 64 65 /** 66 * Threshold temperature above which the VR mode clockrate minimums cannot 67 * be maintained for this device. 68 * If not available, set by HAL to NAN. 69 */ 70 float vrThrottlingThreshold; 71 72 }; 73 74 struct CoolingDevice { 75 /** 76 * This cooling device type. 77 */ 78 CoolingType type; 79 80 /** 81 * Name of this cooling device. 82 * All cooling devices of the same "type" must have a different "name". 83 */ 84 string name; 85 86 /** 87 * Current cooling device value. Units depend on cooling device "type". 88 */ 89 float currentValue; 90 91 }; 92 93 struct CpuUsage { 94 /** 95 * Name of this CPU. 96 * All CPUs must have a different "name". 97 */ 98 string name; 99 100 /** 101 * Active time since the last boot in ms. 102 */ 103 uint64_t active; 104 105 /** 106 * Total time since the last boot in ms. 107 */ 108 uint64_t total; 109 110 /** 111 * Is set to true when a core is online. 112 * If the core is offline, all other members except |name| should be ignored. 113 */ 114 bool isOnline; 115 116 }; 117 118 enum ThermalStatusCode : uint32_t { 119 /** No errors. */ 120 SUCCESS = 0, 121 /** Unknown failure occured. */ 122 FAILURE = 1 123 }; 124 125 /** 126 * Generic structure to return the status of any thermal operation. 127 */ 128 struct ThermalStatus { 129 ThermalStatusCode code; 130 131 /** 132 * A specific error message to provide more information. 133 * This can be used for debugging purposes only. 134 */ 135 string debugMessage; 136 }; 137