#ifndef WIFI_MANAGER_H #define WIFI_MANAGER_H #include #include #include class WifiManager { public: void begin(const char* ssid, const char* password); void loop(); void disconnect(); void startAP(const char* deviceId); void stopAP(); bool isAPActive(); uint8_t getAPClientCount(); void startScan(); bool isScanComplete(); String getScanResultsJson(); bool isConnected(); int8_t getRSSI(); String getIPAddress(); String getMACAddress(); String getSSID(); void connectTo(const char* ssid, const char* password); void onConnect(std::function callback) { _onConnect = callback; } void onDisconnect(std::function callback) { _onDisconnect = callback; } private: char _ssid[64]; char _password[64]; bool _staEnabled; bool _wasConnected; bool _apActive; bool _scanRequested; std::function _onConnect; std::function _onDisconnect; unsigned long _lastReconnectAttemptMs; static const unsigned long RECONNECT_INTERVAL_MS = 30000; static const unsigned long CONNECT_TIMEOUT_MS = 15000; void attemptConnect(); void syncNTP(); void applyMode(); }; #endif