Timeout manager

Timeout manager allows application to call specific function at desired time. It is used in middleware (and can be used by application too) to poll active connections.


Callback function is called from processing thread. It is not allowed to call any blocking API function from it.

When application registers timeout, it needs to set timeout, callback function and optional user argument. When timeout elapses, GSM middleware will call timeout callback.

This feature can be considered as single-shot software timer.


Timeout manager.


typedef void (*lwgsm_timeout_fn)(void *arg)

Timeout callback function prototype.

Param arg

[in] Custom user argument


lwgsmr_t lwgsm_timeout_add(uint32_t time, lwgsm_timeout_fn fn, void *arg)

Add new timeout to processing list.

  • time[in] Time in units of milliseconds for timeout execution

  • fn[in] Callback function to call when timeout expires

  • arg[in] Pointer to user specific argument to call when timeout callback function is executed


lwgsmOK on success, member of lwgsmr_t enumeration otherwise

lwgsmr_t lwgsm_timeout_remove(lwgsm_timeout_fn fn)

Remove callback from timeout list.


fn[in] Callback function to identify timeout to remove


lwgsmOK on success, member of lwgsmr_t enumeration otherwise

struct lwgsm_timeout_t
#include <lwgsm_types.h>

Timeout structure.

Public Members

struct lwgsm_timeout *next

Pointer to next timeout entry

uint32_t time

Time difference from previous entry

void *arg

Argument to pass to callback function

lwgsm_timeout_fn fn

Callback function for timeout