1# Thermal Manager 2 3- [Introduction](#section0056945901) 4- [Directory Structure](#section0056945902) 5- [Configuration Description](#section0056945903) 6- [Repositories Involved](#section0056945904) 7 8## Introduction<a name="section0056945901"></a> 9 10The thermal manager provides the device temperature management and control capabilities to ensure the thermal safety and experience of the entire system. 11 12**Figure 1** Architecture of the thermal manager 13![](figures/thermal_manager_architecture.png "Architecture of the thermal manager") 14 15**Key components of the thermal manager**: 16 171. Thermal Manager: provides temperature query and callback APIs for applications and other subsystems. 182. Thermal Service: implements core temperature control functions, such as temperature detection, temperature level arbitration, and action delivery, according to the configuration file. 193. Thermal HDI: implements temperature driver information reporting and driver instruction delivery according to the configuration file. 204. Thermal Protector: implements simplified temperature control in the non-running state according to the configuration file. 21 22## Directory Structure<a name="section0056945902"></a> 23``` 24/base/powermgr/thermal_manager 25├── application # Native application 26│ └── protector # Thermal Protector code 27├── etc # init configuration 28├── figures # Figures 29├── frameworks # NAPIs 30├── hdi # Thermal HDI code 31│ ├── api # APIs 32│ ├── client # Client code 33│ └── service # Service code 34├── interface # APIs 35│ ├── innerkits # Internal APIs 36│ └── kits # External APIs 37├── sa_profile # SA profile 38├── services # Thermal Service code 39│ ├── native # Native APIs 40│ ├── test # Unit test code 41│ └── zidl # zidl APIs 42├── test # Test code 43└── utils # Utilities 44``` 45 46## Configuration Description<a name="section0056945903"></a> 47**1. thermal\_service\_config.xml** 48Configuration example: 49 50``` 51<?xml version="1.0" encoding="UTF-8"?> 52<thermal version="0.99" product="ipx"> 53 <base> 54 <item tag="temperature_query_enum" value="soc,battery,shell,ambient"/> 55 </base> 56 <level> 57 <sensor_cluster name="warm_base" sensor="shell"> 58 <item level="1" threshold="35000" threshold_clr="33000"/> 59 <item level="2" threshold="37000" threshold_clr="35000"/> 60 <item level="3" threshold="40000" threshold_clr="38000"/> 61 </sensor_cluster> 62 <sensor_cluster name="warm_safe" sensor="battery,pa"> 63 <item level="1" threshold="48000,60000" threshold_clr="45000,55000"/> 64 </sensor_cluster> 65 </level> 66 <state> 67 <item name="screen"/> 68 <item name="charge"/> 69 </state> 70 <action> 71 <item name="cpu"/> 72 <item name="current"/> 73 <item name="shut_down" param="100"/> 74 <item name="thermal_level" strict="1"/> 75 </action> 76 <policy> 77 <config name="warm_base" level="1"> 78 <cpu screen="1">2800000</cpu> 79 <cpu screen="0">2400000</cpu> 80 <current charge="1">1500</current> 81 <thermal_level>3</thermal_level> 82 </config> 83 <config name="warm_base" level="2"> 84 <cpu screen="1">2200000</cpu> 85 <cpu screen="0">1800000</cpu> 86 <current charge="1">1200</current> 87 <thermal_level>4</thermal_level> 88 </config> 89 <config name="warm_base" level="3"> 90 <cpu screen="1">1600000</cpu> 91 <cpu screen="0">1200000</cpu> 92 <current charge="1">1000</current> 93 <thermal_level>5</thermal_level> 94 </config> 95 <config name="warm_safe" level="1"> 96 <shut_down>1</shut_down> 97 </config> 98 </policy> 99</thermal> 100``` 101``` 102thermal # Root directory. Wherein, version indicates the version number, and product indicates the product name. 103├── base # base directory, used to configure basic parameters. 104│ └── item # item directory. Wherein, tag indicates the configuration tag, and value indicates the configuration value. 105├── level # Level directory, used to store the temperature level information. 106│ └── sensor_cluster # sensor_cluster directory, used to configure a cluster of sensors. Wherein, name indicates the cluster name, and sensor indicates the sensor name. 107│ └── item # item directory, used to configure the temperature level information. Wherein, level indicates the temperature level, threshold indicates the triggering temperature, and xxx_clr indicates the setback temperature. 108├── state # state directory, used to configure the state machine. Wherein, name indicates the name of the state machine. 109├── action # action directory, used to configure actions. Wherein, name indicates the name of the action, param indicates the action parameter, and strict indicates the arbitration scheme. 110└── policy # policy directory, used to configure the policy for the corresponding temperature level. 111 └── config # config directory, used to configure the action for the corresponding temperature level. Wherein, name is that of sensor_cluster, and the level is that of the item in sensor_cluster. 112 └── <action_name> # action name corresponding to the action value. The state condition and its value can be configured in this attribute. 113``` 114 115**2. thermal\_hdi\_config.xml** 116Configuration example: 117 118``` 119<?xml version="1.0" encoding="UTF-8"?> 120<thermal version="0.99" product="ipx"> 121 <base> 122 <item tag="xxx" value="3"/> 123 </base> 124 <polling> 125 <group name="v1" interval="5000"> 126 <thermal_zone type="skin" replace="shell"/> 127 <thermal_zone type="soc"/> 128 <thermal_node type="charger" path="/sys/module/thermal/param/chg_thermal"/> 129 <thermal_zone type="battery"/> 130 </group> 131 </polling> 132</thermal> 133``` 134Directory structure: 135``` 136thermal # Root directory. Wherein, version indicates the version number, and product indicates the product name. 137├── base # base directory, used to configure basic parameters. 138│ └── item # item directory. Wherein, tag indicates the configuration tag, and value indicates the configuration value. 139└── polling # polling directory, used to configure the temperature reporting information 140 └── group # group directory, used to configure the temperature reporting group. Wherein, name indicates the group name, and interval indicates the polling and reporting interval, in milliseconds. 141 ├── thermal_zone # thermal_zone directory, used to configure the thermal zone reporting information. Wherein, type indicates the driver type, and replace (optional) indicates the name of the driver type to replace. 142 └── thermal_node # thermal_node directory, used to configure driver node reporting information. Wherein, path indicates the node path. 143``` 144 145**3. thermal\_protector\_config.xml** 146Configuration example: 147 148``` 149<?xml version="1.0" encoding="utf-8"?> 150<thermal version="0.99" product="ipx"> 151 <base> 152 <item tag="xxx" value="3"/> 153 </base> 154 <control> 155 <thermal_zone type="battery" interval="5000"> 156 <item level="1" threshold="37000" threshold_clr="35000"> 157 <current>1800</current> 158 </item> 159 <item level="2" threshold="40000" threshold_clr="38000"> 160 <current>1500</current> 161 <voltage>5</voltage> 162 </item> 163 </thermal_zone> 164 </control> 165</thermal> 166 167``` 168Directory structure: 169``` 170thermal # Root directory. Wherein, version indicates the version number, and product indicates the product name. 171├── base # base directory, used to configure basic parameters. 172│ └── item # item directory. Wherein, tag indicates the configuration tag, and value indicates the configuration value. 173└── control # control directory, used to configure the temperature level and corresponding action. 174 └── thermal_zone # thermal_zone directory, used to configure the thermal zone reporting information. Wherein, type indicates the driver type, and interval indicates the polling and reporting interval, in milliseconds. 175 └── item # item directory, used to configure the temperature level information. Wherein, level indicates the temperature level, threshold indicates the triggering temperature, and xxx_clr indicates the setback temperature. 176 └── <action_name> # action name corresponding to the action value. 177``` 178 179## Repositories Involved<a name="section0056945904"></a> 180[Power Management Subsystem](https://gitee.com/openharmony/docs/blob/master/en/readme/power-management.md) 181 182[powermgr_power_manager](https://gitee.com/openharmony/powermgr_power_manager) 183 184[powermgr_display_manager](https://gitee.com/openharmony/powermgr_display_manager) 185 186[powermgr_battery_manager](https://gitee.com/openharmony/powermgr_battery_manager) 187 188**powermgr_thermal_manager** 189 190[powermgr_battery_statistics](https://gitee.com/openharmony/powermgr_battery_statistics) 191 192[powermgr_battery_lite](https://gitee.com/openharmony/powermgr_battery_lite) 193 194[powermgr_powermgr_lite](https://gitee.com/openharmony/powermgr_powermgr_lite) 195