Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.

Dependencies:   mbed

Committer:
dflet
Date:
Tue Sep 15 16:45:04 2015 +0000
Revision:
22:f9b5e0b80bf2
Parent:
0:50cedd586816
Removed some debug.

Who changed what in which revision?

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