Skip to content

Commit 64f4487

Browse files
committed
Test Report
1 parent e0609f9 commit 64f4487

File tree

2 files changed

+174
-1
lines changed

2 files changed

+174
-1
lines changed

ArduinoNetLibsTestReport.md

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
# Testing compatibility of WiFi and Ethernet object
2+
3+
## WiFi
4+
5+
The WiFi tests are [WiFiTest](https://github.com/JAndrassy/NetApiHelpers/blob/master/examples/WiFiTest/WiFiTest.ino) and [WiFiScanNetwork](https://github.com/JAndrassy/NetApiHelpers/blob/master/examples/WiFiScanNetworks/WiFiScanNetworks.ino) from the NetApiHelpers library. Tested are functions of the `WiFi` object.
6+
7+
### WiFiNINA
8+
9+
With listed pull requests [applied](https://github.com/JAndrassy/WiFiNINA/tree/all_fixes), only issue is the reversed `macAddress` and `BSSID` for compatibility with the older Arduino WiFi libraries.
10+
11+
pull requests:
12+
13+
* [added dnsIP(n)](https://github.com/arduino-libraries/WiFiNINA/pull/251)
14+
* [auto dns, gw, mask](https://github.com/arduino-libraries/WiFiNINA/pull/219)
15+
* [rejoin with DHCP](https://github.com/arduino/nina-fw/pull/91) (nina-fw PR)
16+
17+
### WiFi101
18+
19+
With listed pull requests [applied](https://github.com/JAndrassy/WiFi101/tree/all_fixes), remaining issues are
20+
21+
* Doesn't have `setDNS()`. It is not simple to add it.
22+
* Requires `WiFi.end()` to repeat `begin`. With `WiFi.disconnect()` next `begin` hangs.
23+
* reversed ordering of bytes returned by `macAddress`, `BSSID` and `BSSID(n)` for compatibility with the first Arduino WiFi library
24+
25+
pull requests:
26+
27+
* [added dnsIP(n)](https://github.com/arduino-libraries/WiFi101/pull/344)
28+
* [setHostname alias](https://github.com/arduino-libraries/WiFi101/pull/337)
29+
* [auto dns, gw, mask](https://github.com/arduino-libraries/WiFi101/pull/326)
30+
* [added WiFi.h](https://github.com/arduino-libraries/WiFi101/pull/321)
31+
* [`begin` fix](https://github.com/arduino-libraries/WiFi101/pull/324)
32+
33+
### WiFiS3
34+
35+
With listed pull request applied, remaining issues are
36+
37+
* WiFi.h doesn't include WiFiClient.h
38+
* after using static IP, DHCP is not possible. The problem in the ESP32 WiFi library used in the firmware ([PR](https://github.com/espressif/arduino-esp32/pull/8848)).
39+
* hostname is not sent with DHCP request
40+
41+
pull requests:
42+
* [fix auto dns IP](https://github.com/arduino/ArduinoCore-renesas/pull/173)
43+
* [reversed MAC](https://github.com/arduino/ArduinoCore-renesas/pull/183)
44+
45+
46+
### WiFiEspAT
47+
48+
As the WiFiEspAT library is maintained by the author of this document, all problems discovered with the tests were solved. Only issue is the reversed macAddress and BSSID for compatibility with Arduino WiFi libraries.
49+
50+
51+
## Ethernet
52+
53+
The test is [LegacyEthernetTest](https://github.com/JAndrassy/NetApiHelpers/blob/master/examples/LegacyEthernetTest/LegacyEthernetTest.ino) from the NetApiHelpers library. Tested are functions of the `Ethernet` object.
54+
55+
### Ethernet
56+
57+
With listed pull requests applied, remaining issues are
58+
59+
* `hardwareStatus()` and `linkStatus()` don't work before `begin()`
60+
* doesn't have `Ethernet.end()`
61+
62+
pull requests:
63+
64+
* [setHostname](https://github.com/arduino-libraries/Ethernet/pull/233)
65+
* [hostByName](https://github.com/arduino-libraries/Ethernet/pull/232)
66+
67+
68+
### STM32Ethernet
69+
70+
Test was not run. Compilation problems:
71+
72+
* doesn't have `hardwareStatus`
73+
* doesn't have `setDnsServerIP`
74+
* doesn't have `setHostname`
75+
* doesn't have `end()`
76+
* doesn't have `hostByName`
77+
78+
79+
### EthernetENC
80+
81+
As the EthernetENC library is maintained by the author of this document, all problems discovered with the test were solved.
82+
83+
84+
## LwIP WiFi + Ethernet
85+
86+
### ESP8266 WiFi
87+
88+
Differences:
89+
90+
* `begin` is async. `status = WiFi.waitForConnectResult();` can be used to wait
91+
92+
Issues:
93+
94+
* doesn't have auto configuration for DNS, gw, mask for static IP
95+
* doesn't have WiFi.h
96+
97+
98+
### ESP8266 Ethernet
99+
100+
With listed pull request applied, remaining issues are
101+
102+
* hardwareStatus() and linkStatus() don't work before begin()
103+
* doesn't have `hostForName`
104+
105+
pull requests:
106+
107+
* [end() and re-begin](https://github.com/esp8266/Arduino/pull/9023)
108+
109+
110+
### ESP32 WiFi
111+
112+
Differences:
113+
114+
* `begin` is async. `status = WiFi.waitForConnectResult();` can be used to wait
115+
* ScanNetworks - encryptionType enum has different constants than other WiFi libraries
116+
* `disconnect` is asynchronous. Without waiting for status change after it, it can interfere with immediately following `begin`
117+
118+
Issues:
119+
120+
* `config` has wrong ordering of parameters
121+
* doesn't have auto configuration for DNS, gateway, net mask for static IP
122+
123+
124+
### ESP32 Ethernet
125+
126+
ESP32 Arduino platform Ethernet library is too different to run the test.
127+
128+
129+
### Mbed Core WiFi
130+
131+
Test was not run. Detected problems are:
132+
133+
* doesn't have `setHostname` (MbedSocketClass)
134+
* reversed ordering of bytes returned by `macAddress`, `BSSID` and `BSSID(n)` for compatibility with older Arduino WiFi libraries
135+
136+
pull requests:
137+
138+
* [`dnsIP(n)`](https://github.com/arduino/ArduinoCore-mbed/pull/756)
139+
140+
141+
### Mbed Core Ethernet
142+
143+
Issues are
144+
145+
* `hardwareStatus()` and `linkStatus()` before `begin` cause `begin` to fail
146+
* `setDnsServerIP` applies the DNS IP only in `begin`. immediate call to `dnsServerIP` returns the previous value used with `begin`
147+
* doesn't have `setHostname` (MbedSocketClass)
148+
* `MACAddress` returns reversed ordering of bytes [issue](https://github.com/arduino/ArduinoCore-mbed/issues/752)
149+
150+
### C33 WiFi
151+
152+
With listed pull requests applied, remaining issues are
153+
154+
* hostname is not sent with DHCP request
155+
* doesn't have WiFi.h
156+
* does scan in `begin` and only joins the network if it is in the scan result
157+
158+
pull requests:
159+
160+
* [`config` ignored](https://github.com/arduino/ArduinoCore-renesas/pull/179)
161+
* [reversed MAC](https://github.com/arduino/ArduinoCore-renesas/pull/184)
162+
163+
### C33 Ethernet
164+
165+
Test was not run. Compilation problems:
166+
167+
* doesn't have `setHostname`
168+
* doesn't have `setDnsServerIP`
169+
* doesn't have `Ethernet.end()`
170+
* doesn't have Ethernet.h
171+
* doesn't have `hostByName`
172+
* `MACAddress` doesn't have the parameter

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ Some parts of the API are defined with classes Client and UDP with pure virtual
99
Sometimes the methods of the API are not implemented to behave the same way in all libraries.
1010

1111
* [Arduino networking API guide for networking library developers](ArduinoNetAPIDev.md)
12+
* The [NetApiHelpers](https://github.com/JAndrassy/NetApiHelpers) library accompanies the Arduino networking API guide
1213
* [Implementation of the API in significant libraries](ArduinoNetAPILibs.md)
14+
* [Report](ArduinoNetLibsTestReport.md) from testing the WiFi/Ethernet object in libraries with test sketches from NetApiHelpers library
1315
* There are multiple open discussions on the [Discussions tab](https://github.com/JAndrassy/Arduino-Networking-API/discussions)
14-
* The [NetApiHelpers](https://github.com/JAndrassy/NetApiHelpers) library accompanies the Arduino networking API guide
1516

1617
Tip: open Outline for the documents:
1718

0 commit comments

Comments
 (0)