diff --git a/include/MDNSAnnouncer.h b/include/MDNSAnnouncer.h new file mode 100644 index 00000000..96d310e6 --- /dev/null +++ b/include/MDNSAnnouncer.h @@ -0,0 +1,7 @@ +#pragma once + +namespace OpenShock::MDNSAnnouncer { + bool Init(); + bool IsEnabled(); + void SetEnabled(bool enabled); +} // namespace OpenShock::MDNSAnnouncer diff --git a/src/CaptivePortal.cpp b/src/CaptivePortal.cpp index e3e26249..3b0756d4 100644 --- a/src/CaptivePortal.cpp +++ b/src/CaptivePortal.cpp @@ -16,7 +16,6 @@ const char* const TAG = "CaptivePortal"; #include #include -#include #include @@ -54,26 +53,6 @@ static bool captiveportal_start() return false; } - esp_err_t err = mdns_init(); - if (err != ESP_OK) { - OS_LOGE(TAG, "Failed to initialize mDNS"); - WiFi.softAPdisconnect(true); - return false; - } - - std::string hostname; - if (!Config::GetWiFiHostname(hostname)) { - OS_LOGE(TAG, "Failed to get WiFi hostname, reverting to default"); - hostname = OPENSHOCK_FW_HOSTNAME; - } - - err = mdns_hostname_set(hostname.c_str()); - if (err != ESP_OK) { - OS_LOGE(TAG, "Failed to set mDNS hostname"); - WiFi.softAPdisconnect(true); - return false; - } - s_instance = std::make_unique(); return true; diff --git a/src/MDNSAnnouncer.cpp b/src/MDNSAnnouncer.cpp new file mode 100644 index 00000000..84be8c0a --- /dev/null +++ b/src/MDNSAnnouncer.cpp @@ -0,0 +1,48 @@ +#include "MDNSAnnouncer.h" + +#include "config/Config.h" + +#include + +#include + +static const char* TAG = "MDNSAnnouncer"; + +using namespace OpenShock; + +bool MDNSAnnouncer::Init() { + esp_err_t err = mdns_init(); + if (err != ESP_OK) { + OS_LOGE(TAG, "Failed to initialize mDNS"); + WiFi.softAPdisconnect(true); + return false; + } + + mdns_instance_name_set("OpenShock"); + + std::string hostname; + if (Config::GetWiFiHostname(hostname)) { + OS_LOGE(TAG, "Failed to get WiFi hostname, reverting to default"); + hostname = OPENSHOCK_FW_HOSTNAME; + } + + err = mdns_hostname_set(hostname.c_str()); + if (err != ESP_OK) { + OS_LOGE(TAG, "Failed to set mDNS hostname"); + WiFi.softAPdisconnect(true); + return false; + } + + return true; +} + +bool MDNSAnnouncer::IsEnabled() { + mdns_service_add("http", "_tcp", 80); + return Config::GetCaptivePortalConfig().mdnsEnabled; +} + +void MDNSAnnouncer::SetEnabled(bool enabled) { + Config::SetCaptivePortalConfig({ + .mdnsEnabled = enabled, + }); +} diff --git a/src/wifi/WiFiManager.cpp b/src/wifi/WiFiManager.cpp index 9dbf4655..fd0fdfd2 100644 --- a/src/wifi/WiFiManager.cpp +++ b/src/wifi/WiFiManager.cpp @@ -396,7 +396,6 @@ bool WiFiManager::Init() hostname = OPENSHOCK_FW_HOSTNAME; } - WiFi.setAutoConnect(false); WiFi.setAutoReconnect(false); WiFi.enableSTA(true); WiFi.setHostname(hostname.c_str());