Frank Vannieuwkerke / CC3000_Hostdriver

Dependencies:   NVIC_set_all_priorities

Dependents:   CC3000_Simple_Socket Wi-Go_IOT_Demo

Committer:
frankvnk
Date:
Mon Jul 15 19:54:53 2013 +0000
Revision:
5:854f9b13a0f9
Parent:
4:d8255a5aad46
Child:
6:d733efcc2c56
Doxygen fixed

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 "GlobalAssigns.h"
frankvnk 0:c44f0314d6ec 39 #include "cc3000_common.h"
frankvnk 0:c44f0314d6ec 40 #include "hci.h"
frankvnk 0:c44f0314d6ec 41 #include "CC3000_spi.h"
frankvnk 0:c44f0314d6ec 42 #include "socket.h"
frankvnk 0:c44f0314d6ec 43 #include "nvmem.h"
frankvnk 0:c44f0314d6ec 44 #include "security.h"
frankvnk 0:c44f0314d6ec 45 #include "evnt_handler.h"
frankvnk 0:c44f0314d6ec 46
frankvnk 5:854f9b13a0f9 47 //*****************************************************************************
frankvnk 5:854f9b13a0f9 48 //
frankvnk 5:854f9b13a0f9 49 //! \addtogroup wlan
frankvnk 5:854f9b13a0f9 50 //! @{
frankvnk 5:854f9b13a0f9 51 //
frankvnk 5:854f9b13a0f9 52 //*****************************************************************************
frankvnk 5:854f9b13a0f9 53
frankvnk 0:c44f0314d6ec 54 /** CC3000 Host driver - WLAN
frankvnk 0:c44f0314d6ec 55 *
frankvnk 0:c44f0314d6ec 56 */
frankvnk 4:d8255a5aad46 57
frankvnk 0:c44f0314d6ec 58 #ifdef __cplusplus
frankvnk 0:c44f0314d6ec 59 extern "C" {
frankvnk 0:c44f0314d6ec 60 #endif
frankvnk 0:c44f0314d6ec 61
frankvnk 4:d8255a5aad46 62 #define SMART_CONFIG_PROFILE_SIZE 67 // 67 = 32 (max ssid) + 32 (max key) + 1 (SSID length) + 1 (security type) + 1 (key length)
frankvnk 4:d8255a5aad46 63
frankvnk 4:d8255a5aad46 64 /* patches type */
frankvnk 4:d8255a5aad46 65 #define PATCHES_HOST_TYPE_WLAN_DRIVER 0x01
frankvnk 4:d8255a5aad46 66 #define PATCHES_HOST_TYPE_WLAN_FW 0x02
frankvnk 4:d8255a5aad46 67 #define PATCHES_HOST_TYPE_BOOTLOADER 0x03
frankvnk 4:d8255a5aad46 68
frankvnk 4:d8255a5aad46 69 #define SL_SET_SCAN_PARAMS_INTERVAL_LIST_SIZE (16)
frankvnk 4:d8255a5aad46 70 #define SL_SIMPLE_CONFIG_PREFIX_LENGTH (3)
frankvnk 4:d8255a5aad46 71 #define ETH_ALEN (6)
frankvnk 4:d8255a5aad46 72 #define MAXIMAL_SSID_LENGTH (32)
frankvnk 4:d8255a5aad46 73
frankvnk 4:d8255a5aad46 74 #define SL_PATCHES_REQUEST_DEFAULT (0)
frankvnk 4:d8255a5aad46 75 #define SL_PATCHES_REQUEST_FORCE_HOST (1)
frankvnk 4:d8255a5aad46 76 #define SL_PATCHES_REQUEST_FORCE_NONE (2)
frankvnk 4:d8255a5aad46 77
frankvnk 4:d8255a5aad46 78
frankvnk 4:d8255a5aad46 79 #define WLAN_SEC_UNSEC (0)
frankvnk 4:d8255a5aad46 80 #define WLAN_SEC_WEP (1)
frankvnk 4:d8255a5aad46 81 #define WLAN_SEC_WPA (2)
frankvnk 4:d8255a5aad46 82 #define WLAN_SEC_WPA2 (3)
frankvnk 4:d8255a5aad46 83
frankvnk 4:d8255a5aad46 84
frankvnk 4:d8255a5aad46 85 #define WLAN_SL_INIT_START_PARAMS_LEN (1)
frankvnk 4:d8255a5aad46 86 #define WLAN_PATCH_PARAMS_LENGTH (8)
frankvnk 4:d8255a5aad46 87 #define WLAN_SET_CONNECTION_POLICY_PARAMS_LEN (12)
frankvnk 4:d8255a5aad46 88 #define WLAN_DEL_PROFILE_PARAMS_LEN (4)
frankvnk 4:d8255a5aad46 89 #define WLAN_SET_MASK_PARAMS_LEN (4)
frankvnk 4:d8255a5aad46 90 #define WLAN_SET_SCAN_PARAMS_LEN (100)
frankvnk 4:d8255a5aad46 91 #define WLAN_GET_SCAN_RESULTS_PARAMS_LEN (4)
frankvnk 4:d8255a5aad46 92 #define WLAN_ADD_PROFILE_NOSEC_PARAM_LEN (24)
frankvnk 4:d8255a5aad46 93 #define WLAN_ADD_PROFILE_WEP_PARAM_LEN (36)
frankvnk 4:d8255a5aad46 94 #define WLAN_ADD_PROFILE_WPA_PARAM_LEN (44)
frankvnk 4:d8255a5aad46 95 #define WLAN_CONNECT_PARAM_LEN (29)
frankvnk 4:d8255a5aad46 96 #define WLAN_SMART_CONFIG_START_PARAMS_LEN (4)
frankvnk 4:d8255a5aad46 97
frankvnk 4:d8255a5aad46 98
frankvnk 0:c44f0314d6ec 99 #define WLAN_SEC_UNSEC (0)
frankvnk 0:c44f0314d6ec 100 #define WLAN_SEC_WEP (1)
frankvnk 0:c44f0314d6ec 101 #define WLAN_SEC_WPA (2)
frankvnk 0:c44f0314d6ec 102 #define WLAN_SEC_WPA2 (3)
frankvnk 0:c44f0314d6ec 103
frankvnk 4:d8255a5aad46 104 /**
frankvnk 4:d8255a5aad46 105 * Send HCI_CMND_SIMPLE_LINK_START to CC3000
frankvnk 5:854f9b13a0f9 106 * @param usPatchesAvailableAtHost flag to indicate if patches available\n
frankvnk 5:854f9b13a0f9 107 * from host or from EEPROM. Due to the \n
frankvnk 5:854f9b13a0f9 108 * fact the patches are burn to the EEPROM\n
frankvnk 5:854f9b13a0f9 109 * using the patch programmer utility, the \n
frankvnk 5:854f9b13a0f9 110 * patches will be available from the EEPROM\n
frankvnk 5:854f9b13a0f9 111 * and not from the host.\n
frankvnk 4:d8255a5aad46 112 * @return none
frankvnk 4:d8255a5aad46 113 */
frankvnk 4:d8255a5aad46 114 static void SimpleLink_Init_Start(unsigned short usPatchesAvailableAtHost);
frankvnk 0:c44f0314d6ec 115
frankvnk 4:d8255a5aad46 116 /**
frankvnk 4:d8255a5aad46 117 * Initialize wlan driver
frankvnk 5:854f9b13a0f9 118 * @param sWlanCB Asynchronous events callback. \n
frankvnk 5:854f9b13a0f9 119 * 0 no event call back.\n
frankvnk 5:854f9b13a0f9 120 * -call back parameters:\n
frankvnk 5:854f9b13a0f9 121 * 1) event_type: HCI_EVNT_WLAN_UNSOL_CONNECT connect event,\n
frankvnk 5:854f9b13a0f9 122 * HCI_EVNT_WLAN_UNSOL_DISCONNECT disconnect event,\n
frankvnk 5:854f9b13a0f9 123 * HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE config done,\n
frankvnk 5:854f9b13a0f9 124 * HCI_EVNT_WLAN_UNSOL_DHCP dhcp report, \n
frankvnk 5:854f9b13a0f9 125 * HCI_EVNT_WLAN_ASYNC_PING_REPORT ping report OR \n
frankvnk 5:854f9b13a0f9 126 * HCI_EVNT_WLAN_KEEPALIVE keepalive.\n
frankvnk 5:854f9b13a0f9 127 * 2) data: pointer to extra data that received by the event\n
frankvnk 5:854f9b13a0f9 128 * (NULL no data).\n
frankvnk 5:854f9b13a0f9 129 * 3) length: data length.\n
frankvnk 5:854f9b13a0f9 130 * -Events with extra data:\n
frankvnk 5:854f9b13a0f9 131 * HCI_EVNT_WLAN_UNSOL_DHCP: 4 bytes IP, 4 bytes Mask,\n
frankvnk 5:854f9b13a0f9 132 * 4 bytes default gateway, 4 bytes DHCP server and 4 bytes\n
frankvnk 5:854f9b13a0f9 133 * for DNS server.\n
frankvnk 5:854f9b13a0f9 134 * HCI_EVNT_WLAN_ASYNC_PING_REPORT: 4 bytes Packets sent,\n
frankvnk 5:854f9b13a0f9 135 * 4 bytes Packets received, 4 bytes Min round time, \n
frankvnk 5:854f9b13a0f9 136 * 4 bytes Max round time and 4 bytes for Avg round time.\n
frankvnk 4:d8255a5aad46 137 * @param sFWPatches 0 no patch or pointer to FW patches
frankvnk 4:d8255a5aad46 138 * @param sDriverPatches 0 no patch or pointer to driver patches
frankvnk 4:d8255a5aad46 139 * @param sBootLoaderPatches 0 no patch or pointer to bootloader patches
frankvnk 4:d8255a5aad46 140 * @param sReadWlanInterruptPin init callback. the callback read wlan interrupt status.
frankvnk 4:d8255a5aad46 141 * @param sWlanInterruptEnable init callback. the callback enable wlan interrupt.
frankvnk 4:d8255a5aad46 142 * @param sWlanInterruptDisable init callback. the callback disable wlan interrupt.
frankvnk 4:d8255a5aad46 143 * @param sWriteWlanPin init callback. the callback write value to device pin.
frankvnk 4:d8255a5aad46 144 * @return none
frankvnk 4:d8255a5aad46 145 * @sa wlan_set_event_mask , wlan_start , wlan_stop
frankvnk 4:d8255a5aad46 146 * @warning This function must be called before ANY other wlan driver function
frankvnk 4:d8255a5aad46 147 */
frankvnk 0:c44f0314d6ec 148 extern void wlan_init(tWlanCB sWlanCB,
frankvnk 0:c44f0314d6ec 149 tFWPatches sFWPatches,
frankvnk 0:c44f0314d6ec 150 tDriverPatches sDriverPatches,
frankvnk 0:c44f0314d6ec 151 tBootLoaderPatches sBootLoaderPatches,
frankvnk 0:c44f0314d6ec 152 tWlanReadInteruptPin sReadWlanInterruptPin,
frankvnk 0:c44f0314d6ec 153 tWlanInterruptEnable sWlanInterruptEnable,
frankvnk 0:c44f0314d6ec 154 tWlanInterruptDisable sWlanInterruptDisable,
frankvnk 0:c44f0314d6ec 155 tWriteWlanPin sWriteWlanPin);
frankvnk 0:c44f0314d6ec 156
frankvnk 4:d8255a5aad46 157 /**
frankvnk 4:d8255a5aad46 158 * Trigger Received event/data processing - called from the SPI library to receive the data
frankvnk 5:854f9b13a0f9 159 * @param pvBuffer - pointer to the received data buffer\n
frankvnk 5:854f9b13a0f9 160 * The function triggers Received event/data processing\n
frankvnk 4:d8255a5aad46 161 * @param Pointer to the received data
frankvnk 4:d8255a5aad46 162 * @return none
frankvnk 4:d8255a5aad46 163 */
frankvnk 4:d8255a5aad46 164 void SpiReceiveHandler(void *pvBuffer);
frankvnk 0:c44f0314d6ec 165
frankvnk 0:c44f0314d6ec 166
frankvnk 4:d8255a5aad46 167 /**
frankvnk 5:854f9b13a0f9 168 * Start WLAN device.
frankvnk 5:854f9b13a0f9 169 * This function asserts the enable pin of \n
frankvnk 5:854f9b13a0f9 170 * the device (WLAN_EN), starting the HW initialization process.\n
frankvnk 5:854f9b13a0f9 171 * The function blocked until device Initialization is completed.\n
frankvnk 5:854f9b13a0f9 172 * Function also configure patches (FW, driver or bootloader) \n
frankvnk 5:854f9b13a0f9 173 * and calls appropriate device callbacks.\n
frankvnk 5:854f9b13a0f9 174 * @param usPatchesAvailableAtHost - flag to indicate if patches available\n
frankvnk 5:854f9b13a0f9 175 * from host or from EEPROM. Due to the\n
frankvnk 5:854f9b13a0f9 176 * fact the patches are burn to the EEPROM\n
frankvnk 5:854f9b13a0f9 177 * using the patch programmer utility, the \n
frankvnk 5:854f9b13a0f9 178 * patches will be available from the EEPROM\n
frankvnk 5:854f9b13a0f9 179 * and not from the host.\n
frankvnk 4:d8255a5aad46 180 * @return none
frankvnk 4:d8255a5aad46 181 * @Note Prior calling the function wlan_init shall be called.
frankvnk 5:854f9b13a0f9 182 * @Warning This function must be called after wlan_init and before any other wlan API
frankvnk 4:d8255a5aad46 183 * @sa wlan_init , wlan_stop
frankvnk 4:d8255a5aad46 184 */
frankvnk 0:c44f0314d6ec 185 extern void wlan_start(unsigned short usPatchesAvailableAtHost);
frankvnk 0:c44f0314d6ec 186
frankvnk 4:d8255a5aad46 187 /**
frankvnk 4:d8255a5aad46 188 * Stop WLAN device by putting it into reset state.
frankvnk 4:d8255a5aad46 189 * @param none
frankvnk 4:d8255a5aad46 190 * @return none
frankvnk 4:d8255a5aad46 191 * @sa wlan_start
frankvnk 4:d8255a5aad46 192 */
frankvnk 0:c44f0314d6ec 193 extern void wlan_stop(void);
frankvnk 0:c44f0314d6ec 194
frankvnk 4:d8255a5aad46 195 /**
frankvnk 4:d8255a5aad46 196 * Connect to AP
frankvnk 5:854f9b13a0f9 197 * @param sec_type security options:\n
frankvnk 5:854f9b13a0f9 198 * WLAN_SEC_UNSEC, \n
frankvnk 5:854f9b13a0f9 199 * WLAN_SEC_WEP (ASCII support only),\n
frankvnk 5:854f9b13a0f9 200 * WLAN_SEC_WPA or WLAN_SEC_WPA2\n
frankvnk 4:d8255a5aad46 201 * @param ssid up to 32 bytes and is ASCII SSID of the AP
frankvnk 4:d8255a5aad46 202 * @param ssid_len length of the SSID
frankvnk 4:d8255a5aad46 203 * @param bssid 6 bytes specified the AP bssid
frankvnk 4:d8255a5aad46 204 * @param key up to 16 bytes specified the AP security key
frankvnk 4:d8255a5aad46 205 * @param key_len key length
frankvnk 5:854f9b13a0f9 206 * @return On success, zero is returned. On error, negative is returned.\n
frankvnk 5:854f9b13a0f9 207 * Note that even though a zero is returned on success to trigger\n
frankvnk 5:854f9b13a0f9 208 * connection operation, it does not mean that CCC3000 is already\n
frankvnk 5:854f9b13a0f9 209 * connected. An asynchronous "Connected" event is generated when \n
frankvnk 5:854f9b13a0f9 210 * actual association process finishes and CC3000 is connected to\n
frankvnk 5:854f9b13a0f9 211 * the AP. If DHCP is set, An asynchronous "DHCP" event is \n
frankvnk 5:854f9b13a0f9 212 * generated when DHCP process is finish.\n
frankvnk 5:854f9b13a0f9 213 * @warning Please Note that when connection to AP configured with security\n
frankvnk 5:854f9b13a0f9 214 * type WEP, please confirm that the key is set as ASCII and not as HEX.\n
frankvnk 4:d8255a5aad46 215 * @sa wlan_disconnect
frankvnk 4:d8255a5aad46 216 */
frankvnk 0:c44f0314d6ec 217 #ifndef CC3000_TINY_DRIVER
frankvnk 0:c44f0314d6ec 218 extern long wlan_connect(unsigned long ulSecType,
frankvnk 0:c44f0314d6ec 219 char *ssid,
frankvnk 0:c44f0314d6ec 220 long ssid_len,
frankvnk 0:c44f0314d6ec 221 unsigned char *bssid,
frankvnk 0:c44f0314d6ec 222 unsigned char *key,
frankvnk 0:c44f0314d6ec 223 long key_len);
frankvnk 0:c44f0314d6ec 224 #else
frankvnk 0:c44f0314d6ec 225 extern long wlan_connect(char *ssid, long ssid_len);
frankvnk 0:c44f0314d6ec 226
frankvnk 0:c44f0314d6ec 227 #endif
frankvnk 0:c44f0314d6ec 228
frankvnk 4:d8255a5aad46 229 /**
frankvnk 4:d8255a5aad46 230 * Disconnect connection from AP.
frankvnk 4:d8255a5aad46 231 * @return 0 disconnected done, other CC3000 already disconnected
frankvnk 4:d8255a5aad46 232 * @sa wlan_connect
frankvnk 4:d8255a5aad46 233 */
frankvnk 0:c44f0314d6ec 234 extern long wlan_disconnect(void);
frankvnk 0:c44f0314d6ec 235
frankvnk 4:d8255a5aad46 236 /**
frankvnk 5:854f9b13a0f9 237 * Add profile.
frankvnk 5:854f9b13a0f9 238 * When auto start is enabled, the device connects to\n
frankvnk 5:854f9b13a0f9 239 * station from the profiles table. Up to 7 profiles are supported. \n
frankvnk 5:854f9b13a0f9 240 * If several profiles configured the device choose the highest \n
frankvnk 5:854f9b13a0f9 241 * priority profile, within each priority group, device will choose \n
frankvnk 5:854f9b13a0f9 242 * profile based on security policy, signal strength, etc \n
frankvnk 5:854f9b13a0f9 243 * parameters. All the profiles are stored in CC3000 NVMEM.\n
frankvnk 4:d8255a5aad46 244 *
frankvnk 4:d8255a5aad46 245 * @param ulSecType WLAN_SEC_UNSEC,WLAN_SEC_WEP,WLAN_SEC_WPA,WLAN_SEC_WPA2
frankvnk 4:d8255a5aad46 246 * @param ucSsid ssid SSID up to 32 bytes
frankvnk 4:d8255a5aad46 247 * @param ulSsidLen ssid length
frankvnk 4:d8255a5aad46 248 * @param ucBssid bssid 6 bytes
frankvnk 4:d8255a5aad46 249 * @param ulPriority ulPriority profile priority. Lowest priority:0.
frankvnk 4:d8255a5aad46 250 * @param ulPairwiseCipher_Or_TxKeyLen key length for WEP security
frankvnk 4:d8255a5aad46 251 * @param ulGroupCipher_TxKeyIndex key index
frankvnk 4:d8255a5aad46 252 * @param ulKeyMgmt KEY management
frankvnk 4:d8255a5aad46 253 * @param ucPf_OrKey security key
frankvnk 4:d8255a5aad46 254 * @param ulPassPhraseLen security key length for WPA\WPA2
frankvnk 4:d8255a5aad46 255 * @return On success, zero is returned. On error, -1 is returned
frankvnk 4:d8255a5aad46 256 * @sa wlan_ioctl_del_profile
frankvnk 4:d8255a5aad46 257 */
frankvnk 0:c44f0314d6ec 258 extern long wlan_add_profile(unsigned long ulSecType,
frankvnk 0:c44f0314d6ec 259 unsigned char* ucSsid,
frankvnk 0:c44f0314d6ec 260 unsigned long ulSsidLen,
frankvnk 0:c44f0314d6ec 261 unsigned char *ucBssid,
frankvnk 0:c44f0314d6ec 262 unsigned long ulPriority,
frankvnk 0:c44f0314d6ec 263 unsigned long ulPairwiseCipher_Or_Key,
frankvnk 0:c44f0314d6ec 264 unsigned long ulGroupCipher_TxKeyLen,
frankvnk 0:c44f0314d6ec 265 unsigned long ulKeyMgmt,
frankvnk 0:c44f0314d6ec 266 unsigned char* ucPf_OrKey,
frankvnk 0:c44f0314d6ec 267 unsigned long ulPassPhraseLen);
frankvnk 0:c44f0314d6ec 268
frankvnk 4:d8255a5aad46 269 /**
frankvnk 5:854f9b13a0f9 270 * Delete WLAN profile.
frankvnk 4:d8255a5aad46 271 * @param index number of profile to delete
frankvnk 4:d8255a5aad46 272 * @return On success, zero is returned. On error, -1 is returned
frankvnk 4:d8255a5aad46 273 * @Note In order to delete all stored profile, set index to 255.
frankvnk 4:d8255a5aad46 274 * @sa wlan_add_profile
frankvnk 4:d8255a5aad46 275 */
frankvnk 0:c44f0314d6ec 276 extern long wlan_ioctl_del_profile(unsigned long ulIndex);
frankvnk 0:c44f0314d6ec 277
frankvnk 4:d8255a5aad46 278 /**
frankvnk 5:854f9b13a0f9 279 * Mask event according to bit mask.
frankvnk 5:854f9b13a0f9 280 * In case that event is masked (1), the device will not send the masked event to host.
frankvnk 5:854f9b13a0f9 281 * @param mask mask option:\n
frankvnk 5:854f9b13a0f9 282 * HCI_EVNT_WLAN_UNSOL_CONNECT connect event\n
frankvnk 5:854f9b13a0f9 283 * HCI_EVNT_WLAN_UNSOL_DISCONNECT disconnect event\n
frankvnk 5:854f9b13a0f9 284 * HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE smart config done\n
frankvnk 5:854f9b13a0f9 285 * HCI_EVNT_WLAN_UNSOL_INIT init done\n
frankvnk 5:854f9b13a0f9 286 * HCI_EVNT_WLAN_UNSOL_DHCP dhcp event report\n
frankvnk 5:854f9b13a0f9 287 * HCI_EVNT_WLAN_ASYNC_PING_REPORT ping report\n
frankvnk 5:854f9b13a0f9 288 * HCI_EVNT_WLAN_KEEPALIVE keepalive\n
frankvnk 5:854f9b13a0f9 289 * HCI_EVNT_WLAN_TX_COMPLETE - disable information on end of transmission\n
frankvnk 4:d8255a5aad46 290 * Saved: no.
frankvnk 4:d8255a5aad46 291 * @return On success, zero is returned. On error, -1 is returned
frankvnk 4:d8255a5aad46 292 */
frankvnk 0:c44f0314d6ec 293 extern long wlan_set_event_mask(unsigned long ulMask);
frankvnk 0:c44f0314d6ec 294
frankvnk 4:d8255a5aad46 295 /**
frankvnk 4:d8255a5aad46 296 * Get wlan status: disconnected, scanning, connecting or connected
frankvnk 4:d8255a5aad46 297 * @param none
frankvnk 5:854f9b13a0f9 298 * @return WLAN_STATUS_DISCONNECTED, WLAN_STATUS_SCANING,\n
frankvnk 5:854f9b13a0f9 299 * STATUS_CONNECTING or WLAN_STATUS_CONNECTED \n
frankvnk 4:d8255a5aad46 300 */
frankvnk 0:c44f0314d6ec 301 extern long wlan_ioctl_statusget(void);
frankvnk 0:c44f0314d6ec 302
frankvnk 0:c44f0314d6ec 303
frankvnk 4:d8255a5aad46 304 /**
frankvnk 5:854f9b13a0f9 305 * Set connection policy.
frankvnk 5:854f9b13a0f9 306 * When auto is enabled, the device tries to connect according the following policy:\n
frankvnk 5:854f9b13a0f9 307 * 1) If fast connect is enabled and last connection is valid, \n
frankvnk 5:854f9b13a0f9 308 * the device will try to connect to it without the scanning \n
frankvnk 5:854f9b13a0f9 309 * procedure (fast). The last connection will be marked as\n
frankvnk 5:854f9b13a0f9 310 * invalid, due to adding/removing profile. \n
frankvnk 5:854f9b13a0f9 311 * 2) If profile exists, the device will try to connect it \n
frankvnk 5:854f9b13a0f9 312 * (Up to seven profiles).\n
frankvnk 5:854f9b13a0f9 313 * 3) If fast and profiles are not found, and open mode is\n
frankvnk 5:854f9b13a0f9 314 * enabled, the device will try to connect to any AP.\n
frankvnk 5:854f9b13a0f9 315 * Note that the policy settings are stored in the CC3000 NVMEM.\n
frankvnk 5:854f9b13a0f9 316 * @param should_connect_to_open_ap enable(1), disable(0) connect to any \n
frankvnk 5:854f9b13a0f9 317 * available AP. This parameter corresponds to the configuration of \n
frankvnk 5:854f9b13a0f9 318 * item # 3 in the brief description.\n
frankvnk 5:854f9b13a0f9 319 * @param should_use_fast_connect enable(1), disable(0). if enabled, tries \n
frankvnk 5:854f9b13a0f9 320 * to connect to the last connected AP. This parameter corresponds \n
frankvnk 5:854f9b13a0f9 321 * to the configuration of item # 1 in the brief description.\n
frankvnk 5:854f9b13a0f9 322 * @param auto_start enable(1), disable(0) auto connect \n
frankvnk 5:854f9b13a0f9 323 * after reset and periodically reconnect if needed. This \n
frankvnk 5:854f9b13a0f9 324 * configuration configures option 2 in the above description.\n
frankvnk 5:854f9b13a0f9 325 * @return On success, zero is returned.\n
frankvnk 5:854f9b13a0f9 326 * On error, -1 is returned \n
frankvnk 4:d8255a5aad46 327 * @sa wlan_add_profile , wlan_ioctl_del_profile
frankvnk 4:d8255a5aad46 328 */
frankvnk 0:c44f0314d6ec 329 extern long wlan_ioctl_set_connection_policy(unsigned long should_connect_to_open_ap,
frankvnk 0:c44f0314d6ec 330 unsigned long should_use_fast_connect,
frankvnk 0:c44f0314d6ec 331 unsigned long ulUseProfiles);
frankvnk 0:c44f0314d6ec 332
frankvnk 4:d8255a5aad46 333 /**
frankvnk 5:854f9b13a0f9 334 * Get entry from scan result table.
frankvnk 5:854f9b13a0f9 335 * The scan results are returned one by one, and each entry represents a single AP found in the area.\n
frankvnk 5:854f9b13a0f9 336 * The following is a format of the scan result: \n
frankvnk 5:854f9b13a0f9 337 * - 4 Bytes: number of networks found\n
frankvnk 5:854f9b13a0f9 338 * - 4 Bytes: The status of the scan: 0 - aged results, 1 - results valid, 2 - no results\n
frankvnk 5:854f9b13a0f9 339 * - 42 bytes: Result entry, where the bytes are arranged as follows:\n
frankvnk 5:854f9b13a0f9 340 * - 1 bit isValid - is result valid or not\n
frankvnk 5:854f9b13a0f9 341 * - 7 bits rssi - RSSI value \n
frankvnk 5:854f9b13a0f9 342 * - 2 bits securityMode - security mode of the AP: 0 - Open, 1 - WEP, 2 WPA, 3 WPA2\n
frankvnk 5:854f9b13a0f9 343 * - 6 bits SSID name length\n
frankvnk 5:854f9b13a0f9 344 * - 2 bytes the time at which the entry has entered into scans result table\n
frankvnk 5:854f9b13a0f9 345 * - 32 bytes SSID name\n
frankvnk 5:854f9b13a0f9 346 * - 6 bytes BSSID \n
frankvnk 4:d8255a5aad46 347 * @param[in] scan_timeout parameter not supported
frankvnk 4:d8255a5aad46 348 * @param[out] ucResults scan result (_wlan_full_scan_results_args_t)
frankvnk 4:d8255a5aad46 349 * @return On success, zero is returned. On error, -1 is returned
frankvnk 4:d8255a5aad46 350 * @Note scan_timeout, is not supported on this version.
frankvnk 4:d8255a5aad46 351 * @sa wlan_ioctl_set_scan_params
frankvnk 4:d8255a5aad46 352 */
frankvnk 0:c44f0314d6ec 353 extern long wlan_ioctl_get_scan_results(unsigned long ulScanTimeout,
frankvnk 0:c44f0314d6ec 354 unsigned char *ucResults);
frankvnk 0:c44f0314d6ec 355
frankvnk 4:d8255a5aad46 356 /**
frankvnk 4:d8255a5aad46 357 * start and stop scan procedure. Set scan parameters.
frankvnk 5:854f9b13a0f9 358 * @param uiEnable start/stop application scan: \n
frankvnk 5:854f9b13a0f9 359 * 1 = start scan with default interval value of 10 min. \n
frankvnk 5:854f9b13a0f9 360 * To set a different scan interval value, apply the value in milliseconds.\n
frankvnk 5:854f9b13a0f9 361 * minimum = 1 second. 0=stop.\n
frankvnk 5:854f9b13a0f9 362 * Wlan reset (wlan_stop() wlan_start()) is needed when changing scan interval value.\n
frankvnk 5:854f9b13a0f9 363 * Saved: No\n
frankvnk 5:854f9b13a0f9 364 * @param uiMinDwellTime minimum dwell time value to be used for each channel, in milliseconds.\n
frankvnk 5:854f9b13a0f9 365 * Saved: yes\n
frankvnk 5:854f9b13a0f9 366 * Recommended Value: 100\n
frankvnk 5:854f9b13a0f9 367 * Default: 20\n
frankvnk 5:854f9b13a0f9 368 * @param uiMaxDwellTime maximum dwell time value to be used for each channel, in milliseconds.\n
frankvnk 5:854f9b13a0f9 369 * Saved: yes\n
frankvnk 5:854f9b13a0f9 370 * Recommended Value: 100\n
frankvnk 5:854f9b13a0f9 371 * Default: 30\n
frankvnk 5:854f9b13a0f9 372 * @param uiNumOfProbeRequests max probe request between dwell time. \n
frankvnk 5:854f9b13a0f9 373 * Saved: yes.\n
frankvnk 5:854f9b13a0f9 374 * Recommended Value: 5\n
frankvnk 5:854f9b13a0f9 375 * Default:2\n
frankvnk 5:854f9b13a0f9 376 * @param uiChannelMask bitwise, up to 13 channels (0x1fff). \n
frankvnk 5:854f9b13a0f9 377 * Saved: yes.\n
frankvnk 5:854f9b13a0f9 378 * Default: 0x7ff\n
frankvnk 5:854f9b13a0f9 379 * @param uiRSSIThreshold RSSI threshold.\n
frankvnk 5:854f9b13a0f9 380 * Saved: yes\n
frankvnk 5:854f9b13a0f9 381 * Default: -80\n
frankvnk 5:854f9b13a0f9 382 * @param uiSNRThreshold NSR threshold.\n
frankvnk 5:854f9b13a0f9 383 * Saved: yes\n
frankvnk 5:854f9b13a0f9 384 * Default: 0\n
frankvnk 5:854f9b13a0f9 385 * @param uiDefaultTxPower probe Tx power.\n
frankvnk 5:854f9b13a0f9 386 * Saved: yes\n
frankvnk 5:854f9b13a0f9 387 * Default: 205\n
frankvnk 5:854f9b13a0f9 388 * @param aiIntervalList pointer to array with 16 entries (16 channels) \n
frankvnk 5:854f9b13a0f9 389 * Each entry (unsigned long) holds timeout between periodic scan \n
frankvnk 5:854f9b13a0f9 390 * and connection scan - in milliseconds.\n
frankvnk 5:854f9b13a0f9 391 * Saved: yes.\n
frankvnk 5:854f9b13a0f9 392 * Default 2000ms.\n
frankvnk 4:d8255a5aad46 393 * @return On success, zero is returned. On error, -1 is returned
frankvnk 4:d8255a5aad46 394 * @Note uiDefaultTxPower, is not supported on this version.
frankvnk 4:d8255a5aad46 395 * @sa wlan_ioctl_get_scan_results
frankvnk 4:d8255a5aad46 396 */
frankvnk 0:c44f0314d6ec 397 extern long wlan_ioctl_set_scan_params(unsigned long uiEnable,
frankvnk 0:c44f0314d6ec 398 unsigned long uiMinDwellTime,
frankvnk 0:c44f0314d6ec 399 unsigned long uiMaxDwellTime,
frankvnk 0:c44f0314d6ec 400 unsigned long uiNumOfProbeRequests,
frankvnk 0:c44f0314d6ec 401 unsigned long uiChannelMask,
frankvnk 0:c44f0314d6ec 402 long iRSSIThreshold,
frankvnk 0:c44f0314d6ec 403 unsigned long uiSNRThreshold,
frankvnk 0:c44f0314d6ec 404 unsigned long uiDefaultTxPower,
frankvnk 0:c44f0314d6ec 405 unsigned long *aiIntervalList);
frankvnk 0:c44f0314d6ec 406
frankvnk 0:c44f0314d6ec 407
frankvnk 4:d8255a5aad46 408 /**
frankvnk 5:854f9b13a0f9 409 * Start to acquire device profile.
frankvnk 5:854f9b13a0f9 410 * The device will acquires its own profile if a profile message is found.\n
frankvnk 5:854f9b13a0f9 411 * The acquired AP information is stored in CC3000 EEPROM only when AES128 encryption is used.\n
frankvnk 5:854f9b13a0f9 412 * When AES128 encryption is not used, a profile is internally created by the device.\n
frankvnk 4:d8255a5aad46 413 * @param algoEncryptedFlag indicates whether the information is encrypted
frankvnk 4:d8255a5aad46 414 * @return On success, zero is returned. On error, -1 is returned
frankvnk 5:854f9b13a0f9 415 * @Note An asynchronous event - Smart Config Done will be generated as soon\n
frankvnk 5:854f9b13a0f9 416 * as the process finishes successfully.\n
frankvnk 4:d8255a5aad46 417 * @sa wlan_smart_config_set_prefix , wlan_smart_config_stop
frankvnk 4:d8255a5aad46 418 */
frankvnk 0:c44f0314d6ec 419 extern long wlan_smart_config_start(unsigned long algoEncryptedFlag);
frankvnk 0:c44f0314d6ec 420
frankvnk 4:d8255a5aad46 421 /**
frankvnk 4:d8255a5aad46 422 * Stop the acquire profile procedure
frankvnk 4:d8255a5aad46 423 * @param algoEncryptedFlag indicates whether the information is encrypted
frankvnk 4:d8255a5aad46 424 * @return On success, zero is returned. On error, -1 is returned
frankvnk 4:d8255a5aad46 425 * @sa wlan_smart_config_start , wlan_smart_config_set_prefix
frankvnk 4:d8255a5aad46 426 */
frankvnk 0:c44f0314d6ec 427 extern long wlan_smart_config_stop(void);
frankvnk 0:c44f0314d6ec 428
frankvnk 4:d8255a5aad46 429 /**
frankvnk 5:854f9b13a0f9 430 * Configure station ssid prefix.
frankvnk 5:854f9b13a0f9 431 * The prefix is used internally in CC3000. It should always be TTT.\n
frankvnk 4:d8255a5aad46 432 * @param newPrefix 3 bytes identify the SSID prefix for the Smart Config.
frankvnk 4:d8255a5aad46 433 * @return On success, zero is returned. On error, -1 is returned
frankvnk 4:d8255a5aad46 434 * @Note The prefix is stored in CC3000 NVMEM
frankvnk 4:d8255a5aad46 435 * @sa wlan_smart_config_start , wlan_smart_config_stop
frankvnk 4:d8255a5aad46 436 */
frankvnk 0:c44f0314d6ec 437 extern long wlan_smart_config_set_prefix(char* cNewPrefix);
frankvnk 0:c44f0314d6ec 438
frankvnk 4:d8255a5aad46 439 /**
frankvnk 4:d8255a5aad46 440 * Process the acquired data and store it as a profile.
frankvnk 4:d8255a5aad46 441 * The acquired AP information is stored in CC3000 EEPROM encrypted.
frankvnk 5:854f9b13a0f9 442 * The encrypted data is decrypted and stored as a profile.\n
frankvnk 5:854f9b13a0f9 443 * behavior is as defined by connection policy.\n
frankvnk 4:d8255a5aad46 444 * @param none
frankvnk 4:d8255a5aad46 445 * @return On success, zero is returned. On error, -1 is returned
frankvnk 4:d8255a5aad46 446 */
frankvnk 0:c44f0314d6ec 447 extern long wlan_smart_config_process(void);
frankvnk 0:c44f0314d6ec 448
frankvnk 0:c44f0314d6ec 449
frankvnk 0:c44f0314d6ec 450 #ifdef __cplusplus
frankvnk 0:c44f0314d6ec 451 }
frankvnk 0:c44f0314d6ec 452 #endif // __cplusplus
frankvnk 0:c44f0314d6ec 453
frankvnk 5:854f9b13a0f9 454 //*****************************************************************************
frankvnk 5:854f9b13a0f9 455 //
frankvnk 5:854f9b13a0f9 456 // Close the Doxygen group.
frankvnk 5:854f9b13a0f9 457 //! @}
frankvnk 5:854f9b13a0f9 458 //
frankvnk 5:854f9b13a0f9 459 //*****************************************************************************
frankvnk 5:854f9b13a0f9 460
frankvnk 0:c44f0314d6ec 461 #endif // __WLAN_H__