1/** \file mlmeApi.h
2 *  \brief MLME API
3 *
4 *  \see mlmeSm.c
5 */
6/****************************************************************************
7**+-----------------------------------------------------------------------+**
8**|                                                                       |**
9**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
10**| All rights reserved.                                                  |**
11**|                                                                       |**
12**| Redistribution and use in source and binary forms, with or without    |**
13**| modification, are permitted provided that the following conditions    |**
14**| are met:                                                              |**
15**|                                                                       |**
16**|  * Redistributions of source code must retain the above copyright     |**
17**|    notice, this list of conditions and the following disclaimer.      |**
18**|  * Redistributions in binary form must reproduce the above copyright  |**
19**|    notice, this list of conditions and the following disclaimer in    |**
20**|    the documentation and/or other materials provided with the         |**
21**|    distribution.                                                      |**
22**|  * Neither the name Texas Instruments nor the names of its            |**
23**|    contributors may be used to endorse or promote products derived    |**
24**|    from this software without specific prior written permission.      |**
25**|                                                                       |**
26**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
27**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
28**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
29**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
30**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
31**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
32**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
33**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
34**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
35**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
36**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
37**|                                                                       |**
38**+-----------------------------------------------------------------------+**
39****************************************************************************/
40
41/***************************************************************************/
42/*																			*/
43/*	  MODULE:	mlmeApi.h													*/
44/*    PURPOSE:	MLME API			 										*/
45/*																			*/
46/***************************************************************************/
47#ifndef __MLME_API_H__
48#define __MLME_API_H__
49
50#include "osTIType.h"
51
52#include "paramOut.h"
53
54#include "802_11Defs.h"
55#include "memMngrEx.h"
56
57#include "whalBus_Defs.h"
58
59/* Constants */
60
61/* Enumerations */
62
63typedef enum
64{
65	MSG_BROADCAST,
66	MSG_MULTICAST,
67	MSG_UNICAST
68} mlmeMsgDestType_t;
69
70/*
71 * Disconnecting type enum
72 */
73typedef enum{
74	DISCONN_TYPE_IMMEDIATE     = 0,  /* Disconnect without disassociation. */
75	DISCONN_TYPE_DISASSOC,           /* Send disassocciation frame upon disconnecting */
76	DISCONN_TYPE_DEAUTH              /* Send disassocciation notification upon disconnecting */
77}disConnType_e;
78
79/* Typedefs */
80
81
82typedef struct
83{
84	dot11MgmtSubType_e subType;
85
86	union
87	{
88		beacon_probeRsp_t iePacket;
89		disAssoc_t	disAssoc;
90		assocRsp_t 	assocRsp;
91		authMsg_t	auth;
92		deAuth_t	deAuth;
93		action_t	action;
94	} content;
95
96	union
97	{
98		mlmeMsgDestType_t	destType;
99	} extesion;
100
101} mlmeFrameInfo_t;
102
103typedef struct
104{
105	dot11_SSID_t 		ssid;
106	macAddress_t        bssid;
107    dot11_CHALLENGE_t   challenge;
108    dot11_RATES_t 		rates;
109    dot11_RATES_t 		extRates;
110    dot11_FH_PARAMS_t 	fhParams;
111    dot11_CF_PARAMS_t 	cfParams;
112	dot11_DS_PARAMS_t 	dsParams;
113    dot11_IBSS_PARAMS_t ibssParams;
114    dot11_COUNTRY_t 	country;
115    dot11_WME_PARAM_t 	WMEParams;
116    dot11_POWER_CONSTRAINT_t powerConstraint;
117    dot11_4X_t 			fourXParams;
118    dot11_CHANNEL_SWITCH_t channelSwitch;
119    dot11_QUIET_t 		quiet;
120    dot11_TPC_REPORT_t 	TPCReport;
121#ifdef EXC_MODULE_INCLUDED
122	dot11_CELL_TP_t		cellTP;
123#endif
124    dot11_RSN_t 		rsnIe[3];
125	dot11_TIM_t 		tim;
126	dot11_QOS_CAPABILITY_IE_t	QosCapParams;
127	UINT8 				rxChannel;
128	UINT8 				band;
129	BOOL 				myBssid;
130	BOOL				myDst;
131	BOOL				mySa;
132	BOOL 				recvChannelSwitchAnnoncIE;
133	mlmeFrameInfo_t		frame;
134}mlmeIEParsingParams_t;
135
136typedef void (*mlme_resultCB_t)( TI_HANDLE hObj, macAddress_t* bssid, mlmeFrameInfo_t* pFrameInfo,
137                                 Rx_attr_t* pRxAttr, UINT8* frame, UINT16 frameLength );
138
139/* External data definitions */
140
141/* External functions definitions */
142
143/* Function prototypes */
144
145/* MLME SM API */
146
147TI_HANDLE mlme_create(TI_HANDLE hOs);
148
149TI_STATUS mlme_unload(TI_HANDLE hMlme);
150
151TI_STATUS mlme_config(TI_HANDLE hMlme,
152				   TI_HANDLE hAuth,
153				   TI_HANDLE hAssoc,
154				   TI_HANDLE hSiteMgr,
155				   TI_HANDLE hCtrlData,
156				   TI_HANDLE hConn,
157				   TI_HANDLE hTxData,
158				   TI_HANDLE hHalCtrl,
159				   TI_HANDLE hMemMgr,
160				   TI_HANDLE hMeasurementMgr,
161				   TI_HANDLE hSwitchChannel,
162				   TI_HANDLE hRegulatoryDomain,
163				   TI_HANDLE hReport,
164				   TI_HANDLE hOs,
165				   TI_HANDLE hCurrBss,
166				   TI_HANDLE hApConn,
167				   TI_HANDLE hScanCncn,
168				   TI_HANDLE hQosMngr,
169                   TI_HANDLE hConfigMgr);
170
171TI_STATUS mlme_setParam(TI_HANDLE			hMlmeSm,
172						paramInfo_t			*pParam);
173
174TI_STATUS mlme_getParam(TI_HANDLE			hMlmeSm,
175						paramInfo_t			*pParam);
176
177TI_STATUS mlme_start(TI_HANDLE hMlme);
178
179TI_STATUS mlme_stop(TI_HANDLE hMlme, disConnType_e disConnType, mgmtStatus_e reason);
180
181TI_STATUS mlme_reportAuthStatus(TI_HANDLE hMlme, UINT16 status);
182
183TI_STATUS mlme_reportAssocStatus(TI_HANDLE hMlme, UINT16 status);
184
185/* MLME parser API */
186
187TI_STATUS mlmeParser_recv(TI_HANDLE hMlme, mem_MSDU_T *pMSDU, Rx_attr_t* pRxAttr);
188
189TI_STATUS mlmeParser_registerForBeaconAndProbeResp( TI_HANDLE hMlme,
190                                                    mlme_resultCB_t resultCBFunc,
191                                                    TI_HANDLE resultCBObj );
192
193void mlmeParser_unregisterForBeaconAndProbeResp( TI_HANDLE hMlme );
194
195TI_STATUS mlmeParser_parseIEs(TI_HANDLE *hMlme,
196							  UINT8 *pData,
197							  INT32 bodyDataLen,
198							  mlmeIEParsingParams_t *params);
199
200#ifdef EXC_MODULE_INCLUDED
201void mlmeParser_readExcOui (UINT8 *pData,
202							UINT32 dataLen,
203							UINT32 *pReadLen,
204							EXCv4IEs_t *excIEs);
205#endif
206
207mlmeIEParsingParams_t *mlmeParser_getParseIEsBuffer(TI_HANDLE *hMlme);
208
209/* Association SM API */
210
211TI_HANDLE assoc_create(TI_HANDLE pOs);
212
213TI_STATUS assoc_unload(TI_HANDLE pAssoc);
214
215TI_STATUS assoc_config(TI_HANDLE hAssoc,
216					TI_HANDLE hMlme,
217					TI_HANDLE hRegulatoryDomain,
218					TI_HANDLE hSiteMgr,
219					TI_HANDLE hCtrlData,
220					TI_HANDLE hTxData,
221					TI_HANDLE hHalCtrl,
222					TI_HANDLE hRsn,
223					TI_HANDLE hReport,
224					TI_HANDLE hOs,
225					TI_HANDLE hExcMngr,
226					TI_HANDLE hQosMngr,
227                    TI_HANDLE hMeasurementMgr,
228					TI_HANDLE hApConn,
229					assocInitParams_t	*pAssocInitParams);
230
231TI_STATUS assoc_setParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
232
233TI_STATUS assoc_getParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
234
235TI_STATUS assoc_getParamPartial(TI_HANDLE hAssoc, paramInfoPartial_t *pParam);
236
237/* Authentication SM API */
238
239TI_HANDLE auth_create(TI_HANDLE hOs);
240
241TI_STATUS auth_unload(TI_HANDLE hAuth);
242
243TI_STATUS auth_config(TI_HANDLE	 		hAuth,
244                   TI_HANDLE	 		hMlme,
245				   TI_HANDLE			hRsn,
246				   TI_HANDLE	 		hReport,
247				   TI_HANDLE	 		hOs,
248				   authInitParams_t		*pAuthInitParams);
249
250
251TI_STATUS auth_setParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
252
253TI_STATUS auth_getParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
254
255#endif /* __MLME_API_H__*/
256