mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-19 06:23:44 +02:00
Add MDNS Manager
This commit is contained in:
4
components/MDNSManager/CMakeLists.txt
Normal file
4
components/MDNSManager/CMakeLists.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
idf_component_register(SRCS "MDNSManager/MDNSManager.cpp"
|
||||
INCLUDE_DIRS "MDNSManager"
|
||||
REQUIRES mdns ProjectConfig StateManager
|
||||
)
|
||||
47
components/MDNSManager/MDNSManager/MDNSManager.cpp
Normal file
47
components/MDNSManager/MDNSManager/MDNSManager.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#include "MDNSManager.hpp"
|
||||
|
||||
static const char *MDNS_MANAGER_TAG = "[MDNS MANAGER]";
|
||||
|
||||
MDNSManager::MDNSManager(ProjectConfig &projectConfig) : projectConfig(projectConfig) {}
|
||||
|
||||
esp_err_t MDNSManager::start()
|
||||
{
|
||||
const std::string &mdnsName = "_openiristracker";
|
||||
|
||||
mdnsStateManager.setState(MDNSState_e::MDNSState_Starting);
|
||||
esp_err_t result = mdns_init();
|
||||
if (result != ESP_OK)
|
||||
{
|
||||
mdnsStateManager.setState(MDNSState_e::MDNSState_Error);
|
||||
ESP_LOGE(MDNS_MANAGER_TAG, "Failed to initialize mDNS server: %s", esp_err_to_name(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
auto mdnsConfig = projectConfig.getMDNSConfig();
|
||||
result = mdns_hostname_set(mdnsConfig.hostname.c_str());
|
||||
if (result != ESP_OK)
|
||||
{
|
||||
mdnsStateManager.setState(MDNSState_e::MDNSState_Error);
|
||||
ESP_LOGE(MDNS_MANAGER_TAG, "Failed to set hostname: %s", esp_err_to_name(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
mdns_txt_item_t serviceTxtData[3] = {
|
||||
{"stream_port", "80"},
|
||||
{"api_port", "81"},
|
||||
};
|
||||
|
||||
result = mdns_service_add(nullptr, mdnsName.c_str(), "_tcp", 80, serviceTxtData, 2);
|
||||
|
||||
result = mdns_service_instance_name_set(mdnsName.c_str(), "_tcp", mdnsName.c_str());
|
||||
if (result != ESP_OK)
|
||||
{
|
||||
mdnsStateManager.setState(MDNSState_e::MDNSState_Error);
|
||||
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);
|
||||
|
||||
return result;
|
||||
}
|
||||
21
components/MDNSManager/MDNSManager/MDNSManager.hpp
Normal file
21
components/MDNSManager/MDNSManager/MDNSManager.hpp
Normal file
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
#ifndef MDNSMANAGER_HPP
|
||||
#define MDNSMANAGER_HPP
|
||||
#include <string>
|
||||
#include <ProjectConfig.hpp>
|
||||
#include <StateManager.hpp>
|
||||
#include "esp_log.h"
|
||||
#include "mdns.h"
|
||||
|
||||
// TODO add observer pattern here
|
||||
class MDNSManager
|
||||
{
|
||||
private:
|
||||
ProjectConfig &projectConfig;
|
||||
|
||||
public:
|
||||
MDNSManager(ProjectConfig &projectConfig);
|
||||
esp_err_t start();
|
||||
};
|
||||
|
||||
#endif // MDNSMANAGER_HPP
|
||||
Reference in New Issue
Block a user