1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * mlmeSm.h
3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
4a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved.
6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without
8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions
9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met:
10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions of source code must retain the above copyright
12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer.
13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Redistributions in binary form must reproduce the above copyright
14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    notice, this list of conditions and the following disclaimer in
15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    the documentation and/or other materials provided with the
16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    distribution.
17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  * Neither the name Texas Instruments nor the names of its
18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    contributors may be used to endorse or promote products derived
19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *    from this software without specific prior written permission.
20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /** \file mlmeSm.h
35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \brief 802.11 MLME SM
36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \see mlmeSm.c
38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/
42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*                                                                         */
43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*      MODULE: mlmeSm.h                                                   */
44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*    PURPOSE:  802.11 MLME SM                                     */
45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*                                                                         */
46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/
47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifndef _MLME_SM_H
49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define _MLME_SM_H
50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "fsm.h"
52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "mlmeApi.h"
53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Constants */
55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* changed to fit double buffer size - S.G */
57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*#define MAX_MANAGEMENT_FRAME_BODY_LEN 2312*/
58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define MAX_MANAGEMENT_FRAME_BODY_LEN   1476
59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Enumerations */
61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* state machine states */
63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef enum
64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_STATE_IDLE          = 0,
66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_STATE_AUTH_WAIT     = 1,
67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_STATE_ASSOC_WAIT    = 2,
68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_STATE_ASSOC         = 3,
69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_NUM_STATES
70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} mlme_smStates_t;
71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* State machine inputs */
73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef enum
74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_EVENT_START             = 0,
76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_EVENT_STOP              = 1,
77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_EVENT_AUTH_SUCCESS      = 2,
78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_EVENT_AUTH_FAIL         = 3,
79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_EVENT_ASSOC_SUCCESS     = 4,
80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_EVENT_ASSOC_FAIL        = 5,
81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    MLME_SM_NUM_EVENTS
82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} mlme_smEvents_t;
83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Typedefs */
87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct
89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    mgmtStatus_e mgmtStatus;
91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT16        uStatusCode;
92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} mlmeData_t;
93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct
96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    fsm_stateMachine_t  *pMlmeSm;
98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8            currentState;
99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    mlmeData_t          mlmeData;
100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    legacyAuthType_e    legacyAuthType;
101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_BOOL             reAssoc;
102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    DisconnectType_e    disConnType;
103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    mgmtStatus_e        disConnReason;
104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_BOOL             bParseBeaconWSC;
105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* temporary frame info */
107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    mlmeIEParsingParams_t tempFrameInfo;
108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* debug info - start */
110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32           debug_lastProbeRspTSFTime;
111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32           debug_lastDtimBcnTSFTime;
112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32           debug_lastBeaconTSFTime;
113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_BOOL             debug_isFunctionFirstTime;
114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32           totalMissingBeaconsCounter;
115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32           totalRcvdBeaconsCounter;
116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32           maxMissingBeaconSequence;
117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32           BeaconsCounterPS;
118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    /* debug info - end */
119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hAuth;
121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hAssoc;
122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hSiteMgr;
123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hCtrlData;
124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hConn;
125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hTxMgmtQ;
126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hMeasurementMgr;
127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hSwitchChannel;
128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hRegulatoryDomain;
129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hReport;
130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hOs;
131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hCurrBss;
132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hApConn;
133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hScanCncn;
134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hQosMngr;
135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hTWD;
136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE           hTxCtrl;
137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} mlme_t;
138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Structures */
140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External data definitions */
142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External functions definitions */
144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Function prototypes */
146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid mlme_smTimeout(TI_HANDLE hMlme);
148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* local functions */
150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
151a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hMlme);
152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* state machine functions */
154a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smStartIdle(mlme_t *pMlme);
155a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smAuthSuccessAuthWait(mlme_t *pMlme);
156a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smAuthFailAuthWait(mlme_t *pMlme);
157a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smStopAssocWait(mlme_t *pMlme);
158a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smAssocSuccessAssocWait(mlme_t *pMlme);
159a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smAssocFailAssocWait(mlme_t *pMlme);
160a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smStopAssoc(mlme_t *pMlme);
161a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smActionUnexpected(mlme_t *pMlme);
162a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smNOP(mlme_t *pMlme);
163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
164a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smReportStatus(mlme_t *pMlme);
165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif
167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
168