TI's CC3100 host driver and demo. Experimental and a work in progress.

Dependencies:   mbed

Committer:
dflet
Date:
Mon Nov 17 19:38:34 2014 +0000
Revision:
0:bbe98578d4c0
Experimental and a work in progress. Mostly left as TI C code. Does compile and run, but I have seen a few glitches. cc3100_sl_common.h will need your ssid and pass key at line 82.....

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:bbe98578d4c0 1 /*
dflet 0:bbe98578d4c0 2 * wlan.h - CC31xx/CC32xx Host Driver Implementation
dflet 0:bbe98578d4c0 3 *
dflet 0:bbe98578d4c0 4 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:bbe98578d4c0 5 *
dflet 0:bbe98578d4c0 6 *
dflet 0:bbe98578d4c0 7 * Redistribution and use in source and binary forms, with or without
dflet 0:bbe98578d4c0 8 * modification, are permitted provided that the following conditions
dflet 0:bbe98578d4c0 9 * are met:
dflet 0:bbe98578d4c0 10 *
dflet 0:bbe98578d4c0 11 * Redistributions of source code must retain the above copyright
dflet 0:bbe98578d4c0 12 * notice, this list of conditions and the following disclaimer.
dflet 0:bbe98578d4c0 13 *
dflet 0:bbe98578d4c0 14 * Redistributions in binary form must reproduce the above copyright
dflet 0:bbe98578d4c0 15 * notice, this list of conditions and the following disclaimer in the
dflet 0:bbe98578d4c0 16 * documentation and/or other materials provided with the
dflet 0:bbe98578d4c0 17 * distribution.
dflet 0:bbe98578d4c0 18 *
dflet 0:bbe98578d4c0 19 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:bbe98578d4c0 20 * its contributors may be used to endorse or promote products derived
dflet 0:bbe98578d4c0 21 * from this software without specific prior written permission.
dflet 0:bbe98578d4c0 22 *
dflet 0:bbe98578d4c0 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:bbe98578d4c0 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:bbe98578d4c0 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:bbe98578d4c0 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:bbe98578d4c0 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:bbe98578d4c0 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:bbe98578d4c0 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:bbe98578d4c0 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:bbe98578d4c0 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:bbe98578d4c0 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:bbe98578d4c0 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:bbe98578d4c0 34 *
dflet 0:bbe98578d4c0 35 */
dflet 0:bbe98578d4c0 36
dflet 0:bbe98578d4c0 37 #ifndef __WLAN_H__
dflet 0:bbe98578d4c0 38 #define __WLAN_H__
dflet 0:bbe98578d4c0 39
dflet 0:bbe98578d4c0 40 /*****************************************************************************/
dflet 0:bbe98578d4c0 41 /* Include files */
dflet 0:bbe98578d4c0 42 /*****************************************************************************/
dflet 0:bbe98578d4c0 43 #include "cc3100_simplelink.h"
dflet 0:bbe98578d4c0 44
dflet 0:bbe98578d4c0 45
dflet 0:bbe98578d4c0 46 #ifdef __cplusplus
dflet 0:bbe98578d4c0 47 extern "C" {
dflet 0:bbe98578d4c0 48 #endif
dflet 0:bbe98578d4c0 49
dflet 0:bbe98578d4c0 50
dflet 0:bbe98578d4c0 51 /*****************************************************************************/
dflet 0:bbe98578d4c0 52 /* Macro declarations */
dflet 0:bbe98578d4c0 53 /*****************************************************************************/
dflet 0:bbe98578d4c0 54
dflet 0:bbe98578d4c0 55 /*!
dflet 0:bbe98578d4c0 56
dflet 0:bbe98578d4c0 57 \addtogroup wlan
dflet 0:bbe98578d4c0 58 @{
dflet 0:bbe98578d4c0 59
dflet 0:bbe98578d4c0 60 */
dflet 0:bbe98578d4c0 61
dflet 0:bbe98578d4c0 62 #define SL_BSSID_LENGTH (6)
dflet 0:bbe98578d4c0 63 #define MAXIMAL_SSID_LENGTH (32)
dflet 0:bbe98578d4c0 64
dflet 0:bbe98578d4c0 65 #define NUM_OF_RATE_INDEXES (20)
dflet 0:bbe98578d4c0 66 #define SIZE_OF_RSSI_HISTOGRAM (6)
dflet 0:bbe98578d4c0 67
dflet 0:bbe98578d4c0 68 /* WLAN Disconnect Reason Codes */
dflet 0:bbe98578d4c0 69 #define SL_DISCONNECT_RESERVED_0 (0)
dflet 0:bbe98578d4c0 70 #define SL_DISCONNECT_UNSPECIFIED_REASON (1)
dflet 0:bbe98578d4c0 71 #define SL_PREVIOUS_AUTHENTICATION_NO_LONGER_VALID (2)
dflet 0:bbe98578d4c0 72 #define SL_DEAUTHENTICATED_BECAUSE_SENDING_STATION_IS_LEAVING (3)
dflet 0:bbe98578d4c0 73 #define SL_DISASSOCIATED_DUE_TO_INACTIVITY (4)
dflet 0:bbe98578d4c0 74 #define SL_DISASSOCIATED_BECAUSE_AP_IS_UNABLE_TO_HANDLE_ALL_CURRENTLY_ASSOCIATED_STATIONS (5)
dflet 0:bbe98578d4c0 75 #define SL_CLASS_2_FRAME_RECEIVED_FROM_NONAUTHENTICATED_STATION (6)
dflet 0:bbe98578d4c0 76 #define SL_CLASS_3_FRAME_RECEIVED_FROM_NONASSOCIATED_STATION (7)
dflet 0:bbe98578d4c0 77 #define SL_DISASSOCIATED_BECAUSE_SENDING_STATION_IS_LEAVING_BSS (8)
dflet 0:bbe98578d4c0 78 #define SL_STATION_REQUESTING_ASSOCIATION_IS_NOT_AUTHENTICATED_WITH_RESPONDING_STATION (9)
dflet 0:bbe98578d4c0 79 #define SL_DISASSOCIATED_BECAUSE_THE_INFORMATION_IN_THE_POWER_CAPABILITY_ELEMENT_IS_UNACCEPTABLE (10)
dflet 0:bbe98578d4c0 80 #define SL_DISASSOCIATED_BECAUSE_THE_INFORMATION_IN_THE_SUPPORTED_CHANNELS_ELEMENT_IS_UNACCEPTABLE (11)
dflet 0:bbe98578d4c0 81 #define SL_DISCONNECT_RESERVED_1 (12)
dflet 0:bbe98578d4c0 82 #define SL_INVALID_INFORMATION_ELEMENT (13)
dflet 0:bbe98578d4c0 83 #define SL_MESSAGE_INTEGRITY_CODE_MIC_FAILURE (14)
dflet 0:bbe98578d4c0 84 #define SL_FOUR_WAY_HANDSHAKE_TIMEOUT (15)
dflet 0:bbe98578d4c0 85 #define SL_GROUP_KEY_HANDSHAKE_TIMEOUT (16)
dflet 0:bbe98578d4c0 86 #define SL_RE_ASSOCIATION_REQUEST_PROBE_RESPONSE_BEACON_FRAME (17)
dflet 0:bbe98578d4c0 87 #define SL_INVALID_GROUP_CIPHER (18)
dflet 0:bbe98578d4c0 88 #define SL_INVALID_PAIRWISE_CIPHER (19)
dflet 0:bbe98578d4c0 89 #define SL_INVALID_AKMP (20)
dflet 0:bbe98578d4c0 90 #define SL_UNSUPPORTED_RSN_INFORMATION_ELEMENT_VERSION (21)
dflet 0:bbe98578d4c0 91 #define SL_INVALID_RSN_INFORMATION_ELEMENT_CAPABILITIES (22)
dflet 0:bbe98578d4c0 92 #define SL_IEEE_802_1X_AUTHENTICATION_FAILED (23)
dflet 0:bbe98578d4c0 93 #define SL_CIPHER_SUITE_REJECTED_BECAUSE_OF_THE_SECURITY_POLICY (24)
dflet 0:bbe98578d4c0 94 #define SL_DISCONNECT_RESERVED_2 (25)
dflet 0:bbe98578d4c0 95 #define SL_DISCONNECT_RESERVED_3 (26)
dflet 0:bbe98578d4c0 96 #define SL_DISCONNECT_RESERVED_4 (27)
dflet 0:bbe98578d4c0 97 #define SL_DISCONNECT_RESERVED_5 (28)
dflet 0:bbe98578d4c0 98 #define SL_DISCONNECT_RESERVED_6 (29)
dflet 0:bbe98578d4c0 99 #define SL_DISCONNECT_RESERVED_7 (30)
dflet 0:bbe98578d4c0 100 #define SL_DISCONNECT_RESERVED_8 (31)
dflet 0:bbe98578d4c0 101 #define SL_DISASSOCIATED_FOR_UNSPECIFIED_QOS_RELATED_REASON (32)
dflet 0:bbe98578d4c0 102 #define SL_DISASSOCIATED_BECAUSE_QAP_LACKS_SUFFICIENT_BANDWIDTH_FOR_THIS_QSTA (33)
dflet 0:bbe98578d4c0 103 #define SL_DISASSOCIATED_BECAUSE_EXCESSIVE_NUMBER_OF_FRAMES_NEED_TO_BE_ACKNOWLEDGED (34)
dflet 0:bbe98578d4c0 104 #define SL_DISASSOCIATED_BECAUSE_QSTA_IS_TRANSMITTING_OUTSIDE_THE_LIMITS_OF_ITS_TXOPS (35)
dflet 0:bbe98578d4c0 105 #define SL_REQUESTED_FROM_PEER_QSTA_AS_THE_QSTA_IS_LEAVING_THE_QBSS (36)
dflet 0:bbe98578d4c0 106 #define SL_REQUESTED_FROM_PEER_QSTA_AS_IT_DOES_NO_WANT_TO_USE_THE_MECHANISM (37)
dflet 0:bbe98578d4c0 107 #define SL_REQUESTED_FROM_PEER_QSTA_AS_THE_QSTA_RECEIVED_FRAMES_SETUP_IS_REQUIRED (38)
dflet 0:bbe98578d4c0 108 #define SL_REQUESTED_FROM_PEER_QSTA_DUE_TO_TIMEOUT (39)
dflet 0:bbe98578d4c0 109 #define SL_PEER_QSTA_DOES_NOT_SUPPORT_THE_REQUESTED_CIPHER_SUITE (40)
dflet 0:bbe98578d4c0 110 #define SL_CISCO_DEFINED (98)
dflet 0:bbe98578d4c0 111 #define SL_CISCO_DEFINED_1 (99)
dflet 0:bbe98578d4c0 112 #define SL_ROAMING_TRIGGER_NONE (100)
dflet 0:bbe98578d4c0 113 #define SL_ROAMING_TRIGGER_LOW_QUALITY_FOR_BG_SCAN (101)
dflet 0:bbe98578d4c0 114 #define SL_ROAMING_TRIGGER_HIGH_QUALITY_FOR_BG_SCAN (102)
dflet 0:bbe98578d4c0 115 #define SL_ROAMING_TRIGGER_NORMAL_QUALITY_FOR_BG_SCAN (103)
dflet 0:bbe98578d4c0 116 #define SL_ROAMING_TRIGGER_LOW_TX_RATE (104)
dflet 0:bbe98578d4c0 117 #define SL_ROAMING_TRIGGER_LOW_SNR (105)
dflet 0:bbe98578d4c0 118 #define SL_ROAMING_TRIGGER_LOW_QUALITY (106)
dflet 0:bbe98578d4c0 119 #define SL_ROAMING_TRIGGER_TSPEC_REJECTED (107)
dflet 0:bbe98578d4c0 120 #define SL_ROAMING_TRIGGER_MAX_TX_RETRIES (108)
dflet 0:bbe98578d4c0 121 #define SL_ROAMING_TRIGGER_BSS_LOSS (109)
dflet 0:bbe98578d4c0 122 #define SL_ROAMING_TRIGGER_BSS_LOSS_DUE_TO_MAX_TX_RETRY (110)
dflet 0:bbe98578d4c0 123 #define SL_ROAMING_TRIGGER_SWITCH_CHANNEL (111)
dflet 0:bbe98578d4c0 124 #define SL_ROAMING_TRIGGER_AP_DISCONNECT (112)
dflet 0:bbe98578d4c0 125 #define SL_ROAMING_TRIGGER_SECURITY_ATTACK (113)
dflet 0:bbe98578d4c0 126 #define SL_ROAMING_TRIGGER_MAX (114)
dflet 0:bbe98578d4c0 127 #define SL_USER_INITIATED_DISCONNECTION (200)
dflet 0:bbe98578d4c0 128
dflet 0:bbe98578d4c0 129 /* Wlan error codes */
dflet 0:bbe98578d4c0 130 #define SL_ERROR_KEY_ERROR (-3)
dflet 0:bbe98578d4c0 131 #define SL_ERROR_INVALID_ROLE (-71)
dflet 0:bbe98578d4c0 132 #define SL_ERROR_INVALID_SECURITY_TYPE (-84)
dflet 0:bbe98578d4c0 133 #define SL_ERROR_PASSPHRASE_TOO_LONG (-85)
dflet 0:bbe98578d4c0 134 #define SL_ERROR_WPS_NO_PIN_OR_WRONG_PIN_LEN (-87)
dflet 0:bbe98578d4c0 135 #define SL_ERROR_EAP_WRONG_METHOD (-88)
dflet 0:bbe98578d4c0 136 #define SL_ERROR_PASSWORD_ERROR (-89)
dflet 0:bbe98578d4c0 137 #define SL_ERROR_EAP_ANONYMOUS_LEN_ERROR (-90)
dflet 0:bbe98578d4c0 138 #define SL_ERROR_SSID_LEN_ERROR (-91)
dflet 0:bbe98578d4c0 139 #define SL_ERROR_USER_ID_LEN_ERROR (-92)
dflet 0:bbe98578d4c0 140 #define SL_ERROR_ILLEGAL_WEP_KEY_INDEX (-95)
dflet 0:bbe98578d4c0 141 #define SL_ERROR_INVALID_DWELL_TIME_VALUES (-96)
dflet 0:bbe98578d4c0 142 #define SL_ERROR_INVALID_POLICY_TYPE (-97)
dflet 0:bbe98578d4c0 143 #define SL_ERROR_PM_POLICY_INVALID_OPTION (-98)
dflet 0:bbe98578d4c0 144 #define SL_ERROR_PM_POLICY_INVALID_PARAMS (-99)
dflet 0:bbe98578d4c0 145 #define SL_ERROR_WIFI_ALREADY_DISCONNECTED (-129)
dflet 0:bbe98578d4c0 146 #define SL_ERROR_WIFI_NOT_CONNECTED (-59)
dflet 0:bbe98578d4c0 147
dflet 0:bbe98578d4c0 148
dflet 0:bbe98578d4c0 149
dflet 0:bbe98578d4c0 150 #define SL_SEC_TYPE_OPEN (0)
dflet 0:bbe98578d4c0 151 #define SL_SEC_TYPE_WEP (1)
dflet 0:bbe98578d4c0 152 #define SL_SEC_TYPE_WPA (2) /* deprecated */
dflet 0:bbe98578d4c0 153 #define SL_SEC_TYPE_WPA_WPA2 (2)
dflet 0:bbe98578d4c0 154 #define SL_SEC_TYPE_WPS_PBC (3)
dflet 0:bbe98578d4c0 155 #define SL_SEC_TYPE_WPS_PIN (4)
dflet 0:bbe98578d4c0 156 #define SL_SEC_TYPE_WPA_ENT (5)
dflet 0:bbe98578d4c0 157 #define SL_SEC_TYPE_P2P_PBC (6)
dflet 0:bbe98578d4c0 158 #define SL_SEC_TYPE_P2P_PIN_KEYPAD (7)
dflet 0:bbe98578d4c0 159 #define SL_SEC_TYPE_P2P_PIN_DISPLAY (8)
dflet 0:bbe98578d4c0 160 #define SL_SEC_TYPE_P2P_PIN_AUTO (9) /* NOT Supported yet */
dflet 0:bbe98578d4c0 161
dflet 0:bbe98578d4c0 162
dflet 0:bbe98578d4c0 163
dflet 0:bbe98578d4c0 164 #define SL_SCAN_SEC_TYPE_OPEN (0)
dflet 0:bbe98578d4c0 165 #define SL_SCAN_SEC_TYPE_WEP (1)
dflet 0:bbe98578d4c0 166 #define SL_SCAN_SEC_TYPE_WPA (2)
dflet 0:bbe98578d4c0 167 #define SL_SCAN_SEC_TYPE_WPA2 (3)
dflet 0:bbe98578d4c0 168
dflet 0:bbe98578d4c0 169
dflet 0:bbe98578d4c0 170
dflet 0:bbe98578d4c0 171 #define TLS (0x1)
dflet 0:bbe98578d4c0 172 #define MSCHAP (0x0)
dflet 0:bbe98578d4c0 173 #define PSK (0x2)
dflet 0:bbe98578d4c0 174 #define TTLS (0x10)
dflet 0:bbe98578d4c0 175 #define PEAP0 (0x20)
dflet 0:bbe98578d4c0 176 #define PEAP1 (0x40)
dflet 0:bbe98578d4c0 177 #define FAST (0x80)
dflet 0:bbe98578d4c0 178
dflet 0:bbe98578d4c0 179 #define FAST_AUTH_PROVISIONING (0x02)
dflet 0:bbe98578d4c0 180 #define FAST_UNAUTH_PROVISIONING (0x01)
dflet 0:bbe98578d4c0 181 #define FAST_NO_PROVISIONING (0x00)
dflet 0:bbe98578d4c0 182
dflet 0:bbe98578d4c0 183 #define EAPMETHOD_PHASE2_SHIFT (8)
dflet 0:bbe98578d4c0 184 #define EAPMETHOD_PAIRWISE_CIPHER_SHIFT (19)
dflet 0:bbe98578d4c0 185 #define EAPMETHOD_GROUP_CIPHER_SHIFT (27)
dflet 0:bbe98578d4c0 186
dflet 0:bbe98578d4c0 187 #define WPA_CIPHER_CCMP (0x1)
dflet 0:bbe98578d4c0 188 #define WPA_CIPHER_TKIP (0x2)
dflet 0:bbe98578d4c0 189 #define CC31XX_DEFAULT_CIPHER (WPA_CIPHER_CCMP | WPA_CIPHER_TKIP)
dflet 0:bbe98578d4c0 190
dflet 0:bbe98578d4c0 191 #define EAPMETHOD(phase1,phase2,pairwise_cipher,group_cipher) \
dflet 0:bbe98578d4c0 192 ((phase1) | \
dflet 0:bbe98578d4c0 193 ((phase2) << EAPMETHOD_PHASE2_SHIFT ) |\
dflet 0:bbe98578d4c0 194 ((_u32)(pairwise_cipher) << EAPMETHOD_PAIRWISE_CIPHER_SHIFT ) |\
dflet 0:bbe98578d4c0 195 ((_u32)(group_cipher) << EAPMETHOD_GROUP_CIPHER_SHIFT ))
dflet 0:bbe98578d4c0 196
dflet 0:bbe98578d4c0 197 /* phase1 phase2 pairwise_cipher group_cipher */
dflet 0:bbe98578d4c0 198 #define SL_ENT_EAP_METHOD_TLS EAPMETHOD(TLS , 0 , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 199 #define SL_ENT_EAP_METHOD_TTLS_TLS EAPMETHOD(TTLS , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 200 #define SL_ENT_EAP_METHOD_TTLS_MSCHAPv2 EAPMETHOD(TTLS , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 201 #define SL_ENT_EAP_METHOD_TTLS_PSK EAPMETHOD(TTLS , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 202 #define SL_ENT_EAP_METHOD_PEAP0_TLS EAPMETHOD(PEAP0 , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 203 #define SL_ENT_EAP_METHOD_PEAP0_MSCHAPv2 EAPMETHOD(PEAP0 , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 204 #define SL_ENT_EAP_METHOD_PEAP0_PSK EAPMETHOD(PEAP0 , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 205 #define SL_ENT_EAP_METHOD_PEAP1_TLS EAPMETHOD(PEAP1 , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 206 #define SL_ENT_EAP_METHOD_PEAP1_MSCHAPv2 EAPMETHOD(PEAP1 , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 207 #define SL_ENT_EAP_METHOD_PEAP1_PSK EAPMETHOD(PEAP1 , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 208 #define SL_ENT_EAP_METHOD_FAST_AUTH_PROVISIONING EAPMETHOD(FAST , FAST_AUTH_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 209 #define SL_ENT_EAP_METHOD_FAST_UNAUTH_PROVISIONING EAPMETHOD(FAST , FAST_UNAUTH_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 210 #define SL_ENT_EAP_METHOD_FAST_NO_PROVISIONING EAPMETHOD(FAST , FAST_NO_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
dflet 0:bbe98578d4c0 211
dflet 0:bbe98578d4c0 212 #define SL_LONG_PREAMBLE (0)
dflet 0:bbe98578d4c0 213 #define SL_SHORT_PREAMBLE (1)
dflet 0:bbe98578d4c0 214
dflet 0:bbe98578d4c0 215 #define SL_RAW_RF_TX_PARAMS_CHANNEL_SHIFT (0)
dflet 0:bbe98578d4c0 216 #define SL_RAW_RF_TX_PARAMS_RATE_SHIFT (6)
dflet 0:bbe98578d4c0 217 #define SL_RAW_RF_TX_PARAMS_POWER_SHIFT (11)
dflet 0:bbe98578d4c0 218 #define SL_RAW_RF_TX_PARAMS_PREAMBLE_SHIFT (15)
dflet 0:bbe98578d4c0 219
dflet 0:bbe98578d4c0 220 #define SL_RAW_RF_TX_PARAMS(chan,rate,power,preamble) \
dflet 0:bbe98578d4c0 221 ((chan << SL_RAW_RF_TX_PARAMS_CHANNEL_SHIFT) | \
dflet 0:bbe98578d4c0 222 (rate << SL_RAW_RF_TX_PARAMS_RATE_SHIFT) | \
dflet 0:bbe98578d4c0 223 (power << SL_RAW_RF_TX_PARAMS_POWER_SHIFT) | \
dflet 0:bbe98578d4c0 224 (preamble << SL_RAW_RF_TX_PARAMS_PREAMBLE_SHIFT))
dflet 0:bbe98578d4c0 225
dflet 0:bbe98578d4c0 226
dflet 0:bbe98578d4c0 227 /* wlan config application IDs */
dflet 0:bbe98578d4c0 228 #define SL_WLAN_CFG_AP_ID (0)
dflet 0:bbe98578d4c0 229 #define SL_WLAN_CFG_GENERAL_PARAM_ID (1)
dflet 0:bbe98578d4c0 230 #define SL_WLAN_CFG_P2P_PARAM_ID (2)
dflet 0:bbe98578d4c0 231
dflet 0:bbe98578d4c0 232 /* wlan AP Config set/get options */
dflet 0:bbe98578d4c0 233 #define WLAN_AP_OPT_SSID (0)
dflet 0:bbe98578d4c0 234 #define WLAN_AP_OPT_CHANNEL (3)
dflet 0:bbe98578d4c0 235 #define WLAN_AP_OPT_HIDDEN_SSID (4)
dflet 0:bbe98578d4c0 236 #define WLAN_AP_OPT_SECURITY_TYPE (6)
dflet 0:bbe98578d4c0 237 #define WLAN_AP_OPT_PASSWORD (7)
dflet 0:bbe98578d4c0 238 #define WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE (9)
dflet 0:bbe98578d4c0 239 #define WLAN_GENERAL_PARAM_OPT_STA_TX_POWER (10)
dflet 0:bbe98578d4c0 240 #define WLAN_GENERAL_PARAM_OPT_AP_TX_POWER (11)
dflet 0:bbe98578d4c0 241
dflet 0:bbe98578d4c0 242 #define WLAN_P2P_OPT_DEV_NAME (12)
dflet 0:bbe98578d4c0 243 #define WLAN_P2P_OPT_DEV_TYPE (13)
dflet 0:bbe98578d4c0 244 #define WLAN_P2P_OPT_CHANNEL_N_REGS (14)
dflet 0:bbe98578d4c0 245 #define WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT (16)
dflet 0:bbe98578d4c0 246 #define WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS (18) /* change the scan channels and RSSI threshold using this configuration option */
dflet 0:bbe98578d4c0 247
dflet 0:bbe98578d4c0 248 /* SmartConfig CIPHER options */
dflet 0:bbe98578d4c0 249 #define SMART_CONFIG_CIPHER_SFLASH (0) /* password is not delivered by the application. The Simple Manager should */
dflet 0:bbe98578d4c0 250 /* check if the keys are stored in the Flash. */
dflet 0:bbe98578d4c0 251 #define SMART_CONFIG_CIPHER_AES (1) /* AES (other types are not supported) */
dflet 0:bbe98578d4c0 252 #define SMART_CONFIG_CIPHER_NONE (0xFF) /* do not check in the flash */
dflet 0:bbe98578d4c0 253
dflet 0:bbe98578d4c0 254
dflet 0:bbe98578d4c0 255 #define SL_POLICY_CONNECTION (0x10)
dflet 0:bbe98578d4c0 256 #define SL_POLICY_SCAN (0x20)
dflet 0:bbe98578d4c0 257 #define SL_POLICY_PM (0x30)
dflet 0:bbe98578d4c0 258 #define SL_POLICY_P2P (0x40)
dflet 0:bbe98578d4c0 259
dflet 0:bbe98578d4c0 260 #define VAL_2_MASK(position,value) ((1 & (value))<<(position))
dflet 0:bbe98578d4c0 261 #define MASK_2_VAL(position,mask) (((1 << position) & (mask)) >> (position))
dflet 0:bbe98578d4c0 262
dflet 0:bbe98578d4c0 263 #define SL_CONNECTION_POLICY(Auto,Fast,Open,anyP2P,autoSmartConfig) (VAL_2_MASK(0,Auto) | VAL_2_MASK(1,Fast) | VAL_2_MASK(2,Open) | VAL_2_MASK(3,anyP2P) | VAL_2_MASK(4,autoSmartConfig))
dflet 0:bbe98578d4c0 264 #define SL_SCAN_POLICY_EN(policy) (MASK_2_VAL(0,policy))
dflet 0:bbe98578d4c0 265 #define SL_SCAN_POLICY(Enable) (VAL_2_MASK(0,Enable))
dflet 0:bbe98578d4c0 266
dflet 0:bbe98578d4c0 267
dflet 0:bbe98578d4c0 268 #define SL_NORMAL_POLICY (0)
dflet 0:bbe98578d4c0 269 #define SL_LOW_LATENCY_POLICY (1)
dflet 0:bbe98578d4c0 270 #define SL_LOW_POWER_POLICY (2)
dflet 0:bbe98578d4c0 271 #define SL_ALWAYS_ON_POLICY (3)
dflet 0:bbe98578d4c0 272 #define SL_LONG_SLEEP_INTERVAL_POLICY (4)
dflet 0:bbe98578d4c0 273
dflet 0:bbe98578d4c0 274 #define SL_P2P_ROLE_NEGOTIATE (3)
dflet 0:bbe98578d4c0 275 #define SL_P2P_ROLE_GROUP_OWNER (15)
dflet 0:bbe98578d4c0 276 #define SL_P2P_ROLE_CLIENT (0)
dflet 0:bbe98578d4c0 277
dflet 0:bbe98578d4c0 278 #define SL_P2P_NEG_INITIATOR_ACTIVE (0)
dflet 0:bbe98578d4c0 279 #define SL_P2P_NEG_INITIATOR_PASSIVE (1)
dflet 0:bbe98578d4c0 280 #define SL_P2P_NEG_INITIATOR_RAND_BACKOFF (2)
dflet 0:bbe98578d4c0 281
dflet 0:bbe98578d4c0 282 #define POLICY_VAL_2_OPTIONS(position,mask,policy) ((mask & policy) << position )
dflet 0:bbe98578d4c0 283
dflet 0:bbe98578d4c0 284 #define SL_P2P_POLICY(p2pNegType,p2pNegInitiator) (POLICY_VAL_2_OPTIONS(0,0xF,(p2pNegType > SL_P2P_ROLE_GROUP_OWNER ? SL_P2P_ROLE_GROUP_OWNER : p2pNegType)) | \
dflet 0:bbe98578d4c0 285 POLICY_VAL_2_OPTIONS(4,0x1,(p2pNegType > SL_P2P_ROLE_GROUP_OWNER ? 1:0)) | \
dflet 0:bbe98578d4c0 286 POLICY_VAL_2_OPTIONS(5,0x3, p2pNegInitiator))
dflet 0:bbe98578d4c0 287
dflet 0:bbe98578d4c0 288
dflet 0:bbe98578d4c0 289 /* Info elements */
dflet 0:bbe98578d4c0 290
dflet 0:bbe98578d4c0 291 #define INFO_ELEMENT_DEFAULT_ID (0) /* 221 will be used */
dflet 0:bbe98578d4c0 292
dflet 0:bbe98578d4c0 293 /* info element size is up to 252 bytes (+ 3 bytes of OUI). */
dflet 0:bbe98578d4c0 294 #define INFO_ELEMENT_MAX_SIZE (252)
dflet 0:bbe98578d4c0 295
dflet 0:bbe98578d4c0 296 /* For AP - the total length of all info elements is 300 bytes (for example - 4 info elements of 75 bytes each) */
dflet 0:bbe98578d4c0 297 #define INFO_ELEMENT_MAX_TOTAL_LENGTH_AP (300)
dflet 0:bbe98578d4c0 298 /* For P2P - the total length of all info elements is 150 bytes (for example - 4 info elements of 40 bytes each) */
dflet 0:bbe98578d4c0 299 #define INFO_ELEMENT_MAX_TOTAL_LENGTH_P2P_GO (160)
dflet 0:bbe98578d4c0 300
dflet 0:bbe98578d4c0 301 #define INFO_ELEMENT_AP_ROLE (0)
dflet 0:bbe98578d4c0 302 #define INFO_ELEMENT_P2P_GO_ROLE (1)
dflet 0:bbe98578d4c0 303
dflet 0:bbe98578d4c0 304 /* we support up to 4 info elements per Role. */
dflet 0:bbe98578d4c0 305 #define MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED (4)
dflet 0:bbe98578d4c0 306
dflet 0:bbe98578d4c0 307 #define INFO_ELEMENT_DEFAULT_OUI_0 (0x08)
dflet 0:bbe98578d4c0 308 #define INFO_ELEMENT_DEFAULT_OUI_1 (0x00)
dflet 0:bbe98578d4c0 309 #define INFO_ELEMENT_DEFAULT_OUI_2 (0x28)
dflet 0:bbe98578d4c0 310
dflet 0:bbe98578d4c0 311 #define INFO_ELEMENT_DEFAULT_OUI (0x000000) /* 08, 00, 28 will be used */
dflet 0:bbe98578d4c0 312
dflet 0:bbe98578d4c0 313 /*****************************************************************************/
dflet 0:bbe98578d4c0 314 /* Structure/Enum declarations */
dflet 0:bbe98578d4c0 315 /*****************************************************************************/
dflet 0:bbe98578d4c0 316
dflet 0:bbe98578d4c0 317 typedef enum
dflet 0:bbe98578d4c0 318 {
dflet 0:bbe98578d4c0 319 RATE_1M = 1,
dflet 0:bbe98578d4c0 320 RATE_2M = 2,
dflet 0:bbe98578d4c0 321 RATE_5_5M = 3,
dflet 0:bbe98578d4c0 322 RATE_11M = 4,
dflet 0:bbe98578d4c0 323 RATE_6M = 6,
dflet 0:bbe98578d4c0 324 RATE_9M = 7,
dflet 0:bbe98578d4c0 325 RATE_12M = 8,
dflet 0:bbe98578d4c0 326 RATE_18M = 9,
dflet 0:bbe98578d4c0 327 RATE_24M = 10,
dflet 0:bbe98578d4c0 328 RATE_36M = 11,
dflet 0:bbe98578d4c0 329 RATE_48M = 12,
dflet 0:bbe98578d4c0 330 RATE_54M = 13,
dflet 0:bbe98578d4c0 331 RATE_MCS_0 = 14,
dflet 0:bbe98578d4c0 332 RATE_MCS_1 = 15,
dflet 0:bbe98578d4c0 333 RATE_MCS_2 = 16,
dflet 0:bbe98578d4c0 334 RATE_MCS_3 = 17,
dflet 0:bbe98578d4c0 335 RATE_MCS_4 = 18,
dflet 0:bbe98578d4c0 336 RATE_MCS_5 = 19,
dflet 0:bbe98578d4c0 337 RATE_MCS_6 = 20,
dflet 0:bbe98578d4c0 338 RATE_MCS_7 = 21,
dflet 0:bbe98578d4c0 339 MAX_NUM_RATES = 0xFF
dflet 0:bbe98578d4c0 340 }SlRateIndex_e;
dflet 0:bbe98578d4c0 341
dflet 0:bbe98578d4c0 342 typedef enum {
dflet 0:bbe98578d4c0 343 DEV_PW_DEFAULT=0,
dflet 0:bbe98578d4c0 344 DEV_PW_PIN_KEYPAD=1,
dflet 0:bbe98578d4c0 345 DEV_PW_PUSH_BUTTON=4,
dflet 0:bbe98578d4c0 346 DEV_PW_PIN_DISPLAY=5
dflet 0:bbe98578d4c0 347 } sl_p2p_dev_password_method;
dflet 0:bbe98578d4c0 348
dflet 0:bbe98578d4c0 349
dflet 0:bbe98578d4c0 350 typedef struct
dflet 0:bbe98578d4c0 351 {
dflet 0:bbe98578d4c0 352 _u32 status;
dflet 0:bbe98578d4c0 353 _u32 ssid_len;
dflet 0:bbe98578d4c0 354 _u8 ssid[32];
dflet 0:bbe98578d4c0 355 _u32 private_token_len;
dflet 0:bbe98578d4c0 356 _u8 private_token[32];
dflet 0:bbe98578d4c0 357 }slSmartConfigStartAsyncResponse_t;
dflet 0:bbe98578d4c0 358
dflet 0:bbe98578d4c0 359 typedef struct
dflet 0:bbe98578d4c0 360 {
dflet 0:bbe98578d4c0 361 _u16 status;
dflet 0:bbe98578d4c0 362 _u16 padding;
dflet 0:bbe98578d4c0 363 }slSmartConfigStopAsyncResponse_t;
dflet 0:bbe98578d4c0 364
dflet 0:bbe98578d4c0 365 typedef struct
dflet 0:bbe98578d4c0 366 {
dflet 0:bbe98578d4c0 367 _u16 status;
dflet 0:bbe98578d4c0 368 _u16 padding;
dflet 0:bbe98578d4c0 369 }slWlanConnFailureAsyncResponse_t;
dflet 0:bbe98578d4c0 370
dflet 0:bbe98578d4c0 371 typedef struct
dflet 0:bbe98578d4c0 372 {
dflet 0:bbe98578d4c0 373 _u8 connection_type;/* 0-STA,3-P2P_CL */
dflet 0:bbe98578d4c0 374 _u8 ssid_len;
dflet 0:bbe98578d4c0 375 _u8 ssid_name[32];
dflet 0:bbe98578d4c0 376 _u8 go_peer_device_name_len;
dflet 0:bbe98578d4c0 377 _u8 go_peer_device_name[32];
dflet 0:bbe98578d4c0 378 _u8 bssid[6];
dflet 0:bbe98578d4c0 379 _u8 reason_code;
dflet 0:bbe98578d4c0 380 _u8 padding[2];
dflet 0:bbe98578d4c0 381 } slWlanConnectAsyncResponse_t;
dflet 0:bbe98578d4c0 382
dflet 0:bbe98578d4c0 383 typedef struct
dflet 0:bbe98578d4c0 384 {
dflet 0:bbe98578d4c0 385 _u8 go_peer_device_name[32];
dflet 0:bbe98578d4c0 386 _u8 mac[6];
dflet 0:bbe98578d4c0 387 _u8 go_peer_device_name_len;
dflet 0:bbe98578d4c0 388 _u8 wps_dev_password_id;
dflet 0:bbe98578d4c0 389 _u8 own_ssid[32];/* relevant for event sta-connected only */
dflet 0:bbe98578d4c0 390 _u8 own_ssid_len;/* relevant for event sta-connected only */
dflet 0:bbe98578d4c0 391 _u8 padding[3];
dflet 0:bbe98578d4c0 392 }slPeerInfoAsyncResponse_t;
dflet 0:bbe98578d4c0 393
dflet 0:bbe98578d4c0 394
dflet 0:bbe98578d4c0 395 typedef union
dflet 0:bbe98578d4c0 396 {
dflet 0:bbe98578d4c0 397 slSmartConfigStartAsyncResponse_t smartConfigStartResponse; /*SL_WLAN_SMART_CONFIG_COMPLETE_EVENT*/
dflet 0:bbe98578d4c0 398 slSmartConfigStopAsyncResponse_t smartConfigStopResponse; /*SL_WLAN_SMART_CONFIG_STOP_EVENT */
dflet 0:bbe98578d4c0 399 slPeerInfoAsyncResponse_t APModeStaConnected; /* SL_WLAN_STA_CONNECTED_EVENT - relevant only in AP mode - holds information regarding a new STA connection */
dflet 0:bbe98578d4c0 400 slPeerInfoAsyncResponse_t APModestaDisconnected; /* SL_WLAN_STA_DISCONNECTED_EVENT - relevant only in AP mode - holds information regarding a STA disconnection */
dflet 0:bbe98578d4c0 401 slWlanConnectAsyncResponse_t STAandP2PModeWlanConnected; /* SL_WLAN_CONNECT_EVENT - relevant only in STA and P2P mode - holds information regarding a new connection */
dflet 0:bbe98578d4c0 402 slWlanConnectAsyncResponse_t STAandP2PModeDisconnected; /* SL_WLAN_DISCONNECT_EVENT - relevant only in STA and P2P mode - holds information regarding a disconnection */
dflet 0:bbe98578d4c0 403 slPeerInfoAsyncResponse_t P2PModeDevFound; /* SL_WLAN_P2P_DEV_FOUND_EVENT - relevant only in P2P mode */
dflet 0:bbe98578d4c0 404 slPeerInfoAsyncResponse_t P2PModeNegReqReceived; /* SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT - relevant only in P2P mode */
dflet 0:bbe98578d4c0 405 slWlanConnFailureAsyncResponse_t P2PModewlanConnectionFailure; /* SL_WLAN_CONNECTION_FAILED_EVENT - relevant only in P2P mode */
dflet 0:bbe98578d4c0 406
dflet 0:bbe98578d4c0 407 } SlWlanEventData_u;
dflet 0:bbe98578d4c0 408
dflet 0:bbe98578d4c0 409 typedef struct
dflet 0:bbe98578d4c0 410 {
dflet 0:bbe98578d4c0 411 _u32 Event;
dflet 0:bbe98578d4c0 412 SlWlanEventData_u EventData;
dflet 0:bbe98578d4c0 413 } SlWlanEvent_t;
dflet 0:bbe98578d4c0 414
dflet 0:bbe98578d4c0 415
dflet 0:bbe98578d4c0 416 typedef struct
dflet 0:bbe98578d4c0 417 {
dflet 0:bbe98578d4c0 418 _u32 ReceivedValidPacketsNumber; /* sum of the packets that been received OK (include filtered) */
dflet 0:bbe98578d4c0 419 _u32 ReceivedFcsErrorPacketsNumber; /* sum of the packets that been dropped due to FCS error */
dflet 0:bbe98578d4c0 420 _u32 ReceivedPlcpErrorPacketsNumber; /* sum of the packets that been dropped due to PLCP error */
dflet 0:bbe98578d4c0 421 _i16 AvarageDataCtrlRssi; /* average RSSI for all valid data packets received */
dflet 0:bbe98578d4c0 422 _i16 AvarageMgMntRssi; /* average RSSI for all valid management packets received */
dflet 0:bbe98578d4c0 423 _u16 RateHistogram[NUM_OF_RATE_INDEXES]; /* rate histogram for all valid packets received */
dflet 0:bbe98578d4c0 424 _u16 RssiHistogram[SIZE_OF_RSSI_HISTOGRAM]; /* RSSI histogram from -40 until -87 (all below and above\n RSSI will appear in the first and last cells */
dflet 0:bbe98578d4c0 425 _u32 StartTimeStamp; /* the time stamp started collecting the statistics in uSec */
dflet 0:bbe98578d4c0 426 _u32 GetTimeStamp; /* the time stamp called the get statistics command */
dflet 0:bbe98578d4c0 427 }SlGetRxStatResponse_t;
dflet 0:bbe98578d4c0 428
dflet 0:bbe98578d4c0 429
dflet 0:bbe98578d4c0 430 typedef struct
dflet 0:bbe98578d4c0 431 {
dflet 0:bbe98578d4c0 432 _u8 ssid[MAXIMAL_SSID_LENGTH];
dflet 0:bbe98578d4c0 433 _u8 ssid_len;
dflet 0:bbe98578d4c0 434 _u8 sec_type;
dflet 0:bbe98578d4c0 435 _u8 bssid[SL_BSSID_LENGTH];
dflet 0:bbe98578d4c0 436 _i8 rssi;
dflet 0:bbe98578d4c0 437 _i8 reserved[3];
dflet 0:bbe98578d4c0 438 }Sl_WlanNetworkEntry_t;
dflet 0:bbe98578d4c0 439
dflet 0:bbe98578d4c0 440
dflet 0:bbe98578d4c0 441 typedef struct
dflet 0:bbe98578d4c0 442 {
dflet 0:bbe98578d4c0 443 _u8 Type;
dflet 0:bbe98578d4c0 444 _i8* Key;
dflet 0:bbe98578d4c0 445 _u8 KeyLen;
dflet 0:bbe98578d4c0 446 }SlSecParams_t;
dflet 0:bbe98578d4c0 447
dflet 0:bbe98578d4c0 448 typedef struct
dflet 0:bbe98578d4c0 449 {
dflet 0:bbe98578d4c0 450 _i8* User;
dflet 0:bbe98578d4c0 451 _u8 UserLen;
dflet 0:bbe98578d4c0 452 _i8* AnonUser;
dflet 0:bbe98578d4c0 453 _u8 AnonUserLen;
dflet 0:bbe98578d4c0 454 _u8 CertIndex; /* not supported */
dflet 0:bbe98578d4c0 455 _u32 EapMethod;
dflet 0:bbe98578d4c0 456 }SlSecParamsExt_t;
dflet 0:bbe98578d4c0 457
dflet 0:bbe98578d4c0 458 typedef struct
dflet 0:bbe98578d4c0 459 {
dflet 0:bbe98578d4c0 460 _i8 User[32];
dflet 0:bbe98578d4c0 461 _u8 UserLen;
dflet 0:bbe98578d4c0 462 _i8 AnonUser[32];
dflet 0:bbe98578d4c0 463 _u8 AnonUserLen;
dflet 0:bbe98578d4c0 464 _u8 CertIndex; //not supported
dflet 0:bbe98578d4c0 465 _u32 EapMethod;
dflet 0:bbe98578d4c0 466 }SlGetSecParamsExt_t;
dflet 0:bbe98578d4c0 467
dflet 0:bbe98578d4c0 468 typedef enum
dflet 0:bbe98578d4c0 469 {
dflet 0:bbe98578d4c0 470 ROLE_STA = 0,
dflet 0:bbe98578d4c0 471 ROLE_AP = 2,
dflet 0:bbe98578d4c0 472 ROLE_P2P = 3,
dflet 0:bbe98578d4c0 473 ROLE_STA_ERR = -1, /* Failure to load MAC/PHY in STA role */
dflet 0:bbe98578d4c0 474 ROLE_AP_ERR = -ROLE_AP, /* Failure to load MAC/PHY in AP role */
dflet 0:bbe98578d4c0 475 ROLE_P2P_ERR = -ROLE_P2P /* Failure to load MAC/PHY in P2P role */
dflet 0:bbe98578d4c0 476 }SlWlanMode_t;
dflet 0:bbe98578d4c0 477
dflet 0:bbe98578d4c0 478 typedef struct
dflet 0:bbe98578d4c0 479 {
dflet 0:bbe98578d4c0 480 _u32 G_Channels_mask;
dflet 0:bbe98578d4c0 481 _i32 rssiThershold;
dflet 0:bbe98578d4c0 482 }slWlanScanParamCommand_t;
dflet 0:bbe98578d4c0 483
dflet 0:bbe98578d4c0 484
dflet 0:bbe98578d4c0 485 typedef struct
dflet 0:bbe98578d4c0 486 {
dflet 0:bbe98578d4c0 487 _u8 id;
dflet 0:bbe98578d4c0 488 _u8 oui[3];
dflet 0:bbe98578d4c0 489 _u16 length;
dflet 0:bbe98578d4c0 490 _u8 data[252];
dflet 0:bbe98578d4c0 491 } sl_protocol_InfoElement_t;
dflet 0:bbe98578d4c0 492
dflet 0:bbe98578d4c0 493 typedef struct
dflet 0:bbe98578d4c0 494 {
dflet 0:bbe98578d4c0 495 _u8 index; /* 0 - MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED */
dflet 0:bbe98578d4c0 496 _u8 role; /* bit0: AP = 0, GO = 1 */
dflet 0:bbe98578d4c0 497 sl_protocol_InfoElement_t ie;
dflet 0:bbe98578d4c0 498 } sl_protocol_WlanSetInfoElement_t;
dflet 0:bbe98578d4c0 499
dflet 0:bbe98578d4c0 500
dflet 0:bbe98578d4c0 501 /*****************************************************************************/
dflet 0:bbe98578d4c0 502 /* Function prototypes */
dflet 0:bbe98578d4c0 503 /*****************************************************************************/
dflet 0:bbe98578d4c0 504
dflet 0:bbe98578d4c0 505
dflet 0:bbe98578d4c0 506 /*!
dflet 0:bbe98578d4c0 507 \brief Connect to wlan network as a station
dflet 0:bbe98578d4c0 508
dflet 0:bbe98578d4c0 509 \param[in] sec_type security types options: \n
dflet 0:bbe98578d4c0 510 - SL_SEC_TYPE_OPEN
dflet 0:bbe98578d4c0 511 - SL_SEC_TYPE_WEP
dflet 0:bbe98578d4c0 512 - SL_SEC_TYPE_WPA_WPA2
dflet 0:bbe98578d4c0 513 - SL_SEC_TYPE_WPA_ENT
dflet 0:bbe98578d4c0 514 - SL_SEC_TYPE_WPS_PBC
dflet 0:bbe98578d4c0 515 - SL_SEC_TYPE_WPS_PIN
dflet 0:bbe98578d4c0 516
dflet 0:bbe98578d4c0 517 \param[in] pName up to 32 bytes in case of STA the name is the SSID of the Access Point
dflet 0:bbe98578d4c0 518 \param[in] NameLen name length
dflet 0:bbe98578d4c0 519 \param[in] pMacAddr 6 bytes for MAC address
dflet 0:bbe98578d4c0 520 \param[in] pSecParams Security parameters (use NULL key for SL_SEC_TYPE_OPEN)
dflet 0:bbe98578d4c0 521 \param[in] pSecExtParams Enterprise parameters (set NULL in case Enterprise parameters is not in use)
dflet 0:bbe98578d4c0 522
dflet 0:bbe98578d4c0 523 \return On success, zero is returned. On error, negative is returned
dflet 0:bbe98578d4c0 524 In case error number (-71) is returned, it indicates a connection was activated while the device it running in AP role
dflet 0:bbe98578d4c0 525
dflet 0:bbe98578d4c0 526 \sa sl_WlanDisconnect
dflet 0:bbe98578d4c0 527 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 528 \warning In this version only single enterprise mode could be used
dflet 0:bbe98578d4c0 529 SL_SEC_TYPE_WPA is a deprecated definition, the new definition is SL_SEC_TYPE_WPA_WPA2
dflet 0:bbe98578d4c0 530 */
dflet 0:bbe98578d4c0 531 #if _SL_INCLUDE_FUNC(sl_WlanConnect)
dflet 0:bbe98578d4c0 532 _i16 sl_WlanConnect(_i8* pName, _i16 NameLen, _u8 *pMacAddr, SlSecParams_t* pSecParams , SlSecParamsExt_t* pSecExtParams);
dflet 0:bbe98578d4c0 533 #endif
dflet 0:bbe98578d4c0 534
dflet 0:bbe98578d4c0 535 /*!
dflet 0:bbe98578d4c0 536 \brief wlan disconnect
dflet 0:bbe98578d4c0 537
dflet 0:bbe98578d4c0 538 Disconnect connection
dflet 0:bbe98578d4c0 539
dflet 0:bbe98578d4c0 540 \return 0 disconnected done, other already disconnected
dflet 0:bbe98578d4c0 541
dflet 0:bbe98578d4c0 542 \sa sl_WlanConnect
dflet 0:bbe98578d4c0 543 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 544 \warning
dflet 0:bbe98578d4c0 545 */
dflet 0:bbe98578d4c0 546 #if _SL_INCLUDE_FUNC(sl_WlanDisconnect)
dflet 0:bbe98578d4c0 547 _i16 sl_WlanDisconnect(void);
dflet 0:bbe98578d4c0 548 #endif
dflet 0:bbe98578d4c0 549
dflet 0:bbe98578d4c0 550 /*!
dflet 0:bbe98578d4c0 551 \brief add profile
dflet 0:bbe98578d4c0 552
dflet 0:bbe98578d4c0 553 When auto start is enabled, the device connects to a
dflet 0:bbe98578d4c0 554 station from the profiles table. Up to 7 profiles are
dflet 0:bbe98578d4c0 555 supported. If several profiles configured the device chose
dflet 0:bbe98578d4c0 556 the highest priority profile, within each priority group,
dflet 0:bbe98578d4c0 557 device will chose profile based on security policy, signal
dflet 0:bbe98578d4c0 558 strength, etc parameters.
dflet 0:bbe98578d4c0 559
dflet 0:bbe98578d4c0 560
dflet 0:bbe98578d4c0 561 \param[in] pName up to 32 bytes in case of STA the name is the
dflet 0:bbe98578d4c0 562 SSID of the Access Point
dflet 0:bbe98578d4c0 563 in case of P2P the name is the remote device name
dflet 0:bbe98578d4c0 564 \param[in] NameLen name length
dflet 0:bbe98578d4c0 565 \param[in] pMacAddr 6 bytes for MAC address
dflet 0:bbe98578d4c0 566 \param[in] pSecParams Security parameters - security type
dflet 0:bbe98578d4c0 567 (SL_SEC_TYPE_OPEN,SL_SEC_TYPE_WEP,SL_SEC_TYPE_WPA_WPA2,
dflet 0:bbe98578d4c0 568 SL_SEC_TYPE_P2P_PBC,SL_SEC_TYPE_P2P_PIN_KEYPAD,SL_SEC_TYPE_P2P_PIN_DISPLAY, SL_SEC_TYPE_WPA_ENT), key, and key length
dflet 0:bbe98578d4c0 569 in case of p2p security type pin the key refers to pin code
dflet 0:bbe98578d4c0 570 \param[in] pSecExtParams Enterprise parameters - identity, identity length,
dflet 0:bbe98578d4c0 571 Anonymous, Anonymous length, CertIndex (not supported,
dflet 0:bbe98578d4c0 572 certificates need to be placed in a specific file ID),
dflet 0:bbe98578d4c0 573 EapMethod.Use NULL in case Enterprise parameters is not in use
dflet 0:bbe98578d4c0 574
dflet 0:bbe98578d4c0 575 \param[in] Priority profile priority. Lowest priority: 0
dflet 0:bbe98578d4c0 576 \param[in] Options Not supported
dflet 0:bbe98578d4c0 577
dflet 0:bbe98578d4c0 578 \return On success, profile stored index is returned. On error, negative value is returned
dflet 0:bbe98578d4c0 579
dflet 0:bbe98578d4c0 580 \sa sl_WlanProfileGet , sl_WlanProfileDel
dflet 0:bbe98578d4c0 581 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 582 \warning Only one Enterprise profile is supported.
dflet 0:bbe98578d4c0 583 Please Note that in case of adding an existing profile (compared by pName,pMACAddr and security type)
dflet 0:bbe98578d4c0 584 the old profile will be deleted and the same index will be returned.
dflet 0:bbe98578d4c0 585 SL_SEC_TYPE_WPA is a deprecated definition, the new definition is SL_SEC_TYPE_WPA_WPA2
dflet 0:bbe98578d4c0 586
dflet 0:bbe98578d4c0 587 */
dflet 0:bbe98578d4c0 588 #if _SL_INCLUDE_FUNC(sl_WlanProfileAdd)
dflet 0:bbe98578d4c0 589 _i16 sl_WlanProfileAdd(_i8* pName, _i16 NameLen, _u8 *pMacAddr, SlSecParams_t* pSecParams , SlSecParamsExt_t* pSecExtParams, _u32 Priority, _u32 Options);
dflet 0:bbe98578d4c0 590 #endif
dflet 0:bbe98578d4c0 591
dflet 0:bbe98578d4c0 592 /*!
dflet 0:bbe98578d4c0 593 \brief get profile
dflet 0:bbe98578d4c0 594
dflet 0:bbe98578d4c0 595 read profile from the device
dflet 0:bbe98578d4c0 596
dflet 0:bbe98578d4c0 597 \param[in] Index profile stored index, if index does not exists
dflet 0:bbe98578d4c0 598 error is return
dflet 0:bbe98578d4c0 599 \param[out] pName up to 32 bytes, in case of sta mode the name of the Access Point
dflet 0:bbe98578d4c0 600 in case of p2p mode the name of the Remote Device
dflet 0:bbe98578d4c0 601 \param[out] pNameLen name length
dflet 0:bbe98578d4c0 602 \param[out] pMacAddr 6 bytes for MAC address
dflet 0:bbe98578d4c0 603 \param[out] pSecParams security parameters - security type
dflet 0:bbe98578d4c0 604 (LAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or
dflet 0:bbe98578d4c0 605 WLAN_SEC_WPA2, WLAN_SEC_P2P_PBC, WLAN_SEC_P2P_PIN_KEYPAD or WLAN_SEC_P2P_DISPLAY), key and key length are not
dflet 0:bbe98578d4c0 606 in case of p2p security type pin the key refers to pin code
dflet 0:bbe98578d4c0 607 return due to security reasons.
dflet 0:bbe98578d4c0 608 \param[out] pSecExtParams enterprise parameters - identity, identity
dflet 0:bbe98578d4c0 609 length, Anonymous, Anonymous length
dflet 0:bbe98578d4c0 610 CertIndex (not supported), EapMethod.
dflet 0:bbe98578d4c0 611 \param[out] Priority profile priority
dflet 0:bbe98578d4c0 612
dflet 0:bbe98578d4c0 613 \return On success, Profile security type is returned (0 or positive number). On error, -1 is
dflet 0:bbe98578d4c0 614 returned
dflet 0:bbe98578d4c0 615
dflet 0:bbe98578d4c0 616 \sa sl_WlanProfileAdd , sl_WlanProfileDel
dflet 0:bbe98578d4c0 617 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 618 \warning
dflet 0:bbe98578d4c0 619 */
dflet 0:bbe98578d4c0 620 #if _SL_INCLUDE_FUNC(sl_WlanProfileGet)
dflet 0:bbe98578d4c0 621 _i16 sl_WlanProfileGet(_i16 Index,_i8* pName, _i16 *pNameLen, _u8 *pMacAddr, SlSecParams_t* pSecParams, SlGetSecParamsExt_t* pSecExtParams, _u32 *pPriority);
dflet 0:bbe98578d4c0 622 #endif
dflet 0:bbe98578d4c0 623
dflet 0:bbe98578d4c0 624 /*!
dflet 0:bbe98578d4c0 625 \brief Delete WLAN profile
dflet 0:bbe98578d4c0 626
dflet 0:bbe98578d4c0 627 Delete WLAN profile
dflet 0:bbe98578d4c0 628
dflet 0:bbe98578d4c0 629 \param[in] index number of profile to delete.Possible values are 0 to 6.
dflet 0:bbe98578d4c0 630 Index value 255 will delete all saved profiles
dflet 0:bbe98578d4c0 631
dflet 0:bbe98578d4c0 632 \return On success, zero is returned. On error, -1 is
dflet 0:bbe98578d4c0 633 returned
dflet 0:bbe98578d4c0 634
dflet 0:bbe98578d4c0 635 \sa sl_WlanProfileAdd , sl_WlanProfileGet
dflet 0:bbe98578d4c0 636 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 637 \warning
dflet 0:bbe98578d4c0 638 */
dflet 0:bbe98578d4c0 639 #if _SL_INCLUDE_FUNC(sl_WlanProfileDel)
dflet 0:bbe98578d4c0 640 _i16 sl_WlanProfileDel(_i16 Index);
dflet 0:bbe98578d4c0 641 #endif
dflet 0:bbe98578d4c0 642
dflet 0:bbe98578d4c0 643 /*!
dflet 0:bbe98578d4c0 644 \brief Set policy values
dflet 0:bbe98578d4c0 645
dflet 0:bbe98578d4c0 646 \param[in] Type Type of policy to be modified. The Options are:\n
dflet 0:bbe98578d4c0 647 - SL_POLICY_CONNECTION
dflet 0:bbe98578d4c0 648 - SL_POLICY_SCAN
dflet 0:bbe98578d4c0 649 - SL_POLICY_PM
dflet 0:bbe98578d4c0 650 - SL_POLICY_P2P
dflet 0:bbe98578d4c0 651 \param[in] Policy The option value which depends on action type
dflet 0:bbe98578d4c0 652 \param[in] pVal An optional value pointer
dflet 0:bbe98578d4c0 653 \param[in] ValLen An optional value length, in bytes
dflet 0:bbe98578d4c0 654 \return On success, zero is returned. On error, -1 is
dflet 0:bbe98578d4c0 655 returned
dflet 0:bbe98578d4c0 656 \sa sl_WlanPolicyGet
dflet 0:bbe98578d4c0 657 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 658 \warning
dflet 0:bbe98578d4c0 659 \par
dflet 0:bbe98578d4c0 660 SL_POLICY_CONNECTION type defines three options available to connect the CC31xx device to the AP: \n
dflet 0:bbe98578d4c0 661
dflet 0:bbe98578d4c0 662 - If Auto Connect is set, the CC31xx device tries to automatically reconnect to one of its stored profiles, each time the connection fails or the device is rebooted.\n
dflet 0:bbe98578d4c0 663 To set this option, use: \n
dflet 0:bbe98578d4c0 664 <b> sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(1,0,0,0,0),NULL,0) </b>
dflet 0:bbe98578d4c0 665 - If Fast Connect is set, the CC31xx device tries to establish a fast connection to AP. \n
dflet 0:bbe98578d4c0 666 To set this option, use: \n
dflet 0:bbe98578d4c0 667 <b> sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,1,0,0,0),NULL,0) </b>
dflet 0:bbe98578d4c0 668 - (relevant for P2P mode only) - If Any P2P is set, CC31xx/CC32xx device tries to automatically connect to the first P2P device available, \n
dflet 0:bbe98578d4c0 669 supporting push button only. To set this option, use: \n
dflet 0:bbe98578d4c0 670 <b> sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,0,0,1,0),NULL,0) </b>
dflet 0:bbe98578d4c0 671 - For auto smart config upon restart (any command from Host will end this state) use: \n
dflet 0:bbe98578d4c0 672 <b> sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(0,0,0,0,1),NULL,0) </b> \n
dflet 0:bbe98578d4c0 673 The options above could be combined to a single action, if more than one action is required. \n
dflet 0:bbe98578d4c0 674 \par
dflet 0:bbe98578d4c0 675 SL_POLICY_SCAN defines system scan time interval in case there is no connection. Default interval is 10 minutes. \n
dflet 0:bbe98578d4c0 676 After settings scan interval, an immediate scan is activated. The next scan will be based on the interval settings. \n
dflet 0:bbe98578d4c0 677 - For example, setting scan interval to 1 minute interval use: \n
dflet 0:bbe98578d4c0 678 _u32 intervalInSeconds = 60; \n
dflet 0:bbe98578d4c0 679 #define SL_SCAN_ENABLE 1 \n<b>
dflet 0:bbe98578d4c0 680 sl_WlanPolicySet(SL_POLICY_SCAN,SL_SCAN_ENABLE, (_u8 *)&intervalInSeconds,sizeof(intervalInSeconds)); </b>\n
dflet 0:bbe98578d4c0 681
dflet 0:bbe98578d4c0 682 - For example, disable scan: \n
dflet 0:bbe98578d4c0 683 #define SL_SCAN_DISABLE 0 \n<b>
dflet 0:bbe98578d4c0 684 sl_WlanPolicySet(SL_POLICY_SCAN,SL_SCAN_DISABLE,0,0); </b>\n
dflet 0:bbe98578d4c0 685 \par
dflet 0:bbe98578d4c0 686 SL_POLICY_PM defines a power management policy for Station mode only:
dflet 0:bbe98578d4c0 687 - For setting normal power management (default) policy use: <b> sl_WlanPolicySet(SL_POLICY_PM , SL_NORMAL_POLICY, NULL,0) </b>
dflet 0:bbe98578d4c0 688 - For setting low latency power management policy use: <b> sl_WlanPolicySet(SL_POLICY_PM , SL_LOW_LATENCY_POLICY, NULL,0) </b>
dflet 0:bbe98578d4c0 689 - For setting low power management policy use: <b> sl_WlanPolicySet(SL_POLICY_PM , SL_LOW_POWER_POLICY, NULL,0) </b>
dflet 0:bbe98578d4c0 690 - For setting always on power management policy use: <b> sl_WlanPolicySet(SL_POLICY_PM , SL_ALWAYS_ON_POLICY, NULL,0) </b>
dflet 0:bbe98578d4c0 691 - For setting Long Sleep Interval policy use: \n
dflet 0:bbe98578d4c0 692 _u16 PolicyBuff[4] = {0,0,800,0}; // PolicyBuff[2] is max sleep time in mSec \n<b>
dflet 0:bbe98578d4c0 693 sl_WlanPolicySet(SL_POLICY_PM , SL_LONG_SLEEP_INTERVAL_POLICY, (_u8*)PolicyBuff,sizeof(PolicyBuff)); </b>\n
dflet 0:bbe98578d4c0 694
dflet 0:bbe98578d4c0 695 SL_POLICY_P2P defines p2p negotiation policy parameters for P2P role:
dflet 0:bbe98578d4c0 696 - To set intent negotiation value, set on of the following:
dflet 0:bbe98578d4c0 697 SL_P2P_ROLE_NEGOTIATE - intent 3
dflet 0:bbe98578d4c0 698 SL_P2P_ROLE_GROUP_OWNER - intent 15
dflet 0:bbe98578d4c0 699 SL_P2P_ROLE_CLIENT - intent 0
dflet 0:bbe98578d4c0 700 - To set negotiation initiator value (initiator policy of first negotiation action frame), set on of the following:
dflet 0:bbe98578d4c0 701 SL_P2P_NEG_INITIATOR_ACTIVE
dflet 0:bbe98578d4c0 702 SL_P2P_NEG_INITIATOR_PASSIVE
dflet 0:bbe98578d4c0 703 SL_P2P_NEG_INITIATOR_RAND_BACKOFF
dflet 0:bbe98578d4c0 704 For example: \n
dflet 0:bbe98578d4c0 705 <b>sl_WlanPolicySet(SL_POLICY_P2P, SL_P2P_POLICY(SL_P2P_ROLE_NEGOTIATE,SL_P2P_NEG_INITIATOR_RAND_BACKOFF),NULL,0) </b>
dflet 0:bbe98578d4c0 706
dflet 0:bbe98578d4c0 707 */
dflet 0:bbe98578d4c0 708 #if _SL_INCLUDE_FUNC(sl_WlanPolicySet)
dflet 0:bbe98578d4c0 709 _i16 sl_WlanPolicySet(_u8 Type , const _u8 Policy, _u8 *pVal,_u8 ValLen);
dflet 0:bbe98578d4c0 710 #endif
dflet 0:bbe98578d4c0 711 /*!
dflet 0:bbe98578d4c0 712 \brief get policy values
dflet 0:bbe98578d4c0 713
dflet 0:bbe98578d4c0 714 \param[in] Type SL_POLICY_CONNECTION, SL_POLICY_SCAN, SL_POLICY_PM,SL_POLICY_P2P \n
dflet 0:bbe98578d4c0 715
dflet 0:bbe98578d4c0 716 \param[in] Policy argument may be set to any value \n
dflet 0:bbe98578d4c0 717
dflet 0:bbe98578d4c0 718 \param[out] The returned values, depends on each policy type, will be stored in the allocated buffer pointed by pVal
dflet 0:bbe98578d4c0 719 with a maximum buffer length set by the calling function and pointed to by argument *pValLen
dflet 0:bbe98578d4c0 720
dflet 0:bbe98578d4c0 721 \return On success, zero is returned. On error, -1 is returned
dflet 0:bbe98578d4c0 722
dflet 0:bbe98578d4c0 723 \sa sl_WlanPolicySet
dflet 0:bbe98578d4c0 724
dflet 0:bbe98578d4c0 725 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 726
dflet 0:bbe98578d4c0 727 \warning The value pointed by the argument *pValLen should be set to a value different from 0 and
dflet 0:bbe98578d4c0 728 greater than the buffer length returned from the SL device. Otherwise, an error will be returned.
dflet 0:bbe98578d4c0 729
dflet 0:bbe98578d4c0 730 */
dflet 0:bbe98578d4c0 731 #if _SL_INCLUDE_FUNC(sl_WlanPolicyGet)
dflet 0:bbe98578d4c0 732 _i16 sl_WlanPolicyGet(_u8 Type , _u8 Policy,_u8 *pVal,_u8 *pValLen);
dflet 0:bbe98578d4c0 733 #endif
dflet 0:bbe98578d4c0 734 /*!
dflet 0:bbe98578d4c0 735 \brief Gets the WLAN scan operation results
dflet 0:bbe98578d4c0 736
dflet 0:bbe98578d4c0 737 Gets scan results , gets entry from scan result table
dflet 0:bbe98578d4c0 738
dflet 0:bbe98578d4c0 739 \param[in] Index - Starting index identifier (range 0-19) for getting scan results
dflet 0:bbe98578d4c0 740 \param[in] Count - How many entries to fetch. Max is (20-"Index").
dflet 0:bbe98578d4c0 741 \param[out] pEntries - pointer to an allocated Sl_WlanNetworkEntry_t.
dflet 0:bbe98578d4c0 742 the number of array items should match "Count"
dflet 0:bbe98578d4c0 743 sec_type: SL_SCAN_SEC_TYPE_OPEN, SL_SCAN_SEC_TYPE_WEP, SL_SCAN_SEC_TYPE_WPA or SL_SCAN_SEC_TYPE_WPA2
dflet 0:bbe98578d4c0 744
dflet 0:bbe98578d4c0 745
dflet 0:bbe98578d4c0 746 \return Number of valid networks list items
dflet 0:bbe98578d4c0 747
dflet 0:bbe98578d4c0 748 \sa
dflet 0:bbe98578d4c0 749 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 750 \warning This command do not initiate any active scanning action
dflet 0:bbe98578d4c0 751 \par Example:
dflet 0:bbe98578d4c0 752 \code An example of fetching max 10 results:
dflet 0:bbe98578d4c0 753
dflet 0:bbe98578d4c0 754 Sl_WlanNetworkEntry_t netEntries[10];
dflet 0:bbe98578d4c0 755 _i16 resultsCount = sl_WlanGetNetworkList(0,10,&netEntries[0]);
dflet 0:bbe98578d4c0 756 for(i=0; i< resultsCount; i++)
dflet 0:bbe98578d4c0 757 {
dflet 0:bbe98578d4c0 758 printf("%s\n",netEntries[i].ssid);
dflet 0:bbe98578d4c0 759 }
dflet 0:bbe98578d4c0 760 \endcode
dflet 0:bbe98578d4c0 761 */
dflet 0:bbe98578d4c0 762 #if _SL_INCLUDE_FUNC(sl_WlanGetNetworkList)
dflet 0:bbe98578d4c0 763 _i16 sl_WlanGetNetworkList(_u8 Index, _u8 Count, Sl_WlanNetworkEntry_t *pEntries);
dflet 0:bbe98578d4c0 764 #endif
dflet 0:bbe98578d4c0 765
dflet 0:bbe98578d4c0 766 /*!
dflet 0:bbe98578d4c0 767 \brief Start collecting wlan RX statistics, for unlimited time.
dflet 0:bbe98578d4c0 768
dflet 0:bbe98578d4c0 769 \return On success, zero is returned. On error, -1 is returned
dflet 0:bbe98578d4c0 770
dflet 0:bbe98578d4c0 771 \sa sl_WlanRxStatStop sl_WlanRxStatGet
dflet 0:bbe98578d4c0 772 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 773 \warning This API is deprecated and should be removed for next release
dflet 0:bbe98578d4c0 774 \par Example:
dflet 0:bbe98578d4c0 775 \code Getting wlan RX statistics:
dflet 0:bbe98578d4c0 776
dflet 0:bbe98578d4c0 777 void RxStatCollectTwice()
dflet 0:bbe98578d4c0 778 {
dflet 0:bbe98578d4c0 779 SlGetRxStatResponse_t rxStat;
dflet 0:bbe98578d4c0 780 _i16 rawSocket;
dflet 0:bbe98578d4c0 781 _i8 DataFrame[200];
dflet 0:bbe98578d4c0 782 struct SlTimeval_t timeval;
dflet 0:bbe98578d4c0 783 timeval.tv_sec = 0; // Seconds
dflet 0:bbe98578d4c0 784 timeval.tv_usec = 20000; // Microseconds. 10000 microseconds resolution
dflet 0:bbe98578d4c0 785
dflet 0:bbe98578d4c0 786 sl_WlanRxStatStart(); // set statistics mode
dflet 0:bbe98578d4c0 787
dflet 0:bbe98578d4c0 788 rawSocket = sl_Socket(SL_AF_RF, SL_SOCK_RAW, eChannel);
dflet 0:bbe98578d4c0 789 // set timeout - in case we have no activity for the specified channel
dflet 0:bbe98578d4c0 790 sl_SetSockOpt(rawSocket,SL_SOL_SOCKET,SL_SO_RCVTIMEO, &timeval, sizeof(timeval)); // Enable receive timeout
dflet 0:bbe98578d4c0 791 status = sl_Recv(rawSocket, DataFrame, sizeof(DataFrame), 0);
dflet 0:bbe98578d4c0 792
dflet 0:bbe98578d4c0 793 Sleep(1000); // sleep for 1 sec
dflet 0:bbe98578d4c0 794 sl_WlanRxStatGet(&rxStat,0); // statistics has been cleared upon read
dflet 0:bbe98578d4c0 795 Sleep(1000); // sleep for 1 sec
dflet 0:bbe98578d4c0 796 sl_WlanRxStatGet(&rxStat,0);
dflet 0:bbe98578d4c0 797
dflet 0:bbe98578d4c0 798 }
dflet 0:bbe98578d4c0 799 \endcode
dflet 0:bbe98578d4c0 800 */
dflet 0:bbe98578d4c0 801 #if _SL_INCLUDE_FUNC(sl_WlanRxStatStart)
dflet 0:bbe98578d4c0 802 _i16 sl_WlanRxStatStart(void);
dflet 0:bbe98578d4c0 803 #endif
dflet 0:bbe98578d4c0 804
dflet 0:bbe98578d4c0 805
dflet 0:bbe98578d4c0 806 /*!
dflet 0:bbe98578d4c0 807 \brief Stop collecting wlan RX statistic, (if previous called sl_WlanRxStatStart)
dflet 0:bbe98578d4c0 808
dflet 0:bbe98578d4c0 809 \return On success, zero is returned. On error, -1 is returned
dflet 0:bbe98578d4c0 810
dflet 0:bbe98578d4c0 811 \sa sl_WlanRxStatStart sl_WlanRxStatGet
dflet 0:bbe98578d4c0 812 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 813 \warning This API is deprecated and should be removed for next release
dflet 0:bbe98578d4c0 814 */
dflet 0:bbe98578d4c0 815 #if _SL_INCLUDE_FUNC(sl_WlanRxStatStop)
dflet 0:bbe98578d4c0 816 _i16 sl_WlanRxStatStop(void);
dflet 0:bbe98578d4c0 817 #endif
dflet 0:bbe98578d4c0 818
dflet 0:bbe98578d4c0 819
dflet 0:bbe98578d4c0 820 /*!
dflet 0:bbe98578d4c0 821 \brief Get wlan RX statistics. upon calling this command, the statistics counters will be cleared.
dflet 0:bbe98578d4c0 822
dflet 0:bbe98578d4c0 823 \param[in] Flags should be 0 ( not applicable right now, will be added the future )
dflet 0:bbe98578d4c0 824 \param[in] pRxStat a pointer to SlGetRxStatResponse_t filled with Rx statistics results
dflet 0:bbe98578d4c0 825 \return On success, zero is returned. On error, -1 is returned
dflet 0:bbe98578d4c0 826
dflet 0:bbe98578d4c0 827 \sa sl_WlanRxStatStart sl_WlanRxStatStop
dflet 0:bbe98578d4c0 828 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 829 \warning
dflet 0:bbe98578d4c0 830 */
dflet 0:bbe98578d4c0 831 #if _SL_INCLUDE_FUNC(sl_WlanRxStatGet)
dflet 0:bbe98578d4c0 832 _i16 sl_WlanRxStatGet(SlGetRxStatResponse_t *pRxStat,_u32 Flags);
dflet 0:bbe98578d4c0 833 #endif
dflet 0:bbe98578d4c0 834
dflet 0:bbe98578d4c0 835
dflet 0:bbe98578d4c0 836 /*!
dflet 0:bbe98578d4c0 837 \brief Stop Smart Config procedure. Once Smart Config will be stopped,
dflet 0:bbe98578d4c0 838 Asynchronous event will be received - SL_OPCODE_WLAN_SMART_CONFIG_STOP_ASYNC_RESPONSE.
dflet 0:bbe98578d4c0 839
dflet 0:bbe98578d4c0 840 \param[in] none
dflet 0:bbe98578d4c0 841 \param[out] none
dflet 0:bbe98578d4c0 842
dflet 0:bbe98578d4c0 843 \return 0 - if Stop Smart Config is about to be executed without errors.
dflet 0:bbe98578d4c0 844
dflet 0:bbe98578d4c0 845 \sa sl_WlanSmartConfigStart
dflet 0:bbe98578d4c0 846 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 847 \warning This API is deprecated and should be removed for next release
dflet 0:bbe98578d4c0 848
dflet 0:bbe98578d4c0 849 */
dflet 0:bbe98578d4c0 850 #if _SL_INCLUDE_FUNC(sl_WlanSmartConfigStop)
dflet 0:bbe98578d4c0 851 _i16 sl_WlanSmartConfigStop(void);
dflet 0:bbe98578d4c0 852 #endif
dflet 0:bbe98578d4c0 853
dflet 0:bbe98578d4c0 854 /*!
dflet 0:bbe98578d4c0 855 \brief Start Smart Config procedure
dflet 0:bbe98578d4c0 856 \par
dflet 0:bbe98578d4c0 857 The target of the procedure is to let the \n
dflet 0:bbe98578d4c0 858 device to gain the network parameters: SSID and Password (if network is secured) \n
dflet 0:bbe98578d4c0 859 and to connect to it once located in the network range. \n
dflet 0:bbe98578d4c0 860 An external application should be used on a device connected to any mobile network. \n
dflet 0:bbe98578d4c0 861 The external application will transmit over the air the network parameters in secured manner.\n
dflet 0:bbe98578d4c0 862 The Password may be decrypted using a Key. \n
dflet 0:bbe98578d4c0 863 The decryption method may be decided in the command or embedded in the Flash. \n
dflet 0:bbe98578d4c0 864 The procedure can be activated for 1-3 group ID in the range of BIT_0 - BIT_15 where the default group ID id 0 (BIT_0) \n
dflet 0:bbe98578d4c0 865 Once Smart Config has ended successfully, Asynchronous event will be received - \n
dflet 0:bbe98578d4c0 866 SL_OPCODE_WLAN_SMART_CONFIG_START_ASYNC_RESPONSE. \n
dflet 0:bbe98578d4c0 867 The Event will hold the SSID and an extra field that might have been delivered as well (i.e. - device name)
dflet 0:bbe98578d4c0 868
dflet 0:bbe98578d4c0 869 \param[in] groupIdBitmask - each bit represent a group ID that should be searched.
dflet 0:bbe98578d4c0 870 The Default group ID id BIT_0. 2 more group can be searched
dflet 0:bbe98578d4c0 871 in addition. The range is BIT_0 - BIT_15.
dflet 0:bbe98578d4c0 872 \param[in] chiper - 0: check in flash, 1 - AES, 0xFF - do not check in flash
dflet 0:bbe98578d4c0 873 \param[in] publicKeyLen - public key len (used for the default group ID - BIT_0)
dflet 0:bbe98578d4c0 874 \param[in] group1KeyLen - group ID1 length
dflet 0:bbe98578d4c0 875 \param[in] group2KeyLen - group ID2 length
dflet 0:bbe98578d4c0 876 \param[in] publicKey - public key (used for the default group ID - BIT_0)
dflet 0:bbe98578d4c0 877 \param[in] group1Key - group ID1 key
dflet 0:bbe98578d4c0 878 \param[in] group2Key - group ID2 key
dflet 0:bbe98578d4c0 879
dflet 0:bbe98578d4c0 880 \param[out] none
dflet 0:bbe98578d4c0 881
dflet 0:bbe98578d4c0 882 \return 0 - if Smart Config started successfully.
dflet 0:bbe98578d4c0 883
dflet 0:bbe98578d4c0 884 \sa sl_WlanSmartConfigStop
dflet 0:bbe98578d4c0 885 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 886 \warning
dflet 0:bbe98578d4c0 887 \par
dflet 0:bbe98578d4c0 888 \code An example of starting smart Config on group ID's 0 + 1 + 2
dflet 0:bbe98578d4c0 889
dflet 0:bbe98578d4c0 890 sl_WlanSmartConfigStart(7, //group ID's (BIT_0 | BIT_1 | BIT_2)
dflet 0:bbe98578d4c0 891 1, //decrypt key by AES method
dflet 0:bbe98578d4c0 892 16, //decryption key length for group ID0
dflet 0:bbe98578d4c0 893 16, //decryption key length for group ID1
dflet 0:bbe98578d4c0 894 16, //decryption key length for group ID2
dflet 0:bbe98578d4c0 895 "Key0Key0Key0Key0", //decryption key for group ID0
dflet 0:bbe98578d4c0 896 "Key1Key1Key1Key1", //decryption key for group ID1
dflet 0:bbe98578d4c0 897 "Key2Key2Key2Key2" //decryption key for group ID2
dflet 0:bbe98578d4c0 898 );
dflet 0:bbe98578d4c0 899 \endcode
dflet 0:bbe98578d4c0 900 */
dflet 0:bbe98578d4c0 901 #if _SL_INCLUDE_FUNC(sl_WlanSmartConfigStart)
dflet 0:bbe98578d4c0 902 _i16 sl_WlanSmartConfigStart(const _u32 groupIdBitmask,
dflet 0:bbe98578d4c0 903 const _u8 cipher,
dflet 0:bbe98578d4c0 904 const _u8 publicKeyLen,
dflet 0:bbe98578d4c0 905 const _u8 group1KeyLen,
dflet 0:bbe98578d4c0 906 const _u8 group2KeyLen,
dflet 0:bbe98578d4c0 907 const _u8* publicKey,
dflet 0:bbe98578d4c0 908 const _u8* group1Key,
dflet 0:bbe98578d4c0 909 const _u8* group2Key);
dflet 0:bbe98578d4c0 910 #endif
dflet 0:bbe98578d4c0 911
dflet 0:bbe98578d4c0 912
dflet 0:bbe98578d4c0 913 /*!
dflet 0:bbe98578d4c0 914 \brief Wlan set mode
dflet 0:bbe98578d4c0 915
dflet 0:bbe98578d4c0 916 Setting WLAN mode
dflet 0:bbe98578d4c0 917
dflet 0:bbe98578d4c0 918 \param[in] mode - WLAN mode to start the CC31xx device. Possible options are:
dflet 0:bbe98578d4c0 919 - ROLE_STA - for WLAN station mode
dflet 0:bbe98578d4c0 920 - ROLE_AP - for WLAN AP mode
dflet 0:bbe98578d4c0 921 - ROLE_P2P -for WLAN P2P mode
dflet 0:bbe98578d4c0 922 \return 0 - if mode was set correctly
dflet 0:bbe98578d4c0 923 \sa sl_Start sl_Stop
dflet 0:bbe98578d4c0 924 \note belongs to \ref ext_api
dflet 0:bbe98578d4c0 925 \warning After setting the mode the system must be restarted for activating the new mode
dflet 0:bbe98578d4c0 926 \par Example:
dflet 0:bbe98578d4c0 927 \code
dflet 0:bbe98578d4c0 928 //Switch from any role to STA:
dflet 0:bbe98578d4c0 929 sl_WlanSetMode(ROLE_STA);
dflet 0:bbe98578d4c0 930 sl_Stop(0);
dflet 0:bbe98578d4c0 931 sl_Start(NULL,NULL,NULL);
dflet 0:bbe98578d4c0 932 \endcode
dflet 0:bbe98578d4c0 933
dflet 0:bbe98578d4c0 934 */
dflet 0:bbe98578d4c0 935 #if _SL_INCLUDE_FUNC(sl_WlanSetMode)
dflet 0:bbe98578d4c0 936 _i16 sl_WlanSetMode(const _u8 mode);
dflet 0:bbe98578d4c0 937 #endif
dflet 0:bbe98578d4c0 938
dflet 0:bbe98578d4c0 939
dflet 0:bbe98578d4c0 940 /*!
dflet 0:bbe98578d4c0 941 \brief Internal function for setting WLAN configurations
dflet 0:bbe98578d4c0 942
dflet 0:bbe98578d4c0 943 \return On success, zero is returned. On error one of the following error codes returned:
dflet 0:bbe98578d4c0 944 - CONF_ERROR (-1)
dflet 0:bbe98578d4c0 945 - CONF_NVMEM_ACCESS_FAILED (-2)
dflet 0:bbe98578d4c0 946 - CONF_OLD_FILE_VERSION (-3)
dflet 0:bbe98578d4c0 947 - CONF_ERROR_NO_SUCH_COUNTRY_CODE (-4)
dflet 0:bbe98578d4c0 948
dflet 0:bbe98578d4c0 949
dflet 0:bbe98578d4c0 950 \param[in] ConfigId - configuration id
dflet 0:bbe98578d4c0 951 - <b>SL_WLAN_CFG_AP_ID</b>
dflet 0:bbe98578d4c0 952 - <b>SL_WLAN_CFG_GENERAL_PARAM_ID</b>
dflet 0:bbe98578d4c0 953 - <b>SL_WLAN_CFG_P2P_PARAM_ID</b>
dflet 0:bbe98578d4c0 954
dflet 0:bbe98578d4c0 955 \param[in] ConfigOpt - configurations option
dflet 0:bbe98578d4c0 956 - <b>SL_WLAN_CFG_AP_ID</b>
dflet 0:bbe98578d4c0 957 - <b>WLAN_AP_OPT_SSID</b> \n
dflet 0:bbe98578d4c0 958 Set SSID for AP mode. \n
dflet 0:bbe98578d4c0 959 This options takes <b>_u8</b> buffer as parameter
dflet 0:bbe98578d4c0 960 - <b>WLAN_AP_OPT_CHANNEL</b> \n
dflet 0:bbe98578d4c0 961 Set channel for AP mode. \n
dflet 0:bbe98578d4c0 962 The channel is dependant on the country code which is set. i.e. for "US" the channel should be in the range of [1-11] \n
dflet 0:bbe98578d4c0 963 This option takes <b>_u8</b> as a parameter
dflet 0:bbe98578d4c0 964 - <b>WLAN_AP_OPT_HIDDEN_SSID</b> \n
dflet 0:bbe98578d4c0 965 Set Hidden SSID Mode for AP mode.Hidden options: \n
dflet 0:bbe98578d4c0 966 0: disabled \n
dflet 0:bbe98578d4c0 967 1: Send empty (length=0) SSID in beacon and ignore probe request for broadcast SSID \n
dflet 0:bbe98578d4c0 968 2: Clear SSID (ASCII 0), but keep the original length (this may be required with some \n
dflet 0:bbe98578d4c0 969 clients that do not support empty SSID) and ignore probe requests for broadcast SSID \n
dflet 0:bbe98578d4c0 970 This option takes <b>_u8</b> as a parameter
dflet 0:bbe98578d4c0 971 - <b>WLAN_AP_OPT_SECURITY_TYPE</b> \n
dflet 0:bbe98578d4c0 972 Set Security type for AP mode. Security options are:
dflet 0:bbe98578d4c0 973 - Open security: SL_SEC_TYPE_OPEN
dflet 0:bbe98578d4c0 974 - WEP security: SL_SEC_TYPE_WEP
dflet 0:bbe98578d4c0 975 - WPA security: SL_SEC_TYPE_WPA_WPA2 \n
dflet 0:bbe98578d4c0 976 This option takes <b>_u8</b> pointer as a parameter
dflet 0:bbe98578d4c0 977 - <b>WLAN_AP_OPT_PASSWORD</b> \n
dflet 0:bbe98578d4c0 978 Set Password for for AP mode (for WEP or for WPA): \n
dflet 0:bbe98578d4c0 979 Password - for WPA: 8 - 63 characters \n
dflet 0:bbe98578d4c0 980 for WEP: 5 / 13 characters (ascii) \n
dflet 0:bbe98578d4c0 981 This options takes <b>_u8</b> buffer as parameter
dflet 0:bbe98578d4c0 982 - <b>SL_WLAN_CFG_GENERAL_PARAM_ID</b>
dflet 0:bbe98578d4c0 983 - <b>WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE</b> \n
dflet 0:bbe98578d4c0 984 Set Country Code for AP mode \n
dflet 0:bbe98578d4c0 985 This options takes <b>_u8</b> 2 bytes buffer as parameter
dflet 0:bbe98578d4c0 986 - <b>WLAN_GENERAL_PARAM_OPT_STA_TX_POWER</b> \n
dflet 0:bbe98578d4c0 987 Set STA mode Tx power level \n
dflet 0:bbe98578d4c0 988 Number between 0-15, as dB offset from max power (0 will set MAX power) \n
dflet 0:bbe98578d4c0 989 This options takes <b>_u8</b> as parameter
dflet 0:bbe98578d4c0 990 - <b>WLAN_GENERAL_PARAM_OPT_AP_TX_POWER</b>
dflet 0:bbe98578d4c0 991 Set AP mode Tx power level \n
dflet 0:bbe98578d4c0 992 Number between 0-15, as dB offset from max power (0 will set MAX power) \n
dflet 0:bbe98578d4c0 993 This options takes <b>_u8</b> as parameter
dflet 0:bbe98578d4c0 994 - <b>WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT</b>
dflet 0:bbe98578d4c0 995 Set Info Element for AP mode. \n
dflet 0:bbe98578d4c0 996 The Application can set up to MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED info elements per Role (AP / P2P GO). \n
dflet 0:bbe98578d4c0 997 To delete an info element use the relevant index and length = 0. \n
dflet 0:bbe98578d4c0 998 The Application can set up to MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED to the same role. \n
dflet 0:bbe98578d4c0 999 However, for AP - no more than INFO_ELEMENT_MAX_TOTAL_LENGTH_AP bytes can be stored for all info elements. \n
dflet 0:bbe98578d4c0 1000 For P2P GO - no more than INFO_ELEMENT_MAX_TOTAL_LENGTH_P2P_GO bytes can be stored for all info elements. \n
dflet 0:bbe98578d4c0 1001 This option takes sl_protocol_WlanSetInfoElement_t as parameter
dflet 0:bbe98578d4c0 1002 - <b>SL_WLAN_CFG_P2P_PARAM_ID</b>
dflet 0:bbe98578d4c0 1003 - <b>WLAN_P2P_OPT_DEV_TYPE</b> \n
dflet 0:bbe98578d4c0 1004 Set P2P Device type.Maximum length of 17 characters. Device type is published under P2P I.E, \n
dflet 0:bbe98578d4c0 1005 allows to make devices easier to recognize. \n
dflet 0:bbe98578d4c0 1006 In case no device type is set, the default type is "1-0050F204-1" \n
dflet 0:bbe98578d4c0 1007 This options takes <b>_u8</b> buffer as parameter
dflet 0:bbe98578d4c0 1008 - <b>WLAN_P2P_OPT_CHANNEL_N_REGS</b> \n
dflet 0:bbe98578d4c0 1009 Set P2P Channels. \n
dflet 0:bbe98578d4c0 1010 listen channel (either 1/6/11 for 2.4GHz) \n
dflet 0:bbe98578d4c0 1011 listen regulatory class (81 for 2.4GHz) \n
dflet 0:bbe98578d4c0 1012 oper channel (either 1/6/11 for 2.4GHz) \n
dflet 0:bbe98578d4c0 1013 oper regulatory class (81 for 2.4GHz) \n
dflet 0:bbe98578d4c0 1014 listen channel and regulatory class will determine the device listen channel during p2p find listen phase \n
dflet 0:bbe98578d4c0 1015 oper channel and regulatory class will determine the operating channel preferred by this device (in case it is group owner this will be the operating channel) \n
dflet 0:bbe98578d4c0 1016 channels should be one of the social channels (1/6/11). In case no listen/oper channel selected, a random 1/6/11 will be selected.
dflet 0:bbe98578d4c0 1017 This option takes pointer to <b>_u8[4]</b> as parameter
dflet 0:bbe98578d4c0 1018
dflet 0:bbe98578d4c0 1019 \param[in] ConfigLen - configurations len
dflet 0:bbe98578d4c0 1020
dflet 0:bbe98578d4c0 1021 \param[in] pValues - configurations values
dflet 0:bbe98578d4c0 1022
dflet 0:bbe98578d4c0 1023 \sa
dflet 0:bbe98578d4c0 1024 \note
dflet 0:bbe98578d4c0 1025 \warning
dflet 0:bbe98578d4c0 1026 \par Examples:
dflet 0:bbe98578d4c0 1027 \par
dflet 0:bbe98578d4c0 1028 <b> WLAN_AP_OPT_SSID: </b>
dflet 0:bbe98578d4c0 1029 \code
dflet 0:bbe98578d4c0 1030 _u8 str[33];
dflet 0:bbe98578d4c0 1031 memset(str, 0, 33);
dflet 0:bbe98578d4c0 1032 memcpy(str, ssid, len); // ssid string of 32 characters
dflet 0:bbe98578d4c0 1033 sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_SSID, strlen(ssid), str);
dflet 0:bbe98578d4c0 1034 \endcode
dflet 0:bbe98578d4c0 1035 \par
dflet 0:bbe98578d4c0 1036 <b> WLAN_AP_OPT_CHANNEL: </b>
dflet 0:bbe98578d4c0 1037 \code
dflet 0:bbe98578d4c0 1038 _u8 val = channel;
dflet 0:bbe98578d4c0 1039 sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_CHANNEL, 1, (_u8 *)&val);
dflet 0:bbe98578d4c0 1040 \endcode
dflet 0:bbe98578d4c0 1041 \par
dflet 0:bbe98578d4c0 1042 <b> WLAN_AP_OPT_HIDDEN_SSID: </b>
dflet 0:bbe98578d4c0 1043 \code
dflet 0:bbe98578d4c0 1044 _u8 val = hidden;
dflet 0:bbe98578d4c0 1045 sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_HIDDEN_SSID, 1, (_u8 *)&val);
dflet 0:bbe98578d4c0 1046 \endcode
dflet 0:bbe98578d4c0 1047 \par
dflet 0:bbe98578d4c0 1048 <b> WLAN_AP_OPT_SECURITY_TYPE: </b>
dflet 0:bbe98578d4c0 1049 \code
dflet 0:bbe98578d4c0 1050 _u8 val = SL_SEC_TYPE_WPA_WPA2;
dflet 0:bbe98578d4c0 1051 sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_SECURITY_TYPE, 1, (_u8 *)&val);
dflet 0:bbe98578d4c0 1052 \endcode
dflet 0:bbe98578d4c0 1053 \par
dflet 0:bbe98578d4c0 1054 <b> WLAN_AP_OPT_PASSWORD: </b>
dflet 0:bbe98578d4c0 1055 \code
dflet 0:bbe98578d4c0 1056 _u8 str[65];
dflet 0:bbe98578d4c0 1057 _u16 len = strlen(password);
dflet 0:bbe98578d4c0 1058 memset(str, 0, 65);
dflet 0:bbe98578d4c0 1059 memcpy(str, password, len);
dflet 0:bbe98578d4c0 1060 sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_PASSWORD, len, (_u8 *)str);
dflet 0:bbe98578d4c0 1061 \endcode
dflet 0:bbe98578d4c0 1062 \par
dflet 0:bbe98578d4c0 1063 <b> WLAN_GENERAL_PARAM_OPT_STA_TX_POWER: </b>
dflet 0:bbe98578d4c0 1064 \code
dflet 0:bbe98578d4c0 1065 _u8 stapower=(_u8)power;
dflet 0:bbe98578d4c0 1066 sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_STA_TX_POWER,1,(_u8 *)&stapower);
dflet 0:bbe98578d4c0 1067 \endcode
dflet 0:bbe98578d4c0 1068 \par
dflet 0:bbe98578d4c0 1069 <b> WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE: </b>
dflet 0:bbe98578d4c0 1070 \code
dflet 0:bbe98578d4c0 1071 _u8* str = (_u8 *) country; // string of 2 characters. i.e. - "US"
dflet 0:bbe98578d4c0 1072 sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE, 2, str);
dflet 0:bbe98578d4c0 1073 \endcode
dflet 0:bbe98578d4c0 1074 \par
dflet 0:bbe98578d4c0 1075 <b> WLAN_GENERAL_PARAM_OPT_AP_TX_POWER: </b>
dflet 0:bbe98578d4c0 1076 \code
dflet 0:bbe98578d4c0 1077 _u8 appower=(_u8)power;
dflet 0:bbe98578d4c0 1078 sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_AP_TX_POWER,1,(_u8 *)&appower);
dflet 0:bbe98578d4c0 1079 \endcode
dflet 0:bbe98578d4c0 1080 \par
dflet 0:bbe98578d4c0 1081 <b> WLAN_P2P_OPT_DEV_TYPE: </b>
dflet 0:bbe98578d4c0 1082 \code
dflet 0:bbe98578d4c0 1083 _u8 str[17];
dflet 0:bbe98578d4c0 1084 _u16 len = strlen(device_type);
dflet 0:bbe98578d4c0 1085 memset(str, 0, 17);
dflet 0:bbe98578d4c0 1086 memcpy(str, device_type, len);
dflet 0:bbe98578d4c0 1087 sl_WlanSet(SL_WLAN_CFG_P2P_PARAM_ID, WLAN_P2P_OPT_DEV_TYPE, len, str);
dflet 0:bbe98578d4c0 1088 \endcode
dflet 0:bbe98578d4c0 1089 \par
dflet 0:bbe98578d4c0 1090 <b> WLAN_P2P_OPT_CHANNEL_N_REGS: </b>
dflet 0:bbe98578d4c0 1091 \code
dflet 0:bbe98578d4c0 1092 _u8 str[4];
dflet 0:bbe98578d4c0 1093 str[0] = (_u8)11; // listen channel
dflet 0:bbe98578d4c0 1094 str[1] = (_u8)81; // listen regulatory class
dflet 0:bbe98578d4c0 1095 str[2] = (_u8)6; // oper channel
dflet 0:bbe98578d4c0 1096 str[3] = (_u8)81; // oper regulatory class
dflet 0:bbe98578d4c0 1097 sl_WlanSet(SL_WLAN_CFG_P2P_PARAM_ID, WLAN_P2P_OPT_CHANNEL_N_REGS, 4, str);
dflet 0:bbe98578d4c0 1098 \endcode
dflet 0:bbe98578d4c0 1099 \par
dflet 0:bbe98578d4c0 1100 <b> WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT: </b>
dflet 0:bbe98578d4c0 1101 \code
dflet 0:bbe98578d4c0 1102 sl_protocol_WlanSetInfoElement_t infoele;
dflet 0:bbe98578d4c0 1103 infoele.index = Index; // Index of the info element. range: 0 - MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED
dflet 0:bbe98578d4c0 1104 infoele.role = Role; // INFO_ELEMENT_AP_ROLE (0) or INFO_ELEMENT_P2P_GO_ROLE (1)
dflet 0:bbe98578d4c0 1105 infoele.ie.id = Id; // Info element ID. if INFO_ELEMENT_DEFAULT_ID (0) is set, ID will be set to 221.
dflet 0:bbe98578d4c0 1106 // Organization unique ID. If all 3 bytes are zero - it will be replaced with 08,00,28.
dflet 0:bbe98578d4c0 1107 infoele.ie.oui[0] = Oui0; // Organization unique ID first Byte
dflet 0:bbe98578d4c0 1108 infoele.ie.oui[1] = Oui1; // Organization unique ID second Byte
dflet 0:bbe98578d4c0 1109 infoele.ie.oui[2] = Oui2; // Organization unique ID third Byte
dflet 0:bbe98578d4c0 1110 infoele.ie.length = Len; // Length of the info element. must be smaller than 253 bytes
dflet 0:bbe98578d4c0 1111 memset(infoele.ie.data, 0, INFO_ELEMENT_MAX_SIZE);
dflet 0:bbe98578d4c0 1112 if ( Len <= INFO_ELEMENT_MAX_SIZE )
dflet 0:bbe98578d4c0 1113 {
dflet 0:bbe98578d4c0 1114 memcpy(infoele.ie.data, IE, Len); // Info element. length of the info element is [0-252]
dflet 0:bbe98578d4c0 1115 sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID,WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT,sizeof(sl_protocol_WlanSetInfoElement_t),(_u8* ) &infoele);
dflet 0:bbe98578d4c0 1116 }
dflet 0:bbe98578d4c0 1117 sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID,WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT,sizeof(sl_protocol_WlanSetInfoElement_t),(_u8* ) &infoele);
dflet 0:bbe98578d4c0 1118 \endcode
dflet 0:bbe98578d4c0 1119
dflet 0:bbe98578d4c0 1120 */
dflet 0:bbe98578d4c0 1121 #if _SL_INCLUDE_FUNC(sl_WlanSet)
dflet 0:bbe98578d4c0 1122 _i16 sl_WlanSet(_u16 ConfigId ,_u16 ConfigOpt,_u16 ConfigLen, _u8 *pValues);
dflet 0:bbe98578d4c0 1123 #endif
dflet 0:bbe98578d4c0 1124
dflet 0:bbe98578d4c0 1125 /*!
dflet 0:bbe98578d4c0 1126 \brief Internal function for getting WLAN configurations
dflet 0:bbe98578d4c0 1127
dflet 0:bbe98578d4c0 1128 \return On success, zero is returned. On error, -1 is
dflet 0:bbe98578d4c0 1129 returned
dflet 0:bbe98578d4c0 1130
dflet 0:bbe98578d4c0 1131 \param[in] ConfigId - configuration id
dflet 0:bbe98578d4c0 1132 - <b>SL_WLAN_CFG_AP_ID</b>
dflet 0:bbe98578d4c0 1133 - <b>SL_WLAN_CFG_GENERAL_PARAM_ID</b>
dflet 0:bbe98578d4c0 1134 - <b>SL_WLAN_CFG_P2P_PARAM_ID</b>
dflet 0:bbe98578d4c0 1135
dflet 0:bbe98578d4c0 1136 \param[out] pConfigOpt - get configurations option
dflet 0:bbe98578d4c0 1137 - <b>SL_WLAN_CFG_AP_ID</b>
dflet 0:bbe98578d4c0 1138 - <b>WLAN_AP_OPT_SSID</b> \n
dflet 0:bbe98578d4c0 1139 Get SSID for AP mode. \n
dflet 0:bbe98578d4c0 1140 Get up to 32 characters of SSID \n
dflet 0:bbe98578d4c0 1141 This options takes <b>_u8</b> as parameter
dflet 0:bbe98578d4c0 1142 - <b>WLAN_AP_OPT_CHANNEL</b> \n
dflet 0:bbe98578d4c0 1143 Get channel for AP mode. \n
dflet 0:bbe98578d4c0 1144 This option takes <b>_u8</b> as a parameter
dflet 0:bbe98578d4c0 1145 - <b>WLAN_AP_OPT_HIDDEN_SSID</b> \n
dflet 0:bbe98578d4c0 1146 Get Hidden SSID Mode for AP mode.Hidden options: \n
dflet 0:bbe98578d4c0 1147 0: disabled \n
dflet 0:bbe98578d4c0 1148 1: Send empty (length=0) SSID in beacon and ignore probe request for broadcast SSID \n
dflet 0:bbe98578d4c0 1149 2: Clear SSID (ASCII 0), but keep the original length (this may be required with some \n
dflet 0:bbe98578d4c0 1150 clients that do not support empty SSID) and ignore probe requests for broadcast SSID \n
dflet 0:bbe98578d4c0 1151 This option takes <b>_u8</b> as a parameter
dflet 0:bbe98578d4c0 1152 - <b>WLAN_AP_OPT_SECURITY_TYPE</b> \n
dflet 0:bbe98578d4c0 1153 Get Security type for AP mode. Security options are:
dflet 0:bbe98578d4c0 1154 - Open security: SL_SEC_TYPE_OPEN
dflet 0:bbe98578d4c0 1155 - WEP security: SL_SEC_TYPE_WEP
dflet 0:bbe98578d4c0 1156 - WPA security: SL_SEC_TYPE_WPA_WPA2 \n
dflet 0:bbe98578d4c0 1157 This option takes <b>_u8</b> as a parameter
dflet 0:bbe98578d4c0 1158 - <b>WLAN_AP_OPT_PASSWORD</b> \n
dflet 0:bbe98578d4c0 1159 Get Password for for AP mode (for WEP or for WPA): \n
dflet 0:bbe98578d4c0 1160 Returns password - string, fills up to 64 characters. \n
dflet 0:bbe98578d4c0 1161 This options takes <b>_u8</b> buffer as parameter
dflet 0:bbe98578d4c0 1162 - <b>SL_WLAN_CFG_GENERAL_PARAM_ID</b>
dflet 0:bbe98578d4c0 1163 - <b> WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS </b> \n
dflet 0:bbe98578d4c0 1164 Get scan parameters.
dflet 0:bbe98578d4c0 1165 This option uses slWlanScanParamCommand_t as parameter
dflet 0:bbe98578d4c0 1166 - <b>WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE</b> \n
dflet 0:bbe98578d4c0 1167 Get Country Code for AP mode \n
dflet 0:bbe98578d4c0 1168 This options takes <b>_u8</b> buffer as parameter
dflet 0:bbe98578d4c0 1169 - <b>WLAN_GENERAL_PARAM_OPT_STA_TX_POWER</b> \n
dflet 0:bbe98578d4c0 1170 Get STA mode Tx power level \n
dflet 0:bbe98578d4c0 1171 Number between 0-15, as dB offset from max power (0 indicates MAX power) \n
dflet 0:bbe98578d4c0 1172 This options takes <b>_u8</b> as parameter
dflet 0:bbe98578d4c0 1173 - <b>WLAN_GENERAL_PARAM_OPT_AP_TX_POWER</b>
dflet 0:bbe98578d4c0 1174 Get AP mode Tx power level \n
dflet 0:bbe98578d4c0 1175 Number between 0-15, as dB offset from max power (0 indicates MAX power) \n
dflet 0:bbe98578d4c0 1176 This options takes <b>_u8</b> as parameter
dflet 0:bbe98578d4c0 1177 - <b>SL_WLAN_CFG_P2P_PARAM_ID</b>
dflet 0:bbe98578d4c0 1178 - <b>WLAN_P2P_OPT_CHANNEL_N_REGS</b> \n
dflet 0:bbe98578d4c0 1179 Get P2P Channels. \n
dflet 0:bbe98578d4c0 1180 listen channel (either 1/6/11 for 2.4GHz) \n
dflet 0:bbe98578d4c0 1181 listen regulatory class (81 for 2.4GHz) \n
dflet 0:bbe98578d4c0 1182 oper channel (either 1/6/11 for 2.4GHz) \n
dflet 0:bbe98578d4c0 1183 oper regulatory class (81 for 2.4GHz) \n
dflet 0:bbe98578d4c0 1184 listen channel and regulatory class will determine the device listen channel during p2p find listen phase \n
dflet 0:bbe98578d4c0 1185 oper channel and regulatory class will determine the operating channel preferred by this device (in case it is group owner this will be the operating channel) \n
dflet 0:bbe98578d4c0 1186 channels should be one of the social channels (1/6/11). In case no listen/oper channel selected, a random 1/6/11 will be selected. \n
dflet 0:bbe98578d4c0 1187 This option takes pointer to <b>_u8[4]</b> as parameter
dflet 0:bbe98578d4c0 1188
dflet 0:bbe98578d4c0 1189 \param[out] pConfigLen - The length of the allocated memory as input, when the
dflet 0:bbe98578d4c0 1190 function complete, the value of this parameter would be
dflet 0:bbe98578d4c0 1191 the len that actually read from the device.
dflet 0:bbe98578d4c0 1192 If the device return length that is longer from the input
dflet 0:bbe98578d4c0 1193 value, the function will cut the end of the returned structure
dflet 0:bbe98578d4c0 1194 and will return SL_ESMALLBUF.
dflet 0:bbe98578d4c0 1195
dflet 0:bbe98578d4c0 1196
dflet 0:bbe98578d4c0 1197 \param[out] pValues - get configurations values
dflet 0:bbe98578d4c0 1198
dflet 0:bbe98578d4c0 1199 \sa sl_WlanSet
dflet 0:bbe98578d4c0 1200
dflet 0:bbe98578d4c0 1201 \note
dflet 0:bbe98578d4c0 1202
dflet 0:bbe98578d4c0 1203 \warning
dflet 0:bbe98578d4c0 1204
dflet 0:bbe98578d4c0 1205 \par Examples:
dflet 0:bbe98578d4c0 1206 \par
dflet 0:bbe98578d4c0 1207 <b> WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS: </b>
dflet 0:bbe98578d4c0 1208 \code
dflet 0:bbe98578d4c0 1209 slWlanScanParamCommand_t ScanParamConfig;
dflet 0:bbe98578d4c0 1210 _u16 Option = WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS;
dflet 0:bbe98578d4c0 1211 _u16 OptionLen = sizeof(slWlanScanParamCommand_t);
dflet 0:bbe98578d4c0 1212 sl_WlanGet(SL_WLAN_CFG_GENERAL_PARAM_ID ,&Option,&OptionLen,(_u8 *)&ScanParamConfig);
dflet 0:bbe98578d4c0 1213 \endcode
dflet 0:bbe98578d4c0 1214 \par
dflet 0:bbe98578d4c0 1215 <b> WLAN_GENERAL_PARAM_OPT_AP_TX_POWER: </b>
dflet 0:bbe98578d4c0 1216 \code
dflet 0:bbe98578d4c0 1217 _i16 TXPower = 0;
dflet 0:bbe98578d4c0 1218 _u16 Option = WLAN_GENERAL_PARAM_OPT_AP_TX_POWER;
dflet 0:bbe98578d4c0 1219 _u16 OptionLen = sizeof(_i16);
dflet 0:bbe98578d4c0 1220 sl_WlanGet(SL_WLAN_CFG_GENERAL_PARAM_ID ,&Option,&OptionLen,(_u8 *)&TXPower);
dflet 0:bbe98578d4c0 1221 \endcode
dflet 0:bbe98578d4c0 1222 \par
dflet 0:bbe98578d4c0 1223 <b> WLAN_GENERAL_PARAM_OPT_STA_TX_POWER: </b>
dflet 0:bbe98578d4c0 1224 \code
dflet 0:bbe98578d4c0 1225 _i16 TXPower = 0;
dflet 0:bbe98578d4c0 1226 _u16 Option = WLAN_GENERAL_PARAM_OPT_STA_TX_POWER;
dflet 0:bbe98578d4c0 1227 _u16 OptionLen = sizeof(_i16);
dflet 0:bbe98578d4c0 1228
dflet 0:bbe98578d4c0 1229 sl_WlanGet(SL_WLAN_CFG_GENERAL_PARAM_ID ,&Option,&OptionLen,(_u8 *)&TXPower);
dflet 0:bbe98578d4c0 1230 \endcode
dflet 0:bbe98578d4c0 1231 \par
dflet 0:bbe98578d4c0 1232 <b> WLAN_P2P_OPT_DEV_TYPE: </b>
dflet 0:bbe98578d4c0 1233 \code
dflet 0:bbe98578d4c0 1234 _i8 device_type[18];
dflet 0:bbe98578d4c0 1235 _u16 len = 18;
dflet 0:bbe98578d4c0 1236 _u16 config_opt = WLAN_P2P_OPT_DEV_TYPE;
dflet 0:bbe98578d4c0 1237 sl_WlanGet(SL_WLAN_CFG_P2P_PARAM_ID, &config_opt , &len, (_u8* )device_type);
dflet 0:bbe98578d4c0 1238 \endcode
dflet 0:bbe98578d4c0 1239 \par
dflet 0:bbe98578d4c0 1240 <b> WLAN_AP_OPT_SSID: </b>
dflet 0:bbe98578d4c0 1241 \code
dflet 0:bbe98578d4c0 1242 _i8 ssid[32];
dflet 0:bbe98578d4c0 1243 _u16 len = 32;
dflet 0:bbe98578d4c0 1244 _u16 config_opt = WLAN_AP_OPT_SSID;
dflet 0:bbe98578d4c0 1245 sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt , &len, (_u8* )ssid);
dflet 0:bbe98578d4c0 1246 \endcode
dflet 0:bbe98578d4c0 1247 \par
dflet 0:bbe98578d4c0 1248 <b> WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE: </b>
dflet 0:bbe98578d4c0 1249 \code
dflet 0:bbe98578d4c0 1250 _i8 country[3];
dflet 0:bbe98578d4c0 1251 _u16 len = 3;
dflet 0:bbe98578d4c0 1252 _u16 config_opt = WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE;
dflet 0:bbe98578d4c0 1253 sl_WlanGet(SL_WLAN_CFG_GENERAL_PARAM_ID, &config_opt, &len, (_u8* )country);
dflet 0:bbe98578d4c0 1254 \endcode
dflet 0:bbe98578d4c0 1255 \par
dflet 0:bbe98578d4c0 1256 <b> WLAN_AP_OPT_CHANNEL: </b>
dflet 0:bbe98578d4c0 1257 \code
dflet 0:bbe98578d4c0 1258 _i8 channel;
dflet 0:bbe98578d4c0 1259 _u16 len = 1;
dflet 0:bbe98578d4c0 1260 _u16 config_opt = WLAN_AP_OPT_CHANNEL;
dflet 0:bbe98578d4c0 1261 sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt, &len, (_u8* )&channel);
dflet 0:bbe98578d4c0 1262 \endcode
dflet 0:bbe98578d4c0 1263 \par
dflet 0:bbe98578d4c0 1264 <b> WLAN_AP_OPT_HIDDEN_SSID: </b>
dflet 0:bbe98578d4c0 1265 \code
dflet 0:bbe98578d4c0 1266 _u8 hidden;
dflet 0:bbe98578d4c0 1267 _u16 len = 1;
dflet 0:bbe98578d4c0 1268 _u16 config_opt = WLAN_AP_OPT_HIDDEN_SSID;
dflet 0:bbe98578d4c0 1269 sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt, &len, (_u8* )&hidden);
dflet 0:bbe98578d4c0 1270 \endcode
dflet 0:bbe98578d4c0 1271 \par
dflet 0:bbe98578d4c0 1272 <b> WLAN_AP_OPT_SECURITY_TYPE: </b>
dflet 0:bbe98578d4c0 1273 \code
dflet 0:bbe98578d4c0 1274 _u8 sec_type;
dflet 0:bbe98578d4c0 1275 _u16 len = 1;
dflet 0:bbe98578d4c0 1276 _u16 config_opt = WLAN_AP_OPT_SECURITY_TYPE;
dflet 0:bbe98578d4c0 1277 sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt, &len, (_u8* )&sec_type);
dflet 0:bbe98578d4c0 1278 \endcode
dflet 0:bbe98578d4c0 1279 \par
dflet 0:bbe98578d4c0 1280 <b> WLAN_AP_OPT_PASSWORD: </b>
dflet 0:bbe98578d4c0 1281 \code
dflet 0:bbe98578d4c0 1282 _u8 password[64];
dflet 0:bbe98578d4c0 1283 _u16 len = 64;
dflet 0:bbe98578d4c0 1284 memset(password,0,64);
dflet 0:bbe98578d4c0 1285 _u16 config_opt = WLAN_AP_OPT_PASSWORD;
dflet 0:bbe98578d4c0 1286 sl_WlanGet(SL_WLAN_CFG_AP_ID, &config_opt, &len, (_u8* )password);
dflet 0:bbe98578d4c0 1287
dflet 0:bbe98578d4c0 1288 \endcode
dflet 0:bbe98578d4c0 1289 \par
dflet 0:bbe98578d4c0 1290 <b> WLAN_P2P_OPT_CHANNEL_N_REGS: </b>
dflet 0:bbe98578d4c0 1291 \code
dflet 0:bbe98578d4c0 1292 _u16 listen_channel,listen_reg,oper_channel,oper_reg;
dflet 0:bbe98578d4c0 1293 _u16 len = 4;
dflet 0:bbe98578d4c0 1294 _u16 config_opt = WLAN_P2P_OPT_CHANNEL_N_REGS;
dflet 0:bbe98578d4c0 1295 _u8 channel_n_regs[4];
dflet 0:bbe98578d4c0 1296 sl_WlanGet(SL_WLAN_CFG_P2P_PARAM_ID, &config_opt, &len, (_u8* )channel_n_regs);
dflet 0:bbe98578d4c0 1297 listen_channel = channel_n_regs[0];
dflet 0:bbe98578d4c0 1298 listen_reg = channel_n_regs[1];
dflet 0:bbe98578d4c0 1299 oper_channel = channel_n_regs[2];
dflet 0:bbe98578d4c0 1300 oper_reg = channel_n_regs[3];
dflet 0:bbe98578d4c0 1301 \endcode
dflet 0:bbe98578d4c0 1302 */
dflet 0:bbe98578d4c0 1303
dflet 0:bbe98578d4c0 1304 #if _SL_INCLUDE_FUNC(sl_WlanGet)
dflet 0:bbe98578d4c0 1305 _i16 sl_WlanGet(_u16 ConfigId, _u16 *pConfigOpt,_u16 *pConfigLen, _u8 *pValues);
dflet 0:bbe98578d4c0 1306 #endif
dflet 0:bbe98578d4c0 1307 /*!
dflet 0:bbe98578d4c0 1308
dflet 0:bbe98578d4c0 1309 Close the Doxygen group.
dflet 0:bbe98578d4c0 1310 @}
dflet 0:bbe98578d4c0 1311
dflet 0:bbe98578d4c0 1312 */
dflet 0:bbe98578d4c0 1313
dflet 0:bbe98578d4c0 1314
dflet 0:bbe98578d4c0 1315 #ifdef __cplusplus
dflet 0:bbe98578d4c0 1316 }
dflet 0:bbe98578d4c0 1317 #endif /* __cplusplus */
dflet 0:bbe98578d4c0 1318
dflet 0:bbe98578d4c0 1319 #endif /* __WLAN_H__ */
dflet 0:bbe98578d4c0 1320
dflet 0:bbe98578d4c0 1321