25#pragma GCC diagnostic push
26#pragma GCC diagnostic ignored "-Wpedantic"
37#include "esp_smartconfig.h"
51#pragma GCC diagnostic pop
170 int8_t
GetRssi()
const noexcept override;
182 uint32_t max_scan_time_ms = 0)
noexcept override;
184 uint16_t max_networks = 0)
noexcept override;
248 const std::string& ca_cert =
"",
249 const std::string& client_cert =
"",
250 const std::string& client_key =
"");
259 uint32_t timeout_ms = 60000);
290 uint16_t max_connection = 10);
469 static void wifiEventHandler(
void* arg, esp_event_base_t event_base, int32_t event_id,
479 static void ipEventHandler(
void* arg, esp_event_base_t event_base, int32_t event_id,
Unified WiFi base class for all WiFi implementations.
hf_wifi_err_t
Definition BaseWifi.h:83
ESP32 base type definitions for hardware abstraction.
Abstract base class for WiFi functionality.
Definition BaseWifi.h:255
Advanced ESP32 implementation of unified BaseWifi with ESP-IDF v5.5+ features.
Definition EspWifi.h:143
EspWifi & operator=(const EspWifi &)=delete
hf_wifi_err_t RegisterEventHandlers()
Register ESP-IDF event handlers.
wifi_mode_t ConvertToEspMode(hf_wifi_mode_t mode) const
Convert HardFOC WiFi mode to ESP-IDF mode.
Definition EspWifi.cpp:1008
void handleIpEvent(int32_t event_id, void *event_data)
Handle IP events internally.
Definition EspWifi.cpp:1202
hf_wifi_err_t StartScan(bool show_hidden=false, bool passive=false, uint32_t max_scan_time_ms=0) noexcept override
Start network scan.
Definition EspWifi.cpp:684
static void smartconfigEventHandler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
Static SmartConfig event handler for ESP-IDF.
Definition EspWifi.cpp:1028
std::atomic< hf_wifi_mode_t > m_mode
Definition EspWifi.h:362
hf_wifi_err_t RegisterEventCallback(hf_wifi_event_callback_t callback) noexcept override
Register event callback.
Definition EspWifi.cpp:907
hf_wifi_err_t SetAdvancedConfig(const EspWifiAdvancedConfig &config)
Set advanced ESP32-specific configuration.
hf_wifi_err_t SetMacAddress(const uint8_t mac[6], uint8_t interface=0) noexcept override
Set MAC address.
Definition EspWifi.cpp:942
hf_wifi_err_t InitMesh(const uint8_t mesh_id[6], uint8_t max_layer=6, uint16_t max_connection=10)
Initialize ESP-MESH networking.
bool IsConnected() const noexcept override
Check if connected to a network.
Definition EspWifi.cpp:1115
esp_netif_t * m_ap_netif
Definition EspWifi.h:372
bool IsAccessPointActive() const noexcept override
Check if Access Point is running.
Definition EspWifi.cpp:663
hf_wifi_err_t UnregisterEventHandlers()
Unregister ESP-IDF event handlers.
hf_wifi_err_t Disconnect() noexcept override
Disconnect from WiFi network.
Definition EspWifi.cpp:1104
static void ipEventHandler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
Static IP event handler for ESP-IDF.
Definition EspWifi.cpp:1022
hf_wifi_err_t StartMeshRoot()
Start ESP-MESH as root node.
hf_wifi_scan_callback_t m_scan_callback
Definition EspWifi.h:379
EspWifi(const EspWifi &)=delete
hf_wifi_err_t Connect(uint32_t timeout_ms=0) noexcept override
Connect to a WiFi network (station mode)
Definition EspWifi.cpp:520
hf_wifi_err_t EnableWpa3Transition(bool enable)
Enable WPA3 transition mode (WPA2/WPA3 mixed)
hf_wifi_err_t GetMacAddress(uint8_t mac[6], uint8_t interface=0) const noexcept override
Get MAC address.
Definition EspWifi.cpp:919
hf_wifi_err_t StopSmartConfig()
Stop SmartConfig provisioning.
void * m_event_user_data
Definition EspWifi.h:380
hf_wifi_err_t Initialize(hf_wifi_mode_t mode) noexcept override
Initialize the WiFi subsystem.
Definition EspWifi.cpp:227
hf_wifi_err_t ConfigureRoaming(bool enable_11k, bool enable_11r, bool enable_11v)
Configure 802.11k/r/v roaming features.
hf_wifi_station_config_t m_sta_config
Definition EspWifi.h:366
hf_wifi_mode_t GetMode() const noexcept override
Get current WiFi operating mode.
Definition EspWifi.cpp:992
hf_wifi_err_t StopMesh()
Stop ESP-MESH networking.
hf_wifi_err_t ConvertEspError(esp_err_t esp_err) const
Convert ESP-IDF error to HardFOC error.
Definition EspWifi.cpp:1038
void handleWifiEvent(int32_t event_id, void *event_data)
Handle WiFi events internally.
Definition EspWifi.cpp:1136
std::atomic< bool > m_enabled
Definition EspWifi.h:361
std::atomic< bool > m_mesh_active
Definition EspWifi.h:399
hf_wifi_err_t SetTxPower(uint8_t power)
Set WiFi TX power.
Definition EspWifi.cpp:1330
hf_wifi_err_t SetChannel(uint8_t channel) noexcept override
Set WiFi channel.
Definition EspWifi.cpp:981
std::vector< hf_wifi_network_info_t > m_scan_results
Definition EspWifi.h:386
hf_wifi_err_t GetConnectionInfo(wifi_ap_record_t &info) const
Get detailed connection information.
hf_wifi_err_t SetMode(hf_wifi_mode_t mode) noexcept override
Set WiFi operating mode.
Definition EspWifi.cpp:453
hf_wifi_err_t StartAccessPoint() noexcept override
Start Access Point.
Definition EspWifi.cpp:594
hf_wifi_err_t PerformCalibration()
Perform WiFi calibration.
PlatformMutex m_event_mutex
Definition EspWifi.h:383
std::atomic< bool > m_scanning
Definition EspWifi.h:387
hf_wifi_err_t ConfigureAccessPoint(const hf_wifi_ap_config_t &config) noexcept override
Configure Access Point parameters.
Definition EspWifi.cpp:567
hf_wifi_err_t GetAdvancedConfig(EspWifiAdvancedConfig &config) const
Get current advanced configuration.
Definition EspWifi.cpp:1319
void NotifyEventCallback(hf_wifi_event_t event, void *event_data)
Notify user event callback.
hf_wifi_err_t UnregisterEventCallback() noexcept override
Unregister event callback.
Definition EspWifi.cpp:913
hf_wifi_err_t StartSmartConfig(smartconfig_type_t type=SC_TYPE_ESPTOUCH, uint32_t timeout_ms=60000)
Start SmartConfig provisioning.
uint8_t GetChannel() const noexcept override
Get WiFi channel.
Definition EspWifi.cpp:965
hf_wifi_err_t ConfigureStation(const hf_wifi_station_config_t &config) noexcept override
Configure station parameters.
Definition EspWifi.cpp:488
wifi_auth_mode_t ConvertToEspAuthMode(hf_wifi_security_t security) const
Convert HardFOC security to ESP-IDF auth mode.
Definition EspWifi.cpp:1259
static void wifiEventHandler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
Static WiFi event handler for ESP-IDF.
Definition EspWifi.cpp:1016
void * m_scan_user_data
Definition EspWifi.h:381
hf_wifi_err_t SetBandwidth(wifi_bandwidth_t bandwidth)
Set WiFi channel bandwidth.
Definition EspWifi.cpp:1359
bool IsScanning() const noexcept override
Check if scan is in progress.
Definition EspWifi.cpp:813
hf_wifi_err_t GetStatistics(wifi_pkt_rx_ctrl_t &stats) const
Get WiFi statistics.
hf_wifi_err_t ConfigureEnterprise(const std::string &username, const std::string &password, const std::string &ca_cert="", const std::string &client_cert="", const std::string &client_key="")
Configure WPA2/WPA3 Enterprise authentication.
int GetConnectedStationCount() const noexcept override
Get number of connected stations.
Definition EspWifi.cpp:668
bool ValidateApConfig(const hf_wifi_ap_config_t &config) const
Validate AP configuration parameters.
EspWifiAdvancedConfig m_advanced_config
Definition EspWifi.h:368
hf_wifi_err_t ApplyAdvancedConfig()
Apply advanced configuration settings.
hf_wifi_err_t StartMeshChild()
Start ESP-MESH as child node.
esp_event_handler_instance_t m_wifi_event_handler
Definition EspWifi.h:374
EspWifi(const EspWifiAdvancedConfig *advanced_config=nullptr)
Constructor with optional advanced configuration.
Definition EspWifi.cpp:206
PlatformMutex m_scan_mutex
Definition EspWifi.h:388
hf_wifi_err_t GetConnectedBssid(uint8_t bssid[6]) const noexcept override
Get connected network BSSID.
Definition EspWifi.cpp:839
std::atomic< bool > m_ap_active
Definition EspWifi.h:392
int8_t GetRssi() const noexcept override
Get signal strength (RSSI)
Definition EspWifi.cpp:1120
bool ValidateConfig(const hf_wifi_station_config_t &config) const
Validate configuration parameters.
std::atomic< hf_wifi_state_t > m_state
Definition EspWifi.h:363
esp_netif_t * m_sta_netif
Definition EspWifi.h:371
hf_wifi_event_callback_t m_event_callback
Definition EspWifi.h:378
std::queue< std::pair< hf_wifi_event_t, void * > > m_event_queue
Definition EspWifi.h:382
hf_wifi_state_t GetState() const noexcept override
Get current WiFi state.
Definition EspWifi.cpp:818
hf_wifi_power_save_t GetPowerSave() const noexcept override
Get current power save mode.
Definition EspWifi.cpp:882
hf_wifi_security_t ConvertFromEspAuthMode(wifi_auth_mode_t auth_mode) const
Convert ESP-IDF auth mode to HardFOC security.
Definition EspWifi.cpp:1287
hf_wifi_err_t SetPowerSave(hf_wifi_power_save_t mode) noexcept override
Set power save mode.
Definition EspWifi.cpp:856
hf_wifi_mode_t ConvertFromEspMode(wifi_mode_t mode) const
Convert ESP-IDF WiFi mode to HardFOC mode.
Definition EspWifi.cpp:1244
void UpdateState(hf_wifi_state_t new_state)
Update internal state.
PlatformMutex m_mutex
Definition EspWifi.h:359
std::string GetConnectedSsid() const noexcept override
Get connected network SSID.
Definition EspWifi.cpp:823
hf_wifi_err_t Deinitialize() noexcept override
Deinitialize the WiFi subsystem.
Definition EspWifi.cpp:360
std::atomic< bool > m_smartconfig_active
Definition EspWifi.h:397
std::atomic< int8_t > m_rssi
Definition EspWifi.h:393
hf_wifi_err_t DeinitNetif()
Deinitialize ESP-IDF network interface.
Definition EspWifi.cpp:1091
virtual ~EspWifi()
Destructor - ensures proper cleanup.
Definition EspWifi.cpp:223
std::atomic< uint8_t > m_channel
Definition EspWifi.h:394
hf_wifi_err_t StopAccessPoint() noexcept override
Stop Access Point.
Definition EspWifi.cpp:621
hf_wifi_err_t GetScanResults(std::vector< hf_wifi_network_info_t > &networks, uint16_t max_networks=0) noexcept override
Get scan results.
Definition EspWifi.cpp:736
std::atomic< bool > m_initialized
Definition EspWifi.h:360
EventGroupHandle_t m_event_group
Definition EspWifi.h:373
bool IsInitialized() const noexcept override
Check if WiFi is initialized.
Definition EspWifi.cpp:449
esp_event_handler_instance_t m_ip_event_handler
Definition EspWifi.h:375
wifi_bandwidth_t GetBandwidth() const
Get WiFi channel bandwidth.
Definition EspWifi.cpp:1370
hf_wifi_ap_config_t m_ap_config
Definition EspWifi.h:367
int8_t GetTxPower() const
Get WiFi TX power.
Definition EspWifi.cpp:1349
void handleSmartconfigEvent(int32_t event_id, void *event_data)
Handle SmartConfig events internally.
Definition EspWifi.cpp:1229
hf_wifi_err_t InitNetif()
Initialize ESP-IDF network interface.
std::atomic< bool > m_connected
Definition EspWifi.h:391
hf_wifi_err_t GetIpInfo(hf_wifi_ip_info_t &ip_info) const noexcept override
Get current IP information.
Definition EspWifi.cpp:546
hf_wifi_event_t
WiFi event types for callback functions.
Definition BaseWifi.h:161
std::function< void(const std::vector< hf_wifi_network_info_t > &networks)> hf_wifi_scan_callback_t
WiFi scan callback function type.
Definition BaseWifi.h:240
hf_wifi_state_t
WiFi connection states.
Definition BaseWifi.h:136
hf_wifi_mode_t
WiFi operating modes.
Definition BaseWifi.h:108
hf_wifi_security_t
WiFi security types.
Definition BaseWifi.h:119
std::function< void(hf_wifi_event_t event, void *event_data)> hf_wifi_event_callback_t
WiFi event callback function type.
Definition BaseWifi.h:234
hf_wifi_power_save_t
WiFi power save modes.
Definition BaseWifi.h:151
ESP32-specific WiFi configuration extensions.
Definition EspWifi.h:65
uint8_t mesh_max_layer
Definition EspWifi.h:95
bool enable_power_save
Definition EspWifi.h:67
bool enable_wpa3_transition
Definition EspWifi.h:80
bool enable_11k
Definition EspWifi.h:82
bool enable_fast_connect
Definition EspWifi.h:78
std::string enterprise_client_cert
Definition EspWifi.h:90
smartconfig_type_t smartconfig_type
Definition EspWifi.h:100
uint16_t mesh_max_connection
Definition EspWifi.h:96
bool enable_pmf_required
Definition EspWifi.h:79
uint16_t listen_interval
Definition EspWifi.h:69
bool enable_mesh
Definition EspWifi.h:94
std::string enterprise_ca_cert
Definition EspWifi.h:89
std::string enterprise_password
Definition EspWifi.h:88
std::string enterprise_client_key
Definition EspWifi.h:91
wifi_ps_type_t power_save_type
Definition EspWifi.h:68
std::string enterprise_username
Definition EspWifi.h:87
bool enable_enterprise
Definition EspWifi.h:86
bool enable_ampdu_rx
Definition EspWifi.h:74
uint8_t tx_power
Definition EspWifi.h:72
bool enable_smartconfig
Definition EspWifi.h:99
bool enable_11r
Definition EspWifi.h:81
wifi_bandwidth_t bandwidth
Definition EspWifi.h:73
bool enable_11v
Definition EspWifi.h:83
bool enable_ampdu_tx
Definition EspWifi.h:75
WiFi Access Point configuration structure.
Definition BaseWifi.h:209
WiFi IP configuration structure.
Definition BaseWifi.h:224
WiFi station configuration structure.
Definition BaseWifi.h:193