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#define LINK_STATS_RSSI_UNKNOWN 0x7fff
69typedef uint16_t link_packet_stat_t;
71struct link_packet_counter {
73 link_packet_stat_t num_packets_tx;
75 link_packet_stat_t num_packets_acked;
77 link_packet_stat_t num_packets_rx;
79 link_packet_stat_t num_queue_drops;
85 clock_time_t last_tx_time;
89#if LINK_STATS_ETX_FROM_PACKET_COUNT
94#if LINK_STATS_PACKET_COUNTERS
95 struct link_packet_counter cnt_current;
96 struct link_packet_counter cnt_total;
101const struct link_stats *link_stats_from_lladdr(
const linkaddr_t *lladdr);
103const linkaddr_t *link_stats_get_lladdr(
const struct link_stats *);
105int link_stats_is_fresh(
const struct link_stats *stats);
107void link_stats_reset(
void);
109void link_stats_init(
void);
111void link_stats_packet_sent(
const linkaddr_t *lladdr,
int status,
int numtx);
113void link_stats_input_callback(
const linkaddr_t *lladdr);
Header file for the link-layer address representation.