64 lines
1.5 KiB
C++
Executable File
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_ */
|