Skip to content

Commit 9ea4b3d

Browse files
committed
feat(net): Add NAPT examples for STA and ETH
1 parent 6244d9a commit 9ea4b3d

File tree

3 files changed

+181
-0
lines changed

3 files changed

+181
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#include <WiFi.h>
2+
#include <ETH.h>
3+
#include <SPI.h>
4+
5+
#define ETH_TYPE ETH_PHY_W5500
6+
#define ETH_ADDR 1
7+
#define ETH_CS 15
8+
#define ETH_IRQ 4
9+
#define ETH_RST 5
10+
#define ETH_SPI_SCK 14
11+
#define ETH_SPI_MISO 12
12+
#define ETH_SPI_MOSI 13
13+
14+
#define AP_SSID "ESP32-ETH-WIFI-BRIDGE"
15+
#define AP_PASS "password"
16+
17+
IPAddress ap_ip(192, 168, 4, 1);
18+
IPAddress ap_mask(255, 255, 255, 0);
19+
IPAddress ap_leaseStart(192, 168, 4, 2);
20+
IPAddress ap_dns(8, 8, 4, 4);
21+
22+
void setup() {
23+
Serial.begin(115200);
24+
Serial.setDebugOutput(true);
25+
Network.onEvent(onEvent);
26+
27+
WiFi.AP.begin();
28+
WiFi.AP.config(ap_ip, ap_ip, ap_mask, ap_leaseStart, ap_dns);
29+
WiFi.AP.create(AP_SSID, AP_PASS);
30+
if(!WiFi.AP.waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)){
31+
Serial.println("Failed to start AP!");
32+
return;
33+
}
34+
delay(100);
35+
36+
SPI.begin(ETH_SPI_SCK, ETH_SPI_MISO, ETH_SPI_MOSI);
37+
ETH.begin(ETH_TYPE, ETH_ADDR, ETH_CS, ETH_IRQ, ETH_RST, SPI);
38+
}
39+
40+
void loop() {
41+
delay(20000);
42+
}
43+
44+
void onEvent(arduino_event_id_t event, arduino_event_info_t info) {
45+
switch (event) {
46+
case ARDUINO_EVENT_ETH_START:
47+
Serial.println("ETH Started");
48+
break;
49+
case ARDUINO_EVENT_ETH_CONNECTED:
50+
Serial.println("ETH Connected");
51+
break;
52+
case ARDUINO_EVENT_ETH_GOT_IP:
53+
Serial.println("ETH Got IP");
54+
Serial.println(ETH);
55+
WiFi.AP.enableNAPT(true);
56+
break;
57+
case ARDUINO_EVENT_ETH_LOST_IP:
58+
Serial.println("ETH Lost IP");
59+
WiFi.AP.enableNAPT(false);
60+
break;
61+
case ARDUINO_EVENT_ETH_DISCONNECTED:
62+
Serial.println("ETH Disconnected");
63+
WiFi.AP.enableNAPT(false);
64+
break;
65+
case ARDUINO_EVENT_ETH_STOP:
66+
Serial.println("ETH Stopped");
67+
break;
68+
69+
case ARDUINO_EVENT_WIFI_AP_START:
70+
Serial.println("AP Started");
71+
Serial.println(WiFi.AP);
72+
break;
73+
case ARDUINO_EVENT_WIFI_AP_STACONNECTED:
74+
Serial.println("AP STA Connected");
75+
break;
76+
case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED:
77+
Serial.println("AP STA Disconnected");
78+
break;
79+
case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED:
80+
Serial.print("AP STA IP Assigned: ");
81+
Serial.println(IPAddress(info.wifi_ap_staipassigned.ip.addr));
82+
break;
83+
case ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED:
84+
Serial.println("AP Probe Request Received");
85+
break;
86+
case ARDUINO_EVENT_WIFI_AP_STOP:
87+
Serial.println("AP Stopped");
88+
break;
89+
90+
default:
91+
break;
92+
}
93+
}
+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#include <WiFi.h>
2+
3+
#define STA_SSID "YOUR-SSID"
4+
#define STA_PASS "YOUR-PASS"
5+
6+
#define AP_SSID "ESP32-WIFI-EXTENDER"
7+
#define AP_PASS "password"
8+
9+
IPAddress ap_ip(192, 168, 4, 1);
10+
IPAddress ap_mask(255, 255, 255, 0);
11+
IPAddress ap_leaseStart(192, 168, 4, 2);
12+
IPAddress ap_dns(8, 8, 4, 4);
13+
14+
void setup() {
15+
Serial.begin(115200);
16+
Serial.setDebugOutput(true);
17+
Network.onEvent(onEvent);
18+
19+
WiFi.AP.begin();
20+
WiFi.AP.config(ap_ip, ap_ip, ap_mask, ap_leaseStart, ap_dns);
21+
WiFi.AP.create(AP_SSID, AP_PASS);
22+
if(!WiFi.AP.waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)){
23+
Serial.println("Failed to start AP!");
24+
return;
25+
}
26+
27+
WiFi.begin(STA_SSID, STA_PASS);
28+
}
29+
30+
void loop() {
31+
delay(20000);
32+
}
33+
34+
void onEvent(arduino_event_id_t event, arduino_event_info_t info) {
35+
switch (event) {
36+
case ARDUINO_EVENT_WIFI_STA_START:
37+
Serial.println("STA Started");
38+
break;
39+
case ARDUINO_EVENT_WIFI_STA_CONNECTED:
40+
Serial.println("STA Connected");
41+
break;
42+
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
43+
Serial.println("STA Got IP");
44+
Serial.println(WiFi.STA);
45+
WiFi.AP.enableNAPT(true);
46+
break;
47+
case ARDUINO_EVENT_WIFI_STA_LOST_IP:
48+
Serial.println("STA Lost IP");
49+
WiFi.AP.enableNAPT(false);
50+
break;
51+
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
52+
Serial.println("STA Disconnected");
53+
WiFi.AP.enableNAPT(false);
54+
break;
55+
case ARDUINO_EVENT_WIFI_STA_STOP:
56+
Serial.println("STA Stopped");
57+
break;
58+
59+
case ARDUINO_EVENT_WIFI_AP_START:
60+
Serial.println("AP Started");
61+
Serial.println(WiFi.AP);
62+
break;
63+
case ARDUINO_EVENT_WIFI_AP_STACONNECTED:
64+
Serial.println("AP STA Connected");
65+
break;
66+
case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED:
67+
Serial.println("AP STA Disconnected");
68+
break;
69+
case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED:
70+
Serial.print("AP STA IP Assigned: ");
71+
Serial.println(IPAddress(info.wifi_ap_staipassigned.ip.addr));
72+
break;
73+
case ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED:
74+
Serial.println("AP Probe Request Received");
75+
break;
76+
case ARDUINO_EVENT_WIFI_AP_STOP:
77+
Serial.println("AP Stopped");
78+
break;
79+
80+
default:
81+
break;
82+
}
83+
}

Diff for: libraries/WiFi/examples/WiFiExtender/ci.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"targets": {
3+
"esp32h2": false
4+
}
5+
}

0 commit comments

Comments
 (0)