#ifndef _GWWIFI_H #define _GWWIFI_H #include #include #include #include class GwWifi{ private: const GwConfigHandler *config; GwLog *logger; const GwConfigInterface *wifiClient; const GwConfigInterface *wifiSSID; const GwConfigInterface *wifiPass; bool connectInternal(); long lastConnectStart=0; unsigned long lastApAccess=0; unsigned long apShutdownTime=0; bool apActive=false; bool fixedApPass=true; bool clientIsConnected=false; SemaphoreHandle_t wifiMutex=nullptr; static const TickType_t WIFI_MUTEX_TIMEOUT=pdMS_TO_TICKS(1000); bool acquireMutex(); void releaseMutex(); public: const char *AP_password = "esp32nmea2k"; GwWifi(const GwConfigHandler *config,GwLog *log, bool fixedApPass=true); ~GwWifi(); void setup(); void loop(); bool clientConnected(); bool connectClient(); // Blocking version bool connectClientAsync(); // Non-blocking version for other tasks String apIP(); bool isApActive(){return apActive;} bool isClientActive(){return wifiClient->asBoolean();} }; #endif