Rewrite state manager, clean up states, fixup typos - todo test state display

This commit is contained in:
Lorow
2025-04-21 23:50:41 +02:00
parent f1cf3baf46
commit 4095f00bb0
14 changed files with 273 additions and 154 deletions

View File

@@ -2,17 +2,22 @@
static const char *MDNS_MANAGER_TAG = "[MDNS MANAGER]";
MDNSManager::MDNSManager(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {}
MDNSManager::MDNSManager(std::shared_ptr<ProjectConfig> projectConfig, QueueHandle_t eventQueue) : projectConfig(projectConfig), eventQueue(eventQueue) {}
esp_err_t MDNSManager::start()
{
const std::string &mdnsName = "_openiristracker";
mdnsStateManager.setState(MDNSState_e::MDNSState_Starting);
{
SystemEvent event = {EventSource::MDNS, MDNSState_e::MDNSState_Starting};
xQueueSend(this->eventQueue, &event, 10);
}
esp_err_t result = mdns_init();
if (result != ESP_OK)
{
mdnsStateManager.setState(MDNSState_e::MDNSState_Error);
SystemEvent event = {EventSource::MDNS, MDNSState_e::MDNSState_Error};
xQueueSend(this->eventQueue, &event, 10);
ESP_LOGE(MDNS_MANAGER_TAG, "Failed to initialize mDNS server: %s", esp_err_to_name(result));
return result;
}
@@ -21,7 +26,8 @@ esp_err_t MDNSManager::start()
result = mdns_hostname_set(mdnsConfig.hostname.c_str());
if (result != ESP_OK)
{
mdnsStateManager.setState(MDNSState_e::MDNSState_Error);
SystemEvent event = {EventSource::MDNS, MDNSState_e::MDNSState_Error};
xQueueSend(this->eventQueue, &event, 10);
ESP_LOGE(MDNS_MANAGER_TAG, "Failed to set hostname: %s", esp_err_to_name(result));
return result;
}
@@ -36,12 +42,15 @@ esp_err_t MDNSManager::start()
result = mdns_service_instance_name_set(mdnsName.c_str(), "_tcp", mdnsName.c_str());
if (result != ESP_OK)
{
mdnsStateManager.setState(MDNSState_e::MDNSState_Error);
SystemEvent event = {EventSource::MDNS, MDNSState_e::MDNSState_Error};
xQueueSend(this->eventQueue, &event, 10);
ESP_LOGE(MDNS_MANAGER_TAG, "Failed to set mDNS instance name: %s", esp_err_to_name(result));
return result;
}
mdnsStateManager.setState(MDNSState_e::MDNSState_Started);
SystemEvent event = {EventSource::MDNS, MDNSState_e::MDNSState_Started};
xQueueSend(this->eventQueue, &event, 10);
return result;
}

View File

@@ -5,15 +5,18 @@
#include <ProjectConfig.hpp>
#include <StateManager.hpp>
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "mdns.h"
class MDNSManager
{
private:
std::shared_ptr<ProjectConfig> projectConfig;
QueueHandle_t eventQueue;
public:
MDNSManager(std::shared_ptr<ProjectConfig> projectConfig);
MDNSManager(std::shared_ptr<ProjectConfig> projectConfig, QueueHandle_t eventQueue);
esp_err_t start();
};