1 /** \file smeSm.h 2 * \brief SME SM internal header file 3 * 4 * \see smeSm.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: smeSm.h */ 44 /* PURPOSE: SME SM internal header file */ 45 /* */ 46 /***************************************************************************/ 47 #ifndef __SME_SM_H__ 48 #define __SME_SM_H__ 49 50 #include "osTIType.h" 51 #include "paramOut.h" 52 #include "paramIn.h" 53 #include "fsm.h" 54 #include "802_11Defs.h" 55 #include "ScanCncnApi.h" 56 57 #define IBSS_INTER_SCAN_PERIOD 20 58 #define SCAN_ATTAMEPTS_HISTOGRAM_SIZE 8 59 #define SCAN_RESULT_HISTOGRAM_SIZE 16 60 61 /* SME SM definitions */ 62 typedef enum 63 { 64 SME_SM_STATE_IDLE = 0, 65 SME_SM_STATE_SCANNING = 1, 66 SME_SM_STATE_SELECTING = 2, 67 SME_SM_STATE_CONNECTING = 3, 68 SME_SM_STATE_CONNECTED = 4, 69 SME_SM_STATE_DISCONNECTING = 5, 70 SME_SM_STATE_INTER_SCAN = 6, 71 SME_SM_NUM_STATES = 7 72 } sme_sm_states_e; 73 74 75 typedef enum 76 { 77 SME_SM_EVENT_START = 0, 78 SME_SM_EVENT_STOP = 1, 79 SME_SM_EVENT_SCAN_COMPLETE = 2, 80 SME_SM_EVENT_SELECT_SUCCESS = 3, 81 SME_SM_EVENT_SELECT_FAILURE = 4, 82 SME_SM_EVENT_CONN_SUCCESS = 5, 83 SME_SM_EVENT_CONN_FAILURE = 6, 84 SME_SM_EVENT_RESELECT = 7, 85 SME_SM_EVENT_DISCONNECT = 8, 86 SME_SM_NUM_EVENTS = 9 87 } sme_sm_events_e; 88 89 90 typedef struct 91 { 92 mgmtStatus_e mgmtStatus; /* Contains the last DisAssociation reason towards upper layer */ 93 UINT32 uStatusCode; /* Extra information to the reason. i.e. packet status code or roaming trigger */ 94 } DisAssocReason_t; 95 96 typedef struct 97 { 98 BOOL RadioStandByEnable; 99 radioStandByState_t lastRadioStandByState; 100 UINT16 radioStandByBitNumber; 101 BOOL GPIO13_debug; 102 } sme_radioDisableParameters_t; 103 104 #ifdef TI_DBG 105 typedef struct 106 { 107 UINT8 currentNumberOfScanResults; 108 UINT32 scanResulCountHistogram[ SCAN_RESULT_HISTOGRAM_SIZE ]; 109 UINT8 currentNumberOfScanAttempts; 110 UINT32 scanAttemptsForConnectionHistogram[ SCAN_ATTAMEPTS_HISTOGRAM_SIZE ]; 111 } smeSmStats_t; 112 #endif 113 114 /* SME SM handle */ 115 typedef struct 116 { 117 UINT8 state; 118 DisAssocReason_t DisAssoc; 119 fsm_stateMachine_t *pFsm; 120 scanEnabledOptions_e scanEnabled; 121 BOOL reScanFlag; 122 BOOL dualBandReScanFlag; 123 radioBand_e currBand; 124 BOOL bSendDisAssocEvent; 125 TI_HANDLE hConn; 126 TI_HANDLE hScanCncn; 127 TI_HANDLE hSiteMgr; 128 TI_HANDLE hHalCtrl; 129 TI_HANDLE hRegulatoryDomain; 130 TI_HANDLE hPowerMgr; 131 TI_HANDLE hReport; 132 TI_HANDLE hOs; 133 TI_HANDLE hEvHandler; 134 TI_HANDLE hScr; 135 TI_HANDLE hApConn; 136 TI_HANDLE hCurrBss; 137 138 void *interScanTimeoutTimer; 139 UINT32 interScanTimeout; 140 UINT32 interScanTimeoutMin; 141 UINT32 interScanTimeoutMax; 142 UINT32 interScanTimeoutDelta; 143 sme_scan_Params_t scanParamsBG; 144 sme_scan_Params_t scanParamsA; 145 BOOL radioOn; 146 BOOL immediateShutdownRequired; /* Flag to indicate whether DISASSOC packet should be sent to AP or not - used to instruct AP-Conn when stopping */ 147 BOOL connectEnabled; 148 scan_Params_t scanParams; /* Though this is a temporary command, we keep it as 149 class member to avoid stack overflow. */ 150 UINT8 shutDownStatus; /* Internal shutdown status - used to indicate SME move to IDLE during unload process */ 151 #ifdef TI_DBG 152 smeSmStats_t smeStats; 153 #endif 154 } smeSm_t; 155 156 157 fsm_stateMachine_t *smeSm_smCreate(TI_HANDLE hOs); 158 159 TI_STATUS smeSm_smConfig(smeSm_t *pSmeSm); 160 161 TI_STATUS smeSm_smUnLoad(TI_HANDLE hOs, fsm_stateMachine_t *pFsm); 162 163 TI_STATUS smeSm_SMEvent(UINT8 *currentState, UINT8 event, TI_HANDLE hSmeSm); 164 165 TI_STATUS sme_startScan(void *pData); 166 167 #endif /* __SME_SM_H__ */ 168 169 170