From 506d53efe31812cc09bfbf4bbed3f84904b989e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20SAILLANT?= <108685187+electron-rare@users.noreply.github.com> Date: Sat, 21 Feb 2026 03:06:47 +0100 Subject: [PATCH] fix esp32dev web init crash and preserve status fields --- src/main.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 3825561..b47e741 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "audio/AudioEngine.h" #include "core/PlatformProfile.h" @@ -59,7 +60,7 @@ void printStatusLine() { doc["telephony"] = telephonyStateToString(g_telephony.state()); doc["hook"] = g_slic.isHookOff() ? "OFF_HOOK" : "ON_HOOK"; doc["full_duplex"] = g_audio.supportsFullDuplex(); - appendAudioMetrics(doc.to()); + appendAudioMetrics(doc.as()); String payload; serializeJson(doc, payload); Serial.println(payload); @@ -186,6 +187,18 @@ void setup() { g_telephony.begin(g_profile, g_slic, g_audio); + // Ensure LWIP/tcpip stack is initialized before AsyncWebServer starts. + if (WiFi.getMode() == WIFI_MODE_NULL) { + const bool mode_ok = WiFi.mode(WIFI_AP); + const bool ap_ok = mode_ok && WiFi.softAP("RTC_BL_PHONE"); + if (ap_ok) { + Serial.printf("[RTC_BL_PHONE] AP ready: ssid=RTC_BL_PHONE ip=%s\n", + WiFi.softAPIP().toString().c_str()); + } else { + Serial.println("[RTC_BL_PHONE] WARN: WiFi AP init failed; web server may be unavailable"); + } + } + g_web.setRateLimitMs(1000); g_web.setAuthEnabled(false); g_web.setControlCallback(onWebControl);