From b2b4d2b3384a6a5256b32820a061b2c5dcfd6f0c Mon Sep 17 00:00:00 2001 From: xjikka <38142124+xjikka@users.noreply.github.com> Date: Sun, 20 Oct 2024 10:05:39 +0200 Subject: [PATCH] Ssid2modv2 (#1274) * SSID2 autoswitch BEKEN only * SSID2 autoswitch BEKEN only v2 --------- Co-authored-by: Tester23 --- src/httpserver/http_fns.c | 3 ++ src/user_main.c | 68 +++++++++++++++++++++++++++++++++++---- 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c index 869a8d5e8..10fd5101c 100644 --- a/src/httpserver/http_fns.c +++ b/src/httpserver/http_fns.c @@ -1276,6 +1276,9 @@ int http_fn_cfg_wifi(http_request_t* request) { add_label_text_field(request, "SSID", "ssid", CFG_GetWiFiSSID(), "
"); add_label_password_field(request, "", "pass", CFG_GetWiFiPass(), "
Password enable clear text password (clears password)"); poststr_h2(request, "Alternate WiFi (used when first one is not responding)"); +#ifndef PLATFORM_BEKEN + poststr_h2(request, "SSID2 only on Beken Platform (BK7231T,BK7231N)"); +#endif add_label_text_field(request, "SSID2", "ssid2", CFG_GetWiFiSSID2(), ""); add_label_password_field(request, "", "pass2", CFG_GetWiFiPass2(), "
Password2 enable clear text password (clears password)"); #if ALLOW_WEB_PASSWORD diff --git a/src/user_main.c b/src/user_main.c index a197f0f97..484a6452a 100644 --- a/src/user_main.c +++ b/src/user_main.c @@ -288,6 +288,53 @@ extern int g_ln882h_pendingPowerSaveCommand; void LN882H_ApplyPowerSave(int bOn); #endif +// SSID switcher by xjikka 20240525 +#if ALLOW_SSID2 +static int g_SSIDactual = 0; // 0=SSID1 1=SSID2 +static int g_SSIDSwitchAfterTry = 3;// switch to opposite SSID after +static int g_SSIDSwitchCnt = 0; // switch counter +#endif + +void CheckForSSID12_Switch() { +#if ALLOW_SSID2 + // nothing to do if SSID2 is unset + if (CFG_GetWiFiSSID2()[0] == 0) return; + if (g_SSIDSwitchCnt++ < g_SSIDSwitchAfterTry) { + ADDLOGF_INFO("WiFi SSID: waiting for SSID switch %d/%d (using SSID%d)\r\n", g_SSIDSwitchCnt, g_SSIDSwitchAfterTry, g_SSIDactual+1); + return; + } + g_SSIDSwitchCnt = 0; + g_SSIDactual ^= 1; // toggle SSID + ADDLOGF_INFO("WiFi SSID: switching to SSID%i\r\n", g_SSIDactual + 1); +#endif +} + +const char* CFG_GetWiFiSSIDX() { +#if ALLOW_SSID2 + if (g_SSIDactual) { + return CFG_GetWiFiSSID2(); + } + else { + return CFG_GetWiFiSSID(); + } +#else + return CFG_GetWiFiSSID(); +#endif +} + +const char* CFG_GetWiFiPassX() { +#if ALLOW_SSID2 + if (g_SSIDactual) { + return CFG_GetWiFiPass2(); + } + else { + return CFG_GetWiFiPass(); + } +#else + return CFG_GetWiFiPass(); +#endif +} + void Main_OnWiFiStatusChange(int code) { // careful what you do in here. @@ -325,6 +372,9 @@ void Main_OnWiFiStatusChange(int code) break; case WIFI_STA_CONNECTED: g_bHasWiFiConnected = 1; +#if ALLOW_SSID2 + g_SSIDSwitchCnt = 0; +#endif ADDLOGF_INFO("Main_OnWiFiStatusChange - WIFI_STA_CONNECTED - %i\r\n", code); if (bSafeMode == 0) { @@ -448,13 +498,19 @@ void Main_ConnectToWiFiNow() { const char* wifi_ssid, * wifi_pass; g_bOpenAccessPointMode = 0; - wifi_ssid = CFG_GetWiFiSSID(); - wifi_pass = CFG_GetWiFiPass(); - HAL_ConnectToWiFi(wifi_ssid, wifi_pass,&g_cfg.staticIP); - // register function to get callbacks about wifi changes. + CheckForSSID12_Switch(); + wifi_ssid = CFG_GetWiFiSSIDX(); + wifi_pass = CFG_GetWiFiPassX(); + // register function to get callbacks about wifi changes .. + // ... but do it, before calling HAL_ConnectToWiFi(), + // otherwise callbacks are not possible (e.g. WIFI_STA_CONNECTING can never be called )!! HAL_WiFi_SetupStatusCallback(Main_OnWiFiStatusChange); - ADDLOGF_DEBUG("Registered for wifi changes\r\n"); - g_connectToWiFi = 0; + ADDLOGF_INFO("Registered for wifi changes\r\n"); + ADDLOGF_INFO("Connecting to SSID [%s]\r\n", wifi_ssid); + HAL_ConnectToWiFi(wifi_ssid, wifi_pass, &g_cfg.staticIP); + // don't set g_connectToWiFi = 0; here! + // this would overwrite any changes, e.g. from Main_OnWiFiStatusChange ! + // so don't do this here, but e.g. set in Main_OnWiFiStatusChange if connected!!! } bool Main_HasFastConnect() { if (g_bootFailures > 2)