50 lines
1.5 KiB
C++
50 lines
1.5 KiB
C++
#pragma once
|
|
#include "NodeContext.h"
|
|
#include <ESP8266WiFi.h>
|
|
#include <vector>
|
|
|
|
struct AccessPoint {
|
|
String ssid;
|
|
int32_t rssi;
|
|
uint8_t encryptionType;
|
|
uint8_t* bssid;
|
|
int32_t channel;
|
|
bool isHidden;
|
|
};
|
|
|
|
class NetworkManager {
|
|
public:
|
|
NetworkManager(NodeContext& ctx);
|
|
void setupWiFi();
|
|
void setHostnameFromMac();
|
|
|
|
// WiFi scanning methods
|
|
void scanWifi();
|
|
void processAccessPoints();
|
|
std::vector<AccessPoint> getAccessPoints() const;
|
|
|
|
// WiFi configuration methods
|
|
void setWiFiConfig(const String& ssid, const String& password,
|
|
uint32_t connect_timeout_ms = 10000,
|
|
uint32_t retry_delay_ms = 500);
|
|
|
|
// Network status methods
|
|
bool isConnected() const { return WiFi.isConnected(); }
|
|
String getSSID() const { return WiFi.SSID(); }
|
|
IPAddress getLocalIP() const { return WiFi.localIP(); }
|
|
String getMacAddress() const { return WiFi.macAddress(); }
|
|
String getHostname() const { return WiFi.hostname(); }
|
|
int32_t getRSSI() const { return WiFi.RSSI(); }
|
|
WiFiMode_t getMode() const { return WiFi.getMode(); }
|
|
|
|
// AP mode specific methods
|
|
IPAddress getAPIP() const { return WiFi.softAPIP(); }
|
|
String getAPMacAddress() const { return WiFi.softAPmacAddress(); }
|
|
uint8_t getConnectedStations() const { return WiFi.softAPgetStationNum(); }
|
|
|
|
private:
|
|
NodeContext& ctx;
|
|
std::vector<AccessPoint> accessPoints;
|
|
bool isScanning = false;
|
|
};
|