@@ -45,7 +45,6 @@ extern void add_esp_interface_netif(esp_interface_t interface, esp_netif_t* esp_
45
45
46
46
ETHClass::ETHClass (uint8_t eth_index)
47
47
:_eth_started(false )
48
- ,_use_static_ip(false )
49
48
,_eth_handle(NULL )
50
49
,_esp_netif(NULL )
51
50
,_eth_index(eth_index)
@@ -616,7 +615,6 @@ bool ETHClass::begin(eth_phy_type_t type, uint8_t phy_addr, int cs, int irq, int
616
615
void ETHClass::end (void )
617
616
{
618
617
_eth_started = false ;
619
- _use_static_ip = false ;
620
618
621
619
if (_esp_netif != NULL ){
622
620
esp_netif_destroy (_esp_netif);
@@ -704,53 +702,52 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I
704
702
}
705
703
esp_err_t err = ESP_OK;
706
704
esp_netif_ip_info_t info;
705
+ esp_netif_dns_info_t d1;
706
+ esp_netif_dns_info_t d2;
707
+ d1.ip .type = IPADDR_TYPE_V4;
708
+ d2.ip .type = IPADDR_TYPE_V4;
707
709
708
710
if (static_cast <uint32_t >(local_ip) != 0 ){
709
711
info.ip .addr = static_cast <uint32_t >(local_ip);
710
712
info.gw .addr = static_cast <uint32_t >(gateway);
711
713
info.netmask .addr = static_cast <uint32_t >(subnet);
714
+ d1.ip .u_addr .ip4 .addr = static_cast <uint32_t >(dns1);
715
+ d2.ip .u_addr .ip4 .addr = static_cast <uint32_t >(dns2);
712
716
} else {
713
717
info.ip .addr = 0 ;
714
718
info.gw .addr = 0 ;
715
719
info.netmask .addr = 0 ;
720
+ d1.ip .u_addr .ip4 .addr = 0 ;
721
+ d2.ip .u_addr .ip4 .addr = 0 ;
716
722
}
717
723
724
+ // Stop DHCPC
718
725
err = esp_netif_dhcpc_stop (_esp_netif);
719
726
if (err != ESP_OK && err != ESP_ERR_ESP_NETIF_DHCP_ALREADY_STOPPED){
720
727
log_e (" DHCP could not be stopped! Error: %d" , err);
721
728
return false ;
722
729
}
723
730
731
+ // Set IPv4, Netmask, Gateway
724
732
err = esp_netif_set_ip_info (_esp_netif, &info);
725
733
if (err != ERR_OK){
726
734
log_e (" ETH IP could not be configured! Error: %d" , err);
727
735
return false ;
728
736
}
729
737
730
- if (info.ip .addr ){
731
- _use_static_ip = true ;
732
- } else {
738
+ // Set DNS1-Server
739
+ esp_netif_set_dns_info (_esp_netif, ESP_NETIF_DNS_MAIN, &d1);
740
+
741
+ // Set DNS2-Server
742
+ esp_netif_set_dns_info (_esp_netif, ESP_NETIF_DNS_BACKUP, &d2);
743
+
744
+ // Start DHCPC if static IP was set
745
+ if (info.ip .addr == 0 ){
733
746
err = esp_netif_dhcpc_start (_esp_netif);
734
747
if (err != ESP_OK && err != ESP_ERR_ESP_NETIF_DHCP_ALREADY_STARTED){
735
748
log_w (" DHCP could not be started! Error: %d" , err);
736
749
return false ;
737
750
}
738
- _use_static_ip = false ;
739
- }
740
-
741
- esp_netif_dns_info_t d;
742
- d.ip .type = IPADDR_TYPE_V4;
743
-
744
- if (static_cast <uint32_t >(dns1) != 0 ) {
745
- // Set DNS1-Server
746
- d.ip .u_addr .ip4 .addr = static_cast <uint32_t >(dns1);
747
- esp_netif_set_dns_info (_esp_netif, ESP_NETIF_DNS_MAIN, &d);
748
- }
749
-
750
- if (static_cast <uint32_t >(dns2) != 0 ) {
751
- // Set DNS2-Server
752
- d.ip .u_addr .ip4 .addr = static_cast <uint32_t >(dns2);
753
- esp_netif_set_dns_info (_esp_netif, ESP_NETIF_DNS_BACKUP, &d);
754
751
}
755
752
756
753
return true ;
@@ -880,21 +877,24 @@ IPv6Address ETHClass::localIPv6()
880
877
return IPv6Address (addr.addr );
881
878
}
882
879
883
- const char * ETHClass::ifkey (void ){
880
+ const char * ETHClass::ifkey (void )
881
+ {
884
882
if (_esp_netif == NULL ){
885
883
return " " ;
886
884
}
887
885
return esp_netif_get_ifkey (_esp_netif);
888
886
}
889
887
890
- const char * ETHClass::desc (void ){
888
+ const char * ETHClass::desc (void )
889
+ {
891
890
if (_esp_netif == NULL ){
892
891
return " " ;
893
892
}
894
893
return esp_netif_get_desc (_esp_netif);
895
894
}
896
895
897
- String ETHClass::impl_name (void ){
896
+ String ETHClass::impl_name (void )
897
+ {
898
898
if (_esp_netif == NULL ){
899
899
return String (" " );
900
900
}
@@ -907,9 +907,18 @@ String ETHClass::impl_name(void){
907
907
return String (netif_name);
908
908
}
909
909
910
+ bool ETHClass::connected ()
911
+ {
912
+ return WiFiGenericClass::getStatusBits () & ETH_CONNECTED_BIT;
913
+ }
914
+
915
+ bool ETHClass::hasIP ()
916
+ {
917
+ return WiFiGenericClass::getStatusBits () & ETH_HAS_IP_BIT;
918
+ }
919
+
910
920
bool ETHClass::linkUp ()
911
921
{
912
- // return WiFiGenericClass::getStatusBits() & ETH_CONNECTED_BIT;
913
922
if (_esp_netif == NULL ){
914
923
return false ;
915
924
}
0 commit comments