Network debug statistics API ============================== This chapter describes the debug statistics interface API. ## API Header Using the network debug statistics API, it is possible to collect statistics from the stack in real-time for debugging purposes. You can use this API by including the following header to your application: ``` #include nwk_stats_api.h ``` An overview of the function definitions and the Network statistics structure (`nwk_stats_t`) itself are presented further in this document. ##Initializing protocol stats collection To initialize collection of network statistics in the network (NWK) statistics structure: ``` void protocol_stats_init ( void ) ``` ## Start stats collection To start collecting network statistics in the Network (NWK) statistics structure: ``` void protocol_stats_start ( nwk_stats_t *stats_ptr ) ``` Parameter|Description ---------|----------- `stats_ptr`|A pointer to the statistics structure on application. ## Stop stats collection To stop collecting network statistics in NWK statistics structure: ``` void protocol_stats_stop ( void ) ``` ## Reset stats To reset network statistics to clean slate state, that is, all the statistics counters are set to zero: ``` void protocol_stats_reset ( void ) ``` ## Types of collectable stats Various types of network stats can be collected using the structure `typedef struct nwk_stats_t `. The following statistics can be collected: ### General MAC related stats Member|Description ------|----------- `mac_tx_buffer_overflow`|Provides a count MAC TX queue overflow. `mac_rx_count`|Number of received MAC packets. `mac_tx_count`|Number of transmitted MAC packets. `mac_rx_drop`|Number of dropped MAC packets. ### MAC payload flow Member|Description ------|----------- `mac_tx_bytes`|Number of bytes transmitted. `mac_rx_bytes`|Number of bytes received. `mac_tx_failed`|Number of times a transmission failed. `mac_tx_retry`|Number of times retries were made. `mac_tx_cca_cnt`|Number of times clear channel assessment was made. `mac_tx_failed_cca`|Number of failed CCA attempts. `mac_security_drop`|Number of security packets dropped. ### 6LoWPAN related statistics Member|Description ------|----------- `ip_rx_count`|Number of IP packets received. `ip_tx_count`|Number of IP packets transmitted. `ip_rx_drop`|Number of IP packets dropped. `ip_cksum_error`|IP checksum error count. ### IP payload flow Member|Description ------|----------- `ip_tx_bytes`|Number of bytes transmitted as IP packets. `ip_rx_bytes`|Number of bytes received as IP packets. `ip_routed_up`|Number of bytes routed as IP packets. `ip_no_route`|Number of times an IP route was not found. ### Fragmentation statistics Member|Description ------|----------- `frag_rx_errors`|Fragmentation errors in reception. `frag_tx_errors`|Fragmentation errors in transmission. ### RPL statistics Member|Description ------|----------- `rpl_route_routecost_better_change`|Number of times an RPL parent was changed. `ip_routeloop_detect`|Number of times an RPL IP loop creation was detected. `rpl_memory_overflow`|Total of allocations failed due RPL memory overflow. `rpl_parent_tx_fail`|Number of times transmission to a DODAG parent failed. `rpl_unknown_instance`|Number of times a packet was received with an unknown RPL Instance ID. `rpl_local_repair`|Number of times local repair was initiated. `rpl_global_repair`|Number of times global repair was initiated. `rpl_malformed_message`|Number of malformed RPL messages received. `rpl_time_no_next_hop`|Number of seconds spent with no RPL next hop. `rpl_total_memory`|Total memory currently allocated by RPL. ### Various buffers Member|Description ------|----------- `buf_alloc`|A count of buffer allocation. `buf_headroom_realloc`|A buffer headroom allocation count. `buf_headroom_shuffle`|A buffer headroom shuffling count. `buf_headroom_fail`|A buffer headroom failure count.