Thermal
#include <thermal.h>
Summary
Enumerations |
|
---|---|
AThermalStatus{
|
enum Thermal status used in function AThermal_getCurrentThermalStatus and AThermal_StatusCallback. |
Typedefs |
|
---|---|
AThermalManager
|
typedefstruct AThermalManager
An opaque type representing a handle to a thermal manager. |
AThermal_StatusCallback)(void *data, AThermalStatus status)
|
typedefvoid(*
Prototype of the function that is called when thermal status changes. |
Functions |
|
---|---|
AThermal_acquireManager()
|
Acquire an instance of the thermal manager.
|
AThermal_getCurrentThermalStatus(AThermalManager *manager)
|
Gets the current thermal status.
|
AThermal_getThermalHeadroom(AThermalManager *manager, int forecastSeconds)
|
float
Provides an estimate of how much thermal headroom the device currently has before hitting severe throttling.
|
AThermal_registerThermalStatusListener(AThermalManager *manager, AThermal_StatusCallback callback, void *data)
|
int
Register the thermal status listener for thermal status change.
|
AThermal_releaseManager(AThermalManager *manager)
|
void
Release the thermal manager pointer acquired via AThermal_acquireManager.
|
AThermal_unregisterThermalStatusListener(AThermalManager *manager, AThermal_StatusCallback callback, void *data)
|
int
Unregister the thermal status listener previously resgistered.
|
Enumerations
AThermalStatus
AThermalStatus
Thermal status used in function AThermal_getCurrentThermalStatus and AThermal_StatusCallback.
Typedefs
AThermalManager
struct AThermalManager AThermalManager
An opaque type representing a handle to a thermal manager.
An instance of thermal manager must be acquired prior to using thermal status APIs and must be released after use.
To use:
- Create a new thermal manager instance by calling the AThermal_acquireManager function.
- Get current thermal status with AThermal_getCurrentThermalStatus.
- Register a thermal status listener with AThermal_registerThermalStatusListener.
- Unregister a thermal status listener with AThermal_unregisterThermalStatusListener.
- Release the thermal manager instance with AThermal_releaseManager.
AThermal_StatusCallback
void(* AThermal_StatusCallback)(void *data, AThermalStatus status)
Prototype of the function that is called when thermal status changes.
It's passed the updated thermal status as parameter, as well as the pointer provided by the client that registered a callback.
Functions
AThermal_acquireManager
AThermalManager * AThermal_acquireManager()
Acquire an instance of the thermal manager.
This must be freed using AThermal_releaseManager.
Available since API level 30.
Details | |
---|---|
Returns |
manager instance on success, nullptr on failure.
|
AThermal_getCurrentThermalStatus
AThermalStatus AThermal_getCurrentThermalStatus( AThermalManager *manager )
Gets the current thermal status.
Available since API level 30.
Details | |||
---|---|---|---|
Parameters |
|
||
Returns |
current thermal status, ATHERMAL_STATUS_ERROR on failure.
|
AThermal_getThermalHeadroom
float AThermal_getThermalHeadroom( AThermalManager *manager, int forecastSeconds )
Provides an estimate of how much thermal headroom the device currently has before hitting severe throttling.
Note that this only attempts to track the headroom of slow-moving sensors, such as the skin temperature sensor. This means that there is no benefit to calling this function more frequently than about once per second, and attempted to call significantly more frequently may result in the function returning
NaN.
In addition, in order to be able to provide an accurate forecast, the system does not attempt to forecast until it has multiple temperature samples from which to extrapolate. This should only take a few seconds from the time of the first call, but during this time, no forecasting will occur, and the current headroom will be returned regardless of the value of
forecastSeconds.
The value returned is a non-negative float that represents how much of the thermal envelope is in use (or is forecasted to be in use). A value of 1.0 indicates that the device is (or will be) throttled at ATHERMAL_STATUS_SEVERE. Such throttling can affect the CPU, GPU, and other subsystems. Values may exceed 1.0, but there is no implied mapping to specific thermal levels beyond that point. This means that values greater than 1.0 may correspond to ATHERMAL_STATUS_SEVERE, but may also represent heavier throttling.
A value of 0.0 corresponds to a fixed distance from 1.0, but does not correspond to any particular thermal status or temperature. Values on (0.0, 1.0] may be expected to scale linearly with temperature, though temperature changes over time are typically not linear. Negative values will be clamped to 0.0 before returning.
Available since API level 31.
Details | |||||
---|---|---|---|---|---|
Parameters |
|
||||
Returns |
a value greater than equal to 0.0, where 1.0 indicates the SEVERE throttling threshold, as described above. Returns NaN if the device does not support this functionality or if this function is called significantly faster than once per second.
|
AThermal_registerThermalStatusListener
int AThermal_registerThermalStatusListener( AThermalManager *manager, AThermal_StatusCallback callback, void *data )
Register the thermal status listener for thermal status change.
Available since API level 30.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameters |
|
||||||
Returns |
0 on success EINVAL if the listener and data pointer were previously added and not removed. EPERM if the required permission is not held. EPIPE if communication with the system service has failed.
|
AThermal_releaseManager
void AThermal_releaseManager( AThermalManager *manager )
Release the thermal manager pointer acquired via AThermal_acquireManager.
Available since API level 30.
Details | |||
---|---|---|---|
Parameters |
|
AThermal_unregisterThermalStatusListener
int AThermal_unregisterThermalStatusListener( AThermalManager *manager, AThermal_StatusCallback callback, void *data )
Unregister the thermal status listener previously resgistered.
Available since API level 30.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameters |
|
||||||
Returns |
0 on success EINVAL if the listener and data pointer were not previously added. EPERM if the required permission is not held. EPIPE if communication with the system service has failed.
|