- 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
71 lines
1.8 KiB
C++
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
|