Home | History | Annotate | Download | only in inc
      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 
     63 typedef enum
     64 {
     65 	MSG_BROADCAST,
     66 	MSG_MULTICAST,
     67 	MSG_UNICAST
     68 } mlmeMsgDestType_t;
     69 
     70 /*
     71  * Disconnecting type enum
     72  */
     73 typedef 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 
     82 typedef 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 
    103 typedef 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 
    136 typedef 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 
    147 TI_HANDLE mlme_create(TI_HANDLE hOs);
    148 
    149 TI_STATUS mlme_unload(TI_HANDLE hMlme);
    150 
    151 TI_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 
    171 TI_STATUS mlme_setParam(TI_HANDLE			hMlmeSm,
    172 						paramInfo_t			*pParam);
    173 
    174 TI_STATUS mlme_getParam(TI_HANDLE			hMlmeSm,
    175 						paramInfo_t			*pParam);
    176 
    177 TI_STATUS mlme_start(TI_HANDLE hMlme);
    178 
    179 TI_STATUS mlme_stop(TI_HANDLE hMlme, disConnType_e disConnType, mgmtStatus_e reason);
    180 
    181 TI_STATUS mlme_reportAuthStatus(TI_HANDLE hMlme, UINT16 status);
    182 
    183 TI_STATUS mlme_reportAssocStatus(TI_HANDLE hMlme, UINT16 status);
    184 
    185 /* MLME parser API */
    186 
    187 TI_STATUS mlmeParser_recv(TI_HANDLE hMlme, mem_MSDU_T *pMSDU, Rx_attr_t* pRxAttr);
    188 
    189 TI_STATUS mlmeParser_registerForBeaconAndProbeResp( TI_HANDLE hMlme,
    190                                                     mlme_resultCB_t resultCBFunc,
    191                                                     TI_HANDLE resultCBObj );
    192 
    193 void mlmeParser_unregisterForBeaconAndProbeResp( TI_HANDLE hMlme );
    194 
    195 TI_STATUS mlmeParser_parseIEs(TI_HANDLE *hMlme,
    196 							  UINT8 *pData,
    197 							  INT32 bodyDataLen,
    198 							  mlmeIEParsingParams_t *params);
    199 
    200 #ifdef EXC_MODULE_INCLUDED
    201 void mlmeParser_readExcOui (UINT8 *pData,
    202 							UINT32 dataLen,
    203 							UINT32 *pReadLen,
    204 							EXCv4IEs_t *excIEs);
    205 #endif
    206 
    207 mlmeIEParsingParams_t *mlmeParser_getParseIEsBuffer(TI_HANDLE *hMlme);
    208 
    209 /* Association SM API */
    210 
    211 TI_HANDLE assoc_create(TI_HANDLE pOs);
    212 
    213 TI_STATUS assoc_unload(TI_HANDLE pAssoc);
    214 
    215 TI_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 
    231 TI_STATUS assoc_setParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
    232 
    233 TI_STATUS assoc_getParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
    234 
    235 TI_STATUS assoc_getParamPartial(TI_HANDLE hAssoc, paramInfoPartial_t *pParam);
    236 
    237 /* Authentication SM API */
    238 
    239 TI_HANDLE auth_create(TI_HANDLE hOs);
    240 
    241 TI_STATUS auth_unload(TI_HANDLE hAuth);
    242 
    243 TI_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 
    251 TI_STATUS auth_setParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
    252 
    253 TI_STATUS auth_getParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
    254 
    255 #endif /* __MLME_API_H__*/
    256