#pragma once #include #include #include #include "NodeInfo.h" #include #include #include #include "Config.h" // Forward declaration class TaskManager; // WiFi access point structure struct WiFiAccessPoint { String ssid; int32_t rssi; uint8_t encryption; uint8_t* bssid; int32_t channel; bool isHidden; WiFiAccessPoint() : rssi(0), encryption(0), bssid(nullptr), channel(0), isHidden(false) {} ~WiFiAccessPoint() { if (bssid) { delete[] bssid; } } }; class NodeContext { public: NodeContext(); NodeContext(std::initializer_list> initialLabels); ~NodeContext(); WiFiUDP* udp; String hostname; IPAddress localIP; NodeInfo self; std::map* memberList; Config config; TaskManager* taskManager; using EventCallback = std::function; std::map> eventRegistry; void on(const std::string& event, EventCallback cb); void fire(const std::string& event, void* data); // WiFi access points storage std::vector* wifiAccessPoints; };