Skip to content

Commit d1501d0

Browse files
committed
Add support for Static Network configuration
1 parent a5e512a commit d1501d0

File tree

2 files changed

+41
-14
lines changed

2 files changed

+41
-14
lines changed

libraries/Ethernet/src/Ethernet.cpp

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,37 @@ int arduino::EthernetClass::begin(uint8_t *mac, unsigned long timeout, unsigned
3030
return (linkStatus() == LinkON ? 1 : 0);
3131
}
3232

33-
int arduino::EthernetClass::begin() {
33+
int arduino::EthernetClass::begin(uint8_t *mac, IPAddress ip) {
34+
IPAddress dns = ip;
35+
dns[3] = 1;
36+
37+
auto ret = begin(ip, dns);
38+
return ret;
39+
}
40+
41+
int arduino::EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns) {
42+
IPAddress gateway = ip;
43+
gateway[3] = 1;
44+
45+
auto ret = begin(ip, dns, gateway);
46+
return ret;
47+
}
48+
49+
int arduino::EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) {
50+
IPAddress subnet(255, 255, 255, 0);
51+
auto ret = begin(ip, dns, gateway, subnet);
52+
return ret;
53+
}
54+
55+
int arduino::EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) {
56+
config(ip, dns, gateway, subnet);
57+
58+
eth_if->set_dhcp(false);
3459
eth_if->set_network(_ip, _netmask, _gateway);
35-
eth_if->connect();
60+
eth_if->add_dns_server(_dnsServer1, nullptr);
61+
62+
auto ret = begin(mac);
63+
return ret;
3664
}
3765

3866
void arduino::EthernetClass::end() {

libraries/Ethernet/src/Ethernet.h

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,20 @@ class EthernetClass {
5757

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

60-
int begin(uint8_t *mac, unsigned long timeout = 60000, unsigned long responseTimeout = 4000);
61-
int begin();
62-
int maintain();
60+
int begin(uint8_t *mac = nullptr, unsigned long timeout = 60000, unsigned long responseTimeout = 4000);
6361
EthernetLinkStatus linkStatus();
6462
EthernetHardwareStatus hardwareStatus();
6563

66-
// Manaul configuration
67-
int begin(uint8_t *mac, IPAddress ip) {}
68-
int begin(uint8_t *mac, IPAddress ip, IPAddress dns) {}
69-
int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) {}
70-
int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) {}
71-
// void begin(uint8_t *mac, IPAddress ip) {}
72-
// void begin(uint8_t *mac, IPAddress ip, IPAddress dns) {}
73-
// void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway) {}
74-
// void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) {}
64+
// Manual configuration
65+
int begin(uint8_t *mac, IPAddress ip);
66+
int begin(uint8_t *mac, IPAddress ip, IPAddress dns);
67+
int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway);
68+
int begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet);
69+
70+
int begin(IPAddress ip) { return begin(nullptr, ip); }
71+
int begin(IPAddress ip, IPAddress dns) { return begin(nullptr, ip, dns); }
72+
int begin(IPAddress ip, IPAddress dns, IPAddress gateway) { return begin(nullptr, ip, dns, gateway); }
73+
int begin(IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet) {return begin(nullptr, ip, dns, gateway, subnet); }
7574
void init(uint8_t sspin = 10);
7675

7776
void MACAddress(uint8_t *mac_address);

0 commit comments

Comments
 (0)