Files
spore/include/NetworkManager.h

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;
};