1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*
2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * AssocSM.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
35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file AssocSM.h
36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \brief 802.11 Association SM
37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *
38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *  \see assocSM.c
39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */
40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/
43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*																		   */
44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*		MODULE:	AssocSM.h												   */
45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*    PURPOSE:	802.11 Association SM									   */
46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*																	 	   */
47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/
48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifndef _ASSOC_SM_H
50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define _ASSOC_SM_H
51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "fsm.h"
53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "mlmeApi.h"
54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Constants */
56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define MAX_ASSOC_MSG_LENGTH			(512 + RSN_MAX_GENERIC_IE_LENGTH)
58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define ASSOC_SM_CAP_ESS_MODE			0x0001
60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define ASSOC_SM_CAP_IBSS_MODE			0x0002
61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define ASSOC_SM_CAP_CF_POLLABLE		0x0004
62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define ASSOC_SM_CAP_CF_POLL_REQ		0x0008
63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define ASSOC_SM_CAP_PIVACY				0x0010
64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define ASSOC_SM_CAP_SHORT_PREAMBLE		0x0020
65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define ASSOC_SM_CAP_PBCC				0x0040
66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define ASSOC_SM_CAP_CH_AGILITY			0x0080
67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Enumerations */
69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* state machine states */
71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef enum
72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	ASSOC_SM_STATE_IDLE		= 0,
74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	ASSOC_SM_STATE_WAIT    	= 1,
75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	ASSOC_SM_STATE_ASSOC	= 2
76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} assoc_smStates_t;
77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* State machine inputs */
79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef enum
80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	ASSOC_SM_EVENT_START		= 0,
82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	ASSOC_SM_EVENT_STOP			= 1,
83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	ASSOC_SM_EVENT_SUCCESS    	= 2,
84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    ASSOC_SM_EVENT_FAIL			= 3,
85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt   	ASSOC_SM_EVENT_TIMEOUT		= 4,
86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt   	ASSOC_SM_EVENT_MAX_RETRY	= 5
87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} assoc_smEvents_t;
88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Typedefs */
92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct
94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{
95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	fsm_stateMachine_t	        *pAssocSm;
96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT32				        timeout;
97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT8				        currentState;
98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT32				        maxCount;
99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT8				        retryCount;
100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT32				        assocRejectCount;
101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_UINT32				        assocTimeoutCount;
102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	char				        *pChalange;
103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8                       assocRespBuffer[MAX_ASSOC_MSG_LENGTH];
104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32                      assocRespLen;
105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT8                       assocReqBuffer[MAX_ASSOC_MSG_LENGTH];
106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_UINT32                      assocReqLen;
107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt  	TI_BOOL					       reAssocResp;
108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_BOOL						reAssoc;
110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_BOOL 						disAssoc; /* When set dissasociation frame will be sent. */
111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hMlme;
113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hSiteMgr;
114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hCtrlData;
115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hTWD;
116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hRsn;
117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hReport;
118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hOs;
119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE					hRegulatoryDomain;
120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hXCCMngr;
121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hQosMngr;
122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt    TI_HANDLE			        hMeasurementMgr;
123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hApConn;
124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hTimer;
125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt     	TI_HANDLE			        hStaCap;
126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hSme;
127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt	TI_HANDLE			        hAssocSmTimer;
129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} assoc_t;
130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Structures */
132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External data definitions */
134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External functions definitions */
136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Function prototypes */
138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
139a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS assoc_start(TI_HANDLE hAssoc);
140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
141a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS reassoc_start(TI_HANDLE hAssoc);
142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
143a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS assoc_stop(TI_HANDLE hAssoc);
144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
145a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS assoc_recv(TI_HANDLE hAssoc, mlmeFrameInfo_t *pFrame);
146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
147a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS assoc_setDisAssocFlag(TI_HANDLE hAssoc, TI_BOOL disAsoccFlag);
148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
149a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS assoc_smCapBuild(assoc_t *pCtx, TI_UINT16 *cap);
150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* local functions */
153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
154a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS assoc_saveAssocRespMessage(assoc_t *pAssocSm, TI_UINT8 *pAssocBuffer, TI_UINT32 length);
155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif
158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt
159