Skip to content
Prev Previous commit
Next Next commit
Add support for Static Network configuration
  • Loading branch information
manchoz committed Jul 6, 2021
commit bbca32236a70be72d1da8c43f53fe7e45240d31f
32 changes: 30 additions & 2 deletions libraries/Ethernet/src/Ethernet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,37 @@ int arduino::EthernetClass::begin(uint8_t *mac, unsigned long timeout, unsigned
return (linkStatus() == LinkON ? 1 : 0);
}

int arduino::EthernetClass::begin() {
int arduino::EthernetClass::begin(uint8_t *mac, IPAddress ip) {
IPAddress dns = ip;
dns[3] = 1;

auto ret = begin(ip, dns);
return ret;
}

int arduino::EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns) {
IPAddress gateway = ip;
gateway[3] = 1;

auto ret = begin(ip, dns, gateway);
return ret;
}

int arduino::EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) {
IPAddress subnet(255, 255, 255, 0);
auto ret = begin(ip, dns, gateway, subnet);
return ret;
}

int arduino::EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) {
config(ip, dns, gateway, subnet);

eth_if->set_dhcp(false);
eth_if->set_network(_ip, _netmask, _gateway);
eth_if->connect();
eth_if->add_dns_server(_dnsServer1, nullptr);

auto ret = begin(mac);
return ret;
}

void arduino::EthernetClass::end() {
Expand Down
23 changes: 11 additions & 12 deletions libraries/Ethernet/src/Ethernet.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,21 +57,20 @@ class EthernetClass {

EthernetClass(voidPrtFuncPtr _cb) : _initializerCallback(_cb) {};

int begin(uint8_t *mac, unsigned long timeout = 60000, unsigned long responseTimeout = 4000);
int begin();
int maintain();
int begin(uint8_t *mac = nullptr, unsigned long timeout = 60000, unsigned long responseTimeout = 4000);
EthernetLinkStatus linkStatus();
EthernetHardwareStatus hardwareStatus();

// Manaul configuration
int begin(uint8_t *mac, IPAddress ip) {}
int begin(uint8_t *mac, IPAddress ip, IPAddress dns) {}
int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) {}
int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) {}
// void begin(uint8_t *mac, IPAddress ip) {}
// void begin(uint8_t *mac, IPAddress ip, IPAddress dns) {}
// void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) {}
// void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) {}
// Manual configuration
int begin(uint8_t *mac, IPAddress ip);
int begin(uint8_t *mac, IPAddress ip, IPAddress dns);
int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway);
int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet);

int begin(IPAddress ip) { return begin(nullptr, ip); }
int begin(IPAddress ip, IPAddress dns) { return begin(nullptr, ip, dns); }
int begin(IPAddress ip, IPAddress dns, IPAddress gateway) { return begin(nullptr, ip, dns, gateway); }
int begin(IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) {return begin(nullptr, ip, dns, gateway, subnet); }
void init(uint8_t sspin = 10);

void MACAddress(uint8_t *mac_address);
Expand Down