Skip to content

Commit b3e2a50

Browse files
committed
Move WiFi mode changes after esp_wifi_set_protocol()
esp_wifi_set_protocol turns off WiFi Station to set the protocols.
1 parent de93932 commit b3e2a50

File tree

2 files changed

+39
-30
lines changed

2 files changed

+39
-30
lines changed

Firmware/RTK_Surveyor/ESPNOW.ino

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,23 +93,28 @@ void espnowStart()
9393
if (wifiState == WIFI_OFF && espnowState == ESPNOW_OFF)
9494
{
9595
//Radio is off, turn it on
96+
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR); //Stops WiFi Station.
97+
9698
WiFi.mode(WIFI_STA);
9799

98-
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR);
99-
Serial.println("WiFi off, ESP-Now added to protocols");
100+
log_d("WiFi off, ESP-Now added to protocols");
100101
}
101102
//If WiFi is on but ESP NOW is off, then enable LR protocol
102103
else if (wifiState > WIFI_OFF && espnowState == ESPNOW_OFF)
103104
{
104105
//Enable WiFi + ESP-Now
105106
// Enable long range, PHY rate of ESP32 will be 512Kbps or 256Kbps
106-
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N | WIFI_PROTOCOL_LR);
107-
Serial.println("WiFi on, ESP-Now added to protocols");
107+
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N | WIFI_PROTOCOL_LR); //Stops WiFi Station.
108+
109+
WiFi.mode(WIFI_STA);
110+
111+
log_d("WiFi on, ESP-Now added to protocols");
108112
}
109-
//If ESP-Now is active, WiFi is active, do nothing
113+
114+
//If ESP-Now is already active, do nothing
110115
else
111116
{
112-
Serial.println("WiFi already on, ESP-Now already on");
117+
log_d("ESP-Now already on");
113118
}
114119

115120
// Init ESP-NOW
@@ -164,14 +169,20 @@ void espnowStop()
164169
{
165170
//ESP Now is the only thing using the radio, turn it off entirely
166171
WiFi.mode(WIFI_OFF);
167-
Serial.println("WiFi Radio off entirely");
172+
173+
log_d("WiFi Radio off entirely");
168174
}
169175
//If WiFi is on, then disable LR protocol
170176
else if (wifiState > WIFI_OFF)
171177
{
178+
wifiSetState(WIFI_NOT_CONNECTED);
179+
172180
// Return protocol to default settings (no WIFI_PROTOCOL_LR for ESP NOW)
173-
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N);
174-
Serial.println("WiFi protocols on, LR protocol off");
181+
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N); //Stops WiFi Station.
182+
183+
WiFi.mode(WIFI_STA);
184+
185+
log_d("WiFi protocols on, LR protocol off");
175186
}
176187

177188
// Turn off promiscuous WiFi mode

Firmware/RTK_Surveyor/WiFi.ino

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,14 @@ void wifiStartAP()
145145
//Connect to local router
146146
#define WIFI_SSID "TRex"
147147
#define WIFI_PASSWORD "parachutes"
148-
WiFi.mode(WIFI_STA);
149148

150149
#ifdef COMPILE_ESPNOW
151150
// Return protocol to default settings (no WIFI_PROTOCOL_LR for ESP NOW)
152-
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N);
151+
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N); //Stops WiFi Station
153152
#endif
154153

154+
WiFi.mode(WIFI_STA);
155+
155156
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
156157
Serial.print("WiFi connecting to");
157158
while (wifiGetStatus() != WL_CONNECTED)
@@ -161,15 +162,16 @@ void wifiStartAP()
161162
}
162163
Serial.print("WiFi connected with IP: ");
163164
Serial.println(WiFi.localIP());
164-
#else //LOCAL_WIFI_TESTING
165+
#else //End LOCAL_WIFI_TESTING
165166
//Start in AP mode
166-
WiFi.mode(WIFI_AP);
167167

168168
#ifdef COMPILE_ESPNOW
169169
// Return protocol to default settings (no WIFI_PROTOCOL_LR for ESP NOW)
170-
esp_wifi_set_protocol(WIFI_IF_AP, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N);
170+
esp_wifi_set_protocol(WIFI_IF_AP, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N); //Stops WiFi AP.
171171
#endif
172172

173+
WiFi.mode(WIFI_AP);
174+
173175
IPAddress local_IP(192, 168, 4, 1);
174176
IPAddress gateway(192, 168, 1, 1);
175177
IPAddress subnet(255, 255, 255, 0);
@@ -182,7 +184,7 @@ void wifiStartAP()
182184
}
183185
Serial.print("WiFi AP Started with IP: ");
184186
Serial.println(WiFi.softAPIP());
185-
#endif //LOCAL_WIFI_TESTING
187+
#endif //End AP Testing
186188
}
187189

188190
#endif //COMPILE_WIFI
@@ -209,27 +211,23 @@ void wifiStart(char* ssid, char* pw)
209211
#ifdef COMPILE_WIFI
210212
if ((wifiState == WIFI_OFF) || (wifiState == WIFI_ON))
211213
{
212-
WiFi.mode(WIFI_STA);
214+
wifiSetState(WIFI_NOTCONNECTED);
213215

214216
#ifdef COMPILE_ESPNOW
215217
if (espnowState > ESPNOW_OFF)
216-
{
217-
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N | WIFI_PROTOCOL_LR); //Enable WiFi + ESP-Now
218-
}
218+
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N | WIFI_PROTOCOL_LR); //Enable WiFi + ESP-Now. Stops WiFi Station.
219219
else
220-
{
221-
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N); //Set basic WiFi protocols
222-
}
220+
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N); //Set basic WiFi protocols. Stops WiFi Station.
223221
#else
224222
//Be sure the standard protocols are turned on. ESP Now have have previously turned them off.
225-
WiFi.mode(WIFI_STA);
226-
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N);
223+
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N); //Set basic WiFi protocols. Stops WiFi Station.
227224
#endif
228225

226+
WiFi.mode(WIFI_STA);
227+
229228
Serial.printf("WiFi connecting to %s\r\n", ssid);
230229
WiFi.begin(ssid, pw);
231230
wifiTimer = millis();
232-
wifiSetState(WIFI_NOTCONNECTED);
233231

234232
//Display the heap state
235233
reportHeapNow();
@@ -254,26 +252,26 @@ void wifiStop()
254252
//If WiFi is on but ESP NOW is off, then turn off radio entirely
255253
else if (espnowState == ESPNOW_OFF)
256254
{
257-
WiFi.mode(WIFI_OFF);
258255
wifiSetState(WIFI_OFF);
256+
WiFi.mode(WIFI_OFF);
259257
Serial.println("WiFi Stopped");
260258
}
261259
//If ESP-Now is active, change protocol to only Long Range
262260
else if (espnowState > ESPNOW_OFF)
263261
{
264-
WiFi.mode(WIFI_STA);
262+
wifiSetState(WIFI_OFF);
265263

266264
// Enable long range, PHY rate of ESP32 will be 512Kbps or 256Kbps
267-
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR);
265+
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR); //Stops WiFi Station.
268266

269-
wifiSetState(WIFI_OFF);
267+
WiFi.mode(WIFI_STA);
270268

271269
Serial.println("WiFi disabled, ESP-Now left in place");
272270
}
273271
#else
274272
//Turn off radio
275-
WiFi.mode(WIFI_OFF);
276273
wifiSetState(WIFI_OFF);
274+
WiFi.mode(WIFI_OFF);
277275
Serial.println("WiFi Stopped");
278276
#endif
279277

0 commit comments

Comments
 (0)