Allow passwordless wifi networks; reconnect to wifi network once

This commit is contained in:
suchmememanyskill
2024-03-21 22:00:24 +01:00
parent c7c6b26730
commit 315e066e27

View File

@@ -3,6 +3,7 @@
#include "../conf/global_config.h" #include "../conf/global_config.h"
#include "ui_utils.h" #include "ui_utils.h"
#include "WiFi.h" #include "WiFi.h"
#include "../core/data_setup.h"
void wifi_init_inner(); void wifi_init_inner();
void wifi_pass_entry(const char* ssid); void wifi_pass_entry(const char* ssid);
@@ -33,17 +34,12 @@ static void ta_event_cb(lv_event_t * e) {
if (code == LV_EVENT_READY) if (code == LV_EVENT_READY)
{ {
const char * txt = lv_textarea_get_text(ta); const char * txt = lv_textarea_get_text(ta);
int len = strlen(txt);
if (len > 0)
{
global_config.wifi_configured = true; global_config.wifi_configured = true;
strcpy(global_config.wifi_SSID, current_ssid_ptr); strcpy(global_config.wifi_SSID, current_ssid_ptr);
strcpy(global_config.wifi_password, txt); strcpy(global_config.wifi_password, txt);
write_global_config(); write_global_config();
wifi_init_inner(); wifi_init_inner();
} }
}
else if (code == LV_EVENT_CANCEL) else if (code == LV_EVENT_CANCEL)
{ {
wifi_init_inner(); wifi_init_inner();
@@ -150,7 +146,14 @@ void wifi_init_inner(){
lv_obj_clean(lv_scr_act()); lv_obj_clean(lv_scr_act());
if (global_config.wifi_configured){ if (global_config.wifi_configured){
if (global_config.wifi_password[0] == '\0')
{
WiFi.begin(global_config.wifi_SSID);
}
else
{
WiFi.begin(global_config.wifi_SSID, global_config.wifi_password); WiFi.begin(global_config.wifi_SSID, global_config.wifi_password);
}
Serial.printf("Connecting to %s with a password length of %d\n", global_config.wifi_SSID, strlen(global_config.wifi_password)); Serial.printf("Connecting to %s with a password length of %d\n", global_config.wifi_SSID, strlen(global_config.wifi_password));
@@ -253,8 +256,35 @@ void wifi_init(){
} }
} }
ulong start_time_recovery = 0;
void wifi_ok(){ void wifi_ok(){
if (WiFi.status() != WL_CONNECTED){ if (WiFi.status() != WL_CONNECTED){
Serial.println("WiFi Connection Lost. Reconnecting...");
freeze_request_thread();
WiFi.disconnect();
delay(5000); // Wait for the WiFi to disconnect
start_time_recovery = millis();
if (global_config.wifi_password[0] == '\0')
{
WiFi.begin(global_config.wifi_SSID);
}
else
{
WiFi.begin(global_config.wifi_SSID, global_config.wifi_password);
}
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.printf("WiFi Status: %s\n", errs[WiFi.status()]);
if (millis() - start_time_recovery > 10000){
Serial.println("WiFi Connection failed to reconnect. Restarting...");
ESP.restart(); ESP.restart();
} }
}
unfreeze_request_thread();
}
} }