# Thermal management

**Detailed Description**

This section contains APIs related to Thermal Management such as read list of thermal zones, cooling devices and binding info.

- *group* Telematics\_therm\_management

    - Typedefs

- using ThermalNotificationMask = std::bitset&lt;16&gt;

    - Bit mask that denotes a set of notifications defined in ThermalNotificationType

Enums

- enum AutoShutdownMode

    - Defines the status of automatic thermal shutdown

*Values:*

- enumerator UNKNOWN

    - Automatic thermal shutdown status is unknown

- enumerator ENABLE

    - Automatic thermal shutdown is enabled

- enumerator DISABLE

    - Automatic thermal shutdown is disabled

- enum TripType

    - Defines the type of trip points, it can be one of the values for ACPI (Advanced Configuration and Power Interface) thermal zone

*Values:*

- enumerator UNKNOWN

    - Trip type is unknown

- enumerator CRITICAL

    - Trip point at which system shuts down

- enumerator HOT

    - Trip point to notify emergency

- enumerator PASSIVE

    - Trip point at which kernel lowers the CPU’s frequency and throttle the processor down

- enumerator ACTIVE

    - Trip point at which processor fan turns on

- enumerator CONFIGURABLE\_HIGH

    - Triggering threshold at which mitigation starts. This type is added to support legacy targets

- enumerator CONFIGURABLE\_LOW

    - Clearing threshold at which mitigation stops. This type is added to support legacy targets

- enum TripEvent

    - Defines the event of trip.

*Values:*

- enumerator NONE

    - Trip event is none

- enumerator CROSSED\_UNDER

    - This event will be triggered when the temperature decreases and crosses below the configured trip minus hysteresis temp. This event will not be triggered again, if the temperature remains below the trip temperature. For Example: Below scenario considered as CROSSED\_UNDER. Prev temp: 27000 milli degree Celsius, Trip temp: 25000 milli degree Celsius, Hyst: 5000 milli degree Celsius, Curr Temp: 19000 milli degree Celsius, Below scenario will not generate CROSSED\_UNDER event again. Prev temp: 19000 milli degree Celsius, Trip temp: 25000 milli degree Celsius, Hyst: 5000 milli degree Celsius, Curr Temp: 18000 milli degree Celsius / 22000 milli degree Celsius

- enumerator CROSSED\_OVER

    - This event will be triggered when the temperature increases and crosses over the configured trip temperature. This event will not be triggered again, if the temperature remains over the trip temperature. For Example: Below scenario considered as CROSSED\_OVER. Prev temp: 24000 milli degree Celsius, Trip temp: 25000 milli degree Celsius, Curr Temp: 26000 milli degree Celsius, Below scenario will not generate CROSSED\_OVER event again. Prev temp: 26000 milli degree Celsius, Trip temp: 25000 milli degree Celsius, Curr Temp: 27000 milli degree Celsius

- enum ThermalNotificationType

    - Defines some of the notifications supported by [IThermalListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00770) which can be dynamically disabled/enabled.

*Values:*

- enumerator TNT\_TRIP\_UPDATE

    - 

- enumerator TNT\_CDEV\_LEVEL\_UPDATE

    - 

- enumerator TNT\_MAX\_TYPE

    -

Variables

- const uint32\_t DEFAULT\_TIMEOUT = 30

    - Default time out (in seconds) for thermal auto-shutdown service to re-enable thermal auto-shutdown.

- class ThermalFactory

    - [ThermalFactory](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00769) allows creation of thermal manager.

Public Functions

- virtual std::shared\_ptr&lt;[IThermalManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00772.html#_CPPv4N5telux5therm15IThermalManagerE)&gt; getThermalManager([telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[InitResponseCb](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1ab92f90010203f914a62cec6bd7af0a1a.html#_CPPv4N5telux6common14InitResponseCbE) callback = nullptr, [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ProcType](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common8ProcTypeE) operType = [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ProcType](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common8ProcTypeE)::[LOCAL\_PROC](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common8ProcType10LOCAL_PROCE)) = 0

    - Get thermal manager instance associated with a [telux::common::ProcType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00023_1gac0611885856c28dedfac20b47bcd93e2.html#a00023_1gac0611885856c28dedfac20b47bcd93e2) to get list of thermal zones (sensors) and cooling devices supported by the device

On platforms with Access control enabled, Caller needs to have TELUX\_THERM\_DATA\_READ permission to invoke this API successfully.

- Parameters:

    - - **callback** – **[in]** Optional callback pointer to get the response of the manager initialization.
- **oprType** – **[in]** Operation type [telux::common::ProcType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00023_1gac0611885856c28dedfac20b47bcd93e2.html#a00023_1gac0611885856c28dedfac20b47bcd93e2). Local operation type fetches the thermal zones information where the application is running. Remote operation type fetches the thermal zones information of modem if the application is running on external application processor(EAP) and vice versa.

- Returns:

    - Pointer of [IThermalManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00772) object.

- virtual std::shared\_ptr&lt;[IThermalShutdownManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00777.html#_CPPv4N5telux5therm23IThermalShutdownManagerE)&gt; getThermalShutdownManager([telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[InitResponseCb](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00236_1ab92f90010203f914a62cec6bd7af0a1a.html#_CPPv4N5telux6common14InitResponseCbE) callback = nullptr) = 0

    - Get thermal shutdown manager instance to control automatic thermal shutdown and get relevant notifications

On platforms with Access control enabled, Caller needs to have TELUX\_THERM\_SHUTDOWN\_CTRL permission to invoke this API successfully.

- Parameters:

    - **callback** – **[in]** Optional callback pointer to get the response of the manager initialization.

- Returns:

    - Pointer of [IThermalShutdownManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00777) object.

Public Static Functions

- static [ThermalFactory](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00769.html#_CPPv4N5telux5therm14ThermalFactoryE) &getInstance()

    - Get Thermal Factory instance.

Private Functions

- ThermalFactory(const [ThermalFactory](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00769.html#_CPPv4N5telux5therm14ThermalFactory14ThermalFactoryERK14ThermalFactory)&) = delete

    - 

- [ThermalFactory](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00769.html#_CPPv4N5telux5therm14ThermalFactoryE) &operator=(const [ThermalFactory](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00769.html#_CPPv4N5telux5therm14ThermalFactoryE)&) = delete

    -

- class IThermalListener : public [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[IServiceStatusListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00049.html#_CPPv4N5telux6common22IServiceStatusListenerE)

    - Listener class for getting notifications when thermal service status changes. The client needs to implement these methods as briefly as possible and avoid blocking calls in it. The methods in this class can be invoked from multiple different threads. Client needs to make sure that the implementation is thread-safe.

Public Functions

- inline virtual ~IThermalListener()

    - Destructor of [IThermalListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00770)

- inline virtual void onCoolingDeviceLevelChange(std::shared\_ptr&lt;[ICoolingDevice](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00775.html#_CPPv4N5telux5therm14ICoolingDeviceE)&gt; coolingDevice)

    - This function is called at the time of cooling device level update. On platforms with Access control enabled, the client needs to have TELUX\_THERM\_DATA\_READ permission to receive this event.

- Parameters:

    - **coolingDevice** – **[in]** - vector of cooling device for which the level has been updated.

- inline virtual void onTripEvent(std::shared\_ptr&lt;[ITripPoint](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00773.html#_CPPv4N5telux5therm10ITripPointE)&gt; tripPoint, [TripEvent](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux5therm9TripEventE) tripEvent)

    - This function is called at the time of trip event occurs. On platforms with Access control enabled, the client needs to have TELUX\_THERM\_DATA\_READ permission to receive this event.

- Parameters:

    - - **tripInfo** – **[in]** - Vector of the trip point for which trip event has been occured.
- **tripEvent** – **[in]** - Indicates trip event.

    - NONE
    - CROSSED\_UNDER
    - CROSSED\_OVER

- struct BoundCoolingDevice

    - Defines the trip points to which cooling device is bound.

Public Members

- int coolingDeviceId

    - Cooling device Id associated with trip points

- std::vector&lt;std::shared\_ptr&lt;[ITripPoint](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00773.html#_CPPv4N5telux5therm10ITripPointE)&gt;&gt; bindingInfo

    - List of trippoints bound to the cooling device

- class IThermalManager

    - [IThermalManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00772) provides interface to get thermal zone and cooling device information.

Public Functions

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[ServiceStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common13ServiceStatusE) getServiceStatus() = 0

    - This status indicates whether the object is in a usable state.

- Returns:

    - [telux::common::ServiceStatus](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00023_1ga7063b4a1071b6581022e30b730684e4d.html#a00023_1ga7063b4a1071b6581022e30b730684e4d)

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) registerListener(std::weak\_ptr&lt;[IThermalListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00770.html#_CPPv4N5telux5therm16IThermalListenerE)&gt; listener, [ThermalNotificationMask](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00010_1ga1d55fc7e176770734327a3b176f7deff.html#_CPPv4N5telux5therm23ThermalNotificationMaskE) mask = 0xFFFF) = 0

    - Registers the listener for Thermal Manager indications.

- Parameters:

    - - **listener** – **[in]** - pointer to implemented listener.
- **mask** – **[in]** - Bit mask representing a set of notifications that needs to be registered - [ThermalNotificationType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00010_1ga296e25485ed56d21fec8e9490bc2060d.html#a00010_1ga296e25485ed56d21fec8e9490bc2060d) Notifications under [IThermalListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00770) that are not listed in [ThermalNotificationType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00010_1ga296e25485ed56d21fec8e9490bc2060d.html#a00010_1ga296e25485ed56d21fec8e9490bc2060d) would always be registered by default when this API is invoked. In the absence of this optional parameter, all the notifications will be registered. Bits that are not set in the mask are ignored and do not have any effect on registration or deregistration. To deregister, the API [deregisterListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00772_1a12da7b1adcfa5d10d927e4f5592c079a) should be used. For Example: API invoked with mask: 0x0001 enables onTripEvent notification, next invocation with mask: 0x0002 enables onCoolingDeviceLevelUpdate notification and previous registration for onTripEvent remains intact.

- Returns:

    - status of the registration request.

- virtual [telux](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6commonE)::[Status](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux6common6StatusE) deregisterListener(std::weak\_ptr&lt;[IThermalListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00770.html#_CPPv4N5telux5therm16IThermalListenerE)&gt; listener, [ThermalNotificationMask](https://docs.qualcomm.com/doc/80-PF458-2/topic/typedef_a00010_1ga1d55fc7e176770734327a3b176f7deff.html#_CPPv4N5telux5therm23ThermalNotificationMaskE) mask = 0xFFFF) = 0

    - Deregisters the previously registered listener.

- Parameters:

    - - **listener** – **[in]** - pointer to registered listener that needs to be removed.
- **mask** – **[in]** - Bit mask that denotes a set of notifications that needs to be de-registered - [ThermalNotificationType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00010_1ga296e25485ed56d21fec8e9490bc2060d.html#a00010_1ga296e25485ed56d21fec8e9490bc2060d) Notifications under [IThermalListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00770) that are not listed in [ThermalNotificationType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00010_1ga296e25485ed56d21fec8e9490bc2060d.html#a00010_1ga296e25485ed56d21fec8e9490bc2060d) would not be de-registered by default. If the client does not specifies mask or sets all the bits, this API de-registers all the notifications. Bits that are not set in the mask are ignored and do not have any effect on registration or deregistration,To register, the API [registerListener](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00772_1ad1335ee3ec4b3f41516bec11523eea5b) should be used. For Example: API invoked with mask: 0x0001 disables onTripEvent notification, next invocation with mask: 0x0002 disables onCoolingDeviceLevelUpdate notification. mask: 0x0000 is invalid options and API invoked with mask 0x0000 will be ignored.

- Returns:

    - status of the deregistration request.

- virtual std::vector&lt;std::shared\_ptr&lt;[IThermalZone](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00774.html#_CPPv4N5telux5therm12IThermalZoneE)&gt;&gt; getThermalZones() = 0

    - Retrieves the list of thermal zone info like type, temperature and trip points.

- Returns:

    - List of thermal zones.

- virtual std::vector&lt;std::shared\_ptr&lt;[ICoolingDevice](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00775.html#_CPPv4N5telux5therm14ICoolingDeviceE)&gt;&gt; getCoolingDevices() = 0

    - Retrieves the list of thermal cooling device info like type, maximum throttle state and currently requested throttle state.

- Returns:

    - List of cooling devices.

- virtual std::shared\_ptr&lt;[IThermalZone](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00774.html#_CPPv4N5telux5therm12IThermalZoneE)&gt; getThermalZone(int thermalZoneId) = 0

    - Retrieves the thermal zone details like temperature, type and trip point info for the given thermal zone identifier.

- Parameters:

    - **thermalZoneId** – **[in]** Thermal zone identifier

- Returns:

    - Pointer to thermal zone.

- virtual std::shared\_ptr&lt;[ICoolingDevice](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00775.html#_CPPv4N5telux5therm14ICoolingDeviceE)&gt; getCoolingDevice(int coolingDeviceId) = 0

    - Retrieves the cooling device details like type of the device, maximum cooling level and current cooling level for the given cooling device identifier.

- Parameters:

    - **coolingDeviceId** – **[in]** Cooling device identifier

- Returns:

    - Pointer to cooling device.

- inline virtual ~IThermalManager()

    - Destructor of [IThermalManager](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00772)

- class ITripPoint

    - [ITripPoint](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00773) provides interface to get trip point type, trip point temperature and hysteresis value for that trip point.

Public Functions

- virtual [TripType](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#_CPPv4N5telux5therm8TripTypeE) getType() const = 0

    - Retrieves trip point type.

- Returns:

    - Type of trip point if available else return UNKNOWN.

- [TripType](https://docs.qualcomm.com/doc/80-PF458-2/topic/enum_a00010_1ga46baef5b5059b5f5595170014971d761.html#a00010_1ga46baef5b5059b5f5595170014971d761)

- virtual int getThresholdTemp() const = 0

    - Retrieves the temperature above which certain trip point will be fired.

- Units: MilliDegree Celsius

- Returns:

    - Threshold temperature

- virtual int getHysteresis() const = 0

    - Retrieves hysteresis value that is the difference between current temperature of the device and the temperature above which certain trip point will be fired. Units: MilliDegree Celsius

- Returns:

    - Hysteresis value

- virtual int getTripId() const = 0

    - Retrieves the identifier for trip point.

- Returns:

    - Identifier for trip point

- virtual int getTZoneId() const = 0

    - Retrieves associated tzone id for a trip point.

- Returns:

    - Identifier for thermal zone

- virtual bool operator==(const [ITripPoint](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00773.html#_CPPv4N5telux5therm10ITripPointE) &rHs) const = 0

    - Operator for compare two trip points

- Returns:

    - result of two trip points whether equal or not equal.

- inline virtual ~ITripPoint()

    - Destructor of [ITripPoint](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00773)

- class IThermalZone

    - [IThermalZone](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00774) provides interface to get type of the sensor, the current temperature reading, trip points and the cooling devices binded etc.

Public Functions

- virtual int getId() const = 0

    - Retrieves the identifier for thermal zone.

- Returns:

    - Identifier for thermal zone

- virtual std::string getDescription() const = 0

    - Retrieves the type of sensor.

- Returns:

    - Sensor type

- virtual int getCurrentTemp() const = 0

    - Retrieves the current temperature of the device. Units: MilliDegree Celsius

- Returns:

    - Current temperature

- virtual int getPassiveTemp() const = 0

    - Retrieves the temperature of passive trip point for the zone. Default value is 0. Valid values: 0 (disabled) or greater than 1000 (enabled), Units: MilliDegree Celsius

- Returns:

    - Temperature of passive trip point

- virtual std::vector&lt;std::shared\_ptr&lt;[ITripPoint](https://docs.qualcomm.com/doc/80-PF458-2/topic/class_a00773.html#_CPPv4N5telux5therm10ITripPointE)&gt;&gt; getTripPoints() const = 0

    - Retrieves trip point information like trip type, trip temperature and hysteresis.

- Returns:

    - Trip point info list

- virtual std::vector&lt;[BoundCoolingDevice](https://docs.qualcomm.com/doc/80-PF458-2/topic/thermal_management.html#_CPPv4N5telux5therm18BoundCoolingDeviceE)&gt; getBoundCoolingDevices() const = 0

    - Retrieves the list of cooling device and the associated trip points bound to cooling device in given thermal zone.

- Returns:

    - List of bound cooling device for the given thermal zone.

- inline virtual ~IThermalZone()

    - Destructor of [IThermalZone](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00774)

- class ICoolingDevice

    - [ICoolingDevice](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00775) provides interface to get type of the cooling device, the maximum throttle state and the currently requested throttle state of the cooling device.

Public Functions

- virtual int getId() const = 0

    - Retrieves the identifier of the thermal cooling device.

- Returns:

    - Cooling device identifier

- virtual std::string getDescription() const = 0

    - Retrieves the type of the cooling device.

- Returns:

    - Cooling device type

- virtual int getMaxCoolingLevel() const = 0

    - Retrieves the maximum cooling level of the cooling device.

- Returns:

    - Maximum cooling level of the thermal cooling device

- virtual int getCurrentCoolingLevel() const = 0

    - Retrieves the current cooling level of the cooling device. This value can be between 0 and max cooling level. Max cooling level is different for different cooling devices like fan, processor etc.

- Returns:

    - Current cooling level of the thermal cooling device

- inline virtual ~ICoolingDevice()

    - Destructor of [ICoolingDevice](https://docs.qualcomm.com/doc/80-PF458-2/topic/common.html#a00775)

Last Published: Apr 14, 2026

[Previous Topic
Thermal](https://docs.qualcomm.com/bundle/publicresource/80-PF458-2/topics/thermal.md) [Next Topic
Thermal shutdown management](https://docs.qualcomm.com/bundle/publicresource/80-PF458-2/topics/thermal_shutdown_management.md)