wellhub_reloaded/main/ProvisionSoftAP.h

64 lines
1.5 KiB
C++
Executable File

/*
* ProvisionSoftAP.h
*
* Created on: Apr 17, 2019
* Author: miro
*/
#ifndef MAIN_PROVISIONSOFTAP_H_
#define MAIN_PROVISIONSOFTAP_H_
#include <ESPAsyncWebServer.h>
#include <DNSServer.h>
#include <list>
// #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<int> 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_ */