| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -25,6 +25,7 @@ void ahoyeth::setup(settings_t *config, uint32_t *utcTimestamp, OnNetworkCB onNe | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mUtcTimestamp = utcTimestamp; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mOnNetworkCB = onNetworkCB; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mOnTimeCB = onTimeCB; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mEthConnected = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    Serial.flush(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    WiFi.onEvent([this](WiFiEvent_t event, arduino_event_info_t info) -> void { this->onEthernetEvent(event, info); }); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -33,7 +34,8 @@ void ahoyeth::setup(settings_t *config, uint32_t *utcTimestamp, OnNetworkCB onNe | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(CONFIG_IDF_TARGET_ESP32S3) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mEthSpi.begin(DEF_ETH_MISO_PIN, DEF_ETH_MOSI_PIN, DEF_ETH_SCK_PIN, DEF_ETH_CS_PIN, DEF_ETH_IRQ_PIN, DEF_ETH_RST_PIN); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ETH.begin(DEF_ETH_MISO_PIN, DEF_ETH_MOSI_PIN, DEF_ETH_SCK_PIN, DEF_ETH_CS_PIN, DEF_ETH_IRQ_PIN, ETH_SPI_CLOCK_MHZ, ETH_SPI_HOST); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    //ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER, ETH_PHY_MDC, ETH_PHY_MDIO, ETH_PHY_TYPE, ETH_CLK_MODE);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER, ETH_PHY_MDC, DEF_ETH_MOSI_PIN, ETH_PHY_TYPE, ETH_CLK_MODE); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if(mConfig->sys.ip.ip[0] != 0) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -130,7 +132,7 @@ void ahoyeth::welcome(String ip, String mode) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void ahoyeth::onEthernetEvent(WiFiEvent_t event, arduino_event_info_t info) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    AWS_LOG(F("[ETH]: Got event...")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    DPRINTLN(DBG_VERBOSE, F("[ETH]: Got event...")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    switch (event) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#if ( ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) && ( ARDUINO_ESP32_GIT_VER != 0x46d5afb1 ) ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // For breaking core v2.0.0
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -138,7 +140,7 @@ void ahoyeth::onEthernetEvent(WiFiEvent_t event, arduino_event_info_t info) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // compared to the old system_event_id_t, now in tools/sdk/esp32/include/esp_event/include/esp_event_legacy.h
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // You can preserve the old enum order and just adding new items to do no harm
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case ARDUINO_EVENT_ETH_START: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        AWS_LOG(F("\nETH Started")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        DPRINTLN(DBG_INFO, F("\nETH Started")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //set eth hostname here
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if(String(mConfig->sys.deviceName) != "") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ETH.setHostname(mConfig->sys.deviceName); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -147,26 +149,30 @@ void ahoyeth::onEthernetEvent(WiFiEvent_t event, arduino_event_info_t info) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case ARDUINO_EVENT_ETH_CONNECTED: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        AWS_LOG(F("ETH Connected")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        DPRINTLN(DBG_INFO, F("ETH Connected")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case ARDUINO_EVENT_ETH_GOT_IP: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (!ESP32_W5500_eth_connected) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (!mEthConnected) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DPRINT(DBG_INFO, F("ETH MAC: ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            #if defined (CONFIG_IDF_TARGET_ESP32S3) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            AWS_LOG3(F("ETH MAC: "), mEthSpi.macAddress(), F(", IPv4: "), ETH.localIP()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINT(mEthSpi.macAddress()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            #else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            AWS_LOG3(F("ETH MAC: "), ETH.macAddress(), F(", IPv4: "), ETH.localIP()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINT(ETH.macAddress()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINT(F(", IPv4: ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINTLN(String(ETH.localIP())); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (ETH.fullDuplex()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                AWS_LOG0(F("FULL_DUPLEX, ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                DPRINTLN(DBG_INFO, F("FULL_DUPLEX, ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                AWS_LOG0(F("HALF_DUPLEX, ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                DPRINTLN(DBG_INFO, F("HALF_DUPLEX, ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            AWS_LOG1(ETH.linkSpeed(), F("Mbps")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DPRINT(DBG_INFO, String(ETH.linkSpeed())); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINTLN(F("Mbps")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ESP32_W5500_eth_connected = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            mEthConnected = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            mOnNetworkCB(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (!MDNS.begin(mConfig->sys.deviceName)) { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -179,15 +185,15 @@ void ahoyeth::onEthernetEvent(WiFiEvent_t event, arduino_event_info_t info) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case ARDUINO_EVENT_ETH_DISCONNECTED: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      AWS_LOG("ETH Disconnected"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ESP32_W5500_eth_connected = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      DPRINTLN(DBG_INFO, "ETH Disconnected"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      mEthConnected = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      mUdp.close(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      mOnNetworkCB(false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case ARDUINO_EVENT_ETH_STOP: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      AWS_LOG("\nETH Stopped"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ESP32_W5500_eth_connected = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      DPRINTLN(DBG_INFO, "\nETH Stopped"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      mEthConnected = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      mUdp.close(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      mOnNetworkCB(false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      break; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -200,7 +206,7 @@ void ahoyeth::onEthernetEvent(WiFiEvent_t event, arduino_event_info_t info) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // compared to the old system_event_id_t, now in tools/sdk/esp32/include/esp_event/include/esp_event_legacy.h
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // You can preserve the old enum order and just adding new items to do no harm
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case SYSTEM_EVENT_ETH_START: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        AWS_LOG(F("\nETH Started")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        DPRINTLN(DBG_INFO, F("\nETH Started")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //set eth hostname here
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if(String(mConfig->sys.deviceName) != "") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ETH.setHostname(mConfig->sys.deviceName); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -209,20 +215,24 @@ void ahoyeth::onEthernetEvent(WiFiEvent_t event, arduino_event_info_t info) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case SYSTEM_EVENT_ETH_CONNECTED: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        AWS_LOG(F("ETH Connected")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        DPRINTLN(DBG_INFO, F("ETH Connected")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case SYSTEM_EVENT_ETH_GOT_IP: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (!ESP32_W5500_eth_connected) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            AWS_LOG3(F("ETH MAC: "), ETH.macAddress(), F(", IPv4: "), ETH.localIP()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DPRINT(DBG_INFO, F("ETH MAC: ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINT(ETH.macAddress()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINT(F(", IPv4: ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINTLN(ETH.localIP()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (ETH.fullDuplex()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                AWS_LOG0(F("FULL_DUPLEX, ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                DPRINTLN(DBG_INFO, F("FULL_DUPLEX, ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                AWS_LOG0(F("HALF_DUPLEX, ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                DPRINTLN(DBG_INFO, F("HALF_DUPLEX, ")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            AWS_LOG1(ETH.linkSpeed(), F("Mbps")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DPRINT(DBG_INFO, ETH.linkSpeed()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DBGPRINTLN(F("Mbps")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ESP32_W5500_eth_connected = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            mOnNetworkCB(true); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -237,14 +247,14 @@ void ahoyeth::onEthernetEvent(WiFiEvent_t event, arduino_event_info_t info) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case SYSTEM_EVENT_ETH_DISCONNECTED: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        AWS_LOG("ETH Disconnected"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        DPRINT(DBG_INFO, F("ETH Disconnected")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ESP32_W5500_eth_connected = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        mUdp.close(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        mOnNetworkCB(false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    case SYSTEM_EVENT_ETH_STOP: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        AWS_LOG("\nETH Stopped"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        DPRINT(DBG_INFO, F("ETH Stopped")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ESP32_W5500_eth_connected = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        mUdp.close(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        mOnNetworkCB(false); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |