Initial commit

Dependencies:   FastPWM

Revision:
0:bb348c97df44
--- /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
+