#pragma once #include #include #include #include #include #include #include #include class APService { public: APService(); ~APService(); void begin(); void loop(); void recoveryMode(); esp_err_t getStatusProto(httpd_req_t *request); void statusProto(api_APStatus &proto); APNetworkStatus getAPNetworkStatus(); esp_err_t getSettings(httpd_req_t *request); esp_err_t updateSettings(httpd_req_t *request, api_Request *protoReq); private: static constexpr const char *TAG = "APService"; void onSettingsChanged(const api_APSettings &newSettings); APSettings _settings = APSettings_defaults(); EventBus::Handle _settingsHandle; DNSServer *_dnsServer; volatile unsigned long _lastManaged; volatile bool _reconfigureAp; volatile bool _recoveryMode = false; void reconfigureAP(); void manageAP(); void startAP(); void stopAP(); void handleDNS(); };