TEMPDRV Temperature Driver
Description
Modules |
|
Error Codes | |
TEMPDRV error codes.
|
|
Functions |
|
void | TEMPDRV_IRQHandler (void) |
TEMPDRV IRQ Handler.
|
|
Ecode_t | TEMPDRV_Init (void) |
Initialize the TEMP driver.
|
|
Ecode_t | TEMPDRV_DeInit (void) |
De-initialize the TEMP driver.
|
|
Ecode_t | TEMPDRV_Enable (bool enable) |
Enable or disable the TEMP driver.
|
|
uint8_t | TEMPDRV_GetActiveCallbacks (TEMPDRV_LimitType_t limit) |
Get the number of active callbacks for a limit.
|
|
int8_t | TEMPDRV_GetTemp (void) |
Get the current temperature.
|
|
Ecode_t | TEMPDRV_RegisterCallback (int8_t temp, TEMPDRV_LimitType_t limit, TEMPDRV_Callback_t callback) |
Register a callback in the TEMP driver.
|
|
Ecode_t | TEMPDRV_UnregisterCallback ( TEMPDRV_Callback_t callback) |
Unregister a callback in the TEMP driver.
|
|
void | EMU_IRQHandler (void) |
EMU Interrupt Handler.
|
|
Typedefs |
|
typedef void(* | TEMPDRV_Callback_t ) (int8_t temp, TEMPDRV_LimitType_t limit) |
TEMPDRV temperature limit callback function.
|
|
Enumerations |
|
enum |
TEMPDRV_LimitType
{
TEMPDRV_LIMIT_LOW = 0, TEMPDRV_LIMIT_HIGH = 1 } |
Temperature limit.
|
|
Function Documentation
◆ TEMPDRV_IRQHandler()
void TEMPDRV_IRQHandler | ( | void |
|
) |
TEMPDRV IRQ Handler.
This IRQ Handler should be called from within the EMU_IRQHandler in order to enable TEMPDRV callbacks. This is included by default with EMU_CUSTOM_IRQ_HANDLER defined as false.
◆ TEMPDRV_Init()
Ecode_t TEMPDRV_Init | ( | void |
|
) |
Initialize the TEMP driver.
This will clear all the registered callbacks and enable the EMU IRQ in the NVIC. Calling this function will also enable the EMU_E201 errata fix for first generation Pearl, Jade and EFR32 devices.
- Returns
- ECODE_EMDRV_TEMPDRV_OK on success.
◆ TEMPDRV_DeInit()
Ecode_t TEMPDRV_DeInit | ( | void |
|
) |
De-initialize the TEMP driver.
This will clear all the registered callbacks and disable the EMU IRQ in the NVIC.
- Returns
- ECODE_EMDRV_TEMPDRV_OK on success.
◆ TEMPDRV_Enable()
Ecode_t TEMPDRV_Enable | ( | bool |
enable
|
) |
Enable or disable the TEMP driver.
- Parameters
-
[in] enable
true to enable the TEMP driver, false to disable the TEMP driver.
- Returns
- ECODE_EMDRV_TEMPDRV_OK on success.
◆ TEMPDRV_GetActiveCallbacks()
uint8_t TEMPDRV_GetActiveCallbacks | ( | TEMPDRV_LimitType_t |
limit
|
) |
Get the number of active callbacks for a limit.
- Parameters
-
[in] limit
Limit type, refer to TEMPDRV_LimitType .
- Returns
- Number of active callbacks
◆ TEMPDRV_GetTemp()
int8_t TEMPDRV_GetTemp | ( | void |
|
) |
Get the current temperature.
- Returns
- Current temperature in degrees Celsius.
◆ TEMPDRV_RegisterCallback()
Ecode_t TEMPDRV_RegisterCallback | ( | int8_t |
temp,
|
TEMPDRV_LimitType_t |
limit,
|
||
TEMPDRV_Callback_t |
callback
|
||
) |
Register a callback in the TEMP driver.
This function is used for registering an application callback when the temperature changes. Note that when calling this function an application must specify the direction of the temperature change, use TEMPDRV_LIMIT_LOW to receive a callback when the temperature drops below the specified temp and use TEMPDRV_LIMIT_HIGH to receive a callback when the temperature increases above the specified temp.
- Note
- The user registered callback will be cleared once it's called. This means that the callback functions are not persistent, and have to be managed by the application. This feature can be used to implement a user controlled hysteresis. So for instance to register a callback at 50°C with a 5°C hysteresis you can first register a callback at 50°C or above using this function, and when the callback fires you can use this function again to register a callback when the temperature decreases to 45°C or below. Each time a callback fires you only need to call the TEMPDRV_RegisterCallback() function, there is no need to call TEMPDRV_UnregisterCallback() .
It's important to know the current temperature before calling this function. Attempting to register a callback that would fire immediately is not supported and will result in a return value of ECODE_EMDRV_TEMPDRV_BAD_LIMIT . Examples of an illegal scenario would be to register a callback for a temperature that is higher than the current temperature and with a limit set to TEMPDRV_LIMIT_LOW .
- Parameters
-
[in] temp
Temperature to trigger on given in number of °C. [in] limit
Limit type, refer to TEMPDRV_LimitType . Using TEMPDRV_LIMIT_LOW will register a callback when the EMU temperature reaches temp
°C or lower, and using TEMPDRV_LIMIT_HIGH will register a callback when the EMU temperature reachestemp
°C or higher.[in] callback
User defined function to call when temperature threshold is reached or passed.
- Returns
-
- ECODE_EMDRV_TEMPDRV_OK on success.
- ECODE_EMDRV_TEMPDRV_PARAM_ERROR if the callback is NULL.
- ECODE_EMDRV_TEMPDRV_NO_INIT if the user has forgot to call TEMPDRV_Init() before attempting to register a callback.
-
ECODE_EMDRV_TEMPDRV_BAD_LIMIT
is returned if
temp
is below the current temperature andlimit
is TEMPDRV_LIMIT_LOW . It is also returned iftemp
is above the current temperature andlimit
is TEMPDRV_LIMIT_HIGH .
-
ECODE_EMDRV_TEMPDRV_DUP_TEMP
is returned if a duplicate callback is detected. A duplicate callback is if you attempt to register a new callback with the same
temp
and the samelimit
as some already registered callback.
◆ TEMPDRV_UnregisterCallback()
Ecode_t TEMPDRV_UnregisterCallback | ( | TEMPDRV_Callback_t |
callback
|
) |
Unregister a callback in the TEMP driver.
- Parameters
-
[in] callback
Callback to unregister.
- Returns
-
- ECODE_EMDRV_TEMPDRV_OK on success.
- ECODE_EMDRV_TEMPDRV_PARAM_ERROR if the callback is NULL.
- ECODE_EMDRV_TEMPDRV_NO_CALLBACK if the callback was not found.
◆ EMU_IRQHandler()
void EMU_IRQHandler | ( | void |
|
) |
EMU Interrupt Handler.
The EMU_IRQHandler provided by TEMPDRV will call TEMPDRV_IRQHandler . Configure EMU_CUSTOM_IRQ_HANDLER = true if the application wants to implement its own EMU_IRQHandler. This is typically needed if one of the non-temperature related EMU interrupt flags are in use.
Typedef Documentation
◆ TEMPDRV_Callback_t
typedef void(* TEMPDRV_Callback_t) (int8_t temp, TEMPDRV_LimitType_t limit) |
TEMPDRV temperature limit callback function.
This callback function is called from interrupt context. The callback function is called when the current temperature is equal to or exceeds one of the temperature limits that have been registered with the driver.
- Parameters
-
[in] temp
The current temperature at the time when the EMU temperature triggers an interrupt. Note that this is not necessarily the same temperature as was specified when registering a callback. [in] limit
The upper/lower limit reached
Enumeration Type Documentation
◆ TEMPDRV_LimitType
enum TEMPDRV_LimitType |