39#ifdef LINK_STATS_CONF_ETX_DIVISOR
40#define LINK_STATS_ETX_DIVISOR LINK_STATS_CONF_ETX_DIVISOR
42#define LINK_STATS_ETX_DIVISOR 128
46#ifdef LINK_STATS_CONF_INIT_ETX_FROM_RSSI
47#define LINK_STATS_INIT_ETX_FROM_RSSI LINK_STATS_CONF_INIT_ETX_FROM_RSSI
49#define LINK_STATS_INIT_ETX_FROM_RSSI 1
53#ifdef LINK_STATS_CONF_ETX_FROM_PACKET_COUNT
54#define LINK_STATS_ETX_FROM_PACKET_COUNT LINK_STATS_CONF_ETX_FROM_PACKET_COUNT
56#define LINK_STATS_ETX_FROM_PACKET_COUNT 0
60#ifdef LINK_STATS_CONF_PACKET_COUNTERS
61#define LINK_STATS_PACKET_COUNTERS LINK_STATS_CONF_PACKET_COUNTERS
63#define LINK_STATS_PACKET_COUNTERS 0
67#ifdef LINK_STATS_CONF_ETX_INIT_MAX
68#define LINK_STATS_ETX_INIT_MAX LINK_STATS_CONF_ETX_INIT_MAX
70#define LINK_STATS_ETX_INIT_MAX 3
74#ifdef LINK_STATS_CONF_RSSI_HIGH
75#define LINK_STATS_RSSI_HIGH LINK_STATS_CONF_RSSI_HIGH
77#define LINK_STATS_RSSI_HIGH -60
81#ifdef LINK_STATS_CONF_RSSI_LOW
82#define LINK_STATS_RSSI_LOW LINK_STATS_CONF_RSSI_LOW
84#define LINK_STATS_RSSI_LOW -90
88#define LINK_STATS_RSSI_UNKNOWN 0x7fff
90typedef uint16_t link_packet_stat_t;
92struct link_packet_counter {
94 link_packet_stat_t num_packets_tx;
96 link_packet_stat_t num_packets_acked;
98 link_packet_stat_t num_packets_rx;
100 link_packet_stat_t num_queue_drops;
106 clock_time_t last_tx_time;
110#if LINK_STATS_ETX_FROM_PACKET_COUNT
115#if LINK_STATS_PACKET_COUNTERS
116 struct link_packet_counter cnt_current;
117 struct link_packet_counter cnt_total;
122const struct link_stats *link_stats_from_lladdr(
const linkaddr_t *lladdr);
124const linkaddr_t *link_stats_get_lladdr(
const struct link_stats *);
126int link_stats_is_fresh(
const struct link_stats *stats);
128void link_stats_reset(
void);
130void link_stats_init(
void);
132void link_stats_packet_sent(
const linkaddr_t *lladdr,
int status,
int numtx);
134void link_stats_input_callback(
const linkaddr_t *lladdr);
Header file for the link-layer address representation.