35
35
#endif // ETHERNET_SPI_USE_SPI
36
36
#if ETHERNET_SPI_USE_SPI2
37
37
#define ETH_SPI SPI2
38
- #endif // ETHERNET_SPI_USE_SPI2
38
+ #endif // ETHERNET_SPI_USE_SPI2
39
39
#ifndef ETH_SPI
40
40
#define ETH_SPI SPI
41
41
#endif // ETH_SPI
@@ -102,9 +102,9 @@ bool EthConfig::begin(int8_t& espMode) {
102
102
phytype = ETH_PHY_KSZ8081;
103
103
}
104
104
esp3d_log (" ETH PHY Type %d" , phytype);
105
- _started = ETH.begin (phytype, ESP3D_ETH_PHY_ADDR,
106
- ESP3D_ETH_PHY_POWER_PIN, ESP3D_ETH_PHY_MDC_PIN ,
107
- ESP3D_ETH_PHY_MDIO_PIN, ESP3D_ETH_CLK_MODE_PIN);
105
+ _started = ETH.begin (phytype, ESP3D_ETH_PHY_ADDR, ESP3D_ETH_PHY_POWER_PIN,
106
+ ESP3D_ETH_PHY_MDC_PIN, ESP3D_ETH_PHY_MDIO_PIN ,
107
+ ESP3D_ETH_CLK_MODE_PIN);
108
108
#endif // ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_TLK110 || ESP3D_ETH_PHY_TYPE ==
109
109
// TYPE_ETH_PHY_RTL8201 || ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_DP83848 ||
110
110
// ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_KSZ8041 || ESP3D_ETH_PHY_TYPE ==
@@ -113,7 +113,7 @@ bool EthConfig::begin(int8_t& espMode) {
113
113
esp3d_log (" ETH spi PHY Type %d" , ESP3D_ETH_PHY_TYPE);
114
114
ETH_SPI.begin (ETH_SPI_SCK, ETH_SPI_MISO, ETH_SPI_MOSI);
115
115
_started = ETH.begin (ETH_PHY_W5500, ESP3D_ETH_PHY_ADDR, ETH_PHY_CS,
116
- ETH_PHY_IRQ, ETH_PHY_RST, ETH_SPI);
116
+ ETH_PHY_IRQ, ETH_PHY_RST, ETH_SPI);
117
117
#endif // ESP3D_ETH_PHY_TYPE == TYPE_ETH_PHY_W5500
118
118
119
119
if (_started) {
@@ -155,16 +155,34 @@ bool EthConfig::begin(int8_t& espMode) {
155
155
ESP3DClientType::system,
156
156
ESP3DAuthenticationLevel::admin);
157
157
}
158
+
158
159
res = true ;
159
160
}
160
161
}
161
- // Static IP or DHCP client ?
162
- if ((ESP3DSettings::readByte (ESP_ETH_STA_IP_MODE) != DHCP_MODE)) {
163
- esp3d_log (" Show IP" );
164
- esp3d_commands.dispatch (ETH.localIP ().toString ().c_str (),
165
- ESP3DClientType::all_clients, no_id,
166
- ESP3DMessageType::unique, ESP3DClientType::system,
167
- ESP3DAuthenticationLevel::admin);
162
+ if (res) {
163
+ // Static IP or DHCP client ?
164
+ if ((ESP3DSettings::readByte (ESP_ETH_STA_IP_MODE) == DHCP_MODE)) {
165
+ uint64_t start = millis ();
166
+ String ip = ETH.localIP ().toString ();
167
+ esp3d_log (" IP" );
168
+ esp3d_log (" Waiting for IP" );
169
+ while (millis () - start < 10000 && ip == " 0.0.0.0" ) {
170
+ ip = ETH.localIP ().toString ();
171
+ ESP3DHal::wait (100 );
172
+ }
173
+ if (ip != " 0.0.0.0" ) {
174
+ esp3d_log (" Show IP" );
175
+ esp3d_commands.dispatch (
176
+ ETH.localIP ().toString ().c_str (), ESP3DClientType::all_clients,
177
+ no_id, ESP3DMessageType::unique, ESP3DClientType::system,
178
+ ESP3DAuthenticationLevel::admin);
179
+ } else {
180
+ esp3d_log_e (" Failed to get IP" );
181
+ res = false ;
182
+ }
183
+ }
184
+ } else {
185
+ esp3d_log_e (" Failed starting ethernet" );
168
186
}
169
187
170
188
return res;
0 commit comments