• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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