21 #ifdef ARDUINO_ARCH_ESP32
25 #if ENABLED(ESP3D_WIFISUPPORT)
31 #include <Preferences.h>
38 esp_err_t esp_task_wdt_reset();
45 bool WiFiConfig::restart_ESP_module =
false;
61 if (ipaddr.fromString(s)) ip_int = ipaddr;
70 IPAddress ipaddr(ip_int);
71 return ipaddr.toString();
86 for (
int i = 0; i < strlen (hostname); i++) {
88 if (! (isdigit (c) || isalpha (c) || c ==
'_') ) {
110 for (
int i = 0; i < strlen (ssid); i++) {
111 if (!isPrintable (ssid[i]) ) {
124 if (strlen (password) == 0)
return true;
142 return ip.fromString(
string);
149 uint32_t timeout = millis();
150 vTaskDelay(1 / portTICK_RATE_MS);
151 esp_task_wdt_reset();
153 while ( (millis() - timeout) < milliseconds) {
154 esp_task_wdt_reset();
155 vTaskDelay(1 / portTICK_RATE_MS);
188 void WiFiConfig::WiFiEvent(WiFiEvent_t event)
192 case SYSTEM_EVENT_STA_GOT_IP:
196 case SYSTEM_EVENT_STA_DISCONNECTED:
197 MYSERIAL0.println(
"WiFi lost connection");
215 return (2 * (RSSI + 100) );
222 bool WiFiConfig::ConnectSTA2AP(){
226 wl_status_t status = WiFi.status();
227 while (status != WL_CONNECTED && count < 40) {
230 case WL_NO_SSID_AVAIL:
233 case WL_CONNECT_FAILED:
234 msg=
"Connection failed";
239 if ((dot>3) || (dot==0) ){
241 msg_out =
"Connecting";
251 status = WiFi.status();
253 return (status == WL_CONNECTED);
266 if((WiFi.getMode() == WIFI_STA) || (WiFi.getMode() == WIFI_AP_STA))WiFi.disconnect();
267 if((WiFi.getMode() == WIFI_AP) || (WiFi.getMode() == WIFI_AP_STA))WiFi.softAPdisconnect();
268 WiFi.enableAP (
false);
274 WiFi.setHostname(h.c_str());
295 IPAddress ip(IP), mask(MK), gateway(GW);
296 WiFi.config(ip, gateway,mask);
298 if (WiFi.begin(SSID.c_str(), (password.length() > 0)?password.c_str():NULL)){
299 MYSERIAL0.print(
"\nClient Started\nConnecting ");
301 return ConnectSTA2AP();
303 MYSERIAL0.println(
"\nStarting client failed");
318 if((WiFi.getMode() == WIFI_STA) || (WiFi.getMode() == WIFI_AP_STA))WiFi.disconnect();
319 if((WiFi.getMode() == WIFI_AP) || (WiFi.getMode() == WIFI_AP_STA))WiFi.softAPdisconnect();
320 WiFi.enableSTA (
false);
345 WiFi.softAPConfig(ip, ip, mask);
347 if(WiFi.softAP(SSID.c_str(), (password.length() > 0)?password.c_str():NULL, channel)) {
349 MYSERIAL0.println(WiFi.softAPIP().toString());
352 MYSERIAL0.println(
"\nStarting AP failed");
363 if((WiFi.getMode() == WIFI_STA) || (WiFi.getMode() == WIFI_AP_STA))WiFi.disconnect(
true);
364 if((WiFi.getMode() == WIFI_AP) || (WiFi.getMode() == WIFI_AP_STA))WiFi.softAPdisconnect(
true);
378 WiFi.onEvent(WiFiConfig::WiFiEvent);
389 MYSERIAL0.println(
"\nCannot connect to AP");
394 }
else WiFi.mode(WIFI_OFF);
408 restart_ESP_module=
true;
416 if (restart_ESP_module) {
427 #endif // ENABLE_WIFI
429 #endif // ARDUINO_ARCH_ESP32