/*
|
|
|
|
JustWifi
|
|
|
|
Wifi Manager for ESP8266
|
|
|
|
Copyright (C) 2016 by Xose Pérez <xose dot perez at gmail dot com>
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
#ifndef JustWifi_h
|
|
#define JustWifi_h
|
|
|
|
#include <functional>
|
|
#include <ESP8266WiFi.h>
|
|
|
|
extern "C" {
|
|
#include "user_interface.h"
|
|
}
|
|
|
|
#define MAX_NETWORKS 3
|
|
#define WIFI_CONNECT_TIMEOUT 10000
|
|
|
|
struct network_t {
|
|
String ssid;
|
|
String pass;
|
|
};
|
|
|
|
typedef enum {
|
|
MODE_NONE,
|
|
MODE_STATION,
|
|
MODE_ACCESS_POINT
|
|
} justwifi_mode_t;
|
|
|
|
typedef enum {
|
|
MESSAGE_AUTO_NOSSID,
|
|
MESSAGE_AUTO_CONNECTING,
|
|
MESSAGE_AUTO_FAILED,
|
|
MESSAGE_CONNECTING,
|
|
MESSAGE_CONNECT_WAITING,
|
|
MESSAGE_CONNECT_FAILED,
|
|
MESSAGE_CONNECTED,
|
|
MESSAGE_ACCESSPOINT_CREATING,
|
|
MESSAGE_ACCESSPOINT_FAILED,
|
|
MESSAGE_ACCESSPOINT_CREATED,
|
|
MESSAGE_DISCONNECTED
|
|
} justwifi_messages_t;
|
|
|
|
class JustWifi {
|
|
|
|
public:
|
|
|
|
typedef std::function<void(justwifi_messages_t, char *)> TMessageFunction;
|
|
|
|
bool autoConnect();
|
|
bool connect();
|
|
bool startAP(char * ssid, char * pass);
|
|
bool disconnect();
|
|
bool connected();
|
|
|
|
bool cleanNetworks();
|
|
bool addNetwork(char * ssid, char * pass);
|
|
|
|
void setConnectTimeout(unsigned long ms);
|
|
|
|
justwifi_mode_t getMode();
|
|
String getIP();
|
|
String getNetwork();
|
|
|
|
void onMessage(TMessageFunction fn);
|
|
void loop();
|
|
|
|
private:
|
|
|
|
network_t _network[MAX_NETWORKS];
|
|
String _ssid;
|
|
justwifi_mode_t _mode = MODE_NONE;
|
|
unsigned char _network_count = 0;
|
|
unsigned long _connect_timeout = WIFI_CONNECT_TIMEOUT;
|
|
TMessageFunction _callback = NULL;
|
|
|
|
void _doCallback(justwifi_messages_t message, char * parameter = NULL);
|
|
|
|
};
|
|
|
|
#endif
|