/***************************************************************************/ /**
* @file sl_wifi_constants.h
*******************************************************************************
* # License
* Copyright 2024 Silicon Laboratories Inc. www.silabs.com
*******************************************************************************
*
* SPDX-License-Identifier: Zlib
*
* The licensor of this software is Silicon Laboratories Inc.
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*
******************************************************************************/
#ifndef _SL_WIFI_CONSTANTS_H_
#define _SL_WIFI_CONSTANTS_H_
#include
/** \addtogroup SL_WIFI_CONSTANTS Constants
* @{ */
/// Maximum number of Access Points are scanned in response to a normal scan request.
/// @note This is not a configurable value.
#define SL_WIFI_MAX_SCANNED_AP 11
/// Maximum number of clients supported when module is running in Access Point mode.
#define SL_WIFI_MAX_CLIENT_COUNT 16
/// Maximum length of the Wi-Fi Pre-Shared Key (PSK) credential.
#define SL_WIFI_MAX_PSK_LENGTH 32
/// Maximum length of the Wi-Fi Pairwise Master Key (PMK) credential.
#define SL_WIFI_MAX_PMK_LENGTH 64
/// Maximum length of the key in WEP security.
#define SL_WIFI_WEP_KEY_LENGTH 32
/// Maximum number of keys supported for WEP security.
#define SL_WIFI_WEP_KEY_COUNT 4
/// Maximum length of the username in enterprise security.
#define SL_WIFI_EAP_USER_NAME_LENGTH 64
/// Maximum length of the password in enterprise security.
#define SL_WIFI_EAP_PASSWORD_LENGTH 128
/// Maximum length of the certificate key in enterprise security.
#define SL_WIFI_EAP_CERTIFICATE_KEY_LENGTH 80
/// Select Internal Antenna for Wi-Fi.
#define SL_WIFI_SELECT_INTERNAL_ANTENNA 0
/// Select External Antenna for Wi-Fi.
#define SL_WIFI_SELECT_EXTERNAL_ANTENNA 1
/// Macro to get the default Wi-Fi interface.
#define SL_WIFI_DEFAULT_INTERFACE sl_wifi_get_default_interface()
/// Maximum interval for Wi-Fi roaming trigger in milliseconds.
#define SL_WIFI_NEVER_ROAM 0x7FFFFFFF
/**
* @enum sl_wifi_security_t
* @brief Enumeration for Wi-Fi security types.
*
* @note WPA3 Transition security type is not currently supported while running as an Access Point (AP).
*/
typedef enum {
SL_WIFI_OPEN = 0, ///< Wi-Fi Open security type
SL_WIFI_WPA = 1, ///< Wi-Fi WPA security type
SL_WIFI_WPA2 = 2, ///< Wi-Fi WPA2 security type
SL_WIFI_WEP = 3, ///< Wi-Fi WEP security type
SL_WIFI_WPA_ENTERPRISE = 4, ///< Wi-Fi WPA enterprise security type
SL_WIFI_WPA2_ENTERPRISE = 5, ///< Wi-Fi WPA2 enterprise security type
SL_WIFI_WPA_WPA2_MIXED = 6, ///< Wi-Fi WPA/WPA2 mixed security type that supports both WPA and WPA2
SL_WIFI_WPA3 = 7, ///< Wi-Fi WPA3 security type
SL_WIFI_WPA3_TRANSITION = 8, ///< Wi-Fi WPA3 Transition security type (not currently supported in AP mode)
SL_WIFI_WPA3_ENTERPRISE = 9, ///< Wi-Fi WPA3 enterprise security type
SL_WIFI_WPA3_TRANSITION_ENTERPRISE = 10, ///< Wi-Fi WPA3 Transition enterprise security type
SL_WIFI_SECURITY_UNKNOWN = 0xFFFF, ///< Wi-Fi Unknown Security type
} sl_wifi_security_t;
/**
* @enum sl_wifi_encryption_t
* @brief Enumeration for Wi-Fi encryption methods.
*
* @note Some encryption types are not currently supported in station (STA) mode.
* @note If encryption type is configured anything other than SL_WIFI_DEFAULT_ENCRYPTION, then make sure the AP (third party) supports the configured encryption type. If not, there might be a possibility of getting join failure due to the encryption type mismatch between AP (third party) and STA.
*/
typedef enum {
SL_WIFI_DEFAULT_ENCRYPTION, ///< Default Wi-Fi encryption
SL_WIFI_NO_ENCRYPTION, ///< Wi-Fi with no Encryption (not currently supported in STA mode)
SL_WIFI_WEP_ENCRYPTION, ///< Wi-Fi with WEP Encryption (not currently supported in STA mode)
SL_WIFI_TKIP_ENCRYPTION, ///< Wi-Fi with TKIP Encryption (not currently supported in STA mode)
SL_WIFI_CCMP_ENCRYPTION, ///< Wi-Fi with CCMP Encryption
SL_WIFI_EAP_TLS_ENCRYPTION, ///< Wi-Fi with Enterprise TLS Encryption
SL_WIFI_EAP_TTLS_ENCRYPTION, ///< Wi-Fi with Enterprise TTLS Encryption
SL_WIFI_EAP_FAST_ENCRYPTION, ///< Wi-Fi with Enterprise FAST Encryption
SL_WIFI_PEAP_MSCHAPV2_ENCRYPTION, ///< Wi-Fi with Enterprise PEAP Encryption
SL_WIFI_EAP_LEAP_ENCRYPTION ///< Wi-Fi with Enterprise LEAP Encryption
} sl_wifi_encryption_t;
/**
* @enum sl_wifi_tdi_t
* @brief Enumeration for Wi-Fi Transition Disable Indication (TDI).
*
* @note TDI is supported only in WPA3 (Personal or Personal Transition) security in Access Point (AP) mode.
*/
typedef enum {
SL_WIFI_TDI_NONE = 0, ///< Allows stations to transition within AP network.
SL_WIFI_TDI_SAE =
(1
<< 4), ///< Disallows stations from transitioning within the AP network and only allows connections with WPA3-SAE security mode.
} sl_wifi_tdi_t;
/**
* @enum sl_wifi_credential_type_t
* @brief Enumeration for Wi-Fi Credential Types.
*/
typedef enum {
SL_WIFI_PSK_CREDENTIAL = 0, ///< Wi-Fi Personal Credential
SL_WIFI_PMK_CREDENTIAL, ///< Wi-Fi Pairwise Master Key
SL_WIFI_WEP_CREDENTIAL, ///< Wi-Fi WEP Credential
SL_WIFI_EAP_CREDENTIAL, ///< Wi-Fi Enterprise Client Credential
SL_WIFI_USER_CREDENTIAL = (1 << 31) ///< Wi-Fi User Credential
} sl_wifi_credential_type_t;
/**
* @enum sl_wifi_antenna_t
* @brief Enumeration of Wi-Fi antenna selections.
*
* @note Only the internal antenna is currently supported.
*/
typedef enum {
SL_WIFI_ANTENNA_1, ///< Wi-Fi Radio Antenna 1 (not currently supported)
SL_WIFI_ANTENNA_2, ///< Wi-Fi Radio Antenna 2 (not currently supported)
SL_WIFI_ANTENNA_AUTO, ///< Wi-Fi Radio Antenna Auto Selection (not currently supported)
SL_WIFI_ANTENNA_EXTERNAL, ///< Wi-Fi Radio External Antenna (not currently supported)
SL_WIFI_ANTENNA_INTERNAL, ///< Wi-Fi Radio Internal Antenna
} sl_wifi_antenna_t;
/**
* @enum sl_wifi_interface_index_t
* @brief Enumeration of Wi-Fi interface indices.
*
* @note 5 GHz interfaces are not currently supported.
*/
typedef enum {
SL_WIFI_CLIENT_2_4GHZ_INTERFACE_INDEX = 0, ///< Wi-Fi client on 2.4 GHz interface
SL_WIFI_AP_2_4GHZ_INTERFACE_INDEX, ///< Wi-Fi access point on 2.4 GHz interface
SL_WIFI_CLIENT_5GHZ_INTERFACE_INDEX, ///< Wi-Fi client on 5 GHz interface (not currently supported)
SL_WIFI_AP_5GHZ_INTERFACE_INDEX, ///< Wi-Fi access point on 5 GHz interface (not currently supported)
SL_WIFI_TRANSCEIVER_INTERFACE_INDEX, ///< Wi-Fi transceiver mode
SL_WIFI_MAX_INTERFACE_INDEX ///< Used for internally by SDK
} sl_wifi_interface_index_t;
/**
* @enum sl_wifi_interface_t
* @brief Enumeration of Wi-Fi interfaces.
*
* @note 5 GHz radio interfaces are not currently supported.
*/
typedef enum {
SL_WIFI_INVALID_INTERFACE = 0, ///< Invalid interface
SL_WIFI_CLIENT_INTERFACE = (1 << 0), ///< Wi-Fi client interface
SL_WIFI_AP_INTERFACE = (1 << 1), ///< Wi-Fi access point interface
SL_WIFI_2_4GHZ_INTERFACE = (1 << 2), ///< 2.4 GHz radio interface
SL_WIFI_5GHZ_INTERFACE = (1 << 3), ///< 5 GHz radio interface (currently not supported for Si91x)
// BIT(4), BIT(5) - Reserved for 6 GHz and Sub-GHz
SL_WIFI_TRANSCEIVER_INTERFACE = (1 << 7), ///< Wi-Fi Transceiver mode interface
SL_WIFI_CLIENT_2_4GHZ_INTERFACE = SL_WIFI_CLIENT_INTERFACE
| SL_WIFI_2_4GHZ_INTERFACE, ///< Wi-Fi client interface on 2.4 GHz radio
SL_WIFI_AP_2_4GHZ_INTERFACE = SL_WIFI_AP_INTERFACE
| SL_WIFI_2_4GHZ_INTERFACE, ///< Wi-Fi access point interface on 2.4 GHz radio
SL_WIFI_CLIENT_5GHZ_INTERFACE =
SL_WIFI_CLIENT_INTERFACE
| SL_WIFI_5GHZ_INTERFACE, ///< Wi-Fi client interface on 5 GHz radio (currently not supported for Si91x)
SL_WIFI_AP_5GHZ_INTERFACE =
SL_WIFI_AP_INTERFACE
| SL_WIFI_5GHZ_INTERFACE, ///< Wi-Fi access point interface on 5 GHz radio (currently not supported for Si91x)
SL_WIFI_ALL_INTERFACES =
SL_WIFI_CLIENT_INTERFACE | SL_WIFI_AP_INTERFACE | SL_WIFI_2_4GHZ_INTERFACE
| SL_WIFI_5GHZ_INTERFACE, ///< All available Wi-Fi interfaces (5GHz is currently not supported for Si91x)
} sl_wifi_interface_t;
/// Enumeration of de-authentication reasons from an access point.
typedef enum {
SL_WIFI_DEAUTH, ///< De-Authentication from radius server
SL_WIFI_DEAUTH_UNSPECIFIED, ///< Unspecified de-authentication reason
} sl_wifi_deauth_reason_t;
/**
* @enum sl_wifi_regulatory_region_t
* @brief Enumeration of Wi-Fi regulatory regions.
*
* @note Australia and France regions are not currently supported.
*/
typedef enum {
SL_WIFI_REGION_AUSTRALIA, ///< Wi-Fi Region Australia (not currently supported)
SL_WIFI_REGION_FRANCE, ///< Wi-Fi Region France (not currently supported)
SL_WIFI_REGION_EUROPEAN_UNION, ///< Wi-Fi Region European Union
SL_WIFI_REGION_JAPAN, ///< Wi-Fi Region Japan
SL_WIFI_REGION_UNITED_STATES, ///< Wi-Fi Region United States
} sl_wifi_regulatory_region_t;
/**
* @brief Wi-Fi rate protocols.
* @note Recommended value for default behavior is SL_WIFI_RATE_PROTOCOL_AUTO.
* @note 802.11ac not currently supported.
*/
typedef enum {
SL_WIFI_RATE_PROTOCOL_B_ONLY, ///< 802.11b rates only (rates go here)
SL_WIFI_RATE_PROTOCOL_G_ONLY, ///< 802.11g rates only (rates go here)
SL_WIFI_RATE_PROTOCOL_N_ONLY, ///< 802.11n rates only (rates go here)
SL_WIFI_RATE_PROTOCOL_AC_ONLY, ///< 802.11ac rates only (rates go here) (not currently supported)
SL_WIFI_RATE_PROTOCOL_AX_ONLY, ///< 802.11ax rates only (rates go here)
SL_WIFI_RATE_PROTOCOL_AUTO, ///< Automatic rate selection
} sl_wifi_rate_protocol_t;
/// Wi-Fi scan types.
typedef enum {
SL_WIFI_SCAN_TYPE_ACTIVE = 0x00, ///< Active scan: Transmit probe requests and listen for responses
SL_WIFI_SCAN_TYPE_PASSIVE =
0x01, ///< Passive scan: No active transmissions, listen for AP beacons and broadcast probe responses
SL_WIFI_SCAN_TYPE_EXTENDED =
0x02, ///< Extended Active scan. Transmit probe requests and listen for responses to get more than SL_WIFI_MAX_SCANNED_AP number of results
SL_WIFI_SCAN_TYPE_PROHIBITED_CHANNELS = 0x04, ///< Scan channels prohibited by regulatory region
SL_WIFI_SCAN_TYPE_ADV_SCAN = 0X08 ///< Advanced scan: Scan for Access Points while the module is in connected state
} sl_wifi_scan_type_t;
/**
* @enum sl_wifi_rate_t
* @brief Enumeration of Wi-Fi transfer rates.
*/
typedef enum {
SL_WIFI_AUTO_RATE = 0, ///< Wi-Fi Auto transfer rate
SL_WIFI_RATE_11B_1, ///< Wi-Fi 1 Mbps transfer rate for 802.11b
SL_WIFI_RATE_11B_MIN = SL_WIFI_RATE_11B_1, ///< Wi-Fi Minimum transfer rate for 802.11b
SL_WIFI_RATE_11B_2, ///< Wi-Fi 2 Mbps transfer rate for 802.11b
SL_WIFI_RATE_11B_5_5, ///< Wi-Fi 5.5 Mbps transfer rate for 802.11b
SL_WIFI_RATE_11B_11, ///< Wi-Fi 11 Mbps transfer rate for 802.11b
SL_WIFI_RATE_11B_MAX = SL_WIFI_RATE_11B_11, ///< Wi-Fi Maximum transfer rate for 802.11b
SL_WIFI_RATE_11G_6, ///< Wi-Fi 6 Mbps transfer rate for 802.11g
SL_WIFI_RATE_11G_MIN = SL_WIFI_RATE_11G_6, ///< Wi-Fi Minimum transfer rate for 802.11g
SL_WIFI_RATE_11G_9, ///< Wi-Fi 9 Mbps transfer rate for 802.11g
SL_WIFI_RATE_11G_12, ///< Wi-Fi 12 Mbps transfer rate for 802.11g
SL_WIFI_RATE_11G_18, ///< Wi-Fi 18 Mbps transfer rate for 802.11g
SL_WIFI_RATE_11G_24, ///< Wi-Fi 24 Mbps transfer rate for 802.11g
SL_WIFI_RATE_11G_36, ///< Wi-Fi 36 Mbps transfer rate for 802.11g
SL_WIFI_RATE_11G_48, ///< Wi-Fi 48 Mbps transfer rate for 802.11g
SL_WIFI_RATE_11G_54, ///< Wi-Fi 54 Mbps transfer rate for 802.11g
SL_WIFI_RATE_11G_MAX = SL_WIFI_RATE_11G_54, ///< Wi-Fi Maximum transfer rate for 802.11g
SL_WIFI_RATE_11N_MCS0, ///< Wi-Fi MCS index 0 transfer rate for 802.11n
SL_WIFI_RATE_11N_MIN = SL_WIFI_RATE_11N_MCS0, ///< Wi-Fi Minimum transfer rate for 802.11n
SL_WIFI_RATE_11N_MCS1, ///< Wi-Fi MCS index 1 transfer rate for 802.11n
SL_WIFI_RATE_11N_MCS2, ///< Wi-Fi MCS index 2 transfer rate for 802.11n
SL_WIFI_RATE_11N_MCS3, ///< Wi-Fi MCS index 3 transfer rate for 802.11n
SL_WIFI_RATE_11N_MCS4, ///< Wi-Fi MCS index 4 transfer rate for 802.11n
SL_WIFI_RATE_11N_MCS5, ///< Wi-Fi MCS index 5 transfer rate for 802.11n
SL_WIFI_RATE_11N_MCS6, ///< Wi-Fi MCS index 6 transfer rate for 802.11n
SL_WIFI_RATE_11N_MCS7, ///< Wi-Fi MCS index 7 transfer rate for 802.11n
SL_WIFI_RATE_11N_MAX = SL_WIFI_RATE_11N_MCS7, ///< Wi-Fi Maximum transfer rate for 802.11n
SL_WIFI_RATE_11AX_MCS0, ///< Wi-Fi MCS index 0 transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MIN = SL_WIFI_RATE_11AX_MCS0, ///< Wi-Fi Minimum transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MCS1, ///< Wi-Fi MCS index 1 transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MCS2, ///< Wi-Fi MCS index 2 transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MCS3, ///< Wi-Fi MCS index 3 transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MCS4, ///< Wi-Fi MCS index 4 transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MCS5, ///< Wi-Fi MCS index 5 transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MCS6, ///< Wi-Fi MCS index 6 transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MCS7, ///< Wi-Fi MCS index 7 transfer rate for 802.11ax
SL_WIFI_RATE_11AX_MAX = SL_WIFI_RATE_11AX_MCS7, ///< Wi-Fi Maximum transfer rate for 802.11ax
SL_WIFI_RATE_INVALID = 0xFF ///< Wi-Fi Invalid transfer rate
} sl_wifi_rate_t;
/**
* @enum sl_wifi_bss_type_t
* @brief Enumeration of Wi-Fi Basic Service Set (BSS) types.
*/
typedef enum {
SL_WIFI_BSS_TYPE_INFRASTRUCTURE =
0, ///< Infrastructure BSS: Standard Wi-Fi Infrastructure network with an access point
SL_WIFI_BSS_TYPE_ADHOC = 1, ///< Ad-hoc BSS: Peer-to-peer Wi-Fi network without an access point
SL_WIFI_BSS_TYPE_ANY = 2, ///< Any Wi-Fi BSS type
SL_WIFI_BSS_TYPE_UNKNOWN = 0xFF ///< Unknown Wi-Fi BSS type
} sl_wifi_bss_type_t;
/**
* @enum sl_wifi_band_t
* @brief Enumeration of Wi-Fi radio bands.
*
* @note Only the 2.4 GHz band is currently supported.
*/
typedef enum {
SL_WIFI_AUTO_BAND = 0, ///< Wi-Fi Band Auto
SL_WIFI_BAND_900MHZ = 1, ///< Wi-Fi Band 900 MHz (not currently supported)
SL_WIFI_BAND_2_4GHZ = 2, ///< Wi-Fi Band 2.4 GHz
SL_WIFI_BAND_5GHZ = 3, ///< Wi-Fi Band 5 GHz (not currently supported)
SL_WIFI_BAND_6GHZ = 4, ///< Wi-Fi Band 6 GHz (not currently supported)
SL_WIFI_BAND_60GHZ = 5, ///< Wi-Fi Band 60 GHz (not currently supported)
} sl_wifi_band_t;
/**
* @enum sl_wifi_bandwidth_t
* @brief Enumeration of Wi-Fi bandwidth options.
*
* @note Only 20 MHz bandwidth is currently supported.
*/
typedef enum {
SL_WIFI_AUTO_BANDWIDTH = 0, ///< Wi-Fi Bandwidth Auto
SL_WIFI_BANDWIDTH_10MHz = 0, ///< Wi-Fi Bandwidth 10 MHz (not currently supported)
SL_WIFI_BANDWIDTH_20MHz = 1, ///< Wi-Fi Bandwidth 20 MHz
SL_WIFI_BANDWIDTH_40MHz = 2, ///< Wi-Fi Bandwidth 40 MHz (not currently supported)
SL_WIFI_BANDWIDTH_80MHz = 3, ///< Wi-Fi Bandwidth 80 MHz (not currently supported)
SL_WIFI_BANDWIDTH_160MHz = 4, ///< Wi-Fi Bandwidth 160 MHz (not currently supported)
} sl_wifi_bandwidth_t;
/**
* @enum sl_wifi_client_flag_t
* @brief Option flags for Wi-Fi client interfaces.
*/
typedef enum {
SL_WIFI_NO_JOIN_OPTION = 0, ///< Wi-Fi Client Join with no flags
SL_WIFI_JOIN_WITH_NO_CSA = (1 << 0), ///< Wi-Fi Client Join without Channel Switch Announcement (CSA)
SL_WIFI_JOIN_WITH_SCAN = (1 << 1) ///< Wi-Fi Client Join with Scan
} sl_wifi_client_flag_t;
/**
* @enum sl_wifi_ap_flag_t
* @brief Option flags for Access Point (AP) interfaces.
*/
typedef enum {
SL_WIFI_HIDDEN_SSID = (1 << 0), ///< Hide the SSID of the AP
} sl_wifi_ap_flag_t;
/**
* @enum sl_wifi_listen_interval_time_unit_t
* @brief Enumeration of listen interval time units.
*/
typedef enum {
SL_WIFI_LISTEN_INTERVAL_TIME_UNIT_BEACON, ///< Time units specified in beacon periods
SL_WIFI_LISTEN_INTERVAL_TIME_UNIT_DTIM ///< Time units specified in Delivery Traffic Indication Message (DTIM) periods
} sl_wifi_listen_interval_time_unit_t;
/**
* @enum sl_wifi_wps_mode_t
* @brief Enumeration of Wi-Fi WPS (Wi-Fi Protected Setup) modes.
*/
typedef enum {
SL_WIFI_WPS_PIN_MODE, ///< WPS pin mode: Requires a PIN to be entered on the client device.
SL_WIFI_WPS_PUSH_BUTTON_MODE, ///< WPS push button mode: Requires the user to press a physical or virtual button on both the AP and the client device.
} sl_wifi_wps_mode_t;
/**
* @enum sl_wifi_event_group_t
* @brief Enumeration of Wi-Fi event groups.
*/
typedef enum {
SL_WIFI_SCAN_RESULT_EVENTS, ///< Event group for Wi-Fi scan results
SL_WIFI_JOIN_EVENTS, ///< Event group for Wi-Fi join status
SL_WIFI_RX_PACKET_EVENTS, ///< Event group for Wi-Fi received packet. This feature is not supported in current release
SL_WIFI_COMMAND_RESPONSE_EVENTS, ///< Event group for Wi-Fi command response. This feature is not supported in current release
SL_WIFI_STATS_RESPONSE_EVENTS, ///< Event group for Wi-Fi statistics response
SL_WIFI_HTTP_OTA_FW_UPDATE_EVENTS, ///< Event group for Wi-Fi OTA firmware update status via HTTP
SL_WIFI_NETWORK_DOWN_EVENTS, ///< Event group for Wi-Fi network down. This feature is not supported in current release
SL_WIFI_NETWORK_UP_EVENTS, ///< Event group for Wi-Fi network up. This feature is not supported in current release
SL_WIFI_CLIENT_CONNECTED_EVENTS, ///< Event group for Wi-Fi client connected status
SL_WIFI_TWT_RESPONSE_EVENTS, ///< Event group for Wi-Fi TWT response
SL_WIFI_CLIENT_DISCONNECTED_EVENTS, ///< Event group for Wi-Fi client disconnection status
SL_WIFI_TRANSCEIVER_EVENTS, ///< Event group for Wi-Fi transceiver events
SL_WIFI_EVENT_GROUP_COUNT, ///< Event group for Wi-Fi maximum default group count. Used internally by SDK
SL_WIFI_EVENT_FAIL_INDICATION_EVENTS = (1 << 31), ///< Event group for Wi-Fi fail indication
} sl_wifi_event_group_t;
/**
* @enum sl_wifi_event_t
* @brief Enumeration of Wi-Fi events.
*
* @note Each event group has a matching event.
* @note Each event group may be a source of multiple different events.
*/
typedef enum {
SL_WIFI_SCAN_RESULT_EVENT =
SL_WIFI_SCAN_RESULT_EVENTS, ///< Event for Wi-Fi scan result. Data would be type of @ref sl_wifi_scan_result_t
SL_WIFI_JOIN_EVENT = SL_WIFI_JOIN_EVENTS, ///< Event for Wi-Fi join status. Data would be of type string
SL_WIFI_RX_PACKET_EVENT =
SL_WIFI_RX_PACKET_EVENTS, ///< Event for Wi-Fi received packet. This feature is not supported in current release
SL_WIFI_COMMAND_RESPONSE_EVENT =
SL_WIFI_COMMAND_RESPONSE_EVENTS, ///< Event for Wi-Fi command response. This feature is not supported in current release
SL_WIFI_STATS_RESPONSE_EVENT =
SL_WIFI_STATS_RESPONSE_EVENTS, ///< Event for Wi-Fi statistics response. Data would be NULL
SL_WIFI_HTTP_OTA_FW_UPDATE_EVENT =
SL_WIFI_HTTP_OTA_FW_UPDATE_EVENTS, ///< Event for Wi-Fi OTA firmware update status via HTTP. Data would be NULL
SL_WIFI_NETWORK_DOWN_EVENT =
SL_WIFI_NETWORK_DOWN_EVENTS, ///< Event for Wi-Fi network down. This feature is not supported in current release
SL_WIFI_NETWORK_UP_EVENT =
SL_WIFI_NETWORK_UP_EVENTS, ///< Event for Wi-Fi network up. This feature is not supported in current release
SL_WIFI_CLIENT_CONNECTED_EVENT =
SL_WIFI_CLIENT_CONNECTED_EVENTS, ///< Event for Wi-Fi client connected status in Access Point Mode. Data would be of type [sl_mac_address_t](../wiseconnect-api-reference-guide-nwk-mgmt/sl-net-types#sl-mac-address-t).
SL_WIFI_TWT_RESPONSE_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS, ///< Event for Wi-Fi TWT response in WiFi Client mode. Data would be NULL
SL_WIFI_CLIENT_DISCONNECTED_EVENT =
SL_WIFI_CLIENT_DISCONNECTED_EVENTS, ///< Event for Wi-Fi client disconnection status in Access Point Mode. Data would of type [sl_mac_address_t](../wiseconnect-api-reference-guide-common/ieee802#sl-mac-address-t).
SL_WIFI_TRANSCEIVER_EVENT =
SL_WIFI_TRANSCEIVER_EVENTS, ///< Event for Wi-Fi transceiver TX/RX events in WiFi Client mode.
// TWT specific events
SL_WIFI_TWT_UNSOLICITED_SESSION_SUCCESS_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (1
<< 16), ///< Event for TWT unsolicited session success. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_AP_REJECTED_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (4
<< 16), ///< Event for TWT AP rejection. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_OUT_OF_TOLERANCE_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (5
<< 16), ///< Event for TWT out of tolerance. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_RESPONSE_NOT_MATCHED_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (6
<< 16), ///< Event for TWT response not matched. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_UNSUPPORTED_RESPONSE_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (10
<< 16), ///< Event for TWT unsupported response. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_TEARDOWN_SUCCESS_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (11
<< 16), ///< Event for TWT teardown success. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_AP_TEARDOWN_SUCCESS_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (12
<< 16), ///< Event for TWT AP teardown success. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_FAIL_MAX_RETRIES_REACHED_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (15
<< 16), ///< Event for TWT maximum retries reached. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_INACTIVE_DUE_TO_ROAMING_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (16
<< 16), ///< Event for TWT inactive due to roaming. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_INACTIVE_DUE_TO_DISCONNECT_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (17
<< 16), ///< Event for TWT inactive due to disconnect. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_INACTIVE_NO_AP_SUPPORT_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (18
<< 16), ///< Event for TWT inactive due to no AP support. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_RESCHEDULE_TWT_SUCCESS_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (19
<< 16), ///< Event for TWT suspend resume success. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_INFO_FRAME_EXCHANGE_FAILED_EVENT =
SL_WIFI_TWT_RESPONSE_EVENTS
| (20
<< 16), ///< Event for TWT info frame exchange failure. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
SL_WIFI_TWT_EVENTS_END =
SL_WIFI_TWT_RESPONSE_EVENTS
| (21
<< 16), ///< Event for TWT event end. Data would be of type [sl_si91x_twt_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-twt-response-t).
// Stats specific events
SL_WIFI_STATS_EVENT = SL_WIFI_STATS_RESPONSE_EVENTS
| (1 << 16), ///< Event for Wi-Fi statistics. This feature is not supported in current release
SL_WIFI_STATS_ASYNC_EVENT =
SL_WIFI_STATS_RESPONSE_EVENTS
| (2
<< 16), ///< Event for Wi-Fi asynchronous statistics. Data would be of type [sl_si91x_async_stats_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-async-stats-response-t)
SL_WIFI_STATS_ADVANCE_EVENT =
SL_WIFI_STATS_RESPONSE_EVENTS
| (3
<< 16), ///< Event for Wi-Fi advance statistics. Data would be of type [sl_si91x_advance_stats_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-advance-stats-response-t)
SL_WIFI_STATS_TEST_MODE_EVENT =
SL_WIFI_STATS_RESPONSE_EVENTS
| (4 << 16), ///< Event for Wi-Fi test mode statistics. This feature is not supported in current release
SL_WIFI_STATS_MODULE_STATE_EVENT =
SL_WIFI_STATS_RESPONSE_EVENTS
| (5
<< 16), ///< Event for Wi-Fi module state statistics. Data would be of type [sl_si91x_module_state_stats_response_t](../wiseconnect-api-reference-guide-si91x-driver/sl-si91x-module-state-stats-response-t)
SL_WIFI_TRANSCEIVER_RX_DATA_RECEIVE_CB = SL_WIFI_TRANSCEIVER_EVENTS | (1 << 16),
SL_WIFI_TRANSCEIVER_TX_DATA_STATUS_CB = SL_WIFI_TRANSCEIVER_EVENTS | (2 << 16),
// Single bit to indicate relevant event is related to a failure condition
SL_WIFI_EVENT_FAIL_INDICATION = (1 << 31), ///< Event for Wi-Fi event failure indication
SL_WIFI_INVALID_EVENT = 0xFFFFFFFF, ///< Invalid Wi-Fi event. Data would be NULL
} sl_wifi_event_t;
/**
* @enum sl_wifi_reschedule_twt_action_t
* @brief Enumeration defining actions related to Target Wake Time (TWT).
*/
typedef enum {
SL_WIFI_SUSPEND_INDEFINITELY, ///< Suspend TWT indefinitely, effectively disabling TWT functionality until explicitly resumed.
SL_WIFI_SUSPEND_FOR_DURATION, ///< Suspend TWT for a specified duration, after which it can automatically resume.
SL_WIFI_RESUME_IMMEDIATELY ///< Resume TWT immediately, allowing devices to continue adhering to TWT schedules.
} sl_wifi_reschedule_twt_action_t;
/**
* @enum sl_wifi_data_rate_t
* @brief Enumeration of Wi-Fi data rates.
*/
typedef enum {
SL_WIFI_DATA_RATE_1 = 0, ///< Wi-Fi 1 Mbps transfer rate
SL_WIFI_DATA_RATE_2 = 2, ///< Wi-Fi 2 Mbps transfer rate
SL_WIFI_DATA_RATE_5_5 = 4, ///< Wi-Fi 5.5 Mbps transfer rate
SL_WIFI_DATA_RATE_11 = 6, ///< Wi-Fi 11 Mbps transfer rate
SL_WIFI_DATA_RATE_6 = 139, ///< Wi-Fi 6 Mbps transfer rate
SL_WIFI_DATA_RATE_9 = 143, ///< Wi-Fi 9 Mbps transfer rate
SL_WIFI_DATA_RATE_12 = 138, ///< Wi-Fi 12 Mbps transfer rate
SL_WIFI_DATA_RATE_18 = 142, ///< Wi-Fi 18 Mbps transfer rate
SL_WIFI_DATA_RATE_24 = 137, ///< Wi-Fi 24 Mbps transfer rate
SL_WIFI_DATA_RATE_36 = 141, ///< Wi-Fi 36 Mbps transfer rate
SL_WIFI_DATA_RATE_48 = 136, ///< Wif-Fi 48 Mbps transfer rate
SL_WIFI_DATA_RATE_54 = 140, ///< Wi-Fi 54 Mbps transfer rate
SL_WIFI_DATA_RATE_MCS0 = 256, ///< Wi-Fi MCS index 0 transfer rate
SL_WIFI_DATA_RATE_MCS1 = 257, ///< Wi-Fi MCS index 1 transfer rate
SL_WIFI_DATA_RATE_MCS2 = 258, ///< Wi-Fi MCS index 2 transfer rate
SL_WIFI_DATA_RATE_MCS3 = 259, ///< Wi-Fi MCS index 3 transfer rate
SL_WIFI_DATA_RATE_MCS4 = 260, ///< Wi-Fi MCS index 4 transfer rate
SL_WIFI_DATA_RATE_MCS5 = 261, ///< Wi-Fi MCS index 5 transfer rate
SL_WIFI_DATA_RATE_MCS6 = 262, ///< Wi-Fi MCS index 6 transfer rate
SL_WIFI_DATA_RATE_MCS7 = 263, ///< Wi-Fi MCS index 7 transfer rate
SL_WIFI_DATA_RATE_MCS7_SG = 775,
} sl_wifi_data_rate_t;
/**
* @enum sl_wifi_tx_test_mode_t
* @brief Enumeration of Wi-Fi TX test modes.
*/
typedef enum {
SL_WIFI_TEST_BURST_MODE = 0, ///< Burst Mode
SL_WIFI_TEST_CONTINOUS_MODE = 1, ///< Continuous Mode
SL_WIFI_TEST_CONTINOUS_WAVE_MODE = 2, ///< CW Mode
SL_WIFI_TEST_CONTINOUS_WAVE_MODE_OFF_CENTER_LOW = 3, ///< CW Mode center frequency - 2.5 MHZ Mode
SL_WIFI_TEST_CONTINOUS_WAVE_MODE_OFF_CENTER_HIGH = 4, ///< CW Mode center frequency + 5 MHZ Mode
} sl_wifi_tx_test_mode_t;
/**
* @enum sl_wifi_high_throughput_capability_types_t
* @brief Enumeration of High Throughput (HT) capabilities.
*/
typedef enum {
SL_WIFI_HT_CAPS_NUM_RX_STBC = (1 << 8), ///< Number of RX Space-Time Block Coding (STBC) streams supported
SL_WIFI_HT_CAPS_SHORT_GI_20MHZ = (1 << 5), ///< Support for Short Guard Interval (GI) in 20 MHz channels
SL_WIFI_HT_CAPS_GREENFIELD_EN =
(1 << 4), ///< Support for Greenfield mode, which improves efficiency by eliminating legacy preambles
SL_WIFI_HT_CAPS_SUPPORT_CH_WIDTH = (1 << 1), ///< Support for wider channel bandwidths
} sl_wifi_high_throughput_capability_types_t;
/**
* @enum sl_wifi_multicast_filter_command_t
* @brief Enumeration of multicast filter command types.
*/
typedef enum {
SL_WIFI_MULTICAST_MAC_ADD_BIT = 0, ///< To set particular bit in multicast bitmap
SL_WIFI_MULTICAST_MAC_CLEAR_BIT = 1, ///< To reset particular bit in multicast bitmap
SL_WIFI_MULTICAST_MAC_CLEAR_ALL = 2, ///< To clear all the bits in multicast bitmap
SL_WIFI_MULTICAST_MAC_SET_ALL = 3, ///< To set all the bits in multicast bitmap
} sl_wifi_multicast_filter_command_t;
/**
* @enum sl_wifi_eap_client_flag_t
* @brief Option flags for EAP (Extensible Authentication Protocol) client interfaces.
*/
typedef enum {
SL_WIFI_EAP_ENABLE_OKC = (1 << 0), ///< Wi-Fi EAP Client flag to enable Opportunistic Key Caching (OKC)
SL_WIFI_EAP_ENABLE_PEAP_CA =
(1 << 1), ///< Wi-Fi EAP Client flag to enable CA certificate requirement for PEAP connection
SL_WIFI_EAP_DHE_RSA_AES256_SHA256 =
(1 << 2), ///< Wi-Fi EAP Client flag to use DHE-RSA-AES256-SHA256 Cipher for EAP connection
SL_WIFI_EAP_DHE_RSA_AES128_SHA256 =
(1 << 3), ///< Wi-Fi EAP Client flag to use DHE-RSA-AES128-SHA256 Cipher for EAP connection
SL_WIFI_EAP_DHE_RSA_AES256_SHA =
(1 << 4), ///< Wi-Fi EAP Client flag to use DHE-RSA-AES256-SHA Cipher for EAP connection
SL_WIFI_EAP_DHE_RSA_AES128_SHA =
(1 << 5), ///< Wi-Fi EAP Client flag to use DHE-RSA-AES128-SHA Cipher for EAP connection
SL_WIFI_EAP_AES256_SHA256 = (1 << 6), ///< Wi-Fi EAP Client flag to use AES256-SHA256 Cipher for EAP connection
SL_WIFI_EAP_AES128_SHA256 = (1 << 7), ///< Wi-Fi EAP Client flag to use AES128-SHA256 Cipher for EAP connection
SL_WIFI_EAP_AES256_SHA = (1 << 8), ///< Wi-Fi EAP Client flag to use AES256-SHA Cipher for EAP connection
SL_WIFI_EAP_AES128_SHA = (1 << 9), ///< Wi-Fi EAP Client flag to use AES128-SHA Cipher for EAP connection
SL_WIFI_EAP_RC4_SHA = (1 << 10), ///< Wi-Fi EAP Client flag to use RC4-SHA Cipher for EAP connection
SL_WIFI_EAP_DES_CBC3_SHA = (1 << 11), ///< Wi-Fi EAP Client flag to use DES-CBC3-SHA Cipher for EAP connection
SL_WIFI_EAP_RC4_MD5 = (1 << 12) ///< Wi-Fi EAP Client flag to use RC4-MD5 Cipher for EAP connection
} sl_wifi_eap_client_flag_t;
/**
* @def SL_WIFI_AUTO_CHANNEL
* @brief Macro to enable Auto Channel Selection (ACS).
*
* This macro defines the value to enable the Auto Channel Selection (ACS) feature, which automatically determines the operating channel for the Access Point (AP).
*
* @note
* - The channel in which the AP operates. A value of zero enables the ACS feature.
* - If ACS is enabled, AP start may take approximately 9 seconds as the device scans all channels to select the best channel.
*/
#define SL_WIFI_AUTO_CHANNEL 0
/**
* @def SL_WIFI_DEFAULT_CHANNEL_BITMAP
* @brief Macro to define the default channel bitmap for scanning.
*
* @note
* - The selected or preferred channels to be scanned before the client connects to the AP. A value of zero means to scan on all available channels.
*/
#define SL_WIFI_DEFAULT_CHANNEL_BITMAP 0
/**
* @def SL_WIFI_ARGS_CHECK_NULL_POINTER(ptr)
* @brief Macro to check for null pointers in API inputs.
*/
#define SL_WIFI_ARGS_CHECK_NULL_POINTER(ptr) \
do { \
if (ptr == NULL) { \
return SL_STATUS_NULL_POINTER; \
} \
} while (0)
/**
* @def SL_WIFI_ARGS_CHECK_INVALID_INTERFACE(interface)
* @brief Macro to check for invalid Wi-Fi interfaces in API inputs.
*/
#define SL_WIFI_ARGS_CHECK_INVALID_INTERFACE(interface) \
{ \
if (!((interface == SL_WIFI_CLIENT_INTERFACE) || (interface == SL_WIFI_AP_INTERFACE) \
|| (interface == SL_WIFI_CLIENT_2_4GHZ_INTERFACE) || (interface == SL_WIFI_AP_2_4GHZ_INTERFACE) \
|| (interface == SL_WIFI_2_4GHZ_INTERFACE))) { \
return SL_STATUS_WIFI_UNKNOWN_INTERFACE; \
} \
}
/** @} */
#endif // _SL_WIFI_CONSTANTS_H_