1981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* 2981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * mlmeSm.h 3981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 4981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * All rights reserved. 6981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 7981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Redistribution and use in source and binary forms, with or without 8981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * modification, are permitted provided that the following conditions 9981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * are met: 10981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 11981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Redistributions of source code must retain the above copyright 12981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * notice, this list of conditions and the following disclaimer. 13981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Redistributions in binary form must reproduce the above copyright 14981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * notice, this list of conditions and the following disclaimer in 15981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * the documentation and/or other materials provided with the 16981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * distribution. 17981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Neither the name Texas Instruments nor the names of its 18981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * contributors may be used to endorse or promote products derived 19981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * from this software without specific prior written permission. 20981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 21981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 33981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 34981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /** \file mlmeSm.h 35981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * \brief 802.11 MLME SM 36981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 37981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * \see mlmeSm.c 38981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 39981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 40981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 41981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************/ 42981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* */ 43981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* MODULE: mlmeSm.h */ 44981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* PURPOSE: 802.11 MLME SM */ 45981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* */ 46981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************/ 47981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 48981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifndef _MLME_SM_H 49981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define _MLME_SM_H 50981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 51981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "fsm.h" 52981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "mlmeApi.h" 53981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 54981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Constants */ 55981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 56981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* changed to fit double buffer size - S.G */ 57981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*#define MAX_MANAGEMENT_FRAME_BODY_LEN 2312*/ 58981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define MAX_MANAGEMENT_FRAME_BODY_LEN 1476 59981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 60981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Enumerations */ 61981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 62981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* state machine states */ 63981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidttypedef enum 64981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 65981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_STATE_IDLE = 0, 66981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_STATE_AUTH_WAIT = 1, 67981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_STATE_ASSOC_WAIT = 2, 68981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_STATE_ASSOC = 3, 69981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_NUM_STATES 70981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} mlme_smStates_t; 71981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 72981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* State machine inputs */ 73981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidttypedef enum 74981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 75981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_EVENT_START = 0, 76981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_EVENT_STOP = 1, 77981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_EVENT_AUTH_SUCCESS = 2, 78981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_EVENT_AUTH_FAIL = 3, 79981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_EVENT_ASSOC_SUCCESS = 4, 80981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_EVENT_ASSOC_FAIL = 5, 81981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt MLME_SM_NUM_EVENTS 82981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} mlme_smEvents_t; 83981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 84981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 85981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 86981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Typedefs */ 87981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 88981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidttypedef struct 89981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 90981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mgmtStatus_e mgmtStatus; 91981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT16 uStatusCode; 92981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} mlmeData_t; 93981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 94981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 95981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidttypedef struct 96981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 97981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fsm_stateMachine_t *pMlmeSm; 98981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT8 currentState; 99981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlmeData_t mlmeData; 100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt legacyAuthType_e legacyAuthType; 101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_BOOL reAssoc; 102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt DisconnectType_e disConnType; 103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mgmtStatus_e disConnReason; 104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_BOOL bParseBeaconWSC; 105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* temporary frame info */ 107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlmeIEParsingParams_t tempFrameInfo; 108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* debug info - start */ 110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT32 debug_lastProbeRspTSFTime; 111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT32 debug_lastDtimBcnTSFTime; 112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT32 debug_lastBeaconTSFTime; 113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_BOOL debug_isFunctionFirstTime; 114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT32 totalMissingBeaconsCounter; 115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT32 totalRcvdBeaconsCounter; 116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT32 maxMissingBeaconSequence; 117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT32 BeaconsCounterPS; 118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* debug info - end */ 119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hAuth; 121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hAssoc; 122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hSiteMgr; 123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hCtrlData; 124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hConn; 125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hTxMgmtQ; 126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hMeasurementMgr; 127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hSwitchChannel; 128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hRegulatoryDomain; 129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hReport; 130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hOs; 131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hCurrBss; 132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hApConn; 133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hScanCncn; 134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hQosMngr; 135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hTWD; 136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_HANDLE hTxCtrl; 137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} mlme_t; 138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Structures */ 140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* External data definitions */ 142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* External functions definitions */ 144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Function prototypes */ 146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid mlme_smTimeout(TI_HANDLE hMlme); 148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* local functions */ 150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hMlme); 152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* state machine functions */ 154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smStartIdle(mlme_t *pMlme); 155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smAuthSuccessAuthWait(mlme_t *pMlme); 156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smAuthFailAuthWait(mlme_t *pMlme); 157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smStopAssocWait(mlme_t *pMlme); 158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smAssocSuccessAssocWait(mlme_t *pMlme); 159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smAssocFailAssocWait(mlme_t *pMlme); 160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smStopAssoc(mlme_t *pMlme); 161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smActionUnexpected(mlme_t *pMlme); 162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smNOP(mlme_t *pMlme); 163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smReportStatus(mlme_t *pMlme); 165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 168