Skip to content

Commit

Permalink
show networkstatus for ETH
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDvP committed Mar 24, 2023
1 parent 4c8426a commit 2da7339
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 25 deletions.
62 changes: 37 additions & 25 deletions lib/framework/NetworkStatus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,53 @@ NetworkStatus::NetworkStatus(AsyncWebServer * server, SecurityManager * security
server->on(NETWORK_STATUS_SERVICE_PATH,
HTTP_GET,
securityManager->wrapRequest(std::bind(&NetworkStatus::networkStatus, this, _1), AuthenticationPredicates::IS_AUTHENTICATED));
WiFi.onEvent(std::bind(&NetworkStatus::WiFiEvent, this, _1));
}

// handles both WiFI and Ethernet
void NetworkStatus::WiFiEvent(WiFiEvent_t event) {
switch (event) {
case ARDUINO_EVENT_ETH_DISCONNECTED:
eth_connected_ = false;
break;

case ARDUINO_EVENT_ETH_GOT_IP:
eth_connected_ = true;
break;

default:
break;
}
}

void NetworkStatus::networkStatus(AsyncWebServerRequest * request) {
AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_NETWORK_STATUS_SIZE);
JsonObject root = response->getRoot();

// bool ethernet_connected = emsesp::EMSESP::system_.ethernet_connected();
wl_status_t wifi_status = WiFi.status();
wl_status_t wifi_status = WiFi.status();

// see if Ethernet is connected
// if (ethernet_connected) {
if (eth_connected_) {
root["status"] = 10; // custom code #10 - ETHERNET_STATUS_CONNECTED
// } else {
} else {
root["status"] = (uint8_t)wifi_status;
// }

// for Wifi
if (wifi_status == WL_CONNECTED) {
}
if (eth_connected_) {
// Ethernet
root["local_ip"] = ETH.localIP().toString();
root["local_ipv6"] = ETH.localIPv6().toString();
root["mac_address"] = ETH.macAddress();
root["subnet_mask"] = ETH.subnetMask().toString();
root["gateway_ip"] = ETH.gatewayIP().toString();
IPAddress dnsIP1 = ETH.dnsIP(0);
IPAddress dnsIP2 = ETH.dnsIP(1);
if (IPUtils::isSet(dnsIP1)) {
root["dns_ip_1"] = dnsIP1.toString();
}
if (IPUtils::isSet(dnsIP2)) {
root["dns_ip_2"] = dnsIP2.toString();
}
} else if (wifi_status == WL_CONNECTED) {
root["local_ip"] = WiFi.localIP().toString();
root["local_ipv6"] = WiFi.localIPv6().toString();
root["mac_address"] = WiFi.macAddress();
Expand All @@ -45,23 +74,6 @@ void NetworkStatus::networkStatus(AsyncWebServerRequest * request) {
if (dnsIP2 != INADDR_NONE) {
root["dns_ip_2"] = dnsIP2.toString();
}
// } else if (ethernet_connected) {
// Ethernet
/*
root["local_ip"] = ETH.localIP().toString();
root["local_ipv6"] = ETH.localIPv6().toString();
root["mac_address"] = ETH.macAddress();
root["subnet_mask"] = ETH.subnetMask().toString();
root["gateway_ip"] = ETH.gatewayIP().toString();
IPAddress dnsIP1 = ETH.dnsIP(0);
IPAddress dnsIP2 = ETH.dnsIP(1);
if (IPUtils::isSet(dnsIP1)) {
root["dns_ip_1"] = dnsIP1.toString();
}
if (IPUtils::isSet(dnsIP2)) {
root["dns_ip_2"] = dnsIP2.toString();
}
*/
}

response->setLength();
Expand Down
2 changes: 2 additions & 0 deletions lib/framework/NetworkStatus.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ class NetworkStatus {

private:
void networkStatus(AsyncWebServerRequest * request);
void WiFiEvent(WiFiEvent_t event);
bool eth_connected_ = false;
};

#endif

0 comments on commit 2da7339

Please sign in to comment.