From fe8ecd4962dba52a06e5c336801d214ecc4f25e1 Mon Sep 17 00:00:00 2001
From: Cyril Danilevski <cydanil@gmail.com>
Date: Wed, 7 Feb 2024 19:48:37 +0100
Subject: [PATCH] Wait in setup until ethernet available

---
 esp32_ethernet.cpp | 2 ++
 esp32_ethernet.hpp | 2 +-
 icbm.ino           | 6 ++++++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/esp32_ethernet.cpp b/esp32_ethernet.cpp
index d82c4a7..396de40 100644
--- a/esp32_ethernet.cpp
+++ b/esp32_ethernet.cpp
@@ -5,6 +5,8 @@ We use Ethernet, but reuse much of the networking utilities.
 
 #include "esp32_ethernet.hpp"
 
+bool eth_connected = false;
+
 
 void EthernetEvent(WiFiEvent_t event)
 {
diff --git a/esp32_ethernet.hpp b/esp32_ethernet.hpp
index 1103513..0f87c8a 100644
--- a/esp32_ethernet.hpp
+++ b/esp32_ethernet.hpp
@@ -16,7 +16,7 @@ We use Ethernet, but reuse much of the networking utilities.
 #define ETH_TYPE        ETH_PHY_IP101
 #define ETH_CLK_MODE    ETH_CLOCK_GPIO0_IN
 
-static bool eth_connected = false;
+extern bool eth_connected;
 
 void EthernetEvent(WiFiEvent_t event);
 void connectNetwork();
diff --git a/icbm.ino b/icbm.ino
index 994f17b..18805c1 100644
--- a/icbm.ino
+++ b/icbm.ino
@@ -228,6 +228,7 @@ void onMessage(const SNMP::Message *message, const IPAddress remote, const uint1
 }
 
 unsigned long start;
+extern bool eth_connected;
 
 void setup() {
     Serial.begin(115200);
@@ -236,6 +237,11 @@ void setup() {
     snmp.begin(&udp);
     snmp.onMessage(onMessage);
     // Start
+    while (!eth_connected) {
+        Serial.print("-");
+        delay(100);
+    }
+
     start = millis();
     // MPOD
     SNMP::Message *message = mpod.setup();
-- 
GitLab