37 #include "simplelink.h"
58 #define SL_BSSID_LENGTH (6)
59 #define MAXIMAL_SSID_LENGTH (32)
61 #define NUM_OF_RATE_INDEXES (20)
62 #define SIZE_OF_RSSI_HISTOGRAM (6)
65 #define SL_DISCONNECT_RESERVED_0 (0)
66 #define SL_DISCONNECT_UNSPECIFIED_REASON (1)
67 #define SL_PREVIOUS_AUTHENTICATION_NO_LONGER_VALID (2)
68 #define SL_DEAUTHENTICATED_BECAUSE_SENDING_STATION_IS_LEAVING (3)
69 #define SL_DISASSOCIATED_DUE_TO_INACTIVITY (4)
70 #define SL_DISASSOCIATED_BECAUSE_AP_IS_UNABLE_TO_HANDLE_ALL_CURRENTLY_ASSOCIATED_STATIONS (5)
71 #define SL_CLASS_2_FRAME_RECEIVED_FROM_NONAUTHENTICATED_STATION (6)
72 #define SL_CLASS_3_FRAME_RECEIVED_FROM_NONASSOCIATED_STATION (7)
73 #define SL_DISASSOCIATED_BECAUSE_SENDING_STATION_IS_LEAVING_BSS (8)
74 #define SL_STATION_REQUESTING_ASSOCIATION_IS_NOT_AUTHENTICATED_WITH_RESPONDING_STATION (9)
75 #define SL_DISASSOCIATED_BECAUSE_THE_INFORMATION_IN_THE_POWER_CAPABILITY_ELEMENT_IS_UNACCEPTABLE (10)
76 #define SL_DISASSOCIATED_BECAUSE_THE_INFORMATION_IN_THE_SUPPORTED_CHANNELS_ELEMENT_IS_UNACCEPTABLE (11)
77 #define SL_DISCONNECT_RESERVED_1 (12)
78 #define SL_INVALID_INFORMATION_ELEMENT (13)
79 #define SL_MESSAGE_INTEGRITY_CODE_MIC_FAILURE (14)
80 #define SL_FOUR_WAY_HANDSHAKE_TIMEOUT (15)
81 #define SL_GROUP_KEY_HANDSHAKE_TIMEOUT (16)
82 #define SL_RE_ASSOCIATION_REQUEST_PROBE_RESPONSE_BEACON_FRAME (17)
83 #define SL_INVALID_GROUP_CIPHER (18)
84 #define SL_INVALID_PAIRWISE_CIPHER (19)
85 #define SL_INVALID_AKMP (20)
86 #define SL_UNSUPPORTED_RSN_INFORMATION_ELEMENT_VERSION (21)
87 #define SL_INVALID_RSN_INFORMATION_ELEMENT_CAPABILITIES (22)
88 #define SL_IEEE_802_1X_AUTHENTICATION_FAILED (23)
89 #define SL_CIPHER_SUITE_REJECTED_BECAUSE_OF_THE_SECURITY_POLICY (24)
90 #define SL_DISCONNECT_RESERVED_2 (25)
91 #define SL_DISCONNECT_RESERVED_3 (26)
92 #define SL_DISCONNECT_RESERVED_4 (27)
93 #define SL_DISCONNECT_RESERVED_5 (28)
94 #define SL_DISCONNECT_RESERVED_6 (29)
95 #define SL_DISCONNECT_RESERVED_7 (30)
96 #define SL_DISCONNECT_RESERVED_8 (31)
97 #define SL_DISASSOCIATED_FOR_UNSPECIFIED_QOS_RELATED_REASON (32)
98 #define SL_DISASSOCIATED_BECAUSE_QAP_LACKS_SUFFICIENT_BANDWIDTH_FOR_THIS_QSTA (33)
99 #define SL_DISASSOCIATED_BECAUSE_EXCESSIVE_NUMBER_OF_FRAMES_NEED_TO_BE_ACKNOWLEDGED (34)
100 #define SL_DISASSOCIATED_BECAUSE_QSTA_IS_TRANSMITTING_OUTSIDE_THE_LIMITS_OF_ITS_TXOPS (35)
101 #define SL_REQUESTED_FROM_PEER_QSTA_AS_THE_QSTA_IS_LEAVING_THE_QBSS (36)
102 #define SL_REQUESTED_FROM_PEER_QSTA_AS_IT_DOES_NO_WANT_TO_USE_THE_MECHANISM (37)
103 #define SL_REQUESTED_FROM_PEER_QSTA_AS_THE_QSTA_RECEIVED_FRAMES_SETUP_IS_REQUIRED (38)
104 #define SL_REQUESTED_FROM_PEER_QSTA_DUE_TO_TIMEOUT (39)
105 #define SL_PEER_QSTA_DOES_NOT_SUPPORT_THE_REQUESTED_CIPHER_SUITE (40)
106 #define SL_CISCO_DEFINED (98)
107 #define SL_CISCO_DEFINED_1 (99)
108 #define SL_ROAMING_TRIGGER_NONE (100)
109 #define SL_ROAMING_TRIGGER_LOW_QUALITY_FOR_BG_SCAN (101)
110 #define SL_ROAMING_TRIGGER_HIGH_QUALITY_FOR_BG_SCAN (102)
111 #define SL_ROAMING_TRIGGER_NORMAL_QUALITY_FOR_BG_SCAN (103)
112 #define SL_ROAMING_TRIGGER_LOW_TX_RATE (104)
113 #define SL_ROAMING_TRIGGER_LOW_SNR (105)
114 #define SL_ROAMING_TRIGGER_LOW_QUALITY (106)
115 #define SL_ROAMING_TRIGGER_TSPEC_REJECTED (107)
116 #define SL_ROAMING_TRIGGER_MAX_TX_RETRIES (108)
117 #define SL_ROAMING_TRIGGER_BSS_LOSS (109)
118 #define SL_ROAMING_TRIGGER_BSS_LOSS_DUE_TO_MAX_TX_RETRY (110)
119 #define SL_ROAMING_TRIGGER_SWITCH_CHANNEL (111)
120 #define SL_ROAMING_TRIGGER_AP_DISCONNECT (112)
121 #define SL_ROAMING_TRIGGER_SECURITY_ATTACK (113)
122 #define SL_ROAMING_TRIGGER_MAX (114)
123 #define SL_USER_INITIATED_DISCONNECTION (200)
126 #define SL_ERROR_KEY_ERROR (-3)
127 #define SL_ERROR_INVALID_ROLE (-71)
128 #define SL_ERROR_INVALID_SECURITY_TYPE (-84)
129 #define SL_ERROR_PASSPHRASE_TOO_LONG (-85)
130 #define SL_ERROR_EAP_WRONG_METHOD (-88)
131 #define SL_ERROR_PASSWORD_ERROR (-89)
132 #define SL_ERROR_EAP_ANONYMOUS_LEN_ERROR (-90)
133 #define SL_ERROR_SSID_LEN_ERROR (-91)
134 #define SL_ERROR_USER_ID_LEN_ERROR (-92)
135 #define SL_ERROR_ILLEGAL_WEP_KEY_INDEX (-95)
136 #define SL_ERROR_INVALID_POLICY_TYPE (-97)
137 #define SL_ERROR_PM_POLICY_INVALID_OPTION (-98)
138 #define SL_ERROR_PM_POLICY_INVALID_PARAMS (-99)
141 #define SL_SEC_TYPE_OPEN (0)
142 #define SL_SEC_TYPE_WEP (1)
143 #define SL_SEC_TYPE_WPA (2)
144 #define SL_SEC_TYPE_WPS_PBC (3)
145 #define SL_SEC_TYPE_WPS_PIN (4)
146 #define SL_SEC_TYPE_WPA_ENT (5)
147 #define SL_SEC_TYPE_P2P_PBC (6)
148 #define SL_SEC_TYPE_P2P_PIN_KEYPAD (7)
149 #define SL_SEC_TYPE_P2P_PIN_DISPLAY (8)
150 #define SL_SEC_TYPE_P2P_PIN_AUTO (9)
161 #define FAST_AUTH_PROVISIONING (0x02)
162 #define FAST_UNAUTH_PROVISIONING (0x01)
163 #define FAST_NO_PROVISIONING (0x00)
165 #define EAPMETHOD_PHASE2_SHIFT (8)
166 #define EAPMETHOD_PAIRWISE_CIPHER_SHIFT (19)
167 #define EAPMETHOD_GROUP_CIPHER_SHIFT (27)
169 #define WPA_CIPHER_CCMP (0x1)
170 #define WPA_CIPHER_TKIP (0x2)
171 #define CC31XX_DEFAULT_CIPHER (WPA_CIPHER_CCMP | WPA_CIPHER_TKIP)
173 #define EAPMETHOD(phase1,phase2,pairwise_cipher,group_cipher) \
175 ((phase2) << EAPMETHOD_PHASE2_SHIFT ) |\
176 ((unsigned long)(pairwise_cipher) << EAPMETHOD_PAIRWISE_CIPHER_SHIFT ) |\
177 ((unsigned long)(group_cipher) << EAPMETHOD_GROUP_CIPHER_SHIFT ))
180 #define SL_ENT_EAP_METHOD_TLS EAPMETHOD(TLS , 0 , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
181 #define SL_ENT_EAP_METHOD_TTLS_TLS EAPMETHOD(TTLS , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
182 #define SL_ENT_EAP_METHOD_TTLS_MSCHAPv2 EAPMETHOD(TTLS , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
183 #define SL_ENT_EAP_METHOD_TTLS_PSK EAPMETHOD(TTLS , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
184 #define SL_ENT_EAP_METHOD_PEAP0_TLS EAPMETHOD(PEAP0 , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
185 #define SL_ENT_EAP_METHOD_PEAP0_MSCHAPv2 EAPMETHOD(PEAP0 , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
186 #define SL_ENT_EAP_METHOD_PEAP0_PSK EAPMETHOD(PEAP0 , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
187 #define SL_ENT_EAP_METHOD_PEAP1_TLS EAPMETHOD(PEAP1 , TLS , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
188 #define SL_ENT_EAP_METHOD_PEAP1_MSCHAPv2 EAPMETHOD(PEAP1 , MSCHAP , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
189 #define SL_ENT_EAP_METHOD_PEAP1_PSK EAPMETHOD(PEAP1 , PSK , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
190 #define SL_ENT_EAP_METHOD_FAST_AUTH_PROVISIONING EAPMETHOD(FAST , FAST_AUTH_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
191 #define SL_ENT_EAP_METHOD_FAST_UNAUTH_PROVISIONING EAPMETHOD(FAST , FAST_UNAUTH_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
192 #define SL_ENT_EAP_METHOD_FAST_NO_PROVISIONING EAPMETHOD(FAST , FAST_NO_PROVISIONING , CC31XX_DEFAULT_CIPHER , CC31XX_DEFAULT_CIPHER)
194 #define SL_LONG_PREAMBLE (0)
195 #define SL_SHORT_PREAMBLE (1)
197 #define SL_RAW_RF_TX_PARAMS_CHANNEL_SHIFT (0)
198 #define SL_RAW_RF_TX_PARAMS_RATE_SHIFT (6)
199 #define SL_RAW_RF_TX_PARAMS_POWER_SHIFT (11)
200 #define SL_RAW_RF_TX_PARAMS_PREAMBLE_SHIFT (15)
202 #define SL_RAW_RF_TX_PARAMS(chan,rate,power,preamble) \
203 ((chan << SL_RAW_RF_TX_PARAMS_CHANNEL_SHIFT) | \
204 (rate << SL_RAW_RF_TX_PARAMS_RATE_SHIFT) | \
205 (power << SL_RAW_RF_TX_PARAMS_POWER_SHIFT) | \
206 (preamble << SL_RAW_RF_TX_PARAMS_PREAMBLE_SHIFT))
210 #define SL_WLAN_CFG_AP_ID (0)
211 #define SL_WLAN_CFG_GENERAL_PARAM_ID (1)
212 #define SL_WLAN_CFG_P2P_PARAM_ID (2)
215 #define WLAN_AP_OPT_SSID (0)
217 #define WLAN_AP_OPT_BEACON_INT (2)
218 #define WLAN_AP_OPT_CHANNEL (3)
219 #define WLAN_AP_OPT_HIDDEN_SSID (4)
220 #define WLAN_AP_OPT_DTIM_PERIOD (5)
221 #define WLAN_AP_OPT_SECURITY_TYPE (6)
222 #define WLAN_AP_OPT_PASSWORD (7)
223 #define WLAN_AP_OPT_WPS_STATE (8)
224 #define WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE (9)
225 #define WLAN_GENERAL_PARAM_OPT_STA_TX_POWER (10)
226 #define WLAN_GENERAL_PARAM_OPT_AP_TX_POWER (11)
228 #define WLAN_P2P_OPT_DEV_NAME (12)
229 #define WLAN_P2P_OPT_DEV_TYPE (13)
230 #define WLAN_P2P_OPT_CHANNEL_N_REGS (14)
231 #define WLAN_GENERAL_PARAM_OPT_INFO_ELEMENT (16)
232 #define WLAN_GENERAL_PARAM_OPT_SCAN_PARAMS (18)
235 #define SMART_CONFIG_CIPHER_SFLASH (0)
237 #define SMART_CONFIG_CIPHER_AES (1)
238 #define SMART_CONFIG_CIPHER_NONE (0xFF)
241 #define SL_POLICY_CONNECTION (0x10)
242 #define SL_POLICY_SCAN (0x20)
243 #define SL_POLICY_PM (0x30)
244 #define SL_POLICY_P2P (0x40)
246 #define VAL_2_MASK(position,value) ((1 & (value))<<(position))
247 #define MASK_2_VAL(position,mask) (((1 << position) & (mask)) >> (position))
249 #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))
250 #define SL_SCAN_POLICY_EN(policy) (MASK_2_VAL(0,policy))
251 #define SL_SCAN_POLICY(Enable) (VAL_2_MASK(0,Enable))
254 #define SL_NORMAL_POLICY (0)
255 #define SL_LOW_LATENCY_POLICY (1)
256 #define SL_LOW_POWER_POLICY (2)
257 #define SL_ALWAYS_ON_POLICY (3)
258 #define SL_LONG_SLEEP_INTERVAL_POLICY (4)
260 #define SL_P2P_ROLE_NEGOTIATE (3)
261 #define SL_P2P_ROLE_GROUP_OWNER (15)
262 #define SL_P2P_ROLE_CLIENT (0)
264 #define SL_P2P_NEG_INITIATOR_ACTIVE (0)
265 #define SL_P2P_NEG_INITIATOR_PASSIVE (1)
266 #define SL_P2P_NEG_INITIATOR_RAND_BACKOFF (2)
268 #define POLICY_VAL_2_OPTIONS(position,mask,policy) ((mask & policy) << position )
270 #define SL_P2P_POLICY(p2pNegType,p2pNegInitiator) (POLICY_VAL_2_OPTIONS(0,0xF,(p2pNegType > SL_P2P_ROLE_GROUP_OWNER ? SL_P2P_ROLE_GROUP_OWNER : p2pNegType)) | \
271 POLICY_VAL_2_OPTIONS(4,0x1,(p2pNegType > SL_P2P_ROLE_GROUP_OWNER ? 1 : 0 )) | \
272 POLICY_VAL_2_OPTIONS(5,0x3, p2pNegInitiator))
277 #define INFO_ELEMENT_DEFAULT_ID (0)
280 #define INFO_ELEMENT_MAX_SIZE (252)
283 #define INFO_ELEMENT_MAX_TOTAL_LENGTH_AP (300)
285 #define INFO_ELEMENT_MAX_TOTAL_LENGTH_P2P_GO (160)
287 #define INFO_ELEMENT_AP_ROLE (0)
288 #define INFO_ELEMENT_P2P_GO_ROLE (1)
291 #define MAX_PRIVATE_INFO_ELEMENTS_SUPPROTED (4)
293 #define INFO_ELEMENT_DEFAULT_OUI_0 (0x08)
294 #define INFO_ELEMENT_DEFAULT_OUI_1 (0x00)
295 #define INFO_ELEMENT_DEFAULT_OUI_2 (0x28)
297 #define INFO_ELEMENT_DEFAULT_OUI (0x000000)
331 DEV_PW_PUSH_BUTTON=4,
333 } sl_p2p_dev_password_method;
338 unsigned long status;
339 unsigned long ssid_len;
340 unsigned char ssid[32];
341 unsigned long private_token_len;
342 unsigned char private_token[32];
347 unsigned short status;
348 unsigned short padding;
353 unsigned short status;
354 unsigned short padding;
359 unsigned char connection_type;
360 unsigned char ssid_len;
361 unsigned char ssid_name[32];
362 unsigned char go_peer_device_name_len;
363 unsigned char go_peer_device_name[32];
364 unsigned char bssid[6];
365 unsigned char reason_code;
366 unsigned char padding[2];
371 unsigned char go_peer_device_name[32];
372 unsigned char mac[6];
373 unsigned char go_peer_device_name_len;
374 unsigned char wps_dev_password_id;
375 unsigned char own_ssid[32];
376 unsigned char own_ssid_len;
377 unsigned char padding[3];
404 unsigned long ReceivedValidPacketsNumber;
405 unsigned long ReceivedFcsErrorPacketsNumber;
406 unsigned long ReceivedPlcpErrorPacketsNumber;
407 signed short AvarageDataCtrlRssi;
408 signed short AvarageMgMntRssi;
409 unsigned short RateHistogram[NUM_OF_RATE_INDEXES];
410 unsigned short RssiHistogram[SIZE_OF_RSSI_HISTOGRAM];
411 unsigned long StartTimeStamp;
412 unsigned long GetTimeStamp;
418 unsigned char ssid[MAXIMAL_SSID_LENGTH];
419 unsigned char ssid_len;
420 unsigned char sec_type;
421 unsigned char bssid[SL_BSSID_LENGTH];
431 unsigned char KeyLen;
437 unsigned char UserLen;
439 unsigned char AnonUserLen;
440 unsigned char CertIndex;
441 unsigned long EapMethod;
447 unsigned char UserLen;
449 unsigned char AnonUserLen;
450 unsigned char CertIndex;
451 unsigned long EapMethod;
460 ROLE_AP_ERR = -ROLE_AP,
461 ROLE_P2P_ERR = -ROLE_P2P
466 unsigned long G_Channels_mask;
467 signed long rssiThershold;
473 unsigned char oui[3];
474 unsigned short length;
475 unsigned char data[252];
519 #if _SL_INCLUDE_FUNC(sl_WlanConnect)
534 #if _SL_INCLUDE_FUNC(sl_WlanDisconnect)
578 #if _SL_INCLUDE_FUNC(sl_WlanProfileAdd)
613 #if _SL_INCLUDE_FUNC(sl_WlanProfileGet)
631 #if _SL_INCLUDE_FUNC(sl_WlanProfileDel)
698 #if _SL_INCLUDE_FUNC(sl_WlanPolicySet)
699 int sl_WlanPolicySet(
unsigned char Type ,
const unsigned char Policy,
unsigned char *pVal,
unsigned char ValLen);
721 #if _SL_INCLUDE_FUNC(sl_WlanPolicyGet)
722 int sl_WlanPolicyGet(
unsigned char Type ,
unsigned char Policy,
unsigned char *pVal,
unsigned char *pValLen);
750 #if _SL_INCLUDE_FUNC(sl_WlanGetNetworkList)
789 #if _SL_INCLUDE_FUNC(sl_WlanRxStatStart)
803 #if _SL_INCLUDE_FUNC(sl_WlanRxStatStop)
819 #if _SL_INCLUDE_FUNC(sl_WlanRxStatGet)
838 #if _SL_INCLUDE_FUNC(sl_WlanSmartConfigStop)
889 #if _SL_INCLUDE_FUNC(sl_WlanSmartConfigStart)
891 const unsigned char cipher,
892 const unsigned char publicKeyLen,
893 const unsigned char group1KeyLen,
894 const unsigned char group2KeyLen,
895 const unsigned char* publicKey,
896 const unsigned char* group1Key,
897 const unsigned char* group2Key);
936 #if _SL_INCLUDE_FUNC(sl_WlanSetMode)
1107 #if _SL_INCLUDE_FUNC(sl_WlanSet)
1108 int sl_WlanSet(
unsigned short ConfigId ,
unsigned short ConfigOpt,
unsigned short ConfigLen,
unsigned char *pValues);
1281 #if _SL_INCLUDE_FUNC(sl_WlanGet)
1282 int sl_WlanGet(
unsigned short ConfigId,
unsigned short *pConfigOpt,
unsigned short *pConfigLen,
unsigned char *pValues);
int sl_WlanSmartConfigStop(void)
Stop Smart Config procedure. Once Smart Config will be stopped, Asynchronous event will be received -...
int sl_WlanDisconnect(void)
wlan disconnect
int sl_WlanRxStatStop(void)
Stop collecting wlan RX statistic, (if previous called sl_WlanRxStatStart)
int sl_WlanSmartConfigStart(const unsigned long groupIdBitmask, const unsigned char cipher, const unsigned char publicKeyLen, const unsigned char group1KeyLen, const unsigned char group2KeyLen, const unsigned char *publicKey, const unsigned char *group1Key, const unsigned char *group2Key)
Start Smart Config procedure. The target of the procedure is to let the device to gain the network ...
int sl_WlanRxStatStart(void)
Start collecting wlan RX statistics, for unlimited time.
int sl_WlanSetMode(const unsigned char mode)
Wlan set mode.
int sl_WlanRxStatGet(SlGetRxStatResponse_t *pRxStat, unsigned long Flags)
Get wlan RX statistics. upon calling this command, the statistics counters will be cleared...
int sl_WlanProfileGet(int Index, char *pName, int *pNameLen, unsigned char *pMacAddr, SlSecParams_t *pSecParams, SlGetSecParamsExt_t *pSecExtParams, unsigned long *pPriority)
get profile
int sl_WlanGetNetworkList(unsigned char Index, unsigned char Count, Sl_WlanNetworkEntry_t *pEntries)
Gets the WLAN scan operation results.
int sl_WlanPolicySet(unsigned char Type, const unsigned char Policy, unsigned char *pVal, unsigned char ValLen)
set policy values
int sl_WlanConnect(char *pName, int NameLen, unsigned char *pMacAddr, SlSecParams_t *pSecParams, SlSecParamsExt_t *pSecExtParams)
Connect to wlan network as a station.
int sl_WlanPolicyGet(unsigned char Type, unsigned char Policy, unsigned char *pVal, unsigned char *pValLen)
get policy values
int sl_WlanProfileDel(int Index)
Delete WLAN profile.
int sl_WlanGet(unsigned short ConfigId, unsigned short *pConfigOpt, unsigned short *pConfigLen, unsigned char *pValues)
Internal function for getting WLAN configurations.
int sl_WlanProfileAdd(char *pName, int NameLen, unsigned char *pMacAddr, SlSecParams_t *pSecParams, SlSecParamsExt_t *pSecExtParams, unsigned long Priority, unsigned long Options)
add profile
int sl_WlanSet(unsigned short ConfigId, unsigned short ConfigOpt, unsigned short ConfigLen, unsigned char *pValues)
Internal function for setting WLAN configurations.