meshcore-repeater/src/WiFiManager.h
Ryan Malloy 7516c808a7 Add ENC28J60 Ethernet support with INetworkManager abstraction
- Create INetworkManager interface for network abstraction
- Add EthernetManager for ENC28J60 module using EthernetENC library
- Update WiFiManager to implement INetworkManager interface
- Update MQTTBridge to use INetworkManager* instead of WiFiManager&
- Add heltec_v3_ethernet PlatformIO environment
- Uses HSPI bus (GPIO 19/20/47/48) separate from LoRa SPI
2026-02-05 09:45:16 -07:00

71 lines
1.8 KiB
C++

#pragma once
#ifdef WITH_MQTT
#include <Arduino.h>
#include <WiFi.h>
#include "INetworkManager.h"
// WiFi connection states (legacy, maps to NetworkState)
enum class WiFiState {
DISCONNECTED,
CONNECTING,
CONNECTED,
AP_MODE
};
// Configuration for WiFi manager
struct WiFiConfig {
char ssid[33];
char password[65];
char ap_ssid[33]; // Fallback AP SSID
char ap_password[65]; // Fallback AP password (min 8 chars or empty for open)
uint32_t connect_timeout_ms;
uint32_t reconnect_interval_ms;
uint8_t max_retries;
};
class WiFiManager : public INetworkManager {
public:
WiFiManager();
// Initialize WiFi with configuration
void begin(const WiFiConfig& config);
// INetworkManager interface
void loop() override;
void end() override;
NetworkState getState() const override;
bool isConnected() const override { return _state == WiFiState::CONNECTED; }
IPAddress getLocalIP() const override;
String getMacAddress() const override;
int32_t getRSSI() const override;
const char* getConnectionName() const override;
void reconnect() override;
uint32_t getConnectionUptime() const override;
const char* getNetworkType() const override { return "WiFi"; }
// WiFi-specific methods
WiFiState getWiFiState() const { return _state; }
bool isAPMode() const { return _state == WiFiState::AP_MODE; }
const char* getSSID() const;
void startAPMode();
void startStationMode();
uint8_t getRetryCount() const { return _retry_count; }
private:
WiFiConfig _config;
WiFiState _state;
unsigned long _connect_start_time;
unsigned long _last_connect_attempt;
unsigned long _connected_since;
uint8_t _retry_count;
bool _initialized;
void attemptConnection();
void checkConnection();
String generateAPSSID();
};
#endif // WITH_MQTT