47#define HF_WIFI_ERR_LIST(X) \
49 X(WIFI_SUCCESS, 0, "Success") \
52 X(WIFI_ERR_FAILURE, 1, "General failure") \
53 X(WIFI_ERR_INVALID_PARAM, 2, "Invalid parameter") \
54 X(WIFI_ERR_NOT_INITIALIZED, 3, "WiFi not initialized") \
55 X(WIFI_ERR_ALREADY_INITIALIZED, 4, "WiFi already initialized") \
56 X(WIFI_ERR_NOT_CONNECTED, 5, "WiFi not connected") \
57 X(WIFI_ERR_ALREADY_CONNECTED, 6, "WiFi already connected") \
58 X(WIFI_ERR_CONNECTION_FAILED, 7, "Connection failed") \
59 X(WIFI_ERR_DISCONNECTION_FAILED, 8, "Disconnection failed") \
60 X(WIFI_ERR_SCAN_FAILED, 9, "Network scan failed") \
61 X(WIFI_ERR_AP_START_FAILED, 10, "Access Point start failed") \
62 X(WIFI_ERR_AP_STOP_FAILED, 11, "Access Point stop failed") \
63 X(WIFI_ERR_TIMEOUT, 12, "Operation timeout") \
64 X(WIFI_ERR_NO_MEMORY, 13, "Insufficient memory") \
65 X(WIFI_ERR_INVALID_SSID, 14, "Invalid SSID") \
66 X(WIFI_ERR_INVALID_PASSWORD, 15, "Invalid password") \
67 X(WIFI_ERR_WEAK_SIGNAL, 16, "Weak signal strength") \
68 X(WIFI_ERR_AUTHENTICATION_FAILED, 17, "Authentication failed") \
69 X(WIFI_ERR_ASSOCIATION_FAILED, 18, "Association failed") \
70 X(WIFI_ERR_HANDSHAKE_FAILED, 19, "4-way handshake failed") \
71 X(WIFI_ERR_INIT_FAILED, 20, "WiFi initialization failed") \
72 X(WIFI_ERR_CONFIG_INVALID, 21, "Invalid configuration") \
73 X(WIFI_ERR_ENTERPRISE_FAILED, 22, "Enterprise authentication failed") \
74 X(WIFI_ERR_WPA3_NOT_SUPPORTED, 23, "WPA3 not supported") \
75 X(WIFI_ERR_MESH_FAILED, 24, "Mesh operation failed") \
76 X(WIFI_ERR_UNKNOWN, 25, "Unknown error")
82#define X(name, value, desc) name = value,
94#define X(NAME, VALUE, DESC) \
95 case hf_wifi_err_t::NAME: \
241 std::function<void(
const std::vector<hf_wifi_network_info_t>& networks)>;
380 uint32_t max_scan_time_ms = 0) noexcept = 0;
389 uint16_t max_networks = 0) noexcept = 0;
508#define X(name, value, desc) \
509 case hf_wifi_err_t::name: \
hf_wifi_err_t
Definition BaseWifi.h:83
Platform-agnostic hardware type definitions for the HardFOC system.
uint8_t hf_u8_t
Platform-agnostic 8-bit unsigned integer type.
Definition HardwareTypes.h:40
Abstract base class for WiFi functionality.
Definition BaseWifi.h:255
virtual std::string GetConnectedSsid() const noexcept=0
Get connected network SSID.
virtual hf_wifi_err_t GetScanResults(std::vector< hf_wifi_network_info_t > &networks, uint16_t max_networks=0) noexcept=0
Get scan results.
virtual hf_wifi_err_t GetConnectedBssid(uint8_t bssid[6]) const noexcept=0
Get connected network BSSID.
virtual hf_wifi_err_t GetMacAddress(uint8_t mac[6], uint8_t interface=0) const noexcept=0
Get MAC address.
virtual hf_wifi_err_t GetIpInfo(hf_wifi_ip_info_t &ip_info) const noexcept=0
Get current IP information.
virtual hf_wifi_power_save_t GetPowerSave() const noexcept=0
Get current power save mode.
virtual uint8_t GetChannel() const noexcept=0
Get WiFi channel.
virtual ~BaseWifi() noexcept=default
Virtual destructor for proper cleanup of derived classes.
virtual hf_wifi_err_t SetMacAddress(const uint8_t mac[6], uint8_t interface=0) noexcept=0
Set MAC address.
virtual bool IsInitialized() const noexcept=0
Check if WiFi is initialized.
virtual int8_t GetRssi() const noexcept=0
Get signal strength (RSSI)
virtual bool IsAccessPointActive() const noexcept=0
Check if Access Point is running.
virtual hf_wifi_err_t SetMode(hf_wifi_mode_t mode) noexcept=0
Set WiFi operating mode.
virtual hf_wifi_err_t RegisterEventCallback(hf_wifi_event_callback_t callback) noexcept=0
Register event callback.
virtual hf_wifi_err_t Disconnect() noexcept=0
Disconnect from WiFi network.
virtual hf_wifi_err_t ConfigureAccessPoint(const hf_wifi_ap_config_t &config) noexcept=0
Configure Access Point parameters.
virtual hf_wifi_mode_t GetMode() const noexcept=0
Get current WiFi operating mode.
virtual hf_wifi_err_t Initialize(hf_wifi_mode_t mode) noexcept=0
Initialize the WiFi subsystem.
virtual hf_wifi_err_t ConfigureStation(const hf_wifi_station_config_t &config) noexcept=0
Configure station parameters.
virtual hf_wifi_err_t SetPowerSave(hf_wifi_power_save_t mode) noexcept=0
Set power save mode.
virtual hf_wifi_err_t StartAccessPoint() noexcept=0
Start Access Point.
virtual bool IsScanning() const noexcept=0
Check if scan is in progress.
virtual hf_wifi_err_t StartScan(bool show_hidden=false, bool passive=false, uint32_t max_scan_time_ms=0) noexcept=0
Start network scan.
virtual hf_wifi_err_t SetChannel(uint8_t channel) noexcept=0
Set WiFi channel.
virtual hf_wifi_err_t Connect(uint32_t timeout_ms=0) noexcept=0
Connect to a WiFi network (station mode)
virtual hf_wifi_err_t StopAccessPoint() noexcept=0
Stop Access Point.
virtual hf_wifi_state_t GetState() const noexcept=0
Get current WiFi state.
virtual bool IsConnected() const noexcept=0
Check if connected to a network.
virtual int GetConnectedStationCount() const noexcept=0
Get number of connected stations.
virtual hf_wifi_err_t Deinitialize() noexcept=0
Deinitialize the WiFi subsystem.
virtual hf_wifi_err_t UnregisterEventCallback() noexcept=0
Unregister event callback.
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
#define HF_WIFI_ERR_LIST(X)
HardFOC WiFi error codes macro list.
Definition BaseWifi.h:47
hf_wifi_security_t
WiFi security types.
Definition BaseWifi.h:119
constexpr std::string_view HfWifiErrToString(hf_wifi_err_t err) noexcept
Convert hf_wifi_err_t to human-readable string.
Definition BaseWifi.h:92
#define X(name, value, desc)
Generate WiFi error enumeration using X-macro pattern.
Definition BaseWifi.h:82
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
static std::string_view GetErrorString(hf_wifi_err_t error)
Get error description string.
Definition BaseWifi.h:507
@ HF_WIFI_EVENT_SCAN_DONE
@ HF_WIFI_EVENT_STA_GOT_IP
@ HF_WIFI_EVENT_STA_CONNECTED
@ HF_WIFI_EVENT_STA_LOST_IP
@ HF_WIFI_EVENT_AP_STADISCONNECTED
@ HF_WIFI_EVENT_STA_DISCONNECTED
@ HF_WIFI_EVENT_STA_AUTHMODE_CHANGE
@ HF_WIFI_EVENT_AP_STACONNECTED
@ HF_WIFI_EVENT_STA_START
@ HF_WIFI_STATE_CONNECTED
@ HF_WIFI_STATE_DISCONNECTED
@ HF_WIFI_STATE_RECONNECTING
@ HF_WIFI_STATE_CONNECTING
@ HF_WIFI_STATE_DISCONNECTING
@ HF_WIFI_STATE_AP_STARTED
@ HF_WIFI_STATE_AP_STOPPED
@ HF_WIFI_MODE_STATION_AP
@ HF_WIFI_MODE_ACCESS_POINT
@ HF_WIFI_SECURITY_WPA_WPA2_PSK
@ HF_WIFI_SECURITY_WPA3_ENTERPRISE
@ 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
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 IP configuration structure.
Definition BaseWifi.h:224
uint32_t gateway
Definition BaseWifi.h:227
uint32_t netmask
Definition BaseWifi.h:226
uint32_t ip
Definition BaseWifi.h:225
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