add some code
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
#ifndef _WIFI_STATION_H_
|
||||
#define _WIFI_STATION_H_
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
|
||||
#include <esp_event.h>
|
||||
#include <esp_timer.h>
|
||||
#include <esp_netif.h>
|
||||
#include <esp_wifi_types_generic.h>
|
||||
|
||||
struct WifiApRecord {
|
||||
std::string ssid;
|
||||
std::string password;
|
||||
int channel;
|
||||
wifi_auth_mode_t authmode;
|
||||
uint8_t bssid[6];
|
||||
};
|
||||
|
||||
class WifiStation {
|
||||
public:
|
||||
static WifiStation& GetInstance();
|
||||
void AddAuth(const std::string &&ssid, const std::string &&password);
|
||||
void Start();
|
||||
void Stop();
|
||||
bool IsConnected();
|
||||
bool WaitForConnected(int timeout_ms = 10000);
|
||||
int8_t GetRssi();
|
||||
std::string GetSsid() const { return ssid_; }
|
||||
std::string GetIpAddress() const { return ip_address_; }
|
||||
uint8_t GetChannel();
|
||||
void SetPowerSaveMode(bool enabled);
|
||||
|
||||
void OnConnect(std::function<void(const std::string& ssid)> on_connect);
|
||||
void OnConnected(std::function<void(const std::string& ssid)> on_connected);
|
||||
void OnScanBegin(std::function<void()> on_scan_begin);
|
||||
|
||||
private:
|
||||
WifiStation();
|
||||
~WifiStation();
|
||||
WifiStation(const WifiStation&) = delete;
|
||||
WifiStation& operator=(const WifiStation&) = delete;
|
||||
|
||||
EventGroupHandle_t event_group_;
|
||||
esp_timer_handle_t timer_handle_ = nullptr;
|
||||
esp_event_handler_instance_t instance_any_id_ = nullptr;
|
||||
esp_event_handler_instance_t instance_got_ip_ = nullptr;
|
||||
esp_netif_t* station_netif_ = nullptr;
|
||||
std::string ssid_;
|
||||
std::string password_;
|
||||
std::string ip_address_;
|
||||
int8_t max_tx_power_;
|
||||
uint8_t remember_bssid_;
|
||||
int reconnect_count_ = 0;
|
||||
std::function<void(const std::string& ssid)> on_connect_;
|
||||
std::function<void(const std::string& ssid)> on_connected_;
|
||||
std::function<void()> on_scan_begin_;
|
||||
std::vector<WifiApRecord> connect_queue_;
|
||||
|
||||
void HandleScanResult();
|
||||
void StartConnect();
|
||||
static void WifiEventHandler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data);
|
||||
static void IpEventHandler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data);
|
||||
};
|
||||
|
||||
#endif // _WIFI_STATION_H_
|
||||
Reference in New Issue
Block a user