Driver for CC3000 Wi-Fi module

Dependencies:   NVIC_set_all_priorities

Dependents:   CC3000_Simple_Socket Wi-Go_IOT_Demo

Information

The current code has been reworked to a full object oriented application and contains an mbed socket compatible API.

CC3000 Wi-Fi module library

Info

This is the low level driver for TI's SimpleLink CC3000 device.
Port from Avnet's Wi-Go KEIL code (based on TI's CC3000 code).
Special thanks to Jim Carver from Avnet for providing the Wi-Go board and for his assistance.

Differences with TI's original code

The code functionality stays exactly the same.
In order to make it easier to use the code, following changes were made :

  • Addition of a tool to shift all IRQ priorities to a lower level since it is very important to keep the SPI handler at the highest system priority, the WLAN interrupt the second highest and all other system interrupts at a lower priority, so their handlers can be preempted by the CC3000 interrupts.
  • Addition of low level I/O controls and conditional compiler controls in cc3000_common.h.
  • CC3000 initialisation, pin declarations, SPI and WLAN irq priorities are set in Init_HostDriver , we need to call this function at the start of the main function.
  • The SPI and HCI code are joined into one file.
  • The include list has been rearranged - Only #include "wlan.h" is needed in the user API.
  • Part of the CC3000's user eeprom memory is used to store additional info (52 bytes in NVMEM_USER_FILE_1):
# bytesDescriptionInfo
1First time config parameterUseful when connecting
2Firmware updater versionused with the Firmware update tool
2Service Pack versionused with the Firmware update tool
3Driver Versionused with the Firmware update tool
3Firmware Versionused with the Firmware update tool
1CIK validation (Client Interface Key)
40CIK data (Client Interface Key)used with the exosite

Using the Library

A user API is needed to access the CC3000 functions.
Examples:

Using the library with other processors

cc3000_common.cpp loads the irq tool for all targets:
All current mbed targets are supported by this library.

#include "NVIC_set_all_priorities.h"


All low level settings that need to change are available in cc3000_common.h

//*****************************************************************************
//              PIN CONTROLS & COMPILE CONTROLS
//*****************************************************************************
// Compiler control
#define CC3000_UNENCRYPTED_SMART_CONFIG   // No encryption
//#define CC3000_TINY_DRIVER                // Driver for small memory model CPUs

//Interrupt controls
#define NVIC_ALL_IRQ        NVIC_set_all_irq_priorities(3);         // Set ALL interrupt priorities to level 3
#define NVIC_SPI_IRQ        NVIC_SetPriority(SPI0_IRQn, 0x0);       // Wi-Fi SPI interrupt must be higher priority than SysTick
#define NVIC_PORT_IRQ       NVIC_SetPriority(PORTA_IRQn, 0x1);
#define NVIC_SYSTICK_IRQ    NVIC_SetPriority(SysTick_IRQn, 0x2);    // SysTick set to lower priority than Wi-Fi SPI bus interrupt
//#define NVIC_ADC_IRQ        NVIC_SetPriority(ADC0_IRQn, 0x3);       // ADC is the lowest of all

// Wlan controls
#define WLAN_ISF_PCR        PORTA->PCR[16]
#define WLAN_ISF_ISFR       PORTA->ISFR
#define WLAN_ISF_MASK       (1<<16)

#define WLAN_ASSERT_CS      wlan_cs = 0;   //CS : active low
#define WLAN_DEASSERT_CS    wlan_cs = 1;

#define WLAN_ASSERT_EN      wlan_en = 1;   //EN : active high
#define WLAN_DEASSERT_EN    wlan_en = 0;

#define WLAN_READ_IRQ       wlan_int

#define WLAN_ENABLE_IRQ     wlan_int.fall(&WLAN_IRQHandler);
#define WLAN_DISABLE_IRQ    wlan_int.fall(NULL);

#define WLAN_IRQ_PIN_CREATE         InterruptIn wlan_int (PTA16);
#define WLAN_EN_PIN_CREATE          DigitalOut  wlan_en  (PTA13);
#define WLAN_CS_PIN_CREATE          DigitalOut  wlan_cs  (PTD0);
#define WLAN_SPI_PORT_CREATE        SPI wlan(PTD2, PTD3, PTC5); // mosi, miso, sclk

#define WLAN_SPI_PORT_INIT          wlan.format(8,1);
#define WLAN_SPI_SET_FREQ           wlan.frequency(12000000);
#define WLAN_SPI_SET_IRQ_HANDLER    wlan_int.fall(&WLAN_IRQHandler);

#define WLAN_SPI_WRITE              wlan.write(*data++);
#define WLAN_SPI_READ               wlan.write(0x03);          // !! DO NOT MODIFY the 0x03 parameter (CC3000 will not respond).

API documentation

Due to a little problem with the links on the mbed site, the API documentation is not directly accessible (will be solved in a next release).
Currently, it is only accessible by adding modules.html to the API doc link: http://mbed.org/users/frankvnk/code/CC3000_Hostdriver/docs/tip/modules.html

Committer:
frankvnk
Date:
Fri Jun 28 17:48:37 2013 +0000
Revision:
0:c44f0314d6ec
Child:
4:d8255a5aad46
Initial release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 0:c44f0314d6ec 1 /*****************************************************************************
frankvnk 0:c44f0314d6ec 2 *
frankvnk 0:c44f0314d6ec 3 * wlan.h - CC3000 Host Driver Implementation.
frankvnk 0:c44f0314d6ec 4 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
frankvnk 0:c44f0314d6ec 5 *
frankvnk 0:c44f0314d6ec 6 * Redistribution and use in source and binary forms, with or without
frankvnk 0:c44f0314d6ec 7 * modification, are permitted provided that the following conditions
frankvnk 0:c44f0314d6ec 8 * are met:
frankvnk 0:c44f0314d6ec 9 *
frankvnk 0:c44f0314d6ec 10 * Redistributions of source code must retain the above copyright
frankvnk 0:c44f0314d6ec 11 * notice, this list of conditions and the following disclaimer.
frankvnk 0:c44f0314d6ec 12 *
frankvnk 0:c44f0314d6ec 13 * Redistributions in binary form must reproduce the above copyright
frankvnk 0:c44f0314d6ec 14 * notice, this list of conditions and the following disclaimer in the
frankvnk 0:c44f0314d6ec 15 * documentation and/or other materials provided with the
frankvnk 0:c44f0314d6ec 16 * distribution.
frankvnk 0:c44f0314d6ec 17 *
frankvnk 0:c44f0314d6ec 18 * Neither the name of Texas Instruments Incorporated nor the names of
frankvnk 0:c44f0314d6ec 19 * its contributors may be used to endorse or promote products derived
frankvnk 0:c44f0314d6ec 20 * from this software without specific prior written permission.
frankvnk 0:c44f0314d6ec 21 *
frankvnk 0:c44f0314d6ec 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
frankvnk 0:c44f0314d6ec 23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
frankvnk 0:c44f0314d6ec 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
frankvnk 0:c44f0314d6ec 25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
frankvnk 0:c44f0314d6ec 26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
frankvnk 0:c44f0314d6ec 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
frankvnk 0:c44f0314d6ec 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
frankvnk 0:c44f0314d6ec 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
frankvnk 0:c44f0314d6ec 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
frankvnk 0:c44f0314d6ec 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
frankvnk 0:c44f0314d6ec 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
frankvnk 0:c44f0314d6ec 33 *
frankvnk 0:c44f0314d6ec 34 *****************************************************************************/
frankvnk 0:c44f0314d6ec 35 #ifndef __WLAN_H__
frankvnk 0:c44f0314d6ec 36 #define __WLAN_H__
frankvnk 0:c44f0314d6ec 37
frankvnk 0:c44f0314d6ec 38 //#include "mbed.h"
frankvnk 0:c44f0314d6ec 39 #include "GlobalAssigns.h"
frankvnk 0:c44f0314d6ec 40 #include "cc3000_common.h"
frankvnk 0:c44f0314d6ec 41 #include "hci.h"
frankvnk 0:c44f0314d6ec 42 #include "CC3000_spi.h"
frankvnk 0:c44f0314d6ec 43 #include "socket.h"
frankvnk 0:c44f0314d6ec 44 #include "nvmem.h"
frankvnk 0:c44f0314d6ec 45 #include "security.h"
frankvnk 0:c44f0314d6ec 46 #include "evnt_handler.h"
frankvnk 0:c44f0314d6ec 47
frankvnk 0:c44f0314d6ec 48 /** CC3000 Host driver - WLAN
frankvnk 0:c44f0314d6ec 49 *
frankvnk 0:c44f0314d6ec 50 */
frankvnk 0:c44f0314d6ec 51 //*****************************************************************************
frankvnk 0:c44f0314d6ec 52 //
frankvnk 0:c44f0314d6ec 53 // If building with a C++ compiler, make all of the definitions in this header
frankvnk 0:c44f0314d6ec 54 // have a C binding.
frankvnk 0:c44f0314d6ec 55 //
frankvnk 0:c44f0314d6ec 56 //*****************************************************************************
frankvnk 0:c44f0314d6ec 57 #ifdef __cplusplus
frankvnk 0:c44f0314d6ec 58 extern "C" {
frankvnk 0:c44f0314d6ec 59 #endif
frankvnk 0:c44f0314d6ec 60
frankvnk 0:c44f0314d6ec 61 #define WLAN_SEC_UNSEC (0)
frankvnk 0:c44f0314d6ec 62 #define WLAN_SEC_WEP (1)
frankvnk 0:c44f0314d6ec 63 #define WLAN_SEC_WPA (2)
frankvnk 0:c44f0314d6ec 64 #define WLAN_SEC_WPA2 (3)
frankvnk 0:c44f0314d6ec 65 //*****************************************************************************
frankvnk 0:c44f0314d6ec 66 //
frankvnk 0:c44f0314d6ec 67 //! \addtogroup wlan_api
frankvnk 0:c44f0314d6ec 68 //! @{
frankvnk 0:c44f0314d6ec 69 //
frankvnk 0:c44f0314d6ec 70 //*****************************************************************************
frankvnk 0:c44f0314d6ec 71
frankvnk 0:c44f0314d6ec 72
frankvnk 0:c44f0314d6ec 73 //*****************************************************************************
frankvnk 0:c44f0314d6ec 74 //
frankvnk 0:c44f0314d6ec 75 //! wlan_init
frankvnk 0:c44f0314d6ec 76 //!
frankvnk 0:c44f0314d6ec 77 //! @param sWlanCB Asynchronous events callback.
frankvnk 0:c44f0314d6ec 78 //! 0 no event call back.
frankvnk 0:c44f0314d6ec 79 //! -call back parameters:
frankvnk 0:c44f0314d6ec 80 //! 1) event_type: HCI_EVNT_WLAN_UNSOL_CONNECT connect event,
frankvnk 0:c44f0314d6ec 81 //! HCI_EVNT_WLAN_UNSOL_DISCONNECT disconnect event,
frankvnk 0:c44f0314d6ec 82 //! HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE config done,
frankvnk 0:c44f0314d6ec 83 //! HCI_EVNT_WLAN_UNSOL_DHCP dhcp report,
frankvnk 0:c44f0314d6ec 84 //! HCI_EVNT_WLAN_ASYNC_PING_REPORT ping report OR
frankvnk 0:c44f0314d6ec 85 //! HCI_EVNT_WLAN_KEEPALIVE keepalive.
frankvnk 0:c44f0314d6ec 86 //! 2) data: pointer to extra data that received by the event
frankvnk 0:c44f0314d6ec 87 //! (NULL no data).
frankvnk 0:c44f0314d6ec 88 //! 3) length: data length.
frankvnk 0:c44f0314d6ec 89 //! -Events with extra data:
frankvnk 0:c44f0314d6ec 90 //! HCI_EVNT_WLAN_UNSOL_DHCP: 4 bytes IP, 4 bytes Mask,
frankvnk 0:c44f0314d6ec 91 //! 4 bytes default gateway, 4 bytes DHCP server and 4 bytes
frankvnk 0:c44f0314d6ec 92 //! for DNS server.
frankvnk 0:c44f0314d6ec 93 //! HCI_EVNT_WLAN_ASYNC_PING_REPORT: 4 bytes Packets sent,
frankvnk 0:c44f0314d6ec 94 //! 4 bytes Packets received, 4 bytes Min round time,
frankvnk 0:c44f0314d6ec 95 //! 4 bytes Max round time and 4 bytes for Avg round time.
frankvnk 0:c44f0314d6ec 96 //!
frankvnk 0:c44f0314d6ec 97 //! @param sFWPatches 0 no patch or pointer to FW patches
frankvnk 0:c44f0314d6ec 98 //! @param sDriverPatches 0 no patch or pointer to driver patches
frankvnk 0:c44f0314d6ec 99 //! @param sBootLoaderPatches 0 no patch or pointer to bootloader patches
frankvnk 0:c44f0314d6ec 100 //! @param sReadWlanInterruptPin init callback. the callback read wlan
frankvnk 0:c44f0314d6ec 101 //! interrupt status.
frankvnk 0:c44f0314d6ec 102 //! @param sWlanInterruptEnable init callback. the callback enable wlan
frankvnk 0:c44f0314d6ec 103 //! interrupt.
frankvnk 0:c44f0314d6ec 104 //! @param sWlanInterruptDisable init callback. the callback disable wlan
frankvnk 0:c44f0314d6ec 105 //! interrupt.
frankvnk 0:c44f0314d6ec 106 //! @param sWriteWlanPin init callback. the callback write value
frankvnk 0:c44f0314d6ec 107 //! to device pin.
frankvnk 0:c44f0314d6ec 108 //!
frankvnk 0:c44f0314d6ec 109 //! @return none
frankvnk 0:c44f0314d6ec 110 //!
frankvnk 0:c44f0314d6ec 111 //! @sa wlan_set_event_mask , wlan_start , wlan_stop
frankvnk 0:c44f0314d6ec 112 //!
frankvnk 0:c44f0314d6ec 113 //! @brief Initialize wlan driver
frankvnk 0:c44f0314d6ec 114 //!
frankvnk 0:c44f0314d6ec 115 //! @warning This function must be called before ANY other wlan driver function
frankvnk 0:c44f0314d6ec 116 //
frankvnk 0:c44f0314d6ec 117 //*****************************************************************************
frankvnk 0:c44f0314d6ec 118 extern void wlan_init(tWlanCB sWlanCB,
frankvnk 0:c44f0314d6ec 119 tFWPatches sFWPatches,
frankvnk 0:c44f0314d6ec 120 tDriverPatches sDriverPatches,
frankvnk 0:c44f0314d6ec 121 tBootLoaderPatches sBootLoaderPatches,
frankvnk 0:c44f0314d6ec 122 tWlanReadInteruptPin sReadWlanInterruptPin,
frankvnk 0:c44f0314d6ec 123 tWlanInterruptEnable sWlanInterruptEnable,
frankvnk 0:c44f0314d6ec 124 tWlanInterruptDisable sWlanInterruptDisable,
frankvnk 0:c44f0314d6ec 125 tWriteWlanPin sWriteWlanPin);
frankvnk 0:c44f0314d6ec 126
frankvnk 0:c44f0314d6ec 127
frankvnk 0:c44f0314d6ec 128
frankvnk 0:c44f0314d6ec 129 //*****************************************************************************
frankvnk 0:c44f0314d6ec 130 //
frankvnk 0:c44f0314d6ec 131 //! wlan_start
frankvnk 0:c44f0314d6ec 132 //!
frankvnk 0:c44f0314d6ec 133 //! @param usPatchesAvailableAtHost - flag to indicate if patches available
frankvnk 0:c44f0314d6ec 134 //! from host or from EEPROM. Due to the
frankvnk 0:c44f0314d6ec 135 //! fact the patches are burn to the EEPROM
frankvnk 0:c44f0314d6ec 136 //! using the patch programmer utility, the
frankvnk 0:c44f0314d6ec 137 //! patches will be available from the EEPROM
frankvnk 0:c44f0314d6ec 138 //! and not from the host.
frankvnk 0:c44f0314d6ec 139 //!
frankvnk 0:c44f0314d6ec 140 //! @return none
frankvnk 0:c44f0314d6ec 141 //!
frankvnk 0:c44f0314d6ec 142 //! @brief Start WLAN device. This function asserts the enable pin of
frankvnk 0:c44f0314d6ec 143 //! the device (WLAN_EN), starting the HW initialization process.
frankvnk 0:c44f0314d6ec 144 //! The function blocked until device Initialization is completed.
frankvnk 0:c44f0314d6ec 145 //! Function also configure patches (FW, driver or bootloader)
frankvnk 0:c44f0314d6ec 146 //! and calls appropriate device callbacks.
frankvnk 0:c44f0314d6ec 147 //!
frankvnk 0:c44f0314d6ec 148 //! @Note Prior calling the function wlan_init shall be called.
frankvnk 0:c44f0314d6ec 149 //! @Warning This function must be called after wlan_init and before any
frankvnk 0:c44f0314d6ec 150 //! other wlan API
frankvnk 0:c44f0314d6ec 151 //! @sa wlan_init , wlan_stop
frankvnk 0:c44f0314d6ec 152 //!
frankvnk 0:c44f0314d6ec 153 //
frankvnk 0:c44f0314d6ec 154 //*****************************************************************************
frankvnk 0:c44f0314d6ec 155 extern void wlan_start(unsigned short usPatchesAvailableAtHost);
frankvnk 0:c44f0314d6ec 156
frankvnk 0:c44f0314d6ec 157 //*****************************************************************************
frankvnk 0:c44f0314d6ec 158 //
frankvnk 0:c44f0314d6ec 159 //! wlan_stop
frankvnk 0:c44f0314d6ec 160 //!
frankvnk 0:c44f0314d6ec 161 //! @param none
frankvnk 0:c44f0314d6ec 162 //!
frankvnk 0:c44f0314d6ec 163 //! @return none
frankvnk 0:c44f0314d6ec 164 //!
frankvnk 0:c44f0314d6ec 165 //! @brief Stop WLAN device by putting it into reset state.
frankvnk 0:c44f0314d6ec 166 //!
frankvnk 0:c44f0314d6ec 167 //! @sa wlan_start
frankvnk 0:c44f0314d6ec 168 //
frankvnk 0:c44f0314d6ec 169 //*****************************************************************************
frankvnk 0:c44f0314d6ec 170 extern void wlan_stop(void);
frankvnk 0:c44f0314d6ec 171
frankvnk 0:c44f0314d6ec 172 //*****************************************************************************
frankvnk 0:c44f0314d6ec 173 //
frankvnk 0:c44f0314d6ec 174 //! wlan_connect
frankvnk 0:c44f0314d6ec 175 //!
frankvnk 0:c44f0314d6ec 176 //! @param sec_type security options:
frankvnk 0:c44f0314d6ec 177 //! WLAN_SEC_UNSEC,
frankvnk 0:c44f0314d6ec 178 //! WLAN_SEC_WEP (ASCII support only),
frankvnk 0:c44f0314d6ec 179 //! WLAN_SEC_WPA or WLAN_SEC_WPA2
frankvnk 0:c44f0314d6ec 180 //! @param ssid up to 32 bytes and is ASCII SSID of the AP
frankvnk 0:c44f0314d6ec 181 //! @param ssid_len length of the SSID
frankvnk 0:c44f0314d6ec 182 //! @param bssid 6 bytes specified the AP bssid
frankvnk 0:c44f0314d6ec 183 //! @param key up to 16 bytes specified the AP security key
frankvnk 0:c44f0314d6ec 184 //! @param key_len key length
frankvnk 0:c44f0314d6ec 185 //!
frankvnk 0:c44f0314d6ec 186 //! @return On success, zero is returned. On error, negative is returned.
frankvnk 0:c44f0314d6ec 187 //! Note that even though a zero is returned on success to trigger
frankvnk 0:c44f0314d6ec 188 //! connection operation, it does not mean that CCC3000 is already
frankvnk 0:c44f0314d6ec 189 //! connected. An asynchronous "Connected" event is generated when
frankvnk 0:c44f0314d6ec 190 //! actual association process finishes and CC3000 is connected to
frankvnk 0:c44f0314d6ec 191 //! the AP. If DHCP is set, An asynchronous "DHCP" event is
frankvnk 0:c44f0314d6ec 192 //! generated when DHCP process is finish.
frankvnk 0:c44f0314d6ec 193 //!
frankvnk 0:c44f0314d6ec 194 //!
frankvnk 0:c44f0314d6ec 195 //! @brief Connect to AP
frankvnk 0:c44f0314d6ec 196 //! @warning Please Note that when connection to AP configured with security
frankvnk 0:c44f0314d6ec 197 //! type WEP, please confirm that the key is set as ASCII and not
frankvnk 0:c44f0314d6ec 198 //! as HEX.
frankvnk 0:c44f0314d6ec 199 //! @sa wlan_disconnect
frankvnk 0:c44f0314d6ec 200 //
frankvnk 0:c44f0314d6ec 201 //*****************************************************************************
frankvnk 0:c44f0314d6ec 202 #ifndef CC3000_TINY_DRIVER
frankvnk 0:c44f0314d6ec 203 extern long wlan_connect(unsigned long ulSecType,
frankvnk 0:c44f0314d6ec 204 char *ssid,
frankvnk 0:c44f0314d6ec 205 long ssid_len,
frankvnk 0:c44f0314d6ec 206 unsigned char *bssid,
frankvnk 0:c44f0314d6ec 207 unsigned char *key,
frankvnk 0:c44f0314d6ec 208 long key_len);
frankvnk 0:c44f0314d6ec 209 #else
frankvnk 0:c44f0314d6ec 210 extern long wlan_connect(char *ssid, long ssid_len);
frankvnk 0:c44f0314d6ec 211
frankvnk 0:c44f0314d6ec 212 #endif
frankvnk 0:c44f0314d6ec 213
frankvnk 0:c44f0314d6ec 214 //*****************************************************************************
frankvnk 0:c44f0314d6ec 215 //
frankvnk 0:c44f0314d6ec 216 //! wlan_disconnect
frankvnk 0:c44f0314d6ec 217 //!
frankvnk 0:c44f0314d6ec 218 //! @return 0 disconnected done, other CC3000 already disconnected
frankvnk 0:c44f0314d6ec 219 //!
frankvnk 0:c44f0314d6ec 220 //! @brief Disconnect connection from AP.
frankvnk 0:c44f0314d6ec 221 //!
frankvnk 0:c44f0314d6ec 222 //! @sa wlan_connect
frankvnk 0:c44f0314d6ec 223 //
frankvnk 0:c44f0314d6ec 224 //*****************************************************************************
frankvnk 0:c44f0314d6ec 225
frankvnk 0:c44f0314d6ec 226 extern long wlan_disconnect(void);
frankvnk 0:c44f0314d6ec 227
frankvnk 0:c44f0314d6ec 228 //*****************************************************************************
frankvnk 0:c44f0314d6ec 229 //
frankvnk 0:c44f0314d6ec 230 //! wlan_add_profile
frankvnk 0:c44f0314d6ec 231 //!
frankvnk 0:c44f0314d6ec 232 //! @param ulSecType WLAN_SEC_UNSEC,WLAN_SEC_WEP,WLAN_SEC_WPA,WLAN_SEC_WPA2
frankvnk 0:c44f0314d6ec 233 //! @param ucSsid ssid SSID up to 32 bytes
frankvnk 0:c44f0314d6ec 234 //! @param ulSsidLen ssid length
frankvnk 0:c44f0314d6ec 235 //! @param ucBssid bssid 6 bytes
frankvnk 0:c44f0314d6ec 236 //! @param ulPriority ulPriority profile priority. Lowest priority:0.
frankvnk 0:c44f0314d6ec 237 //! @param ulPairwiseCipher_Or_TxKeyLen key length for WEP security
frankvnk 0:c44f0314d6ec 238 //! @param ulGroupCipher_TxKeyIndex key index
frankvnk 0:c44f0314d6ec 239 //! @param ulKeyMgmt KEY management
frankvnk 0:c44f0314d6ec 240 //! @param ucPf_OrKey security key
frankvnk 0:c44f0314d6ec 241 //! @param ulPassPhraseLen security key length for WPA\WPA2
frankvnk 0:c44f0314d6ec 242 //!
frankvnk 0:c44f0314d6ec 243 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 244 //!
frankvnk 0:c44f0314d6ec 245 //! @brief When auto start is enabled, the device connects to
frankvnk 0:c44f0314d6ec 246 //! station from the profiles table. Up to 7 profiles are supported.
frankvnk 0:c44f0314d6ec 247 //! If several profiles configured the device choose the highest
frankvnk 0:c44f0314d6ec 248 //! priority profile, within each priority group, device will choose
frankvnk 0:c44f0314d6ec 249 //! profile based on security policy, signal strength, etc
frankvnk 0:c44f0314d6ec 250 //! parameters. All the profiles are stored in CC3000 NVMEM.
frankvnk 0:c44f0314d6ec 251 //!
frankvnk 0:c44f0314d6ec 252 //! @sa wlan_ioctl_del_profile
frankvnk 0:c44f0314d6ec 253 //
frankvnk 0:c44f0314d6ec 254 //*****************************************************************************
frankvnk 0:c44f0314d6ec 255
frankvnk 0:c44f0314d6ec 256 extern long wlan_add_profile(unsigned long ulSecType,
frankvnk 0:c44f0314d6ec 257 unsigned char* ucSsid,
frankvnk 0:c44f0314d6ec 258 unsigned long ulSsidLen,
frankvnk 0:c44f0314d6ec 259 unsigned char *ucBssid,
frankvnk 0:c44f0314d6ec 260 unsigned long ulPriority,
frankvnk 0:c44f0314d6ec 261 unsigned long ulPairwiseCipher_Or_Key,
frankvnk 0:c44f0314d6ec 262 unsigned long ulGroupCipher_TxKeyLen,
frankvnk 0:c44f0314d6ec 263 unsigned long ulKeyMgmt,
frankvnk 0:c44f0314d6ec 264 unsigned char* ucPf_OrKey,
frankvnk 0:c44f0314d6ec 265 unsigned long ulPassPhraseLen);
frankvnk 0:c44f0314d6ec 266
frankvnk 0:c44f0314d6ec 267
frankvnk 0:c44f0314d6ec 268
frankvnk 0:c44f0314d6ec 269 //*****************************************************************************
frankvnk 0:c44f0314d6ec 270 //
frankvnk 0:c44f0314d6ec 271 //! wlan_ioctl_del_profile
frankvnk 0:c44f0314d6ec 272 //!
frankvnk 0:c44f0314d6ec 273 //! @param index number of profile to delete
frankvnk 0:c44f0314d6ec 274 //!
frankvnk 0:c44f0314d6ec 275 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 276 //!
frankvnk 0:c44f0314d6ec 277 //! @brief Delete WLAN profile
frankvnk 0:c44f0314d6ec 278 //!
frankvnk 0:c44f0314d6ec 279 //! @Note In order to delete all stored profile, set index to 255.
frankvnk 0:c44f0314d6ec 280 //!
frankvnk 0:c44f0314d6ec 281 //! @sa wlan_add_profile
frankvnk 0:c44f0314d6ec 282 //
frankvnk 0:c44f0314d6ec 283 //*****************************************************************************
frankvnk 0:c44f0314d6ec 284 extern long wlan_ioctl_del_profile(unsigned long ulIndex);
frankvnk 0:c44f0314d6ec 285
frankvnk 0:c44f0314d6ec 286 //*****************************************************************************
frankvnk 0:c44f0314d6ec 287 //
frankvnk 0:c44f0314d6ec 288 //! wlan_set_event_mask
frankvnk 0:c44f0314d6ec 289 //!
frankvnk 0:c44f0314d6ec 290 //! @param mask mask option:
frankvnk 0:c44f0314d6ec 291 //! HCI_EVNT_WLAN_UNSOL_CONNECT connect event
frankvnk 0:c44f0314d6ec 292 //! HCI_EVNT_WLAN_UNSOL_DISCONNECT disconnect event
frankvnk 0:c44f0314d6ec 293 //! HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE smart config done
frankvnk 0:c44f0314d6ec 294 //! HCI_EVNT_WLAN_UNSOL_INIT init done
frankvnk 0:c44f0314d6ec 295 //! HCI_EVNT_WLAN_UNSOL_DHCP dhcp event report
frankvnk 0:c44f0314d6ec 296 //! HCI_EVNT_WLAN_ASYNC_PING_REPORT ping report
frankvnk 0:c44f0314d6ec 297 //! HCI_EVNT_WLAN_KEEPALIVE keepalive
frankvnk 0:c44f0314d6ec 298 //! HCI_EVNT_WLAN_TX_COMPLETE - disable information on end of transmission
frankvnk 0:c44f0314d6ec 299 //! Saved: no.
frankvnk 0:c44f0314d6ec 300 //!
frankvnk 0:c44f0314d6ec 301 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 302 //!
frankvnk 0:c44f0314d6ec 303 //! @brief Mask event according to bit mask. In case that event is
frankvnk 0:c44f0314d6ec 304 //! masked (1), the device will not send the masked event to host.
frankvnk 0:c44f0314d6ec 305 //
frankvnk 0:c44f0314d6ec 306 //*****************************************************************************
frankvnk 0:c44f0314d6ec 307 extern long wlan_set_event_mask(unsigned long ulMask);
frankvnk 0:c44f0314d6ec 308
frankvnk 0:c44f0314d6ec 309 //*****************************************************************************
frankvnk 0:c44f0314d6ec 310 //
frankvnk 0:c44f0314d6ec 311 //! wlan_ioctl_statusget
frankvnk 0:c44f0314d6ec 312 //!
frankvnk 0:c44f0314d6ec 313 //! @param none
frankvnk 0:c44f0314d6ec 314 //!
frankvnk 0:c44f0314d6ec 315 //! @return WLAN_STATUS_DISCONNECTED, WLAN_STATUS_SCANING,
frankvnk 0:c44f0314d6ec 316 //! STATUS_CONNECTING or WLAN_STATUS_CONNECTED
frankvnk 0:c44f0314d6ec 317 //!
frankvnk 0:c44f0314d6ec 318 //! @brief get wlan status: disconnected, scanning, connecting or connected
frankvnk 0:c44f0314d6ec 319 //
frankvnk 0:c44f0314d6ec 320 //*****************************************************************************
frankvnk 0:c44f0314d6ec 321 extern long wlan_ioctl_statusget(void);
frankvnk 0:c44f0314d6ec 322
frankvnk 0:c44f0314d6ec 323
frankvnk 0:c44f0314d6ec 324 //*****************************************************************************
frankvnk 0:c44f0314d6ec 325 //
frankvnk 0:c44f0314d6ec 326 //! wlan_ioctl_set_connection_policy
frankvnk 0:c44f0314d6ec 327 //!
frankvnk 0:c44f0314d6ec 328 //! @param should_connect_to_open_ap enable(1), disable(0) connect to any
frankvnk 0:c44f0314d6ec 329 //! available AP. This parameter corresponds to the configuration of
frankvnk 0:c44f0314d6ec 330 //! item # 3 in the brief description.
frankvnk 0:c44f0314d6ec 331 //! @param should_use_fast_connect enable(1), disable(0). if enabled, tries
frankvnk 0:c44f0314d6ec 332 //! to connect to the last connected AP. This parameter corresponds
frankvnk 0:c44f0314d6ec 333 //! to the configuration of item # 1 in the brief description.
frankvnk 0:c44f0314d6ec 334 //! @param auto_start enable(1), disable(0) auto connect
frankvnk 0:c44f0314d6ec 335 //! after reset and periodically reconnect if needed. This
frankvnk 0:c44f0314d6ec 336 //! configuration configures option 2 in the above description.
frankvnk 0:c44f0314d6ec 337 //!
frankvnk 0:c44f0314d6ec 338 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 339 //!
frankvnk 0:c44f0314d6ec 340 //! @brief When auto is enabled, the device tries to connect according
frankvnk 0:c44f0314d6ec 341 //! the following policy:
frankvnk 0:c44f0314d6ec 342 //! 1) If fast connect is enabled and last connection is valid,
frankvnk 0:c44f0314d6ec 343 //! the device will try to connect to it without the scanning
frankvnk 0:c44f0314d6ec 344 //! procedure (fast). The last connection will be marked as
frankvnk 0:c44f0314d6ec 345 //! invalid, due to adding/removing profile.
frankvnk 0:c44f0314d6ec 346 //! 2) If profile exists, the device will try to connect it
frankvnk 0:c44f0314d6ec 347 //! (Up to seven profiles).
frankvnk 0:c44f0314d6ec 348 //! 3) If fast and profiles are not found, and open mode is
frankvnk 0:c44f0314d6ec 349 //! enabled, the device will try to connect to any AP.
frankvnk 0:c44f0314d6ec 350 //! * Note that the policy settings are stored in the CC3000 NVMEM.
frankvnk 0:c44f0314d6ec 351 //!
frankvnk 0:c44f0314d6ec 352 //! @sa wlan_add_profile , wlan_ioctl_del_profile
frankvnk 0:c44f0314d6ec 353 //
frankvnk 0:c44f0314d6ec 354 //*****************************************************************************
frankvnk 0:c44f0314d6ec 355 extern long wlan_ioctl_set_connection_policy(unsigned long should_connect_to_open_ap,
frankvnk 0:c44f0314d6ec 356 unsigned long should_use_fast_connect,
frankvnk 0:c44f0314d6ec 357 unsigned long ulUseProfiles);
frankvnk 0:c44f0314d6ec 358
frankvnk 0:c44f0314d6ec 359 //*****************************************************************************
frankvnk 0:c44f0314d6ec 360 //
frankvnk 0:c44f0314d6ec 361 //! wlan_ioctl_get_scan_results
frankvnk 0:c44f0314d6ec 362 //!
frankvnk 0:c44f0314d6ec 363 //! @param[in] scan_timeout parameter not supported
frankvnk 0:c44f0314d6ec 364 //! @param[out] ucResults scan result (_wlan_full_scan_results_args_t)
frankvnk 0:c44f0314d6ec 365 //!
frankvnk 0:c44f0314d6ec 366 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 367 //!
frankvnk 0:c44f0314d6ec 368 //! @brief Gets entry from scan result table.
frankvnk 0:c44f0314d6ec 369 //! The scan results are returned one by one, and each entry
frankvnk 0:c44f0314d6ec 370 //! represents a single AP found in the area. The following is a
frankvnk 0:c44f0314d6ec 371 //! format of the scan result:
frankvnk 0:c44f0314d6ec 372 //! - 4 Bytes: number of networks found
frankvnk 0:c44f0314d6ec 373 //! - 4 Bytes: The status of the scan: 0 - aged results,
frankvnk 0:c44f0314d6ec 374 //! 1 - results valid, 2 - no results
frankvnk 0:c44f0314d6ec 375 //! - 42 bytes: Result entry, where the bytes are arranged as follows:
frankvnk 0:c44f0314d6ec 376 //!
frankvnk 0:c44f0314d6ec 377 //! - 1 bit isValid - is result valid or not
frankvnk 0:c44f0314d6ec 378 //! - 7 bits rssi - RSSI value;
frankvnk 0:c44f0314d6ec 379 //! - 2 bits: securityMode - security mode of the AP:
frankvnk 0:c44f0314d6ec 380 //! 0 - Open, 1 - WEP, 2 WPA, 3 WPA2
frankvnk 0:c44f0314d6ec 381 //! - 6 bits: SSID name length
frankvnk 0:c44f0314d6ec 382 //! - 2 bytes: the time at which the entry has entered into
frankvnk 0:c44f0314d6ec 383 //! scans result table
frankvnk 0:c44f0314d6ec 384 //! - 32 bytes: SSID name
frankvnk 0:c44f0314d6ec 385 //! - 6 bytes: BSSID
frankvnk 0:c44f0314d6ec 386 //!
frankvnk 0:c44f0314d6ec 387 //! @Note scan_timeout, is not supported on this version.
frankvnk 0:c44f0314d6ec 388 //!
frankvnk 0:c44f0314d6ec 389 //! @sa wlan_ioctl_set_scan_params
frankvnk 0:c44f0314d6ec 390 //
frankvnk 0:c44f0314d6ec 391 //*****************************************************************************
frankvnk 0:c44f0314d6ec 392
frankvnk 0:c44f0314d6ec 393
frankvnk 0:c44f0314d6ec 394 extern long wlan_ioctl_get_scan_results(unsigned long ulScanTimeout,
frankvnk 0:c44f0314d6ec 395 unsigned char *ucResults);
frankvnk 0:c44f0314d6ec 396
frankvnk 0:c44f0314d6ec 397 //*****************************************************************************
frankvnk 0:c44f0314d6ec 398 //
frankvnk 0:c44f0314d6ec 399 //! wlan_ioctl_set_scan_params
frankvnk 0:c44f0314d6ec 400 //!
frankvnk 0:c44f0314d6ec 401 //! @param uiEnable - start/stop application scan:
frankvnk 0:c44f0314d6ec 402 //! 1 = start scan with default interval value of 10 min.
frankvnk 0:c44f0314d6ec 403 //! in order to set a different scan interval value apply the value
frankvnk 0:c44f0314d6ec 404 //! in milliseconds. minimum 1 second. 0=stop). Wlan reset
frankvnk 0:c44f0314d6ec 405 //! (wlan_stop() wlan_start()) is needed when changing scan interval
frankvnk 0:c44f0314d6ec 406 //! value. Saved: No
frankvnk 0:c44f0314d6ec 407 //! @param uiMinDwellTime minimum dwell time value to be used for each
frankvnk 0:c44f0314d6ec 408 //! channel, in milliseconds. Saved: yes
frankvnk 0:c44f0314d6ec 409 //! Recommended Value: 100 (Default: 20)
frankvnk 0:c44f0314d6ec 410 //! @param uiMaxDwellTime maximum dwell time value to be used for each
frankvnk 0:c44f0314d6ec 411 //! channel, in milliseconds. Saved: yes
frankvnk 0:c44f0314d6ec 412 //! Recommended Value: 100 (Default: 30)
frankvnk 0:c44f0314d6ec 413 //! @param uiNumOfProbeRequests max probe request between dwell time.
frankvnk 0:c44f0314d6ec 414 //! Saved: yes. Recommended Value: 5 (Default:2)
frankvnk 0:c44f0314d6ec 415 //! @param uiChannelMask bitwise, up to 13 channels (0x1fff).
frankvnk 0:c44f0314d6ec 416 //! Saved: yes. Default: 0x7ff
frankvnk 0:c44f0314d6ec 417 //! @param uiRSSIThreshold RSSI threshold. Saved: yes (Default: -80)
frankvnk 0:c44f0314d6ec 418 //! @param uiSNRThreshold NSR threshold. Saved: yes (Default: 0)
frankvnk 0:c44f0314d6ec 419 //! @param uiDefaultTxPower probe Tx power. Saved: yes (Default: 205)
frankvnk 0:c44f0314d6ec 420 //! @param aiIntervalList pointer to array with 16 entries (16 channels)
frankvnk 0:c44f0314d6ec 421 //! each entry (unsigned long) holds timeout between periodic scan
frankvnk 0:c44f0314d6ec 422 //! (connection scan) - in milliseconds. Saved: yes. Default 2000ms.
frankvnk 0:c44f0314d6ec 423 //!
frankvnk 0:c44f0314d6ec 424 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 425 //!
frankvnk 0:c44f0314d6ec 426 //! @brief start and stop scan procedure. Set scan parameters.
frankvnk 0:c44f0314d6ec 427 //!
frankvnk 0:c44f0314d6ec 428 //! @Note uiDefaultTxPower, is not supported on this version.
frankvnk 0:c44f0314d6ec 429 //!
frankvnk 0:c44f0314d6ec 430 //! @sa wlan_ioctl_get_scan_results
frankvnk 0:c44f0314d6ec 431 //
frankvnk 0:c44f0314d6ec 432 //*****************************************************************************
frankvnk 0:c44f0314d6ec 433 extern long wlan_ioctl_set_scan_params(unsigned long uiEnable,
frankvnk 0:c44f0314d6ec 434 unsigned long uiMinDwellTime,
frankvnk 0:c44f0314d6ec 435 unsigned long uiMaxDwellTime,
frankvnk 0:c44f0314d6ec 436 unsigned long uiNumOfProbeRequests,
frankvnk 0:c44f0314d6ec 437 unsigned long uiChannelMask,
frankvnk 0:c44f0314d6ec 438 long iRSSIThreshold,
frankvnk 0:c44f0314d6ec 439 unsigned long uiSNRThreshold,
frankvnk 0:c44f0314d6ec 440 unsigned long uiDefaultTxPower,
frankvnk 0:c44f0314d6ec 441 unsigned long *aiIntervalList);
frankvnk 0:c44f0314d6ec 442
frankvnk 0:c44f0314d6ec 443
frankvnk 0:c44f0314d6ec 444 //*****************************************************************************
frankvnk 0:c44f0314d6ec 445 //
frankvnk 0:c44f0314d6ec 446 //! wlan_smart_config_start
frankvnk 0:c44f0314d6ec 447 //!
frankvnk 0:c44f0314d6ec 448 //! @param algoEncryptedFlag indicates whether the information is encrypted
frankvnk 0:c44f0314d6ec 449 //!
frankvnk 0:c44f0314d6ec 450 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 451 //!
frankvnk 0:c44f0314d6ec 452 //! @brief Start to acquire device profile. The device acquire its own
frankvnk 0:c44f0314d6ec 453 //! profile, if profile message is found. The acquired AP information
frankvnk 0:c44f0314d6ec 454 //! is stored in CC3000 EEPROM only in case AES128 encryption is used.
frankvnk 0:c44f0314d6ec 455 //! In case AES128 encryption is not used, a profile is created by
frankvnk 0:c44f0314d6ec 456 //! CC3000 internally.
frankvnk 0:c44f0314d6ec 457 //!
frankvnk 0:c44f0314d6ec 458 //! @Note An asynchronous event - Smart Config Done will be generated as soon
frankvnk 0:c44f0314d6ec 459 //! as the process finishes successfully.
frankvnk 0:c44f0314d6ec 460 //!
frankvnk 0:c44f0314d6ec 461 //! @sa wlan_smart_config_set_prefix , wlan_smart_config_stop
frankvnk 0:c44f0314d6ec 462 //
frankvnk 0:c44f0314d6ec 463 //*****************************************************************************
frankvnk 0:c44f0314d6ec 464 extern long wlan_smart_config_start(unsigned long algoEncryptedFlag);
frankvnk 0:c44f0314d6ec 465
frankvnk 0:c44f0314d6ec 466
frankvnk 0:c44f0314d6ec 467 //*****************************************************************************
frankvnk 0:c44f0314d6ec 468 //
frankvnk 0:c44f0314d6ec 469 //! wlan_smart_config_stop
frankvnk 0:c44f0314d6ec 470 //!
frankvnk 0:c44f0314d6ec 471 //! @param algoEncryptedFlag indicates whether the information is encrypted
frankvnk 0:c44f0314d6ec 472 //!
frankvnk 0:c44f0314d6ec 473 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 474 //!
frankvnk 0:c44f0314d6ec 475 //! @brief Stop the acquire profile procedure
frankvnk 0:c44f0314d6ec 476 //!
frankvnk 0:c44f0314d6ec 477 //! @sa wlan_smart_config_start , wlan_smart_config_set_prefix
frankvnk 0:c44f0314d6ec 478 //
frankvnk 0:c44f0314d6ec 479 //*****************************************************************************
frankvnk 0:c44f0314d6ec 480 extern long wlan_smart_config_stop(void);
frankvnk 0:c44f0314d6ec 481
frankvnk 0:c44f0314d6ec 482 //*****************************************************************************
frankvnk 0:c44f0314d6ec 483 //
frankvnk 0:c44f0314d6ec 484 //! wlan_smart_config_set_prefix
frankvnk 0:c44f0314d6ec 485 //!
frankvnk 0:c44f0314d6ec 486 //! @param newPrefix 3 bytes identify the SSID prefix for the Smart Config.
frankvnk 0:c44f0314d6ec 487 //!
frankvnk 0:c44f0314d6ec 488 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 489 //!
frankvnk 0:c44f0314d6ec 490 //! @brief Configure station ssid prefix. The prefix is used internally
frankvnk 0:c44f0314d6ec 491 //! in CC3000. It should always be TTT.
frankvnk 0:c44f0314d6ec 492 //!
frankvnk 0:c44f0314d6ec 493 //! @Note The prefix is stored in CC3000 NVMEM
frankvnk 0:c44f0314d6ec 494 //!
frankvnk 0:c44f0314d6ec 495 //! @sa wlan_smart_config_start , wlan_smart_config_stop
frankvnk 0:c44f0314d6ec 496 //
frankvnk 0:c44f0314d6ec 497 //*****************************************************************************
frankvnk 0:c44f0314d6ec 498 extern long wlan_smart_config_set_prefix(char* cNewPrefix);
frankvnk 0:c44f0314d6ec 499
frankvnk 0:c44f0314d6ec 500 //*****************************************************************************
frankvnk 0:c44f0314d6ec 501 //
frankvnk 0:c44f0314d6ec 502 //! wlan_smart_config_process
frankvnk 0:c44f0314d6ec 503 //!
frankvnk 0:c44f0314d6ec 504 //! @param none
frankvnk 0:c44f0314d6ec 505 //!
frankvnk 0:c44f0314d6ec 506 //! @return On success, zero is returned. On error, -1 is returned
frankvnk 0:c44f0314d6ec 507 //!
frankvnk 0:c44f0314d6ec 508 //! @brief process the acquired data and store it as a profile. The acquired
frankvnk 0:c44f0314d6ec 509 //! AP information is stored in CC3000 EEPROM encrypted.
frankvnk 0:c44f0314d6ec 510 //! The encrypted data is decrypted and stored as a profile.
frankvnk 0:c44f0314d6ec 511 //! behavior is as defined by connection policy.
frankvnk 0:c44f0314d6ec 512 //
frankvnk 0:c44f0314d6ec 513 //*****************************************************************************
frankvnk 0:c44f0314d6ec 514 extern long wlan_smart_config_process(void);
frankvnk 0:c44f0314d6ec 515
frankvnk 0:c44f0314d6ec 516 //*****************************************************************************
frankvnk 0:c44f0314d6ec 517 //
frankvnk 0:c44f0314d6ec 518 // Close the Doxygen group.
frankvnk 0:c44f0314d6ec 519 //! @}
frankvnk 0:c44f0314d6ec 520 //
frankvnk 0:c44f0314d6ec 521 //*****************************************************************************
frankvnk 0:c44f0314d6ec 522
frankvnk 0:c44f0314d6ec 523
frankvnk 0:c44f0314d6ec 524
frankvnk 0:c44f0314d6ec 525 //*****************************************************************************
frankvnk 0:c44f0314d6ec 526 //
frankvnk 0:c44f0314d6ec 527 // Mark the end of the C bindings section for C++ compilers.
frankvnk 0:c44f0314d6ec 528 //
frankvnk 0:c44f0314d6ec 529 //*****************************************************************************
frankvnk 0:c44f0314d6ec 530 #ifdef __cplusplus
frankvnk 0:c44f0314d6ec 531 }
frankvnk 0:c44f0314d6ec 532 #endif // __cplusplus
frankvnk 0:c44f0314d6ec 533
frankvnk 0:c44f0314d6ec 534 #endif // __WLAN_H__