Initial commit
Diff: mbed-dev-master/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_MODULE_UBLOX_ODIN_W2/sdk/ublox-odin-w2-drivers/cb_wlan_types.h
- Revision:
- 0:bb348c97df44
diff -r 000000000000 -r bb348c97df44 mbed-dev-master/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_MODULE_UBLOX_ODIN_W2/sdk/ublox-odin-w2-drivers/cb_wlan_types.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-dev-master/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_MODULE_UBLOX_ODIN_W2/sdk/ublox-odin-w2-drivers/cb_wlan_types.h Wed Sep 16 01:11:49 2020 +0000 @@ -0,0 +1,699 @@ +/*--------------------------------------------------------------------------- + * Copyright (c) 2016, u-blox Malmö, All Rights Reserved + * SPDX-License-Identifier: LicenseRef-PBL + * + * This file and the related binary are licensed under the + * Permissive Binary License, Version 1.0 (the "License"); + * you may not use these files except in compliance with the License. + * + * You may obtain a copy of the License here: + * LICENSE-permissive-binary-license-1.0.txt and at + * https://www.mbed.com/licenses/PBL-1.0 + * + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Component : WLAN driver + * File : cb_wlan_types.h + * + * Description : Common wireless LAN defines and types. + *-------------------------------------------------------------------------*/ + +/** + * @file cb_wlan_types.h The main WLAN 802.11 interface + * + * @ingroup WLANDriver + */ + +#ifndef _CB_WLAN_TYPES_H_ +#define _CB_WLAN_TYPES_H_ + +#include "cb_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*=========================================================================== + * DEFINES + *=========================================================================*/ + +/** + * Max length for an SSID + * + * @ingroup wlantypes + */ +#define cbWLAN_SSID_MAX_LENGTH (32) + +/** + * EAPOL ethernet type + * + * @ingroup wlantypes + */ +#define cbWLAN_ETHTYPE_EAPOL (0x888E) + +/** + * Maximum size of a predefined WEP key + * + * @ingroup wlantypes + */ +#define cbWLAN_KEY_SIZE_WEP_MAX (cbWLAN_KEY_SIZE_WEP128) + +#define cbWLAN_OUI_SIZE 3 + +#define cbRATE_MASK_B (cbRATE_MASK_01 | cbRATE_MASK_02 | cbRATE_MASK_5_5 | cbRATE_MASK_11) +#define cbRATE_MASK_G (cbRATE_MASK_06 | cbRATE_MASK_09 | cbRATE_MASK_12 | cbRATE_MASK_18 | cbRATE_MASK_24 | cbRATE_MASK_36 | cbRATE_MASK_48 | cbRATE_MASK_54) +#define cbRATE_MASK_A (cbRATE_MASK_G) +#define cbRATE_MASK_N (cbRATE_MASK_MCS0 | cbRATE_MASK_MCS1 | cbRATE_MASK_MCS2 | cbRATE_MASK_MCS3 | cbRATE_MASK_MCS4 | cbRATE_MASK_MCS5 | cbRATE_MASK_MCS6 | cbRATE_MASK_MCS7) +#define cbRATE_TX_MIMO (cbRATE_MASK_MCS8 | cbRATE_MASK_MCS9 | cbRATE_MASK_MCS10 | cbRATE_MASK_MCS11 | cbRATE_MASK_MCS12 | cbRATE_MASK_MCS13 | cbRATE_MASK_MCS14 | cbRATE_MASK_MCS15) +#define cbRATE_TX_WIDE (cbRATE_MASK_WIDE) +#define cbRATE_MASK_ALL (cbRATE_MASK_B | cbRATE_MASK_G | cbRATE_MASK_N | cbRATE_TX_MIMO | cbRATE_TX_WIDE) + +#define cbWLAN_MAX_CHANNEL_LIST_LENGTH 38 + +#define cbWLAN_TX_POWER_AUTO 0xFF + +#define cbWLAN_PMF_MFPR cb_BIT_6 // Bit 6: Management Frame Protection Required (MFPR) +#define cbWLAN_PMF_MFPC cb_BIT_7 // Bit 7: Management Frame Protection Capable (MFPC). + +/*=========================================================================== + * TYPES + *=========================================================================*/ + +/** + * The encryption mode. + * + * @ingroup wlantypes + */ +typedef enum cbWLAN_EncryptionMode_e { + cbWLAN_ENC_NONE, + cbWLAN_ENC_WEP64, + cbWLAN_ENC_WEP128, + cbWLAN_ENC_TKIP, + cbWLAN_ENC_AES, + cbWLAN_ENC_BIP, +} cbWLAN_EncryptionMode; + +typedef enum cbWLAN_CipherSuite { + cbWLAN_CIPHER_SUITE_NONE = 0x00, + cbWLAN_CIPHER_SUITE_WEP64 = 0x01, + cbWLAN_CIPHER_SUITE_WEP128 = 0x02, + cbWLAN_CIPHER_SUITE_TKIP = 0x04, + cbWLAN_CIPHER_SUITE_AES_CCMP = 0x08, + cbWLAN_CIPHER_SUITE_BIP = 0x10, +} cbWLAN_CipherSuite; + +typedef enum cbWLAN_AuthenticationSuite { + cbWLAN_AUTHENTICATION_SUITE_NONE = 0x0000, + cbWLAN_AUTHENTICATION_SUITE_SHARED_SECRET = 0x0001, + cbWLAN_AUTHENTICATION_SUITE_PSK = 0x0002, + cbWLAN_AUTHENTICATION_SUITE_8021X = 0x0004, + cbWLAN_AUTHENTICATION_SUITE_USE_WPA = 0x0008, + cbWLAN_AUTHENTICATION_SUITE_USE_WPA2 = 0x0010, + cbWLAN_AUTHENTICATION_SUITE_PSK_SHA256 = 0x0020, + cbWLAN_AUTHENTICATION_SUITE_8021X_SHA256 = 0x0040, + cbWLAN_AUTHENTICATION_SUITE_8021X_FT = 0x0080, + cbWLAN_AUTHENTICATION_SUITE_PSK_FT = 0x0100, +} cbWLAN_AuthenticationSuite; + + +/** + * Enterprise authentication mode. + * + * @ingroup wlan + */ +typedef enum cbWLAN_EnterpriseMode { + cbWLAN_ENTERPRISE_MODE_LEAP, + cbWLAN_ENTERPRISE_MODE_PEAP, + cbWLAN_ENTERPRISE_MODE_EAPTLS, +} cbWLAN_EnterpriseMode; + +/** + * Key sizes for the supported encryptions. + * + * @ingroup wlantypes + */ +typedef enum cbWLAN_EncryptionKeySize_e { + cbWLAN_KEY_SIZE_WEP64 = 5, + cbWLAN_KEY_SIZE_WEP128 = 13, + cbWLAN_KEY_SIZE_WEP2 = 16, + cbWLAN_KEY_SIZE_TKIP = 16, + cbWLAN_KEY_SIZE_AES = 16, + cbWLAN_KEY_SIZE_TKIP_MIC = 8 +} cbWLAN_EncryptionKeySize; + +enum cbWLAN_Channel_e { + cbWLAN_CHANNEL_ALL = 0, + cbWLAN_CHANNEL_01 = 1, + cbWLAN_CHANNEL_02, + cbWLAN_CHANNEL_03, + cbWLAN_CHANNEL_04, + cbWLAN_CHANNEL_05, + cbWLAN_CHANNEL_06, + cbWLAN_CHANNEL_07, + cbWLAN_CHANNEL_08, + cbWLAN_CHANNEL_09, + cbWLAN_CHANNEL_10, + cbWLAN_CHANNEL_11, + cbWLAN_CHANNEL_12, + cbWLAN_CHANNEL_13, + cbWLAN_CHANNEL_14, + + cbWLAN_CHANNEL_36 = 36, + cbWLAN_CHANNEL_40 = 40, + cbWLAN_CHANNEL_44 = 44, + cbWLAN_CHANNEL_48 = 48, + cbWLAN_CHANNEL_52 = 52, + cbWLAN_CHANNEL_56 = 56, + cbWLAN_CHANNEL_60 = 60, + cbWLAN_CHANNEL_64 = 64, + cbWLAN_CHANNEL_100 = 100, + cbWLAN_CHANNEL_104 = 104, + cbWLAN_CHANNEL_108 = 108, + cbWLAN_CHANNEL_112 = 112, + cbWLAN_CHANNEL_116 = 116, + cbWLAN_CHANNEL_120 = 120, + cbWLAN_CHANNEL_124 = 124, + cbWLAN_CHANNEL_128 = 128, + cbWLAN_CHANNEL_132 = 132, + cbWLAN_CHANNEL_136 = 136, + cbWLAN_CHANNEL_140 = 140, + cbWLAN_CHANNEL_149 = 149, + cbWLAN_CHANNEL_153 = 153, + cbWLAN_CHANNEL_157 = 157, + cbWLAN_CHANNEL_161 = 161, + cbWLAN_CHANNEL_165 = 165 +}; + +/** + * WLAN Channels + * Valid values are found in @ref cbWLAN_Channel_e + * @ingroup wlantypes + */ +typedef cb_uint8 cbWLAN_Channel; + +/** + * WLAN Channel list + * @ingroup wlantypes + */ +typedef struct { + cb_uint32 length; + cbWLAN_Channel channels[cbWLAN_MAX_CHANNEL_LIST_LENGTH]; +} cbWLAN_ChannelList; + +/** + * Standard 802.11 rates + * + * @ingroup wlantypes + */ +enum cbWLAN_Rate_e { + cbWLAN_RATE_01 = 1, // 1 + cbWLAN_RATE_02, // 2 + cbWLAN_RATE_5_5, // 3 + cbWLAN_RATE_06, // 4 + cbWLAN_RATE_09, // 5 + cbWLAN_RATE_11, // 6 + cbWLAN_RATE_12, // 7 + cbWLAN_RATE_18, // 8 + cbWLAN_RATE_24, // 9 + cbWLAN_RATE_36, // 10 + cbWLAN_RATE_48, // 11 + cbWLAN_RATE_54, // 12 + cbWLAN_RATE_MCS0, // 13 + cbWLAN_RATE_MCS1, // 14 + cbWLAN_RATE_MCS2, // 15 + cbWLAN_RATE_MCS3, // 16 + cbWLAN_RATE_MCS4, // 17 + cbWLAN_RATE_MCS5, // 18 + cbWLAN_RATE_MCS6, // 19 + cbWLAN_RATE_MCS7, // 20 + cbWLAN_RATE_MCS8, // 21 + cbWLAN_RATE_MCS9, // 22 + cbWLAN_RATE_MCS10, // 23 + cbWLAN_RATE_MCS11, // 24 + cbWLAN_RATE_MCS12, // 25 + cbWLAN_RATE_MCS13, // 26 + cbWLAN_RATE_MCS14, // 27 + cbWLAN_RATE_MCS15, // 28 + cbWLAN_RATE_MAX, // 29 + cbWLAN_RATE_UNSUPPORTED = 0xff +}; + +/** + * Type for containing values found in @ref cbWLAN_Rate_e + * @ingroup wlantypes + */ +typedef cb_uint8 cbWLAN_Rate; + + +/** + * Mask bits for standard 802.11 rates + * + * @ingroup wlantypes + */ +enum cbWLAN_RateMask_e { + cbRATE_MASK_01 = 0x00000001, + cbRATE_MASK_02 = 0x00000002, + cbRATE_MASK_5_5 = 0x00000004, + cbRATE_MASK_11 = 0x00000008, + cbRATE_MASK_06 = 0x00000010, + cbRATE_MASK_09 = 0x00000020, + cbRATE_MASK_12 = 0x00000040, + cbRATE_MASK_18 = 0x00000080, + cbRATE_MASK_24 = 0x00000100, + cbRATE_MASK_36 = 0x00000200, + cbRATE_MASK_48 = 0x00000400, + cbRATE_MASK_54 = 0x00000800, + // NOTE: Don't move MCS rates bit offset, see note on define below + cbRATE_MASK_MCS0 = 0x00001000, + cbRATE_MASK_MCS1 = 0x00002000, + cbRATE_MASK_MCS2 = 0x00004000, + cbRATE_MASK_MCS3 = 0x00008000, + cbRATE_MASK_MCS4 = 0x00010000, + cbRATE_MASK_MCS5 = 0x00020000, + cbRATE_MASK_MCS6 = 0x00040000, + cbRATE_MASK_MCS7 = 0x00080000, + //TX MIMO RATES + cbRATE_MASK_MCS8 = 0x00100000, + cbRATE_MASK_MCS9 = 0x00200000, + cbRATE_MASK_MCS10 = 0x00400000, + cbRATE_MASK_MCS11 = 0x00800000, + cbRATE_MASK_MCS12 = 0x01000000, + cbRATE_MASK_MCS13 = 0x02000000, + cbRATE_MASK_MCS14 = 0x04000000, + cbRATE_MASK_MCS15 = 0x08000000, + //TX RATE USE WIDE CHANNEL + cbRATE_MASK_WIDE = 0x80000000 +}; + + +/** + * Access categories + * + * @ingroup wlantypes + */ +typedef enum cbWLAN_AccessCategory_e { + cbWLAN_AC_BK = 1, /**< Background */ + cbWLAN_AC_SP = 2, /**< Background (Spare) */ + + cbWLAN_AC_BE = 0, /**< Best effort */ + cbWLAN_AC_EE = 3, /**< Best effort (Excellent Effort) */ + + cbWLAN_AC_CL = 4, /**< Video (Controlled Load) */ + cbWLAN_AC_VI = 5, /**< Video */ + + cbWLAN_AC_VO = 6, /**< Voice */ + cbWLAN_AC_NC = 7, /**< Voice (Network Control)*/ +} cbWLAN_AccessCategory; + +/** +* Fast Transition (802.11r) modes. +* +* @ingroup wlantypes +*/ +typedef enum cbWLAN_FTMode_e { + cbWLAN_FT_OFF, + cbWLAN_FT_OVER_AIR, + cbWLAN_FT_OVER_DS, +} cbWLAN_FTMode; +/** +* connectBlue Hardware Identification +* +* @ingroup types +*/ +typedef enum cbWM_ModuleType_e { + cbWM_MODULE_UNKNOWN, + cbWM_MODULE_OWL22X, + cbWM_MODULE_OWL253, + cbWM_MODULE_OWS451, + cbWM_MODULE_OWL351, + cbWM_MODULE_ODIN_W16X = cbWM_MODULE_OWL351, + cbWM_MODULE_ODIN_W26X, +} cbWM_ModuleType; + +/** + * Mac address type + * + * @ingroup wlantypes + */ +typedef cb_uint8 cbWLAN_MACAddress[6]; + +/** + * Type for containing values found in @ref cbWLAN_RateMask_e + * @ingroup wlantypes + */ +typedef cb_uint32 cbWLAN_RateMask; + +/** + * Transmission power + * + * @ingroup wlantypes + */ +typedef cb_uint8 cbWLAN_TxPower; + +/** + * The different frequency bands to choose from. + * + * @ingroup wlantypes + */ +typedef enum cbWLAN_Band_e { + cbWLAN_BAND_UNDEFINED, + cbWLAN_BAND_2_4GHz, + cbWLAN_BAND_5GHz, +} cbWLAN_Band; + +/** + * The operational mode. + * + * @ingroup wlantypes + */ +typedef enum cbWLAN_OperationalMode_e { + cbWLAN_OPMODE_MANAGED, + cbWLAN_OPMODE_ADHOC, +} cbWLAN_OperationalMode; + +/** + * Encryption key type + * + * @ingroup wlantypes + */ +typedef enum cbWLAN_KeyType_e { + cbWLAN_KEY_UNICAST, + cbWLAN_KEY_BROADCAST, + cbWLAN_KEY_IGTK, +} cbWLAN_KeyType; + +typedef enum { + cbWLAN_CONNECT_MODE_OPEN, + cbWLAN_CONNECT_MODE_WEP_OPEN, + cbWLAN_CONNECT_MODE_WPA_PSK, + cbWLAN_CONNECT_MODE_ENTERPRISE, +} cbWLAN_ConnectMode; + +typedef enum { + cbWLAN_AP_MODE_OPEN, + cbWLAN_AP_MODE_WEP_OPEN, + cbWLAN_AP_MODE_WPA_PSK, + cbWLAN_AP_MODE_ENTERPRISE, +} cbWLAN_ApMode; + +#if defined(CB_FEATURE_802DOT11R) +/** + * Description of the Mobility Domain Information Element + * + * @ingroup wlantypes + */ + +cb_PACKED_STRUCT_BEGIN(cbWLAN_MDInformation) { + cb_uint8 eId; + cb_uint8 len; + cb_uint16 MDID; + cb_uint8 FtCapabilityPolicy; +} cb_PACKED_STRUCT_END(cbWLAN_MDInformation); + +/** + * Description of the Timeout Interval Information Element + * + * @ingroup wlantypes + */ + +cb_PACKED_STRUCT_BEGIN(cbWLAN_TimeOutInformation){ + cb_uint8 eId; + cb_uint8 len; + cb_uint8 timeOutType; + cb_uint32 value; +} cb_PACKED_STRUCT_END(cbWLAN_TimeOutInformation); + +/** + * Description of the Mobility Domain Information Element + * + * @ingroup wlantypes + */ + +cb_PACKED_STRUCT_BEGIN(cbWLAN_FtInformation){ + cb_uint8 eId; + cb_uint8 len; + cb_uint16 micControl; + cb_uint8 mic[16]; + cb_uint8 ANonce[32]; + cb_uint8 SNonce[32]; + cb_uint8 optionalParams[174]; // length field can maximum be 256, therefore optional params can be max 172 bytes +} cb_PACKED_STRUCT_END(cbWLAN_FtInformation); + + + +typedef struct cbWLAN_BSSChangeParameters { + cbWLAN_MACAddress currentBssid; /**< BSSID of connected AP. > */ + cbWLAN_MACAddress targetBssid; /**< BSSID to connect to. > */ + cbWLAN_Channel channel; /**< The channel the BSS is located on. > */ + cb_uint32 reAssocDeadline; /**< Reassociation Deadline time*/ +} cbWLAN_BSSChangeParameters; +#endif + +//#if defined(CB_FEATURE_802DOT11W) +typedef enum { + cbWLAN_PMF_DISABLE = 0, /**< MFPC = 0, MFPR = 0 */ + cbWLAN_PMF_OPTIONAL = 1, /**< MFPC = 1, MFPR = 0 */ + cbWLAN_PMF_REQUIRED = 2, /**< MFPC = 1, MFPR = 1 */ +} cbWLAN_PMF; +//#endif +typedef enum cbAP_KdeType_e { + RESERVED, + GTK_KDE, + RESERVED_2, + MAC_ADDRESS_KDE, + PMKID_KDE, + SMK_KDE, + NONCE_KDE, + LIFETIME_KDE, + ERROR_KDE, + IGTK_KDE, + KEY_ID_KDE, +} cbAP_KdeType; + + +/** + * Ethernet header + * + * @ingroup wlantypes + */ +cb_PACKED_STRUCT_BEGIN(cbWLAN_EthernetHeader) { + cbWLAN_MACAddress dest; + cbWLAN_MACAddress src; + cb_uint16 type; +} cb_PACKED_STRUCT_END(cbWLAN_EthernetHeader); + + +cb_PACKED_STRUCT_BEGIN(cbWLAN_EthernetFrame) { + cbWLAN_EthernetHeader header; + cb_uint8 payload[cb_EMPTY_ARRAY]; +} cb_PACKED_STRUCT_END(cbWLAN_EthernetFrame); + +/** + * SNAP header + * + * @ingroup wlantypes + */ +cb_PACKED_STRUCT_BEGIN(cbWLAN_SNAPHeader) { + cb_uint8 dsap; + cb_uint8 ssap; + cb_uint8 ctrl; + cb_uint8 encapsulation[3]; + cb_uint16 ethType; +} cb_PACKED_STRUCT_END(cbWLAN_SNAPHeader); + +cb_PACKED_STRUCT_BEGIN(cbWLAN_SNAPFrame) { + cbWLAN_SNAPHeader header; + cb_uint8 payload[cb_EMPTY_ARRAY]; +} cb_PACKED_STRUCT_END(cbWLAN_SNAPFrame); + + +/** + * Defines an ssid. + * + * @ingroup wlantypes + */ +typedef struct cbWLAN_Ssid_s { + cb_uint8 ssid[cbWLAN_SSID_MAX_LENGTH]; + cb_uint32 ssidLength; +} cbWLAN_Ssid; + +/** + * Defines one wep key. + * + * @ingroup wlantypes + */ +typedef struct cbWLAN_WepKey_s { + cb_uint8 key[cbWLAN_KEY_SIZE_WEP_MAX]; + cb_uint32 length; +} cbWLAN_WEPKey; + +/** + * Describes host revisions. + * @see cbWM_Version + * + * @ingroup types + */ +typedef struct { + struct { + cb_uint32 major; + cb_uint32 minor; + cb_uint32 patch1; + } software; + struct { + const char* id; + } manufacturer; +} cbWM_DriverRevision; + +/** + * Describes firmware revisions. + * @see cbWM_Version + * + * @ingroup types + */ +typedef struct { + struct { + cb_uint32 major; + cb_uint32 minor; + cb_uint32 patch1; + cb_uint32 patch2; + } firmware; + struct { + const char* id; + } manufacturer; +} cbWM_FWRevision; + +/** + * Describes firmware revisions. Is divided into three parts; one for the + * host driver side, one for target firmware, and one information string + * descibing the HW manufacturer. + * + * @ingroup types + */ +typedef struct version_st{ + cbWM_DriverRevision host; + cbWM_FWRevision target; +} cbWM_Version; + +/** + * Describes power levels for dynamic power level control. + * + * @ingroup types + */ +typedef struct cbWM_TxPowerSettings_s { + cbWLAN_TxPower lowTxPowerLevel; + cbWLAN_TxPower medTxPowerLevel; + cbWLAN_TxPower maxTxPowerLevel; +} cbWM_TxPowerSettings; + +/** + * Describes the startup settings needed to boot properly. + * + * @ingroup types + */ +typedef struct cbWM_BootParameters_s { + cbWM_TxPowerSettings txPowerSettings; + cb_uint8 primaryAntenna; + cb_uint8 numberOfAntennas; +} cbWM_BootParameters; + +/** + * Describes an access point. + * + * @ingroup types + */ +typedef struct cbWLAN_ApInformation { + cbWLAN_Ssid ssid; /**< SSID */ + cbWLAN_MACAddress bssid; /**< BSSID */ + cbWLAN_Channel channel; /**< Channel */ +} cbWLAN_ApInformation; + +/** + * Describes a station connected to an access point. + * + * @ingroup types + */ +typedef struct cbWLAN_ApStaInformation { + cbWLAN_MACAddress MAC; +} cbWLAN_ApStaInformation; + +typedef struct cbWLAN_HTCapabilities_st { + cbWLAN_RateMask rates; + cb_uint16 info; +} cbWLAN_HTCapabilities; +/*--------------------------------------------------------------------------- + * VARIABLE DECLARATIONS + *-------------------------------------------------------------------------*/ +extern const cbWLAN_MACAddress nullMac; +extern const cbWLAN_MACAddress broadcastMac; + +extern const cb_uint8 OUI_Microsoft[cbWLAN_OUI_SIZE]; +extern const cb_uint8 OUI_Epigram[cbWLAN_OUI_SIZE]; +extern const cb_uint8 OUI_ConnectBlue[cbWLAN_OUI_SIZE]; +extern const cb_uint8 OUI_IEEE8021[cbWLAN_OUI_SIZE]; + +extern const cb_uint8 PATTERN_TKIP[2]; +extern const cb_uint8 PATTERN_WME_IE[3]; +extern const cb_uint8 PATTERN_WME_PE[3]; + +/*--------------------------------------------------------------------------- + * FUNCTIONS + *-------------------------------------------------------------------------*/ + +/** + * Misc + */ + +/** + * Returns the correct frequency @ref cbWLAN_Band band based on the input channel. + * + * For @ref cbWLAN_CHANNEL_ALL This function will return @ref cbWLAN_BAND_2_4GHz. + * + * @param channel The channel to be queried for band. + * @return The @ref cbWLAN_Band band for the requested channel. + */ +cbWLAN_Band cbWLAN_getBandFromChannel(cbWLAN_Channel channel); + +/** + * Returns the valid rates @ref cbWLAN_RateMask based for the channel. + * + * @param channel The channel to be queried for rates. + * @return The valid rates @ref cbWLAN_RateMask for the requested channel. + */ +cbWLAN_RateMask cbWLAN_getRatesForChannel(cbWLAN_Channel channel, cb_uint8 numberOfAntennas); + +/** + * Checks is the input rate is a 802.11n rate or not. + * + * @param rate The rate to check + * @return @ref TRUE if the input rate is an n-rate. @ref FALSE otherwise. + */ +cb_boolean cbWLAN_isNRate(cbWLAN_Rate rate); + +/** + * Checks if a channel is valid + * + * @return @ref TRUE if the channel is valid. @ref FALSE otherwise. + */ +cb_boolean cbWLAN_isValidChannel(cbWLAN_Channel channel); + +/** + * Checks if a channel is valid for HT40- + * + * @return @ref TRUE if the channel is valid. @ref FALSE otherwise. + */ +cb_boolean cbWLAN_isValidHT40MinusChannel(cbWLAN_Channel channel); + +/** + * Checks if a channel is valid for HT40+ + * + * @return @ref TRUE if the channel is valid. @ref FALSE otherwise. + */ +cb_boolean cbWLAN_isValidHT40PlusChannel(cbWLAN_Channel channel); + +#ifdef __cplusplus +} +#endif + +#endif +