Trident IoT Z-Wave SDK
 
Loading...
Searching...
No Matches
Application Timer
+ Collaboration diagram for Application Timer:

Data Structures

struct  SAppTimer
 

Macros

#define MAX_NUM_APP_TIMERS   12
 
#define MAX_NUM_PERSISTENT_APP_TIMERS   6
 
#define APP_TIMER_RETENTION_REGISTER_RESERVED_COUNT   (MAX_NUM_PERSISTENT_APP_TIMERS + 2)
 

Typedefs

typedef struct SAppTimer SAppTimer
 

Functions

void AppTimerInit (uint8_t iTaskNotificationBitNumber, void *ReceiverTask)
 
void AppTimerSetReceiverTask (void *ReceiverTask)
 
bool AppTimerRegister (SSwTimer *pTimer, bool bAutoReload, void(*pCallback)(SSwTimer *pTimer))
 
bool AppTimerDeepSleepPersistentRegister (SSwTimer *pTimer, bool bAutoReload, void(*pCallback)(SSwTimer *pTimer))
 
ESwTimerStatus AppTimerDeepSleepPersistentStart (SSwTimer *pTimer, uint32_t iTimeout)
 
ESwTimerStatus AppTimerDeepSleepPersistentRestart (SSwTimer *pTimer)
 
ESwTimerStatus AppTimerDeepSleepPersistentStop (SSwTimer *pTimer)
 
void AppTimerNotificationHandler (void)
 
void AppTimerDeepSleepPersistentResetStorage (void)
 
void AppTimerDeepSleepPersistentSaveAll (void)
 
void AppTimerDeepSleepPersistentLoadAll (zpal_reset_reason_t resetReason)
 
uint32_t AppTimerDeepSleepGetFirstRetentionRegister (void)
 
uint32_t AppTimerDeepSleepGetLastRetentionRegister (void)
 
void AppTimerStopAll (void)
 

Detailed Description

Macro Definition Documentation

◆ APP_TIMER_RETENTION_REGISTER_RESERVED_COUNT

#define APP_TIMER_RETENTION_REGISTER_RESERVED_COUNT   (MAX_NUM_PERSISTENT_APP_TIMERS + 2)

◆ MAX_NUM_APP_TIMERS

#define MAX_NUM_APP_TIMERS   12

Max number of application timers

◆ MAX_NUM_PERSISTENT_APP_TIMERS

#define MAX_NUM_PERSISTENT_APP_TIMERS   6

Typedef Documentation

◆ SAppTimer

typedef struct SAppTimer SAppTimer

AppTimer object

Function Documentation

◆ AppTimerDeepSleepGetFirstRetentionRegister()

uint32_t AppTimerDeepSleepGetFirstRetentionRegister ( void )

Get index of first retention register used for saving Deep Sleep persistent app timers.

The retention registers are manipulated with the zpal_retention_register_xx() API.

◆ AppTimerDeepSleepGetLastRetentionRegister()

uint32_t AppTimerDeepSleepGetLastRetentionRegister ( void )

Get index of last retention register used for saving Deep Sleep persistent app timers.

NB: The number of retention registers used depends on how many times AppTimerDeepSleepPersistentRegister() have been called since system startup. It is not safe to use the returned value to locate "free" retention registers unless it is guarantees that all calls to AppTimerDeepSleepPersistentRegister() has been performed.

The retention registers are manipulated with the zpal_retention_register_xx() API.

◆ AppTimerDeepSleepPersistentLoadAll()

void AppTimerDeepSleepPersistentLoadAll ( zpal_reset_reason_t resetReason)

Load SSwTimers after deep sleep hibernate wakeup

Activates callback registered for the timer causing the wakeup

Must be called AFTER AppTimerInit() and AppTimerDeepSleepPersistentRegister()

Parameters
resetReasonReason why the device woke up

◆ AppTimerDeepSleepPersistentRegister()

bool AppTimerDeepSleepPersistentRegister ( SSwTimer * pTimer,
bool bAutoReload,
void(*)(SSwTimer *pTimer) pCallback )

Wrapper for AppTimerRegister to register timers that should be re-loaded after deep sleep hibernate.

In addition to having AppTimerRegister() register the timer with a TimerLiaison this function also marks the timer to survive deep sleep hibernate.

For parameter descriptions

See also
AppTimerRegister.

◆ AppTimerDeepSleepPersistentResetStorage()

void AppTimerDeepSleepPersistentResetStorage ( void )

Clear storage used for persisting application timers during deep sleep hibernate

◆ AppTimerDeepSleepPersistentRestart()

ESwTimerStatus AppTimerDeepSleepPersistentRestart ( SSwTimer * pTimer)

Wrapper for TimerRestart() that ensures the timer status is saved so it can be re-loaded after deep sleep hibernate.

For parameter descriptions

See also
TimerRestart.

◆ AppTimerDeepSleepPersistentSaveAll()

void AppTimerDeepSleepPersistentSaveAll ( void )

Save SSwTimers that should survive deep sleep Hibernate

The number of remaining milliseconds until timeout are saved to the RTCC retention registers for all application timers registered to be persisted during Deep Sleep.

◆ AppTimerDeepSleepPersistentStart()

ESwTimerStatus AppTimerDeepSleepPersistentStart ( SSwTimer * pTimer,
uint32_t iTimeout )

Wrapper for TimerStart() that ensures the timer value is saved so it can be re-loaded after deep sleep hibernate.

For parameter descriptions

See also
TimerStart.

◆ AppTimerDeepSleepPersistentStop()

ESwTimerStatus AppTimerDeepSleepPersistentStop ( SSwTimer * pTimer)

Wrapper for TimerStop() that ensures the timer status is saved so it does not get re-started after deep sleep hibernate.

For parameter descriptions

See also
TimerStop.

◆ AppTimerInit()

void AppTimerInit ( uint8_t iTaskNotificationBitNumber,
void * ReceiverTask )

Initialize AppTimer

Parameters
[in]iTaskNotificationBitNumberNumber defines which bit to use when notifying receiver task of pending timer event (range 0 - 31)
[in]ReceiverTaskHandle to the Application task

◆ AppTimerNotificationHandler()

void AppTimerNotificationHandler ( void )

Must be called from application task when the task notification bit assigned to AppTimer is set.

Method will perform pending callbacks. There is no side effects from calling method when assigned task notification bit was not set.

◆ AppTimerRegister()

bool AppTimerRegister ( SSwTimer * pTimer,
bool bAutoReload,
void(*)(SSwTimer *pTimer) pCallback )

Register a SwTimer to a TimerLiaison. Initial SwTimer configuration is also performed.

Method creates a static FreeRTOS timer from the SwTimer object passed as argument, and registers it as requiring callbacks in the Receiver task. If calling method AppTimerRegister on the same SwTimer object multiple times, all but the first call will be ignored.

Parameters
[in]pTimerPointer to the SwTimer object to register
[in]bAutoReloadEnable timer auto reload on timeout. Configuration of AutoReload cannot be changed after registration.
[in]pCallbackCallback method of type void Callback(SSwTimer* pTimer). Argument may be NULL, in which case no callback is performed.
Return values
trueTimer successfully registered to AppTimer TimerLiaison.
falseAppTimer is full and cannot register any more SwTimers.

◆ AppTimerSetReceiverTask()

void AppTimerSetReceiverTask ( void * ReceiverTask)

Configures the Receiver task of callbacks.

Provided as the AppTimer may be needed for registering SwTimers before the receiver task is created, meaning AppTimerInit is called prior to the Receiver task handle being available. Though not the intention, the receiver task can be changed at run time.

Parameters
[in]ReceiverTaskHandle to the Application task

◆ AppTimerStopAll()

void AppTimerStopAll ( void )

Stops all the running applications timers.