Trickle Timer Library
Overview
The Trickle timer library implements IETF RFC6206 (Trickle Algorithm).
The Trickle algorithm allows nodes in a lossy shared medium (e.g., low-power and lossy networks) to exchange information in a highly robust, energy efficient, simple, and scalable manner.
API Reference
- group trickle
Trickle algorithm library.
Typedefs
-
typedef void (*net_trickle_cb_t)(struct net_trickle *trickle, bool do_suppress, void *user_data)
Trickle timer callback.
The callback is called after Trickle timeout expires.
- Param trickle:
The trickle context to use.
- Param do_suppress:
Is TX allowed (true) or not (false).
- Param user_data:
The user data given in net_trickle_start() call.
Functions
-
int net_trickle_create(struct net_trickle *trickle, uint32_t Imin, uint8_t Imax, uint8_t k)
Create a Trickle timer.
- Parameters:
trickle – Pointer to Trickle struct.
Imin – Imin configuration parameter in ms.
Imax – Max number of doublings.
k – Redundancy constant parameter. See RFC 6206 for details.
- Returns:
Return 0 if ok and <0 if error.
-
int net_trickle_start(struct net_trickle *trickle, net_trickle_cb_t cb, void *user_data)
Start a Trickle timer.
- Parameters:
trickle – Pointer to Trickle struct.
cb – User callback to call at time T within the current trickle interval
user_data – User pointer that is passed to callback.
- Returns:
Return 0 if ok and <0 if error.
-
int net_trickle_stop(struct net_trickle *trickle)
Stop a Trickle timer.
- Parameters:
trickle – Pointer to Trickle struct.
- Returns:
Return 0 if ok and <0 if error.
-
void net_trickle_consistency(struct net_trickle *trickle)
To be called by the protocol handler when it hears a consistent network transmission.
- Parameters:
trickle – Pointer to Trickle struct.
-
void net_trickle_inconsistency(struct net_trickle *trickle)
To be called by the protocol handler when it hears an inconsistent network transmission.
- Parameters:
trickle – Pointer to Trickle struct.
-
static inline bool net_trickle_is_running(struct net_trickle *trickle)
Check if the Trickle timer is running or not.
- Parameters:
trickle – Pointer to Trickle struct.
- Returns:
Return True if timer is running and False if not.
-
struct net_trickle
- #include <trickle.h>
The variable names are taken directly from RFC 6206 when applicable.
Note that the struct members should not be accessed directly but only via the Trickle API.
Public Members
-
uint32_t I
Current interval size.
-
uint32_t Imin
Min interval size in ms.
-
uint32_t Istart
Start of the interval in ms.
-
uint32_t Imax_abs
Max interval size in ms (not doublings)
-
uint8_t Imax
Max number of doublings.
-
uint8_t k
Redundancy constant.
-
uint8_t c
Consistency counter.
-
bool double_to
Flag telling if the internval is doubled.
-
struct k_work_delayable timer
Internal timer struct.
-
net_trickle_cb_t cb
Callback to be called when timer expires.
-
void *user_data
User specific opaque data.
-
uint32_t I
-
typedef void (*net_trickle_cb_t)(struct net_trickle *trickle, bool do_suppress, void *user_data)