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)