1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-26 06:53:52 +01:00

Merge pull request #11092 from benpicco/rssi_ping

shell_commands: include RSSI in ping output
This commit is contained in:
Marian Buschsieweke 2019-03-15 13:51:22 +01:00 committed by GitHub
commit 50e939e808
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -77,7 +77,7 @@ static void _usage(char *cmdname);
static int _configure(int argc, char **argv, _ping_data_t *data);
static void _pinger(_ping_data_t *data);
static void _print_reply(_ping_data_t *data, gnrc_pktsnip_t *icmpv6,
ipv6_addr_t *from, unsigned hoplimit);
ipv6_addr_t *from, unsigned hoplimit, int16_t rssi);
static void _handle_reply(_ping_data_t *data, gnrc_pktsnip_t *pkt);
static int _finish(_ping_data_t *data);
@ -322,7 +322,8 @@ error_exit:
}
static void _print_reply(_ping_data_t *data, gnrc_pktsnip_t *icmpv6,
ipv6_addr_t *from, unsigned hoplimit)
ipv6_addr_t *from, unsigned hoplimit,
int16_t rssi)
{
icmpv6_echo_t *icmpv6_hdr = icmpv6->data;
@ -362,6 +363,9 @@ static void _print_reply(_ping_data_t *data, gnrc_pktsnip_t *icmpv6,
}
printf("%u bytes from %s: icmp_seq=%u ttl=%u", (unsigned)icmpv6->size,
from_str, recv_seq, hoplimit);
if (rssi) {
printf(" rssi=%"PRId16" dBm", rssi);
}
if (data->datalen >= sizeof(uint32_t)) {
printf(" time=%lu.%03lu ms", (long unsigned)triptime / 1000,
(long unsigned)triptime % 1000);
@ -372,9 +376,11 @@ static void _print_reply(_ping_data_t *data, gnrc_pktsnip_t *icmpv6,
static void _handle_reply(_ping_data_t *data, gnrc_pktsnip_t *pkt)
{
gnrc_pktsnip_t *ipv6, *icmpv6;
gnrc_pktsnip_t *netif, *ipv6, *icmpv6;
gnrc_netif_hdr_t *netif_hdr;
ipv6_hdr_t *ipv6_hdr;
netif = gnrc_pktsnip_search_type(pkt, GNRC_NETTYPE_NETIF);
ipv6 = gnrc_pktsnip_search_type(pkt, GNRC_NETTYPE_IPV6);
icmpv6 = gnrc_pktsnip_search_type(pkt, GNRC_NETTYPE_ICMPV6);
if ((ipv6 == NULL) || (icmpv6 == NULL)) {
@ -382,7 +388,8 @@ static void _handle_reply(_ping_data_t *data, gnrc_pktsnip_t *pkt)
return;
}
ipv6_hdr = ipv6->data;
_print_reply(data, icmpv6, &ipv6_hdr->src, ipv6_hdr->hl);
netif_hdr = netif ? netif->data : NULL;
_print_reply(data, icmpv6, &ipv6_hdr->src, ipv6_hdr->hl, netif_hdr ? netif_hdr->rssi : 0);
#ifdef MODULE_GNRC_IPV6_NIB
/* successful ping to neighbor (NIB handles case if ipv6->src is not a
* neighbor) can be taken as upper-layer hint for reachability: