Skip to content

Commit e0609f9

Browse files
committed
ArduinoNetAPILibs update
- reversed MAC address flag - multiple methods added in esp8266 and esp32 libraries - small fixes
1 parent 19224e8 commit e0609f9

File tree

1 file changed

+50
-42
lines changed

1 file changed

+50
-42
lines changed

ArduinoNetAPILibs.md

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,23 @@
1717
|[WiFi101][104] | 2015 | in fw | WiFi STA and local AP (ATWINC1500) | Arduino
1818
|[WiFiNINA][103]| 2018 | in fw | WiFi STA and SoftAP (ESP32 with nina-fw) | Arduino
1919
|[WiFiS3][105] | 2023 | in fw | WiFi STA and SoftAP (ESP32S3 with Uno R4 WiFi fw) |Arduino
20-
|[Mbed core][106] | 2018 | LwIP | Ethernet/WiFi (any hw supported by Mbed OS) | Arduino
21-
|[C33 core][108] | 2023 | LwIP | Ethernet (Eth peripheral), WiFi STA and SoftAP (on board ESP32C3) | Arduino
22-
|[ESP8266 core][110] | 2014 | LwIP | WiFi STA and SoftAP, W5500, ENC28J60, PPP | community
23-
|[ESP32 core][112] | 2016 | LwIP | WiFi STA and SoftAP, Ethernet (Eth peripheral) | Espressif
20+
|[Mbed core][106] | 2018 | LwIP | Ethernet/WiFi (any HW with Mbed EMAC driver) | Arduino
21+
|[C33 core][108] | 2023 | LwIP | Ethernet (MAC peripheral), WiFi STA and SoftAP (on board ESP32C3) | Arduino
22+
|[ESP8266 core][110] | 2014 | LwIP | WiFi STA and SoftAP, Ethernet (W5500, ENC28J60), PPP | community
23+
|[ESP32 core][112] | 2016 | LwIP | WiFi STA and SoftAP, Ethernet (MAC peripheral, W5500) | Espressif
2424
|[WiFiEspAT][114] | 2019 | in fw | WiFi STA and SoftAP (ESP8266 or ESP32 with AT fw) | Juraj A
2525
|[EthernetENC][115] | 2013 | uIP | Ethernet (ENC28J60) | Juraj A
26-
|[STM32Ethernet][116] | 2017 | LwIP | Erhernet (STM32 Eth peripheral) | STM
26+
|[STM32Ethernet][116] | 2017 | LwIP | Ethernet (STM32 Eth peripheral) | STM
2727
|[QNEthernet][117] | 2021 | LwIP | Ethernet (Teensy 4.1 Eth peripheral) | Shawn S
2828

2929
(1) The Arduino WiFi library is obsolete. It is included in the research only because it was the first WiFi library.
3030

31-
In following tables * marks the official Arduino library with the first introduction of the API function(s).
31+
Legend for the tables in this document:
3232

33+
* `` library has the function
34+
* `*` the official Arduino library with the first introduction of the API function(s).
35+
* `+` the function was added in API unification effort after the research
36+
* `` library can't support the function
3337

3438
## Ethernet/WiFi object
3539

@@ -46,15 +50,15 @@ In following tables * marks the official Arduino library with the first introduc
4650
|[C33 Wifi][8] | |status| ✓ | ✓ | lowPowerMode
4751
|[C33 Ethernet][9] | | hardwareStatus | | | |
4852
|[esp8266 WiFi][10] | | status|||sleepMode
49-
|[esp8266 Ethernet][11] |constructor | status|||
53+
|[esp8266 Ethernet][11] |constructor | status | | [PR](https://github.com/esp8266/Arduino/pull/9023) |
5054
|[esp32 WiFi][12] | | status|||sleep |
5155
|[esp32 Ethernet][13] | | | | | |
5256
|[WiFiEspAT][14] |init(Stream&) | status || | sleepMode |
53-
|[EthernetENC][15] |init(CS) | hardwareStatus | | | |
57+
|[EthernetENC][15] |init(CS) | hardwareStatus | | + | |
5458
|[STM32Ethernet][16]| | | | | |
5559
|[QNEthernet][17]| | hardwareStatus | || |
5660

57-
(1) status is for WiFi station state, but returns WL_NO_SHIELD/WL_NO_MODULE if the hardware is not detected
61+
(1) status() is for the WiFi state, but returns WL_NO_SHIELD/WL_NO_MODULE if the hardware is not detected
5862

5963
### Ethernet network interface
6064

@@ -63,7 +67,7 @@ In following tables * marks the official Arduino library with the first introduc
6367
|[Ethernet][1] * ||||||
6468
|[Mbed Ethernet][7] ||||||
6569
|[C33 Ethernet][9] ||||||
66-
|[esp8266 Ethernet][11] ||| config | | |
70+
|[esp8266 Ethernet][11] ||| | + | |
6771
|[esp32 Ethernet][13] |linkUp || config | | |
6872
|[EthernetENC][15] ||||||
6973
|[STM32Ethernet][16]||||||
@@ -78,7 +82,7 @@ In following tables * marks the official Arduino library with the first introduc
7882
|[WiFiNINA][3] |||* ||[PR](https://github.com/arduino-libraries/WiFiNINA/pull/219)||
7983
|[WiFiS3][5] ||| ||||
8084
|[Mbed WiFi][6] ||| ||? ||
81-
|[C33 Wifi][8] ||| || ?||
85+
|[C33 Wifi][8] ||| || ||
8286
|[esp8266 WiFi][18] ||not blocking| || ||
8387
|[esp32 WiFi][19] ||not blocking| | wrong param. order| ||
8488
|[WiFiEspAT][14] |||||||
@@ -89,37 +93,39 @@ All libraries have [localIP()](https://www.arduino.cc/reference/en/libraries/eth
8993

9094
| library | [setHostname](https://www.arduino.cc/reference/en/libraries/wifinina/wifi.sethostname/) | [setDNS](https://www.arduino.cc/reference/en/libraries/wifinina/wifi.setdns/) | dnsIP | [macAddress](https://www.arduino.cc/reference/en/libraries/wifinina/wifi.macaddress/)
9195
|---|:---:|:---:|:---:|:---:|
92-
|[Ethernet][1] | [PR](https://github.com/arduino-libraries/Ethernet/pull/223) or [PR](https://github.com/arduino-libraries/Ethernet/pull/233) | setDnsServerIP [PR](https://github.com/arduino-libraries/Ethernet/pull/231) | dnsServerIP PR | MACAddress PR
93-
|[WiFi][2] | | ✓* | | ✓*
94-
|[WiFi101][4] | hostname [PR](https://github.com/arduino-libraries/WiFi101/pull/337) | | [PR](https://github.com/arduino-libraries/WiFi101/pull/344)||
95-
|[WiFiNINA][3] | ✓*| ✓ | [PR](https://github.com/arduino-libraries/WiFiNINA/pull/251) | ✓
96-
|[WiFiS3][5] | ✓| ✓ | ✓* | ✓
97-
|[Mbed WiFi][6] ||| dnsServerIP [issue](https://github.com/arduino/ArduinoCore-mbed/issues/732) ||
98-
|[Mbed Ethernet][7] ||| dnsServerIP ||
99-
|[C33 Wifi][8] | ✓ | ✓ | [issue](https://github.com/arduino/ArduinoCore-renesas/issues/155) | ✓
100-
|[C33 Ethernet][9] | || dnsServerIP | MACAddress|
101-
|[esp8266 WiFi][18] || |||
102-
|[esp8266 Ethernet][11] ||
103-
|[esp32 WiFi][19] || |||
96+
|[Ethernet][1] | [PR](https://github.com/arduino-libraries/Ethernet/pull/233) | setDnsServerIP [PR](https://github.com/arduino-libraries/Ethernet/pull/231) | dnsServerIP PR | MACAddress PR
97+
|[WiFi][2] | | ✓* | | ✓* R
98+
|[WiFi101][4] | hostname [PR](https://github.com/arduino-libraries/WiFi101/pull/337) | | [PR](https://github.com/arduino-libraries/WiFi101/pull/344)| R|
99+
|[WiFiNINA][3] | ✓*| ✓ | [PR](https://github.com/arduino-libraries/WiFiNINA/pull/251) | ✓ R
100+
|[WiFiS3][5] | ✓| ✓ | ✓* | ✓ R [PR](https://github.com/arduino/ArduinoCore-renesas/pull/183)
101+
|[Mbed WiFi][6] ||| dnsServerIP [PR](https://github.com/arduino/ArduinoCore-mbed/pull/756) | R |
102+
|[Mbed Ethernet][7] ||| dnsServerIP | R|
103+
|[C33 Wifi][8] | ✓ | ✓ | [PR](https://github.com/arduino/ArduinoCore-renesas/pull/176) | ✓ R [PR](https://github.com/arduino/ArduinoCore-renesas/pull/184)
104+
|[C33 Ethernet][9] | || dnsServerIP | MACAddress without param |
105+
|[esp8266 WiFi][18] || + |||
106+
|[esp8266 Ethernet][11] | ✓ | + | + | +
107+
|[esp32 WiFi][19] || + |||
104108
|[esp32 Ethernet][13] || |||
105-
|[WiFiEspAT][14] ||| ||
106-
|[EthernetENC][15] | | | ||
109+
|[WiFiEspAT][14] ||| + | R |
110+
|[EthernetENC][15] | + | + | + ||
107111
|[STM32Ethernet][16]| | | dnsServerIP | MACAddress
108112
|[QNEthernet][17]|| setDnsServerIP | dnsServerIP ||
109113

114+
Flag R is for "reversed". Arduino WiFi libraries copied the bug of the first WiFi library. The bytes of the MAC address are returned in reversed order from `macAddress` getter.
115+
110116
### WiFi station getters
111117

112118
| library | SSID | [BSSID](https://www.arduino.cc/reference/en/libraries/wifi/wifi.bssid/) | [encryptionType](https://www.arduino.cc/reference/en/libraries/wifinina/wifi.encryptiontype/) | channel | RSSI | <del>reasonCode</del> |
113119
|---|:---:|:---:|:---:|:---:|:---:|:---:|
114-
|[WiFi][2] * |||| || |
115-
|[WiFi101][4] |||||| |
116-
|[WiFiNINA][3] |||| ||* |
120+
|[WiFi][2] * ||R || || |
121+
|[WiFi101][4] ||R |||| |
122+
|[WiFiNINA][3] ||R || ||* |
117123
|[WiFiS3][5] |||| || returns 0 |
118124
|[Mbed WiFi][6] |||| || |
119-
|[C33 Wifi][8] ||| | || returns 0 |
120-
|[esp8266 WiFi][18] ||without param [PR](https://github.com/esp8266/Arduino/pull/9008) | | || |
121-
|[esp32 WiFi][19] || without param| | || |
122-
|[WiFiEspAT][14] ||| ||| |
125+
|[C33 Wifi][8] |||returns 0 | || returns 0 |
126+
|[esp8266 WiFi][18] || + | | || |
127+
|[esp32 WiFi][19] || + | | || |
128+
|[WiFiEspAT][14] ||R | ||| |
123129

124130
### WiFi AP network interface
125131

@@ -153,7 +159,9 @@ All researched libraries have method [`scanNetworks()`](https://www.arduino.cc/r
153159

154160
To get the result of networks scan, all libraries have methods defined by the first WiFi library: `SSID(n)`, `encryptionType(n)` and `RSSI(n)`. Additionally all libraries except of the old WiFi library have `channel(n)`.
155161

156-
All libraries except of the old WiFi library have [BSSID](https://www.arduino.cc/reference/en/libraries/wifinina/wifi.bssid/), but the esp8266 and the esp32 WiFi library have `BSSID(n)` without the parameter for the user provided array. ([PR for esp8266](https://github.com/esp8266/Arduino/pull/9008))
162+
Enumeration of encryption type constant names for`encryptionType(n)` are in esp32 and Portenta C33 very different from the common set used in WiFi, WiFi101, WiFiNINA, WiFiS3, esp8266 and WiFiEspAT.
163+
164+
All libraries except of the old WiFi library have [BSSID](https://www.arduino.cc/reference/en/libraries/wifinina/wifi.bssid/). WiFi, WiFi101 and WiFiNINA return reversed ordering of bytes.
157165

158166
### Network services
159167

@@ -175,7 +183,7 @@ The Ethernet/WiFi objects have some common names for simple services. (Libraries
175183
|[esp32 WiFi][12] || | |
176184
|[esp32 Ethernet][13] | | | |
177185
|[WiFiEspAT][14] ||||
178-
|[EthernetENC][15] | | | |
186+
|[EthernetENC][15] | + | | |
179187
|[STM32Ethernet][16]| | | |
180188
|[QNEthernet][17] | | | |
181189

@@ -220,9 +228,9 @@ C33 lwIpWrapper |[lwipClient][28] | | | ✓ | ✓ |
220228
ESP8266WiFi |[WiFiClient][30] | ✓ | ✓ | ✓ | Stream's setTimeout [discussion](https://github.com/esp8266/Arduino/discussions/9004) |
221229
|esp32 WiFi | [WiFiClient][32] ||| | setTimeout(seconds) !!! [issue](https://github.com/espressif/arduino-esp32/issues/5558) |
222230
|WiFiEspAT|[WiFiClient][34] | ||| |
223-
|EthernetENC |[EthernetClient][35] | | | ||
231+
|EthernetENC |[EthernetClient][35] | | | + ||
224232
|STM32Ethernet| [EthernetClient][36] | | |||
225-
|QNEthernet |[EthernetClient][37] | || ||
233+
|QNEthernet |[EthernetClient][37] | + || + ||
226234

227235

228236
## Server class
@@ -244,8 +252,8 @@ Arduino core has `Server` class which inherits from the `Print` class. The idea
244252
|C33 lwIpWrapper |[lwipServer][48] || ||
245253
|ESP8266WiFi |[WiFiServer][50] || | [ArduinoWiFiServer](https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h) |
246254
|esp32 WiFi | [WiFiServer][52] |||||
247-
|WiFiEspAT|[WiFiServer][54] | | | WiFiServerPrint |
248-
|EthernetENC |[EthernetServer][55] || | EthernetServerPrint |
255+
|WiFiEspAT|[WiFiServer][54] | | +| WiFiServerPrint |
256+
|EthernetENC |[EthernetServer][55] || + | EthernetServerPrint |
249257
|STM32Ethernet |[EthernetServer][56] ||||
250258
|QNEthernet |[EthernetServer][57] ||||
251259

@@ -262,11 +270,11 @@ All Server classes have method [`begin`](https://www.arduino.cc/reference/en/lib
262270
|WiFiS3 |[WiFiServer][45] |*|* | [PR](https://github.com/arduino/ArduinoCore-renesas/pull/140) | || [PR](https://github.com/arduino/ArduinoCore-renesas/pull/144)|
263271
|Mbed SocketWrapper | [MbedServer][46] | | [PR](https://github.com/arduino/ArduinoCore-mbed/pull/751) | | returns 0 [issue](https://github.com/arduino/ArduinoCore-mbed/issues/730) | (1) | [PR](https://github.com/arduino/ArduinoCore-mbed/pull/750)
264272
|C33 lwIpWrapper |[lwipServer][48] | | | | || |
265-
|ESP8266WiFi |[WiFiServer][50] || stop() -> | [PR](https://github.com/esp8266/Arduino/pull/8995) || (1)(2) ||
273+
|ESP8266WiFi |[WiFiServer][50] | | + | + || (1)(2) ||
266274
|esp32 WiFi | [WiFiServer][52] ||||| ✗(1) ||
267-
|WiFiEspAT|[WiFiServer][54] | ||||||
268-
|EthernetENC |[EthernetServer][55] | ||| |||
269-
|STM32Ethernet |[EthernetServer][56] || -> | [issue](https://github.com/stm32duino/STM32Ethernet/issues/73) | |||
275+
|WiFiEspAT|[WiFiServer][54] | + ||||||
276+
|EthernetENC |[EthernetServer][55] |+ ||| |||
277+
|STM32Ethernet |[EthernetServer][56] || + | + | |||
270278
|QNEthernet |[EthernetServer][57] |||| |||
271279

272280
1) the method called `available` in WiFiServer works like `accept` method

0 commit comments

Comments
 (0)