/* * ProvisionSoftAP.h * * Created on: Apr 17, 2019 * Author: miro */ #ifndef MAIN_PROVISIONSOFTAP_H_ #define MAIN_PROVISIONSOFTAP_H_ #include #include #include // #include "ArduinoJson.h" #include "Settings.h" class ProvisionSoftAP { private: DNSServer m_dnsServer; AsyncWebServer * m_webServer; AsyncWebSocket * m_webSocket; wifi_event_id_t wifiEventId = 0; std::list m_clients; bool m_startWifiScan = false; bool m_tryConnect = false; bool m_tailgate = false; // StaticJsonBuffer<1200> m_jsonBuffer; char m_buff[1200]; private: // json stuff const char* TYPE = "type"; const char* WIFI_SCAN = "wifi_scan"; const char* DATA = "data"; const char* COMMAND = "command"; const char* WIFI_CONFIG = "wifi_config"; const char* SSID = "ssid"; const char* PWD = "pwd"; const char* ERROR = "error"; const char* CODE = "code"; const char* TAILGATE = "tailgate"; private: void parseWebsocketCommand(char *data, size_t len); void tryConnect(const char * ssid, const char * pwd); // callbacks void wifiEvent(arduino_event_id_t event, arduino_event_info_t info); void websocketEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len); void handlePortal(AsyncWebServerRequest* request); void handleLogo(AsyncWebServerRequest *request); void waitBufferEmpty(); public: void init(const char * ssid, const char * password); ProvisionSoftAP(int port = 80); virtual ~ProvisionSoftAP(); }; #endif /* MAIN_PROVISIONSOFTAP_H_ */