Skip to content

Commit

Permalink
Enable static IP via ethernet (#924)
Browse files Browse the repository at this point in the history
  • Loading branch information
copercini authored and me-no-dev committed Dec 19, 2017
1 parent cfbb730 commit 70d0d46
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 16 deletions.
44 changes: 30 additions & 14 deletions libraries/WiFi/src/ETH.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
ETH.h - espre ETH PHY support.
Based on WiFi.h from Ardiono WiFi shield library.
Based on WiFi.h from Arduino WiFi shield library.
Copyright (c) 2011-2014 Arduino. All right reserved.
This library is free software; you can redistribute it and/or
Expand Down Expand Up @@ -110,26 +110,43 @@ bool ETHClass::begin(uint8_t phy_addr, int power, int mdc, int mdio, eth_phy_typ
return false;
}

/*
bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1, IPAddress dns2)
{
if(!initialized){
esp_err_t err = ESP_OK;
tcpip_adapter_ip_info_t info;

if(local_ip != (uint32_t)0x00000000){
info.ip.addr = static_cast<uint32_t>(local_ip);
info.gw.addr = static_cast<uint32_t>(gateway);
info.netmask.addr = static_cast<uint32_t>(subnet);
} else {
info.ip.addr = 0;
info.gw.addr = 0;
info.netmask.addr = 0;
}

err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH);
if(err != ESP_OK && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED){
log_e("DHCP could not be stopped! Error: %d", err);
return false;
}

tcpip_adapter_ip_info_t info;
info.ip.addr = static_cast<uint32_t>(local_ip);
info.gw.addr = static_cast<uint32_t>(gateway);
info.netmask.addr = static_cast<uint32_t>(subnet);
if(!staticIP){
tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH);
}
if(tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_ETH, &info) == ESP_OK) {
err = tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_ETH, &info);
if(err != ERR_OK){
log_e("STA IP could not be configured! Error: %d", err);
return false;
}
if(info.ip.addr){
staticIP = true;
} else {
return false;
err = tcpip_adapter_dhcpc_start(TCPIP_ADAPTER_IF_ETH);
if(err != ESP_OK && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STARTED){
log_w("DHCP could not be started! Error: %d", err);
return false;
}
staticIP = false;
}

ip_addr_t d;
d.type = IPADDR_TYPE_V4;

Expand All @@ -147,7 +164,6 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I

return true;
}
*/

IPAddress ETHClass::localIP()
{
Expand Down
3 changes: 1 addition & 2 deletions libraries/WiFi/src/ETH.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ class ETHClass {

bool begin(uint8_t phy_addr=ETH_PHY_ADDR, int power=ETH_PHY_POWER, int mdc=ETH_PHY_MDC, int mdio=ETH_PHY_MDIO, eth_phy_type_t type=ETH_PHY_TYPE, eth_clock_mode_t clk_mode=ETH_CLK_MODE);

// NOT WORKING YET!
//bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000);
bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000);

const char * getHostname();
bool setHostname(const char * hostname);
Expand Down

0 comments on commit 70d0d46

Please sign in to comment.