Skip to content

Commit eebaaf8

Browse files
committed
re-reviewed
- callback has no return type - private types for the wifimulti class - explici WiFi.config(0U, 0U, 0U); for other APs - formatting, whitespace, uppercase SSID
1 parent 3be4875 commit eebaaf8

File tree

3 files changed

+33
-26
lines changed

3 files changed

+33
-26
lines changed

libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
- Connect to WiFi with strongest signal (RSSI)
99
- Fall back to connect to next WiFi when a connection failed or lost
1010
- Fall back to connect to hidden SSID's which are not reported by WiFi scan
11-
- Static IP assigned depending on which SSID is connected
11+
- Static IP assigned depending on which SSID is connected
1212
1313
To enable debugging output, select in the Arduino iDE:
1414
- Tools | Debug Port: Serial
@@ -22,8 +22,6 @@ ESP8266WiFiMulti wifiMulti;
2222
// WiFi connect timeout per AP. Increase when connecting takes longer.
2323
const uint32_t connectTimeoutMs = 5000;
2424

25-
SSID_selected_callback_t connectedToSSID(char *ssid);
26-
2725
void setup() {
2826
// Don't save WiFi configuration in flash - optional
2927
WiFi.persistent(false);
@@ -39,21 +37,23 @@ void setup() {
3937
wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
4038
wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");
4139

42-
wifiMulti.onSsidSelected(connectedToSSID);
40+
wifiMulti.onSSIDSelected(connectedToSSID);
4341

4442
// More is possible
4543
}
4644

47-
SSID_selected_callback_t connectedToSSID(char *ssid)
48-
{
49-
// On connecting the second WiFi, assign static IP using config(...).
50-
// For other SSID (if config has not already been called) DHCP will be used.
51-
if(strcmp(ssid, "ssid_from_AP_2") == 0) {
52-
IPAddress ip2(192,168,1,123);
53-
IPAddress gw2(192,168,1,1);
54-
IPAddress subnet2(255,255,255,0);
45+
void connectedToSSID(const char *ssid) {
46+
// On connecting to the second AP, assign static IP using config(...).
47+
if (strcmp(ssid, "ssid_from_AP_2") == 0) {
48+
IPAddress ip2(192, 168, 1, 123);
49+
IPAddress gw2(192, 168, 1, 1);
50+
IPAddress subnet2(255, 255, 255, 0);
5551
WiFi.config(ip2, gw2, subnet2);
52+
return;
5653
}
54+
55+
// For other SSID DHCP will be used.
56+
Wifi.config(0U, 0U, 0U);
5757
}
5858

5959
void loop() {

libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,14 @@ wl_status_t ESP8266WiFiMulti::connectWiFiMulti(uint32_t connectTimeoutMs)
329329
if (ssid == entry.ssid) {
330330
DEBUG_WIFI_MULTI("[WIFIM] Connecting %s\n", ssid.c_str());
331331

332-
if(_onSsidSelected) _onSsidSelected(ssid.c_str());
332+
// User-defined callback
333+
if (_onSSIDSelected) {
334+
_onSSIDSelected(entry.ssid);
335+
}
336+
333337
// Connect to WiFi
334338
WiFi.begin(ssid, entry.passphrase, channel, bssid);
335-
339+
336340
// Wait for status change
337341
if (waitWiFiConnect(connectTimeoutMs) == WL_CONNECTED) {
338342
return WL_CONNECTED;
@@ -351,7 +355,11 @@ wl_status_t ESP8266WiFiMulti::connectWiFiMulti(uint32_t connectTimeoutMs)
351355
if (!connectSkipIndex[i]) {
352356
DEBUG_WIFI_MULTI("[WIFIM] Try hidden connect %s\n", entry.ssid);
353357

354-
if(_onSsidSelected) _onSsidSelected(entry.ssid);
358+
// User-defined callback
359+
if (_onSSIDSelected) {
360+
_onSSIDSelected(entry.ssid);
361+
}
362+
355363
// Connect to WiFi
356364
WiFi.begin(entry.ssid, entry.passphrase);
357365

libraries/ESP8266WiFi/src/ESP8266WiFiMulti.h

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,32 +50,31 @@
5050
#define WIFI_SCAN_TIMEOUT_MS 5000
5151
#endif
5252

53-
struct WifiAPEntry {
54-
char *ssid;
55-
char *passphrase;
56-
};
57-
58-
typedef std::vector<WifiAPEntry> WifiAPlist;
59-
typedef void (*SSID_selected_callback_t)(const char * ssid);
60-
6153
class ESP8266WiFiMulti
6254
{
6355
public:
56+
using SSIDSelectedCallback = void (*)(const char *ssid);
57+
6458
ESP8266WiFiMulti();
6559
~ESP8266WiFiMulti();
6660

6761
bool addAP(const char *ssid, const char *passphrase = NULL);
6862
bool existsAP(const char *ssid, const char *passphrase = NULL);
69-
void onSsidSelected(SSID_selected_callback_t cb) { _onSsidSelected = cb;};
63+
void onSSIDSelected(SSIDSelectedCallback callback) { _onSSIDSelected = callback; }
7064

7165
wl_status_t run(uint32_t connectTimeoutMs=WIFI_CONNECT_TIMEOUT_MS);
7266

7367
void cleanAPlist();
7468
int count() { return _APlist.size(); }
7569
private:
76-
WifiAPlist _APlist;
70+
struct WifiAPEntry {
71+
char *ssid;
72+
char *passphrase;
73+
};
74+
75+
std::vector<WifiAPEntry> _APlist;
7776
bool _firstRun;
78-
SSID_selected_callback_t _onSsidSelected = NULL;
77+
SSIDSelectedCallback _onSSIDSelected = NULL;
7978

8079
bool APlistAdd(const char *ssid, const char *passphrase = NULL);
8180
bool APlistExists(const char *ssid, const char *passphrase = NULL);

0 commit comments

Comments
 (0)