From 2068375b96b9e511ca8dcc762a9f0ee407123d33 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:06:54 +0000 Subject: [PATCH 1/6] Initial plan From de25c903c678a8701574e3e8402959b86e85c576 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:16:19 +0000 Subject: [PATCH 2/6] Implement WiFi disable functionality via SSID configuration Co-authored-by: doudar <17362216+doudar@users.noreply.github.com> --- src/HTTP_Server_Basic.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/HTTP_Server_Basic.cpp b/src/HTTP_Server_Basic.cpp index b492d928..b458c556 100644 --- a/src/HTTP_Server_Basic.cpp +++ b/src/HTTP_Server_Basic.cpp @@ -56,6 +56,13 @@ void _APSetup() { void startWifi() { int i = 0; + // Check if WiFi is disabled via special SSID values + if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "WiFi disabled via SSID configuration: '%s'", userConfig->getSsid()); + httpServer.internetConnection = false; + return; + } + // Trying Station mode first: if (strcmp(userConfig->getSsid(), DEVICE_NAME) != 0) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Connecting to: %s", userConfig->getSsid()); @@ -134,6 +141,12 @@ void startWifi() { } void stopWifi() { + // Check if WiFi was disabled via special SSID values + if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "WiFi was disabled, nothing to stop"); + return; + } + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Closing connection to: %s", userConfig->getSsid()); // Stop DirCon service before disconnecting WiFi DirConManager::stop(); @@ -141,6 +154,12 @@ void stopWifi() { } void HTTP_Server::start() { + // Don't start HTTP server if WiFi is disabled + if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP server not started - WiFi disabled"); + return; + } + server.enableCORS(true); server.onNotFound(handleIndexFile); @@ -413,6 +432,11 @@ void HTTP_Server::start() { } void HTTP_Server::webClientUpdate() { + // Don't handle web clients if WiFi is disabled + if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + return; + } + static unsigned long int _webClientTimer = millis(); if (millis() - _webClientTimer > WEBSERVER_DELAY) { _webClientTimer = millis(); @@ -638,6 +662,12 @@ void HTTP_Server::settingsProcessor() { } void HTTP_Server::stop() { + // Don't try to stop HTTP server if WiFi is disabled + if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP server was not started - WiFi disabled"); + return; + } + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Stopping Http Server"); server.stop(); server.close(); @@ -647,6 +677,13 @@ void HTTP_Server::stop() { // 70:94:DE:DD:E6:C4:69:48:3A:92:70:A1:48:56:78:2D:18:64:E0:B7 void HTTP_Server::FirmwareUpdate() { + // Skip firmware update if WiFi is disabled + if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Firmware update skipped - WiFi disabled"); + httpServer.internetConnection = false; + return; + } + HTTPClient http; WiFiClientSecure localClient; localClient.setCACert(rootCACertificate); From c155ec33d2947211358a31987b6d4eee2422ef8c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:29:41 +0000 Subject: [PATCH 3/6] Guard networking when WiFi is disabled Agent-Logs-Url: https://github.com/doudar/SmartSpin2k/sessions/931c8bb8-5824-4b5e-b080-084036fdcd3d Co-authored-by: doudar <17362216+doudar@users.noreply.github.com> --- include/HTTP_Server_Basic.h | 1 + src/DirConManager.cpp | 5 +++++ src/HTTP_Server_Basic.cpp | 37 ++++++++++++++++++++----------------- src/Main.cpp | 18 +++++++++++------- src/UdpAppender.cpp | 4 ++-- src/WebsocketAppender.cpp | 17 +++++++++++++++-- 6 files changed, 54 insertions(+), 28 deletions(-) diff --git a/include/HTTP_Server_Basic.h b/include/HTTP_Server_Basic.h index 4fb684a7..06a166da 100644 --- a/include/HTTP_Server_Basic.h +++ b/include/HTTP_Server_Basic.h @@ -31,6 +31,7 @@ class HTTP_Server { }; // wifi Function +bool isWifiDisabled(); void startWifi(); void stopWifi(); diff --git a/src/DirConManager.cpp b/src/DirConManager.cpp index 585d7da2..ac09f9fa 100644 --- a/src/DirConManager.cpp +++ b/src/DirConManager.cpp @@ -28,6 +28,11 @@ static char uuidListBuffer[128] = ""; static size_t uuidListLength = 0; bool DirConManager::start() { + if (isWifiDisabled()) { + SS2K_LOG(DIRCON_LOG_TAG, "DirCon service not started - WiFi disabled"); + return false; + } + if (!started) { // Initialize buffers for (int i = 0; i < DIRCON_MAX_CLIENTS; i++) { diff --git a/src/HTTP_Server_Basic.cpp b/src/HTTP_Server_Basic.cpp index b458c556..ae117127 100644 --- a/src/HTTP_Server_Basic.cpp +++ b/src/HTTP_Server_Basic.cpp @@ -34,6 +34,10 @@ DNSServer dnsServer; HTTP_Server httpServer; WebServer server(80); +bool isWifiDisabled() { + return strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0; +} + void _staSetup() { WiFi.setHostname(userConfig->getDeviceName()); WiFi.mode(WIFI_STA); @@ -57,9 +61,15 @@ void startWifi() { int i = 0; // Check if WiFi is disabled via special SSID values - if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + if (isWifiDisabled()) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "WiFi disabled via SSID configuration: '%s'", userConfig->getSsid()); httpServer.internetConnection = false; + DirConManager::stop(); + dnsServer.stop(); + MDNS.end(); + WiFi.disconnect(true, true); + WiFi.setAutoReconnect(false); + WiFi.mode(WIFI_MODE_NULL); return; } @@ -141,21 +151,20 @@ void startWifi() { } void stopWifi() { - // Check if WiFi was disabled via special SSID values - if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "WiFi was disabled, nothing to stop"); - return; - } - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Closing connection to: %s", userConfig->getSsid()); // Stop DirCon service before disconnecting WiFi DirConManager::stop(); - WiFi.disconnect(); + dnsServer.stop(); + MDNS.end(); + WiFi.disconnect(true, true); + WiFi.setAutoReconnect(false); + WiFi.mode(WIFI_MODE_NULL); + httpServer.internetConnection = false; } void HTTP_Server::start() { // Don't start HTTP server if WiFi is disabled - if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + if (isWifiDisabled()) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP server not started - WiFi disabled"); return; } @@ -433,7 +442,7 @@ void HTTP_Server::start() { void HTTP_Server::webClientUpdate() { // Don't handle web clients if WiFi is disabled - if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + if (isWifiDisabled()) { return; } @@ -662,12 +671,6 @@ void HTTP_Server::settingsProcessor() { } void HTTP_Server::stop() { - // Don't try to stop HTTP server if WiFi is disabled - if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP server was not started - WiFi disabled"); - return; - } - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Stopping Http Server"); server.stop(); server.close(); @@ -678,7 +681,7 @@ void HTTP_Server::stop() { void HTTP_Server::FirmwareUpdate() { // Skip firmware update if WiFi is disabled - if (strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0) { + if (isWifiDisabled()) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Firmware update skipped - WiFi disabled"); httpServer.internetConnection = false; return; diff --git a/src/Main.cpp b/src/Main.cpp index 9cf225e5..20382aaa 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -139,18 +139,22 @@ extern "C" void app_main() { digitalWrite(LED_PIN, HIGH); // Configure and Initialize Logger - logHandler.addAppender(&webSocketAppender); - logHandler.addAppender(&udpAppender); + if (!isWifiDisabled()) { + logHandler.addAppender(&webSocketAppender); + logHandler.addAppender(&udpAppender); + } logHandler.initialize(); ss2k->startTasks(); httpServer.start(); // Start DirCon TCP server for direct control over the bike trainer - SS2K_LOG(MAIN_LOG_TAG, "Starting DirCon TCP service"); - if (DirConManager::start()) { - SS2K_LOG(MAIN_LOG_TAG, "DirCon TCP service started successfully"); - } else { - SS2K_LOG(MAIN_LOG_TAG, "Failed to start DirCon TCP service"); + if (!isWifiDisabled()) { + SS2K_LOG(MAIN_LOG_TAG, "Starting DirCon TCP service"); + if (DirConManager::start()) { + SS2K_LOG(MAIN_LOG_TAG, "DirCon TCP service started successfully"); + } else { + SS2K_LOG(MAIN_LOG_TAG, "Failed to start DirCon TCP service"); + } } #ifdef TEST_PTAB4PWR diff --git a/src/UdpAppender.cpp b/src/UdpAppender.cpp index c27fe31f..3f907bed 100644 --- a/src/UdpAppender.cpp +++ b/src/UdpAppender.cpp @@ -11,9 +11,9 @@ void UdpAppender::Initialize() {} void UdpAppender::Log(const char *message) { - if (WiFi.status() == WL_CONNECTED && userConfig->getUdpLogEnabled()) { + if (!isWifiDisabled() && WiFi.status() == WL_CONNECTED && userConfig->getUdpLogEnabled()) { this->udp.beginPacket("255.255.255.255", this->port); this->udp.write((uint8_t *)message, strlen(message)); this->udp.endPacket(); } -} \ No newline at end of file +} diff --git a/src/WebsocketAppender.cpp b/src/WebsocketAppender.cpp index bf715e1d..e9469f3c 100644 --- a/src/WebsocketAppender.cpp +++ b/src/WebsocketAppender.cpp @@ -7,6 +7,7 @@ // see: https://github.com/gilmaimon/ArduinoWebsockets #include "WebsocketAppender.h" +#include "HTTP_Server_Basic.h" WebSocketAppender::WebSocketAppender() { for (uint8_t index = 0; index < maxClients; index++) { @@ -14,8 +15,16 @@ WebSocketAppender::WebSocketAppender() { } } -void WebSocketAppender::Initialize() { _webSocketsServer.listen(WebSocketAppender::port); } +void WebSocketAppender::Initialize() { + if (!isWifiDisabled()) { + _webSocketsServer.listen(WebSocketAppender::port); + } +} void WebSocketAppender::Loop() { + if (isWifiDisabled()) { + return; + } + // CheckConnectedClients(); if (WiFi.status() == WL_CONNECTED && GetClientsCount() < maxClients) { if (_webSocketsServer.poll() == false) { @@ -29,6 +38,10 @@ void WebSocketAppender::Loop() { } void WebSocketAppender::Log(const char* message) { + if (isWifiDisabled()) { + return; + } + // Serial.println("Log websocket."); // Serial.printf("%d clients connected.\n", GetClientsCount()); @@ -81,4 +94,4 @@ void WebSocketAppender::CheckConnectedClients() { delete client; } } -} \ No newline at end of file +} From 46a5aa059041ffabfa9715be5427b4a352e22e98 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 00:37:03 +0000 Subject: [PATCH 4/6] Deduplicate WiFi shutdown handling Agent-Logs-Url: https://github.com/doudar/SmartSpin2k/sessions/931c8bb8-5824-4b5e-b080-084036fdcd3d Co-authored-by: doudar <17362216+doudar@users.noreply.github.com> --- src/HTTP_Server_Basic.cpp | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/HTTP_Server_Basic.cpp b/src/HTTP_Server_Basic.cpp index ae117127..8682f31e 100644 --- a/src/HTTP_Server_Basic.cpp +++ b/src/HTTP_Server_Basic.cpp @@ -38,6 +38,16 @@ bool isWifiDisabled() { return strcmp(userConfig->getSsid(), "") == 0 || strcmp(userConfig->getSsid(), "none") == 0; } +static void powerDownWifi() { + DirConManager::stop(); + dnsServer.stop(); + MDNS.end(); + WiFi.disconnect(true, true); + WiFi.setAutoReconnect(false); + WiFi.mode(WIFI_MODE_NULL); + httpServer.internetConnection = false; +} + void _staSetup() { WiFi.setHostname(userConfig->getDeviceName()); WiFi.mode(WIFI_STA); @@ -63,13 +73,7 @@ void startWifi() { // Check if WiFi is disabled via special SSID values if (isWifiDisabled()) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "WiFi disabled via SSID configuration: '%s'", userConfig->getSsid()); - httpServer.internetConnection = false; - DirConManager::stop(); - dnsServer.stop(); - MDNS.end(); - WiFi.disconnect(true, true); - WiFi.setAutoReconnect(false); - WiFi.mode(WIFI_MODE_NULL); + powerDownWifi(); return; } @@ -151,15 +155,12 @@ void startWifi() { } void stopWifi() { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Closing connection to: %s", userConfig->getSsid()); - // Stop DirCon service before disconnecting WiFi - DirConManager::stop(); - dnsServer.stop(); - MDNS.end(); - WiFi.disconnect(true, true); - WiFi.setAutoReconnect(false); - WiFi.mode(WIFI_MODE_NULL); - httpServer.internetConnection = false; + if (isWifiDisabled()) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Stopping WiFi services while WiFi is disabled"); + } else { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Closing connection to: %s", userConfig->getSsid()); + } + powerDownWifi(); } void HTTP_Server::start() { From c27c12cb1bc4f45a0d9b934ee23b5e031ae67945 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 12 May 2026 14:45:04 +0000 Subject: [PATCH 5/6] Move networking guards into main Agent-Logs-Url: https://github.com/doudar/SmartSpin2k/sessions/e759c192-9c60-4e03-be5d-88fac969b873 Co-authored-by: doudar <17362216+doudar@users.noreply.github.com> --- src/DirConManager.cpp | 5 ----- src/HTTP_Server_Basic.cpp | 29 ++--------------------------- src/Main.cpp | 35 +++++++++++++++++++++++++---------- src/UdpAppender.cpp | 2 +- src/WebsocketAppender.cpp | 16 +--------------- 5 files changed, 29 insertions(+), 58 deletions(-) diff --git a/src/DirConManager.cpp b/src/DirConManager.cpp index ac09f9fa..585d7da2 100644 --- a/src/DirConManager.cpp +++ b/src/DirConManager.cpp @@ -28,11 +28,6 @@ static char uuidListBuffer[128] = ""; static size_t uuidListLength = 0; bool DirConManager::start() { - if (isWifiDisabled()) { - SS2K_LOG(DIRCON_LOG_TAG, "DirCon service not started - WiFi disabled"); - return false; - } - if (!started) { // Initialize buffers for (int i = 0; i < DIRCON_MAX_CLIENTS; i++) { diff --git a/src/HTTP_Server_Basic.cpp b/src/HTTP_Server_Basic.cpp index 8682f31e..dbbf21cb 100644 --- a/src/HTTP_Server_Basic.cpp +++ b/src/HTTP_Server_Basic.cpp @@ -42,7 +42,7 @@ static void powerDownWifi() { DirConManager::stop(); dnsServer.stop(); MDNS.end(); - WiFi.disconnect(true, true); + WiFi.disconnect(true, false); WiFi.setAutoReconnect(false); WiFi.mode(WIFI_MODE_NULL); httpServer.internetConnection = false; @@ -87,7 +87,7 @@ void startWifi() { i++; if (i > WIFI_CONNECT_TIMEOUT) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Couldn't Connect. Switching to AP mode"); - WiFi.disconnect(true, true); + WiFi.disconnect(true, false); WiFi.setAutoReconnect(false); WiFi.mode(WIFI_MODE_NULL); delay(1000); @@ -131,13 +131,6 @@ void startWifi() { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Connected to %s IP address: %s", userConfig->getSsid(), myIP.toString().c_str()); SS2K_LOG(HTTP_SERVER_LOG_TAG, "Open http://%s.local/", userConfig->getDeviceName()); - // Initialize DirCon MDNS service - if (DirConManager::start()) { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "DirCon service started successfully"); - } else { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Error starting DirCon service"); - } - WiFi.setTxPower(WIFI_POWER_19_5dBm); if (WiFi.getMode() == WIFI_STA) { @@ -164,12 +157,6 @@ void stopWifi() { } void HTTP_Server::start() { - // Don't start HTTP server if WiFi is disabled - if (isWifiDisabled()) { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP server not started - WiFi disabled"); - return; - } - server.enableCORS(true); server.onNotFound(handleIndexFile); @@ -442,11 +429,6 @@ void HTTP_Server::start() { } void HTTP_Server::webClientUpdate() { - // Don't handle web clients if WiFi is disabled - if (isWifiDisabled()) { - return; - } - static unsigned long int _webClientTimer = millis(); if (millis() - _webClientTimer > WEBSERVER_DELAY) { _webClientTimer = millis(); @@ -681,13 +663,6 @@ void HTTP_Server::stop() { // 70:94:DE:DD:E6:C4:69:48:3A:92:70:A1:48:56:78:2D:18:64:E0:B7 void HTTP_Server::FirmwareUpdate() { - // Skip firmware update if WiFi is disabled - if (isWifiDisabled()) { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Firmware update skipped - WiFi disabled"); - httpServer.internetConnection = false; - return; - } - HTTPClient http; WiFiClientSecure localClient; localClient.setCACert(rootCACertificate); diff --git a/src/Main.cpp b/src/Main.cpp index 20382aaa..07d2f48f 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -116,7 +116,9 @@ extern "C" void app_main() { // HTTP setup because otherwise they use too much traffic and the device // fails to update which really sucks when it corrupts your settings. startWifi(); - httpServer.FirmwareUpdate(); + if (!isWifiDisabled()) { + httpServer.FirmwareUpdate(); + } pinMode(currentBoard.shiftUpPin, INPUT_PULLUP); // Push-Button with input Pullup pinMode(currentBoard.shiftDownPin, INPUT_PULLUP); // Push-Button with input Pullup @@ -145,10 +147,10 @@ extern "C" void app_main() { } logHandler.initialize(); ss2k->startTasks(); - httpServer.start(); - - // Start DirCon TCP server for direct control over the bike trainer if (!isWifiDisabled()) { + httpServer.start(); + + // Start DirCon TCP server for direct control over the bike trainer SS2K_LOG(MAIN_LOG_TAG, "Starting DirCon TCP service"); if (DirConManager::start()) { SS2K_LOG(MAIN_LOG_TAG, "DirCon TCP service started successfully"); @@ -197,7 +199,9 @@ void SS2K::maintenanceLoop(void *pvParameters) { if ((millis() - bleTimer) > BLE_NOTIFY_DELAY) { BLECommunications(); logHandler.writeLogs(); - webSocketAppender.Loop(); + if (!isWifiDisabled()) { + webSocketAppender.Loop(); + } bleTimer = millis(); } // Don't do these if updating and in spindown mode. @@ -226,9 +230,11 @@ void SS2K::maintenanceLoop(void *pvParameters) { BLE_ss2kCustomCharacteristic::parseNemit(); // Update Zwift Gear UI if shift happened - httpServer.webClientUpdate(); - // Update DirCon protocol - DirConManager::update(); + if (!isWifiDisabled()) { + httpServer.webClientUpdate(); + // Update DirCon protocol + DirConManager::update(); + } // If we're in ERG mode, modify shift commands to inc/dec the target watts instead. // If we have a resistance bike attached, slow down when we're close to the limits. @@ -306,7 +312,9 @@ void SS2K::maintenanceLoop(void *pvParameters) { SS2K_LOG(MAIN_LOG_TAG, "Rebooting due to inactivity."); ss2k->rebootFlag = true; logHandler.writeLogs(); - webSocketAppender.Loop(); + if (!isWifiDisabled()) { + webSocketAppender.Loop(); + } } } else { @@ -418,7 +426,14 @@ void SS2K::restartWifi() { stopWifi(); delay(100); startWifi(); - httpServer.start(); + if (!isWifiDisabled()) { + httpServer.start(); + if (DirConManager::start()) { + SS2K_LOG(MAIN_LOG_TAG, "DirCon TCP service started successfully"); + } else { + SS2K_LOG(MAIN_LOG_TAG, "Failed to start DirCon TCP service"); + } + } } void SS2K::moveStepper() { diff --git a/src/UdpAppender.cpp b/src/UdpAppender.cpp index 3f907bed..91de7c71 100644 --- a/src/UdpAppender.cpp +++ b/src/UdpAppender.cpp @@ -11,7 +11,7 @@ void UdpAppender::Initialize() {} void UdpAppender::Log(const char *message) { - if (!isWifiDisabled() && WiFi.status() == WL_CONNECTED && userConfig->getUdpLogEnabled()) { + if (WiFi.status() == WL_CONNECTED && userConfig->getUdpLogEnabled()) { this->udp.beginPacket("255.255.255.255", this->port); this->udp.write((uint8_t *)message, strlen(message)); this->udp.endPacket(); diff --git a/src/WebsocketAppender.cpp b/src/WebsocketAppender.cpp index e9469f3c..e0d2fc8d 100644 --- a/src/WebsocketAppender.cpp +++ b/src/WebsocketAppender.cpp @@ -7,24 +7,14 @@ // see: https://github.com/gilmaimon/ArduinoWebsockets #include "WebsocketAppender.h" -#include "HTTP_Server_Basic.h" - WebSocketAppender::WebSocketAppender() { for (uint8_t index = 0; index < maxClients; index++) { _clients[index] = NULL; } } -void WebSocketAppender::Initialize() { - if (!isWifiDisabled()) { - _webSocketsServer.listen(WebSocketAppender::port); - } -} +void WebSocketAppender::Initialize() { _webSocketsServer.listen(WebSocketAppender::port); } void WebSocketAppender::Loop() { - if (isWifiDisabled()) { - return; - } - // CheckConnectedClients(); if (WiFi.status() == WL_CONNECTED && GetClientsCount() < maxClients) { if (_webSocketsServer.poll() == false) { @@ -38,10 +28,6 @@ void WebSocketAppender::Loop() { } void WebSocketAppender::Log(const char* message) { - if (isWifiDisabled()) { - return; - } - // Serial.println("Log websocket."); // Serial.printf("%d clients connected.\n", GetClientsCount()); From 745cbfd657f06744337a2f08a01f4396ad3b77bf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 12 May 2026 14:52:32 +0000 Subject: [PATCH 6/6] Extract centralized network startup helper Agent-Logs-Url: https://github.com/doudar/SmartSpin2k/sessions/e759c192-9c60-4e03-be5d-88fac969b873 Co-authored-by: doudar <17362216+doudar@users.noreply.github.com> --- src/Main.cpp | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/src/Main.cpp b/src/Main.cpp index 07d2f48f..e77d4c27 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -52,6 +52,19 @@ RuntimeParameters *rtConfig = new RuntimeParameters; UdpAppender udpAppender; WebSocketAppender webSocketAppender; +static void startNetworkServices() { + if (!isWifiDisabled()) { + httpServer.start(); + + SS2K_LOG(MAIN_LOG_TAG, "Starting DirCon TCP service"); + if (DirConManager::start()) { + SS2K_LOG(MAIN_LOG_TAG, "DirCon TCP service started successfully"); + } else { + SS2K_LOG(MAIN_LOG_TAG, "Failed to start DirCon TCP service"); + } + } +} + ///////////// BEGIN SETUP ///////////// #ifndef UNIT_TEST @@ -147,17 +160,7 @@ extern "C" void app_main() { } logHandler.initialize(); ss2k->startTasks(); - if (!isWifiDisabled()) { - httpServer.start(); - - // Start DirCon TCP server for direct control over the bike trainer - SS2K_LOG(MAIN_LOG_TAG, "Starting DirCon TCP service"); - if (DirConManager::start()) { - SS2K_LOG(MAIN_LOG_TAG, "DirCon TCP service started successfully"); - } else { - SS2K_LOG(MAIN_LOG_TAG, "Failed to start DirCon TCP service"); - } - } + startNetworkServices(); #ifdef TEST_PTAB4PWR userConfig->setHMin(0); @@ -426,14 +429,7 @@ void SS2K::restartWifi() { stopWifi(); delay(100); startWifi(); - if (!isWifiDisabled()) { - httpServer.start(); - if (DirConManager::start()) { - SS2K_LOG(MAIN_LOG_TAG, "DirCon TCP service started successfully"); - } else { - SS2K_LOG(MAIN_LOG_TAG, "Failed to start DirCon TCP service"); - } - } + startNetworkServices(); } void SS2K::moveStepper() {