From 88222e77fc21c4deebcb85f2b38a665693d8bae4 Mon Sep 17 00:00:00 2001 From: movsb Date: Sat, 22 Apr 2023 21:56:33 +0800 Subject: [PATCH] examples: avoid the divide by zero error --- examples/protocols/icmp_echo/main/echo_example_main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/examples/protocols/icmp_echo/main/echo_example_main.c b/examples/protocols/icmp_echo/main/echo_example_main.c index 18a3b148b8..02cc26582b 100644 --- a/examples/protocols/icmp_echo/main/echo_example_main.c +++ b/examples/protocols/icmp_echo/main/echo_example_main.c @@ -50,11 +50,18 @@ static void cmd_ping_on_ping_end(esp_ping_handle_t hdl, void *args) uint32_t transmitted; uint32_t received; uint32_t total_time_ms; + uint32_t loss; + esp_ping_get_profile(hdl, ESP_PING_PROF_REQUEST, &transmitted, sizeof(transmitted)); esp_ping_get_profile(hdl, ESP_PING_PROF_REPLY, &received, sizeof(received)); esp_ping_get_profile(hdl, ESP_PING_PROF_IPADDR, &target_addr, sizeof(target_addr)); esp_ping_get_profile(hdl, ESP_PING_PROF_DURATION, &total_time_ms, sizeof(total_time_ms)); - uint32_t loss = (uint32_t)((1 - ((float)received) / transmitted) * 100); + + if (transmitted > 0) { + loss = (uint32_t)((1 - ((float)received) / transmitted) * 100); + } else { + loss = 0; + } if (IP_IS_V4(&target_addr)) { printf("\n--- %s ping statistics ---\n", inet_ntoa(*ip_2_ip4(&target_addr))); } else {