diff --git a/README.md b/README.md index a478dfd..c1c7409 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,11 @@ Code basiert auf den folgenden Beispielen: ## Features * Testet Basic ETH/DHCP Konnektivität - * Testet ob auch ein DNS Server verteilt wird +* Testet ob auch ein DNS Server verteilt wird * Testet PoE (nur An-/Abwesenheit) * Internet Verbindungstest - * Ping zu 1.0.0.1 - * [Windows Variante](https://www.itechtics.com/ncsi/) +* Ping zu 1.0.0.1 +* [Windows Variante](https://www.itechtics.com/ncsi/) ## Display @@ -35,6 +35,6 @@ Features in *kursiv* sind noch unimplementiert |POE| Ausgefüllt -> PoE verfügbar |LNK| Ausgefüllt -> LINK UP |DHCP| Ausgefüllt -> IP wurde per DHCP zugewießen -|DNS| Blinkend -> DNS-IPP wurde von DHCP zugewießen
*Ausgefüllt -> Eine DNS anfrage wurde erfolgreich durchgeführt* +|DNS| Blinkend -> DNS-IPP wurde von DHCP zugewießen
Ausgefüllt -> Eine DNS Anfrage wurde erfolgreich durchgeführt |*PING*| *Ausgefüllt -> Ein Ping wurde an eine öffentliche Adresse erfolgreich durchgeführt* |*HTTP*| *Ausgefüllt -> Es wurde erfolgreich über Port 80/443 eine Verbindung durchgeführt zu einer öffentlichen Adresse* \ No newline at end of file diff --git a/main/main.c b/main/main.c index d3c1a2b..8cd2c99 100644 --- a/main/main.c +++ b/main/main.c @@ -52,6 +52,7 @@ esp_ip4_addr_t ip_addr; esp_ip4_addr_t ip_snm; esp_ip4_addr_t ip_gw; esp_netif_t *eth_netif; +esp_ping_handle_t ping; int dns_resolv = -1; @@ -91,6 +92,30 @@ static void check_resolution(void *arg) } } +//TODO: Implement ping https://github.com/espressif/esp-idf/blob/master/examples/protocols/icmp_echo/main/echo_example_main.c +static void start_icmp_ping() +{ + esp_ping_config_t config = ESP_PING_DEFAULT_CONFIG(); + + config.timeout_ms = 1000; + config.interval_ms = 1000; + config.count = 16; + + config.target_addr = target_addr; + + /* set callback functions */ + esp_ping_callbacks_t cbs = { + .on_ping_success = cmd_ping_on_ping_success, + .on_ping_timeout = cmd_ping_on_ping_timeout, + .on_ping_end = cmd_ping_on_ping_end, + .cb_args = NULL + }; + esp_ping_new_session(&config, &cbs, &ping); + esp_ping_start(ping); + + return 0; +} + static void refresh_display() { char buf[64]; @@ -271,35 +296,6 @@ static void task_signals(void* arg) } } -// void icmp_ping(in_addr_t ip) -// { -// /* convert URL to IP address */ -// ip_addr_t target_addr; -// struct addrinfo hint; -// struct addrinfo *res = NULL; -// memset(&hint, 0, sizeof(hint)); -// memset(&target_addr, 0, sizeof(target_addr)); -// getaddrinfo("www.espressif.com", NULL, &hint, &res); -// struct in_addr addr4 = ((struct sockaddr_in *) (res->ai_addr))->sin_addr; -// inet_addr_to_ip4addr(ip_2_ip4(&target_addr), &addr4); -// freeaddrinfo(res); - -// esp_ping_config_t ping_config = ESP_PING_DEFAULT_CONFIG(); -// ping_config.target_addr = target_addr; // target IP address -// ping_config.count = ESP_PING_COUNT_INFINITE; // ping in infinite mode, esp_ping_stop can stop it - -// /* set callback functions */ -// esp_ping_callbacks_t cbs; -// cbs.on_ping_success = test_on_ping_success; -// cbs.on_ping_timeout = test_on_ping_timeout; -// cbs.on_ping_end = test_on_ping_end; -// cbs.cb_args = "foo"; // arguments that will feed to all callback functions, can be NULL -// cbs.cb_args = eth_event_group; - -// esp_ping_handle_t ping; -// esp_ping_new_session(&ping_config, &cbs, &ping); -// } - #define PIN_PHY_POWER 12 void app_main(void) {