2 ** $Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/mgmt/bow_fsm.h#1 $
6 \brief Declaration of functions and finite state machine for BOW Module.
8 Declaration of functions and finite state machine for BOW Module.
17 * [WCXRP00000735] [MT6620 Wi-Fi][BoW][FW/Driver] Protect BoW connection establishment
18 * Submit missing BoW header files.
20 * 03 27 2011 chinghwa.yu
21 * [WCXRP00000065] Update BoW design and settings
22 * Support multiple physical link.
24 * 02 16 2011 chinghwa.yu
25 * [WCXRP00000065] Update BoW design and settings
26 * Add bowNotifyAllLinkDisconnected interface and change channel grant procedure for bow starting..
28 * 02 15 2011 chinghwa.yu
29 * [WCXRP00000065] Update BoW design and settings
30 * Add channel previledge into _BOW_FSM_INFO_T.
32 * 09 16 2010 chinghwa.yu
34 * update bowChangeMediaState.
36 * 08 24 2010 chinghwa.yu
38 * Update BOW for the 1st time.
44 /*******************************************************************************
45 * C O M P I L E R F L A G S
46 ********************************************************************************
49 /*******************************************************************************
50 * E X T E R N A L R E F E R E N C E S
51 ********************************************************************************
54 /*******************************************************************************
56 ********************************************************************************
59 #define BOW_BG_SCAN_INTERVAL_MIN_SEC 2 //30 // exponential to 960
60 #define BOW_BG_SCAN_INTERVAL_MAX_SEC 2 //960 // 16min
62 #define BOW_DELAY_TIME_OF_DISCONNECT_SEC 10
64 #define BOW_BEACON_TIMEOUT_COUNT_STARTING 10
65 #define BOW_BEACON_TIMEOUT_GUARD_TIME_SEC 1 /* Second */
67 #define BOW_BEACON_MAX_TIMEOUT_TU 100
68 #define BOW_BEACON_MIN_TIMEOUT_TU 5
69 #define BOW_BEACON_MAX_TIMEOUT_VALID TRUE
70 #define BOW_BEACON_MIN_TIMEOUT_VALID TRUE
72 #define BOW_BMC_MAX_TIMEOUT_TU 100
73 #define BOW_BMC_MIN_TIMEOUT_TU 5
74 #define BOW_BMC_MAX_TIMEOUT_VALID TRUE
75 #define BOW_BMC_MIN_TIMEOUT_VALID TRUE
77 #define BOW_JOIN_CH_GRANT_THRESHOLD 10
78 #define BOW_JOIN_CH_REQUEST_INTERVAL 2000
80 /*******************************************************************************
82 ********************************************************************************
85 typedef enum _ENUM_BOW_STATE_T {
89 BOW_STATE_ONLINE_SCAN,
90 BOW_STATE_LOOKING_FOR,
91 BOW_STATE_WAIT_FOR_NEXT_SCAN,
92 BOW_STATE_REQ_CHANNEL_JOIN,
93 BOW_STATE_REQ_CHANNEL_ALONE,
94 BOW_STATE_REQ_CHANNEL_MERGE,
102 typedef struct _BOW_FSM_INFO_T {
103 ENUM_BOW_STATE_T ePreviousState;
104 ENUM_BOW_STATE_T eCurrentState;
108 /* Channel Privilege */
110 BOOLEAN fgIsInfraChannelFinished;
111 BOOLEAN fgIsChannelRequested;
112 BOOLEAN fgIsChannelGranted;
113 BOOLEAN fgIsScanPending;
114 UINT_32 u4ChGrantedInterval;
117 UINT_8 ucPrimaryChannel;
119 UINT_16 u2BeaconInterval;
121 ENUM_BOW_STATE_T eReturnState; /* Return state after current activity finished or abort. */
122 ENUM_BOW_STATE_T eForwardState; /* Step to next state if ACTION frame is TX successfully. */
124 P_BSS_DESC_T prTargetBss; /* BSS of target P2P Device. For Connection/Service Discovery */
126 P_STA_RECORD_T prTargetStaRec;
127 P_BSS_DESC_T prTargetBssDesc; /* For destination */
129 UINT_8 aucPeerAddress[6];
133 BOOLEAN fgSupportQoS;
135 BOOLEAN fgIsRsponseProbe; /* Indicate if BOW can response probe request frame. */
137 /* Sequence number of requested message. */
138 UINT_8 ucSeqNumOfChReq;
139 UINT_8 ucSeqNumOfReqMsg;
140 UINT_8 ucSeqNumOfScnMsg;
141 UINT_8 ucSeqNumOfScanReq;
143 UINT_8 ucSeqNumOfCancelMsg;
145 UINT_8 ucDialogToken;
148 TIMER_T rStartingBeaconTimer; /* For device discovery time of each discovery request from user.*/
149 TIMER_T rStartingDiscoveryTimer;
150 TIMER_T rOperationListenTimer; /* For Find phase under operational state. */
151 TIMER_T rFSMTimer; /* A timer used for Action frame timeout usage. */
152 TIMER_T rIndicationOfDisconnectTimer;
153 TIMER_T rChGrantedTimer;
155 UINT_8 ucAvailableAuthTypes; /* Used for AUTH_MODE_AUTO_SWITCH */
157 } BOW_FSM_INFO_T, *P_BOW_FSM_INFO_T;
160 /*******************************************************************************
161 * P U B L I C D A T A
162 ********************************************************************************
165 /*******************************************************************************
166 * P R I V A T E D A T A
167 ********************************************************************************
170 /*******************************************************************************
172 ********************************************************************************
175 #define bowChangeMediaState(_prAdapter, _eNewMediaState) \
176 (_prAdapter->rWifiVar.arBssInfo[NETWORK_TYPE_BOW_INDEX].eConnectionState = (_eNewMediaState));
178 /*******************************************************************************
179 * F U N C T I O N D E C L A R A T I O N S
180 ********************************************************************************
183 /*******************************************************************************
185 ********************************************************************************