Skip to content
Snippets Groups Projects
esp32_ethernet.cpp 1.27 KiB
Newer Older
Cyril Danilevski's avatar
Cyril Danilevski committed
/*
Arduinos are more often used with wifi, and much of the utilities are written with Wifi in mind.
We use Ethernet, but reuse much of the networking utilities.
*/

#include "esp32_ethernet.hpp"

bool eth_connected = false;

Cyril Danilevski's avatar
Cyril Danilevski committed

void EthernetEvent(WiFiEvent_t event)
{
  switch (event) {
    case ARDUINO_EVENT_ETH_START:
      Serial.println("ETH Started");
      ETH.setHostname("esp32-ethernet");
      break;
    case ARDUINO_EVENT_ETH_CONNECTED:
      Serial.println("ETH Connected");
      break;
    case ARDUINO_EVENT_ETH_GOT_IP:
      Serial.print("ETH MAC: ");
      Serial.print(ETH.macAddress());
      Serial.print(", IPv4: ");
      Serial.print(ETH.localIP());
      if (ETH.fullDuplex()) {
        Serial.print(", FULL_DUPLEX");
      }
      Serial.print(", ");
      Serial.print(ETH.linkSpeed());
      Serial.println("Mbps");
      eth_connected = true;
      break;
    case ARDUINO_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH Disconnected");
      eth_connected = false;
      break;
    case ARDUINO_EVENT_ETH_STOP:
      Serial.println("ETH Stopped");
      eth_connected = false;
      break;
    default:
      break;
  }
}

Cyril Danilevski's avatar
Cyril Danilevski committed
void initializeNetwork()
Cyril Danilevski's avatar
Cyril Danilevski committed
{
  WiFi.onEvent(EthernetEvent);
  ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK_MODE);
}