DeepCover Embedded Security in IoT: Public-key Secured Data Paths

Dependencies:   MaximInterface

The MAXREFDES155# is an internet-of-things (IoT) embedded-security reference design, built to authenticate and control a sensing node using elliptic-curve-based public-key cryptography with control and notification from a web server.

The hardware includes an ARM® mbed™ shield and attached sensor endpoint. The shield contains a DS2476 DeepCover® ECDSA/SHA-2 coprocessor, Wifi communication, LCD push-button controls, and status LEDs. The sensor endpoint is attached to the shield using a 300mm cable and contains a DS28C36 DeepCover ECDSA/SHA-2 authenticator, IR-thermal sensor, and aiming laser for the IR sensor. The MAXREFDES155# is equipped with a standard Arduino® form-factor shield connector for immediate testing using an mbed board such as the MAX32600MBED#. The combination of these two devices represent an IoT device. Communication to the web server is accomplished with the shield Wifi circuitry. Communication from the shield to the attached sensor module is accomplished over I2C . The sensor module represents an IoT endpoint that generates small data with a requirement for message authenticity/integrity and secure on/off operational control.

The design is hierarchical with each mbed platform and shield communicating data from the sensor node to a web server that maintains a centralized log and dispatches notifications as necessary. The simplicity of this design enables rapid integration into any star-topology IoT network to provide security with the low overhead and cost provided by the ECDSA-P256 asymmetric-key and SHA-256 symmetric-key algorithms.

More information about the MAXREFDES155# is available on the Maxim Integrated website.

Committer:
IanBenzMaxim
Date:
Fri Jan 19 10:28:27 2018 -0600
Revision:
15:75404fab3615
Parent:
0:33d4e66780c0
Updated MaximInterface revision.

Who changed what in which revision?

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