Microchip® Advanced Software Framework

rpl.h File Reference
#include "rpl-conf.h"
#include "lib/list.h"
#include "net/ip/uip.h"
#include "net/ipv6/uip-ds6.h"
#include "sys/ctimer.h"

Data Structures

union  rpl_metric_container::metric_object
 
struct  rpl_dag
 
struct  rpl_instance
 
struct  rpl_metric_container
 
struct  rpl_metric_object_energy
 
struct  rpl_of
 
struct  rpl_parent
 
struct  rpl_prefix
 

Macros

#define RPL_DAG_MC_AGGR_ADDITIVE   0
 
#define RPL_DAG_MC_AGGR_MAXIMUM   1
 
#define RPL_DAG_MC_AGGR_MINIMUM   2
 
#define RPL_DAG_MC_AGGR_MULTIPLICATIVE   3
 
#define RPL_DAG_MC_ENERGY   2 /* Node Energy */
 
#define RPL_DAG_MC_ENERGY_ESTIMATION   0
 
#define RPL_DAG_MC_ENERGY_INCLUDED   3
 
#define RPL_DAG_MC_ENERGY_TYPE   1
 
#define RPL_DAG_MC_ENERGY_TYPE_BATTERY   1
 
#define RPL_DAG_MC_ENERGY_TYPE_MAINS   0
 
#define RPL_DAG_MC_ENERGY_TYPE_SCAVENGING   2
 
#define RPL_DAG_MC_ETX   7 /* Expected Transmission Count */
 
#define RPL_DAG_MC_FLAG_C   0x4
 
#define RPL_DAG_MC_FLAG_O   0x2
 
#define RPL_DAG_MC_FLAG_P   0x8
 
#define RPL_DAG_MC_FLAG_R   0x1
 
#define RPL_DAG_MC_HOPCOUNT   3 /* Hop Count */
 
#define RPL_DAG_MC_LATENCY   5 /* Latency */
 
#define RPL_DAG_MC_LC   8 /* Link Color */
 
#define RPL_DAG_MC_LQL   6 /* Link Quality Level */
 
#define RPL_DAG_MC_NONE   0 /* Local identifier for empty MC */
 
#define RPL_DAG_MC_NSA   1 /* Node State and Attributes */
 
#define RPL_DAG_MC_THROUGHPUT   4 /* Throughput */
 

Typedefs

typedef struct rpl_dag rpl_dag_t
 
typedef struct rpl_instance rpl_instance_t
 
typedef struct rpl_metric_container rpl_metric_container_t
 
typedef uint16_t rpl_ocp_t
 
typedef struct rpl_of rpl_of_t
 
typedef struct rpl_parent rpl_parent_t
 
typedef struct rpl_prefix rpl_prefix_t
 
typedef uint16_t rpl_rank_t
 

Enumerations

enum  rpl_mode {
  RPL_MODE_MESH = 0,
  RPL_MODE_FEATHER = 1,
  RPL_MODE_LEAF = 2
}
 RPL modes. More...
 

Functions

void rpl_dag_init (void)
 
rpl_dag_trpl_get_any_dag (void)
 
rpl_instance_trpl_get_instance (uint8_t instance_id)
 
enum rpl_mode rpl_get_mode (void)
 Get the RPL mode. More...
 
uip_ipaddr_trpl_get_parent_ipaddr (rpl_parent_t *nbr)
 
uint16_t rpl_get_parent_link_metric (const uip_lladdr_t *addr)
 
rpl_rank_t rpl_get_parent_rank (uip_lladdr_t *addr)
 
void rpl_init (void)
 
void rpl_insert_header (void)
 
uint8_t rpl_invert_header (void)
 
void rpl_remove_header (void)
 
int rpl_repair_root (uint8_t instance_id)
 
int rpl_set_default_route (rpl_instance_t *instance, uip_ipaddr_t *from)
 
enum rpl_mode rpl_set_mode (enum rpl_mode mode)
 Set the RPL mode. More...
 
int rpl_set_prefix (rpl_dag_t *dag, uip_ipaddr_t *prefix, unsigned len)
 
rpl_dag_trpl_set_root (uint8_t instance_id, uip_ipaddr_t *dag_id)
 
void rpl_update_header_empty (void)
 
int rpl_update_header_final (uip_ipaddr_t *addr)
 
int rpl_verify_header (int)
 
void uip_rpl_input (void)
 

Variables

rpl_of_t RPL_OF
 

#define RPL_DAG_MC_AGGR_ADDITIVE   0
#define RPL_DAG_MC_AGGR_MAXIMUM   1
#define RPL_DAG_MC_AGGR_MINIMUM   2
#define RPL_DAG_MC_AGGR_MULTIPLICATIVE   3
#define RPL_DAG_MC_ENERGY   2 /* Node Energy */

Referenced by dio_input(), and dio_output().

#define RPL_DAG_MC_ENERGY_ESTIMATION   0
#define RPL_DAG_MC_ENERGY_INCLUDED   3
#define RPL_DAG_MC_ENERGY_TYPE   1
#define RPL_DAG_MC_ENERGY_TYPE_BATTERY   1
#define RPL_DAG_MC_ENERGY_TYPE_MAINS   0
#define RPL_DAG_MC_ENERGY_TYPE_SCAVENGING   2
#define RPL_DAG_MC_ETX   7 /* Expected Transmission Count */
#define RPL_DAG_MC_FLAG_C   0x4
#define RPL_DAG_MC_FLAG_O   0x2
#define RPL_DAG_MC_FLAG_P   0x8
#define RPL_DAG_MC_FLAG_R   0x1
#define RPL_DAG_MC_HOPCOUNT   3 /* Hop Count */
#define RPL_DAG_MC_LATENCY   5 /* Latency */
#define RPL_DAG_MC_LC   8 /* Link Color */
#define RPL_DAG_MC_LQL   6 /* Link Quality Level */
#define RPL_DAG_MC_NONE   0 /* Local identifier for empty MC */
#define RPL_DAG_MC_NSA   1 /* Node State and Attributes */
#define RPL_DAG_MC_THROUGHPUT   4 /* Throughput */

typedef struct rpl_dag rpl_dag_t
typedef struct rpl_instance rpl_instance_t
typedef uint16_t rpl_ocp_t
typedef struct rpl_of rpl_of_t
typedef struct rpl_parent rpl_parent_t
typedef struct rpl_prefix rpl_prefix_t
typedef uint16_t rpl_rank_t

enum rpl_mode

RPL modes.

The RPL module can be in either of three modes: mesh mode (RPL_MODE_MESH), feater mode (RPL_MODE_FEATHER), and leaf mode (RPL_MODE_LEAF). In mesh mode, nodes forward data for other nodes, and are reachable by others. In feather mode, nodes can forward data for other nodes, but are not reachable themselves. In leaf mode, nodes do not forward data for others, but are reachable by others.

Enumerator
RPL_MODE_MESH 
RPL_MODE_FEATHER 
RPL_MODE_LEAF 

void uip_rpl_input ( void  )

rpl_of_t RPL_OF