29#include "esp_smartconfig.h"
31#include "esp_wifi_types.h"
34#include "lwip/ip_addr.h"
81 OPEN = WIFI_AUTH_OPEN,
99 APSTA = WIFI_MODE_APSTA
123 SIGNAL = WIFI_CONNECT_AP_BY_SIGNAL,
124 SECURITY = WIFI_CONNECT_AP_BY_SECURITY
131 FAST = WIFI_FAST_SCAN,
194 return WIFI_AUTH_OPEN;
196 return WIFI_AUTH_WEP;
198 return WIFI_AUTH_WPA_PSK;
200 return WIFI_AUTH_WPA2_PSK;
202 return WIFI_AUTH_WPA_WPA2_PSK;
204 return WIFI_AUTH_WPA2_ENTERPRISE;
206 return WIFI_AUTH_WPA3_PSK;
208 return WIFI_AUTH_WPA2_WPA3_PSK;
210 return WIFI_AUTH_WAPI_PSK;
212 return WIFI_AUTH_OPEN;
221inline hf_wifi_security_t espAuthModeTohf_wifi_security_t(wifi_auth_mode_t auth_mode) {
227 case WIFI_AUTH_WPA_PSK:
229 case WIFI_AUTH_WPA2_PSK:
231 case WIFI_AUTH_WPA_WPA2_PSK:
233 case WIFI_AUTH_WPA2_ENTERPRISE:
235 case WIFI_AUTH_WPA3_PSK:
237 case WIFI_AUTH_WPA2_WPA3_PSK:
239 case WIFI_AUTH_WAPI_PSK:
254 return WIFI_MODE_STA;
258 return WIFI_MODE_APSTA;
260 return WIFI_MODE_NULL;
262 return WIFI_MODE_NULL;
277 case WIFI_MODE_APSTA:
292 switch (power_save) {
296 return WIFI_PS_MIN_MODEM;
298 return WIFI_PS_MAX_MODEM;
310 switch (power_save) {
313 case WIFI_PS_MIN_MODEM:
315 case WIFI_PS_MAX_MODEM:
327inline hf_wifi_err_t espErrorToHfWifiError(esp_err_t esp_err) {
331 case ESP_ERR_INVALID_ARG:
333 case ESP_ERR_INVALID_STATE:
337 case ESP_ERR_TIMEOUT:
339 case ESP_ERR_WIFI_NOT_INIT:
341 case ESP_ERR_WIFI_NOT_STARTED:
343 case ESP_ERR_WIFI_CONN:
345 case ESP_ERR_WIFI_SSID:
347 case ESP_ERR_WIFI_PASSWORD:
349 case ESP_ERR_WIFI_TIMEOUT:
351 case ESP_ERR_WIFI_WAKE_FAIL:
353 case ESP_ERR_WIFI_WOULD_BLOCK:
365inline uint32_t lwipIpToUint32(
const ip4_addr_t& ip_addr) {
374inline ip4_addr_t uint32ToLwipIp(uint32_t ip_uint32) {
376 ip_addr.addr = ip_uint32;
385inline bool isValidWifiChannel(uint8_t channel) {
394inline bool isValidWifiTxPower(uint8_t tx_power) {
403inline bool isValidSsid(
const std::string& ssid) {
413inline bool isValidWifiPassword(
const std::string& password,
hf_wifi_security_t security) {
415 return password.empty();
420 static constexpr size_t WEP_KEY_64_BIT_ASCII = 5;
421 static constexpr size_t WEP_KEY_128_BIT_ASCII = 13;
422 static constexpr size_t WEP_KEY_128_BIT_HEX = 16;
423 static constexpr size_t WEP_KEY_152_BIT_ASCII = 29;
425 size_t len = password.length();
426 return (len == WEP_KEY_64_BIT_ASCII || len == WEP_KEY_128_BIT_ASCII ||
427 len == WEP_KEY_128_BIT_HEX || len == WEP_KEY_152_BIT_ASCII);
431 return (password.length() >= 8 && password.length() <= 63);
439inline void espScanRecordToHfNetworkInfo(
const wifi_ap_record_t& scan_record,
441 network_info.
ssid = std::string(
reinterpret_cast<const char*
>(scan_record.ssid));
442 std::memcpy(network_info.
bssid, scan_record.bssid, 6);
443 network_info.
security = espAuthModeTohf_wifi_security_t(scan_record.authmode);
444 network_info.
rssi = scan_record.rssi;
445 network_info.
channel = scan_record.primary;
446 network_info.
hidden = (network_info.
ssid.empty());
455 wifi_sta_config_t& esp_config) {
456 std::memset(&esp_config, 0,
sizeof(esp_config));
459 std::strncpy(
reinterpret_cast<char*
>(esp_config.ssid), hf_config.
ssid.c_str(),
460 sizeof(esp_config.ssid) - 1);
463 std::strncpy(
reinterpret_cast<char*
>(esp_config.password), hf_config.
password.c_str(),
464 sizeof(esp_config.password) - 1);
468 std::memcpy(esp_config.bssid, hf_config.
bssid, 6);
469 esp_config.bssid_set =
true;
473 esp_config.channel = hf_config.
channel;
476 esp_config.scan_method =
static_cast<wifi_scan_method_t
>(hf_config.
scan_method);
479 esp_config.sort_method =
static_cast<wifi_sort_method_t
>(hf_config.
sort_method);
483 esp_config.threshold.authmode = hfWifiSecurityToEspAuthMode(hf_config.
threshold_authmode);
492 wifi_ap_config_t& esp_config) {
493 std::memset(&esp_config, 0,
sizeof(esp_config));
496 std::strncpy(
reinterpret_cast<char*
>(esp_config.ssid), hf_config.
ssid.c_str(),
497 sizeof(esp_config.ssid) - 1);
498 esp_config.ssid_len = hf_config.
ssid_len;
501 std::strncpy(
reinterpret_cast<char*
>(esp_config.password), hf_config.
password.c_str(),
502 sizeof(esp_config.password) - 1);
505 esp_config.channel = hf_config.
channel;
506 esp_config.authmode = hfWifiSecurityToEspAuthMode(hf_config.
authmode);
hf_wifi_err_t
Definition BaseWifi.h:83
@ WIFI_ERR_INVALID_PASSWORD
@ WIFI_ERR_CONNECTION_FAILED
@ WIFI_ERR_NOT_INITIALIZED
ESP32 base type definitions for hardware abstraction.
static constexpr uint8_t HF_ESP_WIFI_CHANNEL_MAX
Definition EspTypes_WiFi.h:67
hf_esp_wifi_sort_method_t
ESP32-specific WiFi sort method.
Definition EspTypes_WiFi.h:122
static constexpr size_t HF_ESP_WIFI_PASSWORD_MAX_LEN
Maximum WiFi password length.
Definition EspTypes_WiFi.h:48
hf_esp_wifi_mode_t
ESP32-specific WiFi mode mapping.
Definition EspTypes_WiFi.h:95
static constexpr size_t HF_ESP_WIFI_SSID_MAX_LEN
Maximum WiFi SSID length.
Definition EspTypes_WiFi.h:45
static constexpr uint8_t HF_ESP_WIFI_TX_POWER_MAX
Definition EspTypes_WiFi.h:71
static constexpr uint8_t HF_ESP_WIFI_TX_POWER_MIN
WiFi TX power range (dBm)
Definition EspTypes_WiFi.h:70
static constexpr uint16_t HF_ESP_WIFI_SCAN_MAX_RESULTS
Maximum number of WiFi scan results.
Definition EspTypes_WiFi.h:51
static constexpr hf_timeout_ms_t HF_ESP_WIFI_CONNECT_TIMEOUT_DEFAULT
Default WiFi connection timeout.
Definition EspTypes_WiFi.h:54
static constexpr uint16_t HF_ESP_WIFI_BEACON_INTERVAL_DEFAULT
Default AP beacon interval.
Definition EspTypes_WiFi.h:60
hf_esp_wifi_bandwidth_t
ESP32-specific WiFi bandwidth mapping.
Definition EspTypes_WiFi.h:114
hf_esp_wifi_auth_mode_t
ESP32-specific WiFi authentication mode mapping.
Definition EspTypes_WiFi.h:80
hf_esp_wifi_scan_method_t
ESP32-specific WiFi scan method.
Definition EspTypes_WiFi.h:130
static constexpr uint8_t HF_ESP_WIFI_CHANNEL_MIN
WiFi channel range.
Definition EspTypes_WiFi.h:66
static constexpr hf_timeout_ms_t HF_ESP_WIFI_SCAN_TIMEOUT_DEFAULT
Default WiFi scan timeout.
Definition EspTypes_WiFi.h:57
hf_esp_wifi_power_save_t
ESP32-specific WiFi power save mode mapping.
Definition EspTypes_WiFi.h:105
static constexpr uint8_t HF_ESP_WIFI_MAX_CONNECTIONS_DEFAULT
Default AP maximum connections.
Definition EspTypes_WiFi.h:63
hf_time_t hf_timeout_ms_t
Timeout value in milliseconds.
Definition HardwareTypes.h:178
hf_wifi_mode_t
WiFi operating modes.
Definition BaseWifi.h:108
hf_wifi_security_t
WiFi security types.
Definition BaseWifi.h:119
hf_wifi_power_save_t
WiFi power save modes.
Definition BaseWifi.h:151
@ HF_WIFI_MODE_STATION_AP
@ HF_WIFI_MODE_ACCESS_POINT
@ HF_WIFI_SECURITY_WPA_WPA2_PSK
@ HF_WIFI_SECURITY_WPA_PSK
@ HF_WIFI_SECURITY_WPA2_ENTERPRISE
@ HF_WIFI_SECURITY_WPA2_PSK
@ HF_WIFI_SECURITY_WPA3_PSK
@ HF_WIFI_SECURITY_WAPI_PSK
@ HF_WIFI_SECURITY_WPA2_WPA3_PSK
@ HF_WIFI_POWER_SAVE_MAX_MODEM
@ HF_WIFI_POWER_SAVE_NONE
@ HF_WIFI_POWER_SAVE_MIN_MODEM
ESP32-specific WiFi calibration data.
Definition EspTypes_WiFi.h:158
bool rf_cal_valid
Definition EspTypes_WiFi.h:159
bool phy_cal_valid
Definition EspTypes_WiFi.h:160
uint32_t phy_cal_data[16]
Definition EspTypes_WiFi.h:162
uint32_t rf_cal_data[32]
Definition EspTypes_WiFi.h:161
ESP32-specific WiFi statistics structure.
Definition EspTypes_WiFi.h:142
uint32_t rx_errors
Definition EspTypes_WiFi.h:148
uint32_t tx_packets
Definition EspTypes_WiFi.h:143
int8_t noise_floor
Definition EspTypes_WiFi.h:151
uint32_t rx_bytes
Definition EspTypes_WiFi.h:146
uint32_t rx_packets
Definition EspTypes_WiFi.h:144
uint32_t tx_retries
Definition EspTypes_WiFi.h:149
uint8_t channel_utilization
Definition EspTypes_WiFi.h:152
uint32_t tx_bytes
Definition EspTypes_WiFi.h:145
uint32_t rx_missed
Definition EspTypes_WiFi.h:150
uint32_t tx_errors
Definition EspTypes_WiFi.h:147
WiFi Access Point configuration structure.
Definition BaseWifi.h:209
std::string ssid
Definition BaseWifi.h:210
hf_wifi_security_t authmode
Definition BaseWifi.h:214
uint8_t ssid_len
Definition BaseWifi.h:212
uint8_t max_connection
Definition BaseWifi.h:216
uint16_t beacon_interval
Definition BaseWifi.h:217
std::string password
Definition BaseWifi.h:211
uint8_t ssid_hidden
Definition BaseWifi.h:215
uint8_t channel
Definition BaseWifi.h:213
WiFi network information structure.
Definition BaseWifi.h:180
uint8_t bssid[6]
Definition BaseWifi.h:182
int8_t rssi
Definition BaseWifi.h:184
bool hidden
Definition BaseWifi.h:186
hf_wifi_security_t security
Definition BaseWifi.h:183
std::string ssid
Definition BaseWifi.h:181
uint8_t channel
Definition BaseWifi.h:185
WiFi station configuration structure.
Definition BaseWifi.h:193
hf_wifi_security_t threshold_authmode
Definition BaseWifi.h:202
std::string password
Definition BaseWifi.h:195
uint32_t scan_method
Definition BaseWifi.h:199
uint16_t threshold_rssi
Definition BaseWifi.h:201
std::string ssid
Definition BaseWifi.h:194
bool bssid_set
Definition BaseWifi.h:198
uint8_t bssid[6]
Definition BaseWifi.h:196
uint8_t channel
Definition BaseWifi.h:197
bool sort_method
Definition BaseWifi.h:200