164064216a8433360745f69edddce19a606659163The Android Open Source Project/** \file mlmeSM.c 264064216a8433360745f69edddce19a606659163The Android Open Source Project * \brief 802.11 MLME SM source 364064216a8433360745f69edddce19a606659163The Android Open Source Project * 464064216a8433360745f69edddce19a606659163The Android Open Source Project * \see mlmeSM.h 564064216a8433360745f69edddce19a606659163The Android Open Source Project */ 664064216a8433360745f69edddce19a606659163The Android Open Source Project 764064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 864064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+** 964064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1064064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 1164064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved. |** 1264064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1364064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without |** 1464064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions |** 1564064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met: |** 1664064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1764064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Redistributions of source code must retain the above copyright |** 1864064216a8433360745f69edddce19a606659163The Android Open Source Project**| notice, this list of conditions and the following disclaimer. |** 1964064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Redistributions in binary form must reproduce the above copyright |** 2064064216a8433360745f69edddce19a606659163The Android Open Source Project**| notice, this list of conditions and the following disclaimer in |** 2164064216a8433360745f69edddce19a606659163The Android Open Source Project**| the documentation and/or other materials provided with the |** 2264064216a8433360745f69edddce19a606659163The Android Open Source Project**| distribution. |** 2364064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Neither the name Texas Instruments nor the names of its |** 2464064216a8433360745f69edddce19a606659163The Android Open Source Project**| contributors may be used to endorse or promote products derived |** 2564064216a8433360745f69edddce19a606659163The Android Open Source Project**| from this software without specific prior written permission. |** 2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 3264064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 3364064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 3464064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 3564064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 3664064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 3764064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 3864064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 3964064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+** 4064064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/ 4164064216a8433360745f69edddce19a606659163The Android Open Source Project 4264064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************/ 4364064216a8433360745f69edddce19a606659163The Android Open Source Project/* */ 4464064216a8433360745f69edddce19a606659163The Android Open Source Project/* MODULE: mlmeSM.c */ 4564064216a8433360745f69edddce19a606659163The Android Open Source Project/* PURPOSE: 802.11 MLME SM source */ 4664064216a8433360745f69edddce19a606659163The Android Open Source Project/* */ 4764064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************/ 4864064216a8433360745f69edddce19a606659163The Android Open Source Project 4964064216a8433360745f69edddce19a606659163The Android Open Source Project#include "osApi.h" 5064064216a8433360745f69edddce19a606659163The Android Open Source Project 5164064216a8433360745f69edddce19a606659163The Android Open Source Project#include "paramOut.h" 5264064216a8433360745f69edddce19a606659163The Android Open Source Project#include "paramIn.h" 5364064216a8433360745f69edddce19a606659163The Android Open Source Project 5464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "utils.h" 5564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "fsm.h" 5664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "report.h" 5764064216a8433360745f69edddce19a606659163The Android Open Source Project#include "smeApi.h" 5864064216a8433360745f69edddce19a606659163The Android Open Source Project#include "Assoc/AssocSM.h" 5964064216a8433360745f69edddce19a606659163The Android Open Source Project#include "Auth/authSm.h" 6064064216a8433360745f69edddce19a606659163The Android Open Source Project#include "mlmeBuilder.h" 6164064216a8433360745f69edddce19a606659163The Android Open Source Project#include "mlmeSm.h" 6264064216a8433360745f69edddce19a606659163The Android Open Source Project#include "Auth/open/openAuthSm.h" 6364064216a8433360745f69edddce19a606659163The Android Open Source Project#include "Auth/shared/sharedKeyAuthSm.h" 6464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "whalCtrl_api.h" 6564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "connApi.h" 6664064216a8433360745f69edddce19a606659163The Android Open Source Project 6764064216a8433360745f69edddce19a606659163The Android Open Source Project 6864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG 6964064216a8433360745f69edddce19a606659163The Android Open Source Project#include "siteMgrApi.h" 7064064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 7164064216a8433360745f69edddce19a606659163The Android Open Source Project/* Constants */ 7264064216a8433360745f69edddce19a606659163The Android Open Source Project 7364064216a8433360745f69edddce19a606659163The Android Open Source Project/* Enumerations */ 7464064216a8433360745f69edddce19a606659163The Android Open Source Project 7564064216a8433360745f69edddce19a606659163The Android Open Source Project/* Typedefs */ 7664064216a8433360745f69edddce19a606659163The Android Open Source Project 7764064216a8433360745f69edddce19a606659163The Android Open Source Project/* Structures */ 7864064216a8433360745f69edddce19a606659163The Android Open Source Project 7964064216a8433360745f69edddce19a606659163The Android Open Source Project/* External data definitions */ 8064064216a8433360745f69edddce19a606659163The Android Open Source Project 8164064216a8433360745f69edddce19a606659163The Android Open Source Project/* External functions definitions */ 8264064216a8433360745f69edddce19a606659163The Android Open Source Project 8364064216a8433360745f69edddce19a606659163The Android Open Source Project/* Global variables */ 8464064216a8433360745f69edddce19a606659163The Android Open Source Project 8564064216a8433360745f69edddce19a606659163The Android Open Source Project/* Local function prototypes */ 8664064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef NO_HAL_VOB 8764064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void mlme_logBeaconReceived(TI_HANDLE hMlme); 8864064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 8964064216a8433360745f69edddce19a606659163The Android Open Source Project 9064064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid mlme_stopAssocAndAuth(mlme_t *pMlme); 9164064216a8433360745f69edddce19a606659163The Android Open Source Project 9264064216a8433360745f69edddce19a606659163The Android Open Source Project/* functions */ 9364064216a8433360745f69edddce19a606659163The Android Open Source Project 9464064216a8433360745f69edddce19a606659163The Android Open Source Project/** 9564064216a8433360745f69edddce19a606659163The Android Open Source Project* 9664064216a8433360745f69edddce19a606659163The Android Open Source Project* mlme_Create - allocate memory for MLME SM 9764064216a8433360745f69edddce19a606659163The Android Open Source Project* 9864064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 9964064216a8433360745f69edddce19a606659163The Android Open Source Project* 10064064216a8433360745f69edddce19a606659163The Android Open Source Project* Allocate memory for MLME SM. \n 10164064216a8433360745f69edddce19a606659163The Android Open Source Project* Allocates memory for MLME context. \n 10264064216a8433360745f69edddce19a606659163The Android Open Source Project* Allocates memory for MLME timer. \n 10364064216a8433360745f69edddce19a606659163The Android Open Source Project* Allocates memory for MLME SM matrix. \n 10464064216a8433360745f69edddce19a606659163The Android Open Source Project* 10564064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: 10664064216a8433360745f69edddce19a606659163The Android Open Source Project* 10764064216a8433360745f69edddce19a606659163The Android Open Source Project* I - pOs - OS context \n 10864064216a8433360745f69edddce19a606659163The Android Open Source Project* 10964064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 11064064216a8433360745f69edddce19a606659163The Android Open Source Project* 11164064216a8433360745f69edddce19a606659163The Android Open Source Project* OK if successful, NOK otherwise. 11264064216a8433360745f69edddce19a606659163The Android Open Source Project* 11364064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa rsn_mainSecSmKeysOnlyStop() 11464064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 11564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE mlme_create(TI_HANDLE hOs) 11664064216a8433360745f69edddce19a606659163The Android Open Source Project{ 11764064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pHandle; 11864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 11964064216a8433360745f69edddce19a606659163The Android Open Source Project 12064064216a8433360745f69edddce19a606659163The Android Open Source Project /* allocate MLME context memory */ 12164064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle = (mlme_t*)os_memoryAlloc(hOs, sizeof(mlme_t)); 12264064216a8433360745f69edddce19a606659163The Android Open Source Project if (pHandle == NULL) 12364064216a8433360745f69edddce19a606659163The Android Open Source Project { 12464064216a8433360745f69edddce19a606659163The Android Open Source Project return NULL; 12564064216a8433360745f69edddce19a606659163The Android Open Source Project } 12664064216a8433360745f69edddce19a606659163The Android Open Source Project 12764064216a8433360745f69edddce19a606659163The Android Open Source Project /* zero all MLME context */ 12864064216a8433360745f69edddce19a606659163The Android Open Source Project os_memoryZero(hOs, pHandle, sizeof(mlme_t)); 12964064216a8433360745f69edddce19a606659163The Android Open Source Project 13064064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hOs = hOs; 13164064216a8433360745f69edddce19a606659163The Android Open Source Project 13264064216a8433360745f69edddce19a606659163The Android Open Source Project /* allocate memory for MLME state machine */ 13364064216a8433360745f69edddce19a606659163The Android Open Source Project status = fsm_Create(hOs, &pHandle->pMlmeSm, MLME_SM_NUM_STATES, MLME_SM_NUM_EVENTS); 13464064216a8433360745f69edddce19a606659163The Android Open Source Project if (status != OK) 13564064216a8433360745f69edddce19a606659163The Android Open Source Project { 13664064216a8433360745f69edddce19a606659163The Android Open Source Project os_memoryFree(hOs, pHandle, sizeof(mlme_t)); 13764064216a8433360745f69edddce19a606659163The Android Open Source Project return NULL; 13864064216a8433360745f69edddce19a606659163The Android Open Source Project } 13964064216a8433360745f69edddce19a606659163The Android Open Source Project 14064064216a8433360745f69edddce19a606659163The Android Open Source Project return pHandle; 14164064216a8433360745f69edddce19a606659163The Android Open Source Project} 14264064216a8433360745f69edddce19a606659163The Android Open Source Project 14364064216a8433360745f69edddce19a606659163The Android Open Source Project 14464064216a8433360745f69edddce19a606659163The Android Open Source Project/** 14564064216a8433360745f69edddce19a606659163The Android Open Source Project* 14664064216a8433360745f69edddce19a606659163The Android Open Source Project* mlme_Unload - unload MLME SM from memory 14764064216a8433360745f69edddce19a606659163The Android Open Source Project* 14864064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 14964064216a8433360745f69edddce19a606659163The Android Open Source Project* 15064064216a8433360745f69edddce19a606659163The Android Open Source Project* Unload MLME SM from memory 15164064216a8433360745f69edddce19a606659163The Android Open Source Project* 15264064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: 15364064216a8433360745f69edddce19a606659163The Android Open Source Project* 15464064216a8433360745f69edddce19a606659163The Android Open Source Project* I - hMlme - MLME SM context \n 15564064216a8433360745f69edddce19a606659163The Android Open Source Project* 15664064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 15764064216a8433360745f69edddce19a606659163The Android Open Source Project* 15864064216a8433360745f69edddce19a606659163The Android Open Source Project* OK if successful, NOK otherwise. 15964064216a8433360745f69edddce19a606659163The Android Open Source Project* 16064064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa rsn_mainSecSmKeysOnlyStop() 16164064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 16264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_unload(TI_HANDLE hMlme) 16364064216a8433360745f69edddce19a606659163The Android Open Source Project{ 16464064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 16564064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pHandle; 16664064216a8433360745f69edddce19a606659163The Android Open Source Project 16764064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle = (mlme_t*)hMlme; 16864064216a8433360745f69edddce19a606659163The Android Open Source Project 16964064216a8433360745f69edddce19a606659163The Android Open Source Project status = fsm_Unload(pHandle->hOs, pHandle->pMlmeSm); 17064064216a8433360745f69edddce19a606659163The Android Open Source Project if (status != OK) 17164064216a8433360745f69edddce19a606659163The Android Open Source Project { 17264064216a8433360745f69edddce19a606659163The Android Open Source Project /* report failure but don't stop... */ 17364064216a8433360745f69edddce19a606659163The Android Open Source Project } 17464064216a8433360745f69edddce19a606659163The Android Open Source Project 17564064216a8433360745f69edddce19a606659163The Android Open Source Project os_memoryFree(pHandle->hOs, hMlme, sizeof(mlme_t)); 17664064216a8433360745f69edddce19a606659163The Android Open Source Project 17764064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 17864064216a8433360745f69edddce19a606659163The Android Open Source Project} 17964064216a8433360745f69edddce19a606659163The Android Open Source Project 18064064216a8433360745f69edddce19a606659163The Android Open Source Project/** 18164064216a8433360745f69edddce19a606659163The Android Open Source Project* 18264064216a8433360745f69edddce19a606659163The Android Open Source Project* mlme_smConfig - configure a new MLME SM 18364064216a8433360745f69edddce19a606659163The Android Open Source Project* 18464064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 18564064216a8433360745f69edddce19a606659163The Android Open Source Project* 18664064216a8433360745f69edddce19a606659163The Android Open Source Project* Configure a new MLME SM. 18764064216a8433360745f69edddce19a606659163The Android Open Source Project* 18864064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: 18964064216a8433360745f69edddce19a606659163The Android Open Source Project* 19064064216a8433360745f69edddce19a606659163The Android Open Source Project* I - hMlme - MLME SM context \n 19164064216a8433360745f69edddce19a606659163The Android Open Source Project* I - pMlme - MLME SM context \n 19264064216a8433360745f69edddce19a606659163The Android Open Source Project* I - pSiteMgr - Site manager context \n 19364064216a8433360745f69edddce19a606659163The Android Open Source Project* I - pCtrlData - Control data context \n 19464064216a8433360745f69edddce19a606659163The Android Open Source Project* I - pTxData - TX data context \n 19564064216a8433360745f69edddce19a606659163The Android Open Source Project* I - pHalCtrl - Hal control context \n 19664064216a8433360745f69edddce19a606659163The Android Open Source Project* I - pReport - Report context \n 19764064216a8433360745f69edddce19a606659163The Android Open Source Project* I - pOs - OS context \n 19864064216a8433360745f69edddce19a606659163The Android Open Source Project* I - mlmeTimeout - MLME SM timeout \n 19964064216a8433360745f69edddce19a606659163The Android Open Source Project* I - mlmeMaxCount - Max number of MLME requests to send \n 20064064216a8433360745f69edddce19a606659163The Android Open Source Project* 20164064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 20264064216a8433360745f69edddce19a606659163The Android Open Source Project* 20364064216a8433360745f69edddce19a606659163The Android Open Source Project* OK if successful, NOK otherwise. 20464064216a8433360745f69edddce19a606659163The Android Open Source Project* 20564064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa mlme_Create, mlme_Unload 20664064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 20764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_config(TI_HANDLE hMlme, 20864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hAuth, 20964064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hAssoc, 21064064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hSiteMgr, 21164064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hCtrlData, 21264064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hConn, 21364064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hTxData, 21464064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hHalCtrl, 21564064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hMemMgr, 21664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hMeasurementMgr, 21764064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hSwitchChannel, 21864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hRegulatoryDomain, 21964064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hReport, 22064064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hOs, 22164064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hCurrBss, 22264064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hAPConn, 22364064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hScanCncn, 22464064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hQosMngr, 22564064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hConfigMgr) 22664064216a8433360745f69edddce19a606659163The Android Open Source Project{ 22764064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pHandle; 22864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 22964064216a8433360745f69edddce19a606659163The Android Open Source Project /** Main 802.1X State Machine matrix */ 23064064216a8433360745f69edddce19a606659163The Android Open Source Project fsm_actionCell_t mlme_smMatrix[MLME_SM_NUM_STATES][MLME_SM_NUM_EVENTS] = 23164064216a8433360745f69edddce19a606659163The Android Open Source Project { 23264064216a8433360745f69edddce19a606659163The Android Open Source Project /* next state and actions for IDLE state */ 23364064216a8433360745f69edddce19a606659163The Android Open Source Project {{MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smStartIdle}, /* MLME_SM_EVENT_START */ 23464064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smNOP}, /* MLME_SM_EVENT_STOP */ 23564064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 23664064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 23764064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 23864064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 23964064216a8433360745f69edddce19a606659163The Android Open Source Project }, 24064064216a8433360745f69edddce19a606659163The Android Open Source Project /* next state and actions for AUTH_WAIT state */ 24164064216a8433360745f69edddce19a606659163The Android Open Source Project {{MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 24264064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smNOP}, /* MLME_SM_EVENT_STOP */ 24364064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smAuthSuccessAuthWait}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 24464064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smAuthFailAuthWait}, /* MLME_SM_EVENT_AUTH_FAIL */ 24564064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 24664064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 24764064216a8433360745f69edddce19a606659163The Android Open Source Project }, 24864064216a8433360745f69edddce19a606659163The Android Open Source Project /* next state and actions for ASSOC_WAIT state */ 24964064216a8433360745f69edddce19a606659163The Android Open Source Project {{MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 25064064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smStopAssocWait}, /* MLME_SM_EVENT_STOP */ 25164064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 25264064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 25364064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smAssocSuccessAssocWait}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 25464064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smAssocFailAssocWait} /* MLME_SM_EVENT_ASSOC_FAIL */ 25564064216a8433360745f69edddce19a606659163The Android Open Source Project }, 25664064216a8433360745f69edddce19a606659163The Android Open Source Project /* next state and actions for ASSOC state */ 25764064216a8433360745f69edddce19a606659163The Android Open Source Project {{MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 25864064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smStopAssoc}, /* MLME_SM_EVENT_STOP */ 25964064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 26064064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 26164064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 26264064216a8433360745f69edddce19a606659163The Android Open Source Project {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 26364064216a8433360745f69edddce19a606659163The Android Open Source Project } 26464064216a8433360745f69edddce19a606659163The Android Open Source Project }; 26564064216a8433360745f69edddce19a606659163The Android Open Source Project 26664064216a8433360745f69edddce19a606659163The Android Open Source Project 26764064216a8433360745f69edddce19a606659163The Android Open Source Project if (hMlme == NULL) 26864064216a8433360745f69edddce19a606659163The Android Open Source Project { 26964064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 27064064216a8433360745f69edddce19a606659163The Android Open Source Project } 27164064216a8433360745f69edddce19a606659163The Android Open Source Project 27264064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle = (mlme_t*)hMlme; 27364064216a8433360745f69edddce19a606659163The Android Open Source Project 27464064216a8433360745f69edddce19a606659163The Android Open Source Project status = fsm_Config(pHandle->pMlmeSm, &mlme_smMatrix[0][0], MLME_SM_NUM_STATES, MLME_SM_NUM_EVENTS, mlme_smEvent, hOs); 27564064216a8433360745f69edddce19a606659163The Android Open Source Project if (status != OK) 27664064216a8433360745f69edddce19a606659163The Android Open Source Project { 27764064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 27864064216a8433360745f69edddce19a606659163The Android Open Source Project } 27964064216a8433360745f69edddce19a606659163The Android Open Source Project 28064064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->currentState = MLME_SM_STATE_IDLE; 28164064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->legacyAuthType = AUTH_LEGACY_NONE; 28264064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->reAssoc = FALSE; 28364064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->disConnType = DISCONN_TYPE_IMMEDIATE; 28464064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->disConnReason = STATUS_UNSPECIFIED; 28564064216a8433360745f69edddce19a606659163The Android Open Source Project 28664064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hAssoc = hAssoc; 28764064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hAuth = hAuth; 28864064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hSiteMgr = hSiteMgr; 28964064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hCtrlData = hCtrlData; 29064064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hTxData = hTxData; 29164064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hHalCtrl = hHalCtrl; 29264064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hMemMgr = hMemMgr; 29364064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hMeasurementMgr = hMeasurementMgr; 29464064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hSwitchChannel = hSwitchChannel; 29564064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hRegulatoryDomain = hRegulatoryDomain; 29664064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hReport = hReport; 29764064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hOs = hOs; 29864064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hConn = hConn; 29964064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hCurrBss = hCurrBss; 30064064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hApConn = hAPConn; 30164064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hScanCncn = hScanCncn; 30264064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hConfigMgr = hConfigMgr; 30364064216a8433360745f69edddce19a606659163The Android Open Source Project 30464064216a8433360745f69edddce19a606659163The Android Open Source Project /* nullify beacon and probe response registration information */ 30564064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->resultCBFunc = NULL; 30664064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->resultCBObj = NULL; 30764064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->hQosMngr = hQosMngr; 30864064216a8433360745f69edddce19a606659163The Android Open Source Project /* 30964064216a8433360745f69edddce19a606659163The Android Open Source Project debug info 31064064216a8433360745f69edddce19a606659163The Android Open Source Project */ 31164064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->debug_lastProbeRspTSFTime = 0; 31264064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->debug_lastDtimBcnTSFTime = 0; 31364064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->debug_lastBeaconTSFTime = 0; 31464064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->debug_isFunctionFirstTime = TRUE; 31564064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->BeaconsCounterPS = 0; 31664064216a8433360745f69edddce19a606659163The Android Open Source Project 31764064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef NO_HAL_VOB 31864064216a8433360745f69edddce19a606659163The Android Open Source Project /* Register the Beacon interrrput that can be used for debug - 31964064216a8433360745f69edddce19a606659163The Android Open Source Project i.e. on each received beacon in the FW, the FW generated a beacon interrupt. */ 32064064216a8433360745f69edddce19a606659163The Android Open Source Project 32164064216a8433360745f69edddce19a606659163The Android Open Source Project /* there is no Beacon Receive in WSP7.1, in 4.1 its for Prints only hence will not 32264064216a8433360745f69edddce19a606659163The Android Open Source Project be supported at this time */ 32364064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_OS_REPORT(("mlme_config : NO_HAL_VOB not supported")); 32464064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 32564064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 32664064216a8433360745f69edddce19a606659163The Android Open Source Project} 32764064216a8433360745f69edddce19a606659163The Android Open Source Project 32864064216a8433360745f69edddce19a606659163The Android Open Source Project 32964064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_setParam(TI_HANDLE hMlmeSm, 33064064216a8433360745f69edddce19a606659163The Android Open Source Project paramInfo_t *pParam) 33164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 33264064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pMlmeSm = (mlme_t *)hMlmeSm; 33364064216a8433360745f69edddce19a606659163The Android Open Source Project 33464064216a8433360745f69edddce19a606659163The Android Open Source Project switch(pParam->paramType) 33564064216a8433360745f69edddce19a606659163The Android Open Source Project { 33664064216a8433360745f69edddce19a606659163The Android Open Source Project case MLME_LEGACY_TYPE_PARAM: 33764064216a8433360745f69edddce19a606659163The Android Open Source Project 33864064216a8433360745f69edddce19a606659163The Android Open Source Project switch (pParam->content.mlmeLegacyAuthType) 33964064216a8433360745f69edddce19a606659163The Android Open Source Project { 34064064216a8433360745f69edddce19a606659163The Android Open Source Project case AUTH_LEGACY_RESERVED1: 34164064216a8433360745f69edddce19a606659163The Android Open Source Project case AUTH_LEGACY_OPEN_SYSTEM: 34264064216a8433360745f69edddce19a606659163The Android Open Source Project /* First configure the MLME with the new legacy authentication type */ 34364064216a8433360745f69edddce19a606659163The Android Open Source Project pMlmeSm->legacyAuthType = pParam->content.mlmeLegacyAuthType; 34464064216a8433360745f69edddce19a606659163The Android Open Source Project /* Now configure the authentication module. */ 34564064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 34664064216a8433360745f69edddce19a606659163The Android Open Source Project return auth_setParam(pMlmeSm->hAuth, pParam); 34764064216a8433360745f69edddce19a606659163The Android Open Source Project 34864064216a8433360745f69edddce19a606659163The Android Open Source Project case AUTH_LEGACY_SHARED_KEY: 34964064216a8433360745f69edddce19a606659163The Android Open Source Project /* First configure the MLME with the new legacy authentication type */ 35064064216a8433360745f69edddce19a606659163The Android Open Source Project pMlmeSm->legacyAuthType = AUTH_LEGACY_SHARED_KEY; 35164064216a8433360745f69edddce19a606659163The Android Open Source Project /* Now configure the authentication module. */ 35264064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 35364064216a8433360745f69edddce19a606659163The Android Open Source Project return auth_setParam(pMlmeSm->hAuth, pParam); 35464064216a8433360745f69edddce19a606659163The Android Open Source Project 35564064216a8433360745f69edddce19a606659163The Android Open Source Project case AUTH_LEGACY_AUTO_SWITCH: 35664064216a8433360745f69edddce19a606659163The Android Open Source Project /* First configure the MLME with the new legacy authentication type */ 35764064216a8433360745f69edddce19a606659163The Android Open Source Project pMlmeSm->legacyAuthType = AUTH_LEGACY_AUTO_SWITCH; 35864064216a8433360745f69edddce19a606659163The Android Open Source Project /* Now configure the authentication module, 35964064216a8433360745f69edddce19a606659163The Android Open Source Project Auto switch mode means start always with shared key, if fail move to open system. */ 36064064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 36164064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->content.authLegacyAuthType = AUTH_LEGACY_SHARED_KEY; 36264064216a8433360745f69edddce19a606659163The Android Open Source Project return auth_setParam(pMlmeSm->hAuth, pParam); 36364064216a8433360745f69edddce19a606659163The Android Open Source Project 36464064216a8433360745f69edddce19a606659163The Android Open Source Project default: 36564064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pMlmeSm->hReport, MLME_SM_MODULE_LOG, ("Set param, Params is not supported, 0x%x\n\n", pParam->content.mlmeLegacyAuthType)); 36664064216a8433360745f69edddce19a606659163The Android Open Source Project return PARAM_VALUE_NOT_VALID; 36764064216a8433360745f69edddce19a606659163The Android Open Source Project } 36864064216a8433360745f69edddce19a606659163The Android Open Source Project/* break; - unreachable */ 36964064216a8433360745f69edddce19a606659163The Android Open Source Project 37064064216a8433360745f69edddce19a606659163The Android Open Source Project case MLME_RE_ASSOC_PARAM: 37164064216a8433360745f69edddce19a606659163The Android Open Source Project pMlmeSm->reAssoc = pParam->content.mlmeReAssoc; 37264064216a8433360745f69edddce19a606659163The Android Open Source Project break; 37364064216a8433360745f69edddce19a606659163The Android Open Source Project 37464064216a8433360745f69edddce19a606659163The Android Open Source Project default: 37564064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pMlmeSm->hReport, MLME_SM_MODULE_LOG, ("Set param, Params is not supported, 0x%x\n\n", pParam->paramType)); 37664064216a8433360745f69edddce19a606659163The Android Open Source Project return PARAM_NOT_SUPPORTED; 37764064216a8433360745f69edddce19a606659163The Android Open Source Project } 37864064216a8433360745f69edddce19a606659163The Android Open Source Project 37964064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 38064064216a8433360745f69edddce19a606659163The Android Open Source Project} 38164064216a8433360745f69edddce19a606659163The Android Open Source Project 38264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_getParam(TI_HANDLE hMlmeSm, 38364064216a8433360745f69edddce19a606659163The Android Open Source Project paramInfo_t *pParam) 38464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 38564064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pMlmeSm = (mlme_t *)hMlmeSm; 38664064216a8433360745f69edddce19a606659163The Android Open Source Project 38764064216a8433360745f69edddce19a606659163The Android Open Source Project switch(pParam->paramType) 38864064216a8433360745f69edddce19a606659163The Android Open Source Project { 38964064216a8433360745f69edddce19a606659163The Android Open Source Project case MLME_LEGACY_TYPE_PARAM: 39064064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->content.mlmeLegacyAuthType = pMlmeSm->legacyAuthType; 39164064216a8433360745f69edddce19a606659163The Android Open Source Project break; 39264064216a8433360745f69edddce19a606659163The Android Open Source Project 39364064216a8433360745f69edddce19a606659163The Android Open Source Project case MLME_CAPABILITY_PARAM: 39464064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->content.mlmeLegacyAuthType = pMlmeSm->legacyAuthType; 39564064216a8433360745f69edddce19a606659163The Android Open Source Project assoc_smCapBuild(pMlmeSm->hAssoc, &(pParam->content.siteMgrSiteCapability)); 39664064216a8433360745f69edddce19a606659163The Android Open Source Project break; 39764064216a8433360745f69edddce19a606659163The Android Open Source Project 39864064216a8433360745f69edddce19a606659163The Android Open Source Project case MLME_BEACON_RECV: 39964064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->content.siteMgrTiWlanCounters.BeaconsRecv = pMlmeSm->BeaconsCounterPS; 40064064216a8433360745f69edddce19a606659163The Android Open Source Project break; 40164064216a8433360745f69edddce19a606659163The Android Open Source Project 40264064216a8433360745f69edddce19a606659163The Android Open Source Project default: 40364064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pMlmeSm->hReport, MLME_SM_MODULE_LOG, ("Get param, Params is not supported, %d\n\n", pParam->content.mlmeLegacyAuthType)); 40464064216a8433360745f69edddce19a606659163The Android Open Source Project return PARAM_NOT_SUPPORTED; 40564064216a8433360745f69edddce19a606659163The Android Open Source Project } 40664064216a8433360745f69edddce19a606659163The Android Open Source Project 40764064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 40864064216a8433360745f69edddce19a606659163The Android Open Source Project} 40964064216a8433360745f69edddce19a606659163The Android Open Source Project 41064064216a8433360745f69edddce19a606659163The Android Open Source Project/** 41164064216a8433360745f69edddce19a606659163The Android Open Source Project* 41264064216a8433360745f69edddce19a606659163The Android Open Source Project* mlme_Start - Start event for the MLME SM 41364064216a8433360745f69edddce19a606659163The Android Open Source Project* 41464064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 41564064216a8433360745f69edddce19a606659163The Android Open Source Project* 41664064216a8433360745f69edddce19a606659163The Android Open Source Project* Start event for the MLME SM 41764064216a8433360745f69edddce19a606659163The Android Open Source Project* 41864064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: 41964064216a8433360745f69edddce19a606659163The Android Open Source Project* 42064064216a8433360745f69edddce19a606659163The Android Open Source Project* I - hMlme - MLME SM context \n 42164064216a8433360745f69edddce19a606659163The Android Open Source Project* 42264064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 42364064216a8433360745f69edddce19a606659163The Android Open Source Project* 42464064216a8433360745f69edddce19a606659163The Android Open Source Project* OK if successful, NOK otherwise. 42564064216a8433360745f69edddce19a606659163The Android Open Source Project* 42664064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa mlme_Stop, mlme_Recv 42764064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 42864064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_start(TI_HANDLE hMlme) 42964064216a8433360745f69edddce19a606659163The Android Open Source Project{ 43064064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 43164064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pHandle; 43264064216a8433360745f69edddce19a606659163The Android Open Source Project 43364064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle = (mlme_t*)hMlme; 43464064216a8433360745f69edddce19a606659163The Android Open Source Project 43564064216a8433360745f69edddce19a606659163The Android Open Source Project if (pHandle == NULL) 43664064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 43764064216a8433360745f69edddce19a606659163The Android Open Source Project 43864064216a8433360745f69edddce19a606659163The Android Open Source Project if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 43964064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 44064064216a8433360745f69edddce19a606659163The Android Open Source Project 44164064216a8433360745f69edddce19a606659163The Android Open Source Project status = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_START, pHandle); 44264064216a8433360745f69edddce19a606659163The Android Open Source Project 44364064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 44464064216a8433360745f69edddce19a606659163The Android Open Source Project} 44564064216a8433360745f69edddce19a606659163The Android Open Source Project 44664064216a8433360745f69edddce19a606659163The Android Open Source Project/** 44764064216a8433360745f69edddce19a606659163The Android Open Source Project* 44864064216a8433360745f69edddce19a606659163The Android Open Source Project* mlme_Stop - Stop event for the MLME SM 44964064216a8433360745f69edddce19a606659163The Android Open Source Project* 45064064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 45164064216a8433360745f69edddce19a606659163The Android Open Source Project* 45264064216a8433360745f69edddce19a606659163The Android Open Source Project* Stop event for the MLME SM 45364064216a8433360745f69edddce19a606659163The Android Open Source Project* 45464064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: 45564064216a8433360745f69edddce19a606659163The Android Open Source Project* 45664064216a8433360745f69edddce19a606659163The Android Open Source Project* I - hMlme - MLME SM context \n 45764064216a8433360745f69edddce19a606659163The Android Open Source Project* 45864064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 45964064216a8433360745f69edddce19a606659163The Android Open Source Project* 46064064216a8433360745f69edddce19a606659163The Android Open Source Project* OK if successful, NOK otherwise. 46164064216a8433360745f69edddce19a606659163The Android Open Source Project* 46264064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa mlme_Start, mlme_Recv 46364064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 46464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_stop(TI_HANDLE hMlme, disConnType_e disConnType, mgmtStatus_e reason) 46564064216a8433360745f69edddce19a606659163The Android Open Source Project{ 46664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 46764064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pHandle; 46864064216a8433360745f69edddce19a606659163The Android Open Source Project 46964064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle = (mlme_t*)hMlme; 47064064216a8433360745f69edddce19a606659163The Android Open Source Project 47164064216a8433360745f69edddce19a606659163The Android Open Source Project if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 47264064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 47364064216a8433360745f69edddce19a606659163The Android Open Source Project 47464064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->disConnType = disConnType; 47564064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->disConnReason = reason; 47664064216a8433360745f69edddce19a606659163The Android Open Source Project 47764064216a8433360745f69edddce19a606659163The Android Open Source Project status = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_STOP, pHandle); 47864064216a8433360745f69edddce19a606659163The Android Open Source Project 47964064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 48064064216a8433360745f69edddce19a606659163The Android Open Source Project} 48164064216a8433360745f69edddce19a606659163The Android Open Source Project 48264064216a8433360745f69edddce19a606659163The Android Open Source Project 48364064216a8433360745f69edddce19a606659163The Android Open Source Project/** 48464064216a8433360745f69edddce19a606659163The Android Open Source Project* 48564064216a8433360745f69edddce19a606659163The Android Open Source Project* mlme_reportAuthStatus - Set a specific parameter to the MLME SM 48664064216a8433360745f69edddce19a606659163The Android Open Source Project* 48764064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 48864064216a8433360745f69edddce19a606659163The Android Open Source Project* 48964064216a8433360745f69edddce19a606659163The Android Open Source Project* Set a specific parameter to the MLME SM. 49064064216a8433360745f69edddce19a606659163The Android Open Source Project* 49164064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: 49264064216a8433360745f69edddce19a606659163The Android Open Source Project* 49364064216a8433360745f69edddce19a606659163The Android Open Source Project* I - hMlme - MLME SM context \n 49464064216a8433360745f69edddce19a606659163The Android Open Source Project* I/O - pParam - Parameter \n 49564064216a8433360745f69edddce19a606659163The Android Open Source Project* 49664064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 49764064216a8433360745f69edddce19a606659163The Android Open Source Project* 49864064216a8433360745f69edddce19a606659163The Android Open Source Project* OK if successful, NOK otherwise. 49964064216a8433360745f69edddce19a606659163The Android Open Source Project* 50064064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa mlme_Start, mlme_Stop 50164064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 50264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_reportAuthStatus(TI_HANDLE hMlme, UINT16 status) 50364064216a8433360745f69edddce19a606659163The Android Open Source Project{ 50464064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pHandle; 50564064216a8433360745f69edddce19a606659163The Android Open Source Project paramInfo_t param; 50664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS fStatus; 50764064216a8433360745f69edddce19a606659163The Android Open Source Project 50864064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle = (mlme_t*)hMlme; 50964064216a8433360745f69edddce19a606659163The Android Open Source Project 51064064216a8433360745f69edddce19a606659163The Android Open Source Project if (pHandle == NULL) 51164064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 51264064216a8433360745f69edddce19a606659163The Android Open Source Project 51364064216a8433360745f69edddce19a606659163The Android Open Source Project if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 51464064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 51564064216a8433360745f69edddce19a606659163The Android Open Source Project 51664064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->mlmeData.uStatusCode = status; 51764064216a8433360745f69edddce19a606659163The Android Open Source Project 51864064216a8433360745f69edddce19a606659163The Android Open Source Project /* If status is successful */ 51964064216a8433360745f69edddce19a606659163The Android Open Source Project if (status == 0) 52064064216a8433360745f69edddce19a606659163The Android Open Source Project { 52164064216a8433360745f69edddce19a606659163The Android Open Source Project /* Mark a successful status - used for conn.c */ 52264064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->mlmeData.mgmtStatus = STATUS_SUCCESSFUL; 52364064216a8433360745f69edddce19a606659163The Android Open Source Project 52464064216a8433360745f69edddce19a606659163The Android Open Source Project fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_AUTH_SUCCESS, pHandle); 52564064216a8433360745f69edddce19a606659163The Android Open Source Project } 52664064216a8433360745f69edddce19a606659163The Android Open Source Project else 52764064216a8433360745f69edddce19a606659163The Android Open Source Project { 52864064216a8433360745f69edddce19a606659163The Android Open Source Project /* Now, if the MLME legacy auth type is AUTO_SWITCH, and the Auth legacy auth type is shared key, 52964064216a8433360745f69edddce19a606659163The Android Open Source Project we configure the auth SM to open system, otherwise, this is really an authentication failure. */ 53064064216a8433360745f69edddce19a606659163The Android Open Source Project param.paramType = AUTH_LEGACY_TYPE_PARAM; 53164064216a8433360745f69edddce19a606659163The Android Open Source Project auth_getParam(pHandle->hAuth, ¶m); 53264064216a8433360745f69edddce19a606659163The Android Open Source Project 53364064216a8433360745f69edddce19a606659163The Android Open Source Project if ((pHandle->legacyAuthType == AUTH_LEGACY_AUTO_SWITCH) && (param.content.authLegacyAuthType == AUTH_LEGACY_SHARED_KEY)) 53464064216a8433360745f69edddce19a606659163The Android Open Source Project { 53564064216a8433360745f69edddce19a606659163The Android Open Source Project param.content.authLegacyAuthType = AUTH_LEGACY_OPEN_SYSTEM; 53664064216a8433360745f69edddce19a606659163The Android Open Source Project fStatus = auth_setParam(pHandle->hAuth, ¶m); 53764064216a8433360745f69edddce19a606659163The Android Open Source Project fStatus = auth_start(pHandle->hAuth); 53864064216a8433360745f69edddce19a606659163The Android Open Source Project } 53964064216a8433360745f69edddce19a606659163The Android Open Source Project else 54064064216a8433360745f69edddce19a606659163The Android Open Source Project { 54164064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->mlmeData.mgmtStatus = STATUS_AUTH_REJECT; 54264064216a8433360745f69edddce19a606659163The Android Open Source Project fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_AUTH_FAIL, pHandle); 54364064216a8433360745f69edddce19a606659163The Android Open Source Project } 54464064216a8433360745f69edddce19a606659163The Android Open Source Project } 54564064216a8433360745f69edddce19a606659163The Android Open Source Project 54664064216a8433360745f69edddce19a606659163The Android Open Source Project return fStatus; 54764064216a8433360745f69edddce19a606659163The Android Open Source Project} 54864064216a8433360745f69edddce19a606659163The Android Open Source Project 54964064216a8433360745f69edddce19a606659163The Android Open Source Project/** 55064064216a8433360745f69edddce19a606659163The Android Open Source Project* 55164064216a8433360745f69edddce19a606659163The Android Open Source Project* mlme_reportAssocStatus - Set a specific parameter to the MLME SM 55264064216a8433360745f69edddce19a606659163The Android Open Source Project* 55364064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 55464064216a8433360745f69edddce19a606659163The Android Open Source Project* 55564064216a8433360745f69edddce19a606659163The Android Open Source Project* Set a specific parameter to the MLME SM. 55664064216a8433360745f69edddce19a606659163The Android Open Source Project* 55764064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: 55864064216a8433360745f69edddce19a606659163The Android Open Source Project* 55964064216a8433360745f69edddce19a606659163The Android Open Source Project* I - hMlme - MLME SM context \n 56064064216a8433360745f69edddce19a606659163The Android Open Source Project* I/O - pParam - Parameter \n 56164064216a8433360745f69edddce19a606659163The Android Open Source Project* 56264064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 56364064216a8433360745f69edddce19a606659163The Android Open Source Project* 56464064216a8433360745f69edddce19a606659163The Android Open Source Project* OK if successful, NOK otherwise. 56564064216a8433360745f69edddce19a606659163The Android Open Source Project* 56664064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa mlme_Start, mlme_Stop 56764064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 56864064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_reportAssocStatus(TI_HANDLE hMlme, UINT16 status) 56964064216a8433360745f69edddce19a606659163The Android Open Source Project{ 57064064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pHandle; 57164064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS fStatus; 57264064216a8433360745f69edddce19a606659163The Android Open Source Project 57364064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle = (mlme_t*)hMlme; 57464064216a8433360745f69edddce19a606659163The Android Open Source Project 57564064216a8433360745f69edddce19a606659163The Android Open Source Project if (pHandle == NULL) 57664064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 57764064216a8433360745f69edddce19a606659163The Android Open Source Project 57864064216a8433360745f69edddce19a606659163The Android Open Source Project if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 57964064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 58064064216a8433360745f69edddce19a606659163The Android Open Source Project 58164064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->mlmeData.uStatusCode = status; 58264064216a8433360745f69edddce19a606659163The Android Open Source Project 58364064216a8433360745f69edddce19a606659163The Android Open Source Project /* If status is successful */ 58464064216a8433360745f69edddce19a606659163The Android Open Source Project if (status == 0) 58564064216a8433360745f69edddce19a606659163The Android Open Source Project { 58664064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->mlmeData.mgmtStatus = STATUS_SUCCESSFUL; 58764064216a8433360745f69edddce19a606659163The Android Open Source Project fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_ASSOC_SUCCESS, pHandle); 58864064216a8433360745f69edddce19a606659163The Android Open Source Project } else 58964064216a8433360745f69edddce19a606659163The Android Open Source Project { 59064064216a8433360745f69edddce19a606659163The Android Open Source Project pHandle->mlmeData.mgmtStatus = STATUS_ASSOC_REJECT; 59164064216a8433360745f69edddce19a606659163The Android Open Source Project fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_ASSOC_FAIL, pHandle); 59264064216a8433360745f69edddce19a606659163The Android Open Source Project } 59364064216a8433360745f69edddce19a606659163The Android Open Source Project 59464064216a8433360745f69edddce19a606659163The Android Open Source Project return fStatus; 59564064216a8433360745f69edddce19a606659163The Android Open Source Project} 59664064216a8433360745f69edddce19a606659163The Android Open Source Project 59764064216a8433360745f69edddce19a606659163The Android Open Source Project 59864064216a8433360745f69edddce19a606659163The Android Open Source Project/** 59964064216a8433360745f69edddce19a606659163The Android Open Source Project* 60064064216a8433360745f69edddce19a606659163The Android Open Source Project* mlme_SetParam - Set a specific parameter to the MLME SM 60164064216a8433360745f69edddce19a606659163The Android Open Source Project* 60264064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 60364064216a8433360745f69edddce19a606659163The Android Open Source Project* 60464064216a8433360745f69edddce19a606659163The Android Open Source Project* Set a specific parameter to the MLME SM. 60564064216a8433360745f69edddce19a606659163The Android Open Source Project* 60664064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: 60764064216a8433360745f69edddce19a606659163The Android Open Source Project* 60864064216a8433360745f69edddce19a606659163The Android Open Source Project* I - hMlme - MLME SM context \n 60964064216a8433360745f69edddce19a606659163The Android Open Source Project* I/O - pParam - Parameter \n 61064064216a8433360745f69edddce19a606659163The Android Open Source Project* 61164064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 61264064216a8433360745f69edddce19a606659163The Android Open Source Project* 61364064216a8433360745f69edddce19a606659163The Android Open Source Project* OK if successful, NOK otherwise. 61464064216a8433360745f69edddce19a606659163The Android Open Source Project* 61564064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa mlme_Start, mlme_Stop 61664064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 61764064216a8433360745f69edddce19a606659163The Android Open Source Project 61864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef REPORT_LOG 61964064216a8433360745f69edddce19a606659163The Android Open Source Project 62064064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic char *mlmeSMStateDesc[MLME_SM_NUM_STATES] = { 62164064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_STATE_IDLE", 62264064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_STATE_AUTH_WAIT", 62364064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_STATE_ASSOC_WAIT", 62464064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_STATE_ASSOC" 62564064216a8433360745f69edddce19a606659163The Android Open Source Project }; 62664064216a8433360745f69edddce19a606659163The Android Open Source Project 62764064216a8433360745f69edddce19a606659163The Android Open Source Project /* State machine inputs */ 62864064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic char *mlmeSMEventDesc[MLME_SM_NUM_EVENTS] = { 62964064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_EVENT_START", 63064064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_EVENT_STOP", 63164064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_EVENT_AUTH_SUCCESS", 63264064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_EVENT_AUTH_FAIL", 63364064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_EVENT_ASSOC_SUCCESS", 63464064216a8433360745f69edddce19a606659163The Android Open Source Project "MLME_SM_EVENT_ASSOC_FAIL" 63564064216a8433360745f69edddce19a606659163The Android Open Source Project }; 63664064216a8433360745f69edddce19a606659163The Android Open Source Project 63764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 63864064216a8433360745f69edddce19a606659163The Android Open Source Project 63964064216a8433360745f69edddce19a606659163The Android Open Source Project 64064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smEvent(UINT8 *currentState, UINT8 event, TI_HANDLE hMlme) 64164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 64264064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_t *pMlme = (mlme_t *)hMlme; 64364064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 64464064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 nextState; 64564064216a8433360745f69edddce19a606659163The Android Open Source Project 64664064216a8433360745f69edddce19a606659163The Android Open Source Project status = fsm_GetNextState(pMlme->pMlmeSm, *currentState, event, &nextState); 64764064216a8433360745f69edddce19a606659163The Android Open Source Project if (status != OK) 64864064216a8433360745f69edddce19a606659163The Android Open Source Project { 64964064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pMlme->hReport, MLME_SM_MODULE_LOG, 65064064216a8433360745f69edddce19a606659163The Android Open Source Project ("MLME_SM: ERROR - failed getting next state \n")); 65164064216a8433360745f69edddce19a606659163The Android Open Source Project 65264064216a8433360745f69edddce19a606659163The Android Open Source Project return(NOK); 65364064216a8433360745f69edddce19a606659163The Android Open Source Project } 65464064216a8433360745f69edddce19a606659163The Android Open Source Project 65564064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_SM(pMlme->hReport, MLME_SM_MODULE_LOG, 65664064216a8433360745f69edddce19a606659163The Android Open Source Project ("MLME_SM: <%s, %s> --> %s\n", 65764064216a8433360745f69edddce19a606659163The Android Open Source Project mlmeSMStateDesc[*currentState], 65864064216a8433360745f69edddce19a606659163The Android Open Source Project mlmeSMEventDesc[event], 65964064216a8433360745f69edddce19a606659163The Android Open Source Project mlmeSMStateDesc[nextState])); 66064064216a8433360745f69edddce19a606659163The Android Open Source Project 66164064216a8433360745f69edddce19a606659163The Android Open Source Project status = fsm_Event(pMlme->pMlmeSm, currentState, event, (void *)pMlme); 66264064216a8433360745f69edddce19a606659163The Android Open Source Project 66364064216a8433360745f69edddce19a606659163The Android Open Source Project return(status); 66464064216a8433360745f69edddce19a606659163The Android Open Source Project} 66564064216a8433360745f69edddce19a606659163The Android Open Source Project 66664064216a8433360745f69edddce19a606659163The Android Open Source Project/* state machine functions */ 66764064216a8433360745f69edddce19a606659163The Android Open Source Project 66864064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smStartIdle(mlme_t *pMlme) 66964064216a8433360745f69edddce19a606659163The Android Open Source Project{ 67064064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 67164064216a8433360745f69edddce19a606659163The Android Open Source Project 67264064216a8433360745f69edddce19a606659163The Android Open Source Project status = auth_start(pMlme->hAuth); 67364064216a8433360745f69edddce19a606659163The Android Open Source Project 67464064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 67564064216a8433360745f69edddce19a606659163The Android Open Source Project} 67664064216a8433360745f69edddce19a606659163The Android Open Source Project 67764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smClass3Idle(mlme_t *pMlme) 67864064216a8433360745f69edddce19a606659163The Android Open Source Project{ 67964064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 68064064216a8433360745f69edddce19a606659163The Android Open Source Project} 68164064216a8433360745f69edddce19a606659163The Android Open Source Project 68264064216a8433360745f69edddce19a606659163The Android Open Source Project 68364064216a8433360745f69edddce19a606659163The Android Open Source Project 68464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smAuthSuccessAuthWait(mlme_t *pMlme) 68564064216a8433360745f69edddce19a606659163The Android Open Source Project{ 68664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 68764064216a8433360745f69edddce19a606659163The Android Open Source Project 68864064216a8433360745f69edddce19a606659163The Android Open Source Project if (pMlme->reAssoc) 68964064216a8433360745f69edddce19a606659163The Android Open Source Project { 69064064216a8433360745f69edddce19a606659163The Android Open Source Project status = reassoc_start(pMlme->hAssoc); 69164064216a8433360745f69edddce19a606659163The Android Open Source Project } 69264064216a8433360745f69edddce19a606659163The Android Open Source Project else 69364064216a8433360745f69edddce19a606659163The Android Open Source Project { 69464064216a8433360745f69edddce19a606659163The Android Open Source Project status = assoc_start(pMlme->hAssoc); 69564064216a8433360745f69edddce19a606659163The Android Open Source Project } 69664064216a8433360745f69edddce19a606659163The Android Open Source Project 69764064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 69864064216a8433360745f69edddce19a606659163The Android Open Source Project} 69964064216a8433360745f69edddce19a606659163The Android Open Source Project 70064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smAuthFailAuthWait(mlme_t *pMlme) 70164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 70264064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 70364064216a8433360745f69edddce19a606659163The Android Open Source Project 70464064216a8433360745f69edddce19a606659163The Android Open Source Project status = mlme_smReportStatus(pMlme); 70564064216a8433360745f69edddce19a606659163The Android Open Source Project 70664064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 70764064216a8433360745f69edddce19a606659163The Android Open Source Project} 70864064216a8433360745f69edddce19a606659163The Android Open Source Project 70964064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smStopAssocWait(mlme_t *pMlme) 71064064216a8433360745f69edddce19a606659163The Android Open Source Project{ 71164064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_stopAssocAndAuth(pMlme); 71264064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 71364064216a8433360745f69edddce19a606659163The Android Open Source Project} 71464064216a8433360745f69edddce19a606659163The Android Open Source Project 71564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smAssocSuccessAssocWait(mlme_t *pMlme) 71664064216a8433360745f69edddce19a606659163The Android Open Source Project{ 71764064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 71864064216a8433360745f69edddce19a606659163The Android Open Source Project 71964064216a8433360745f69edddce19a606659163The Android Open Source Project status = mlme_smReportStatus(pMlme); 72064064216a8433360745f69edddce19a606659163The Android Open Source Project 72164064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 72264064216a8433360745f69edddce19a606659163The Android Open Source Project} 72364064216a8433360745f69edddce19a606659163The Android Open Source Project 72464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smAssocFailAssocWait(mlme_t *pMlme) 72564064216a8433360745f69edddce19a606659163The Android Open Source Project{ 72664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 72764064216a8433360745f69edddce19a606659163The Android Open Source Project 72864064216a8433360745f69edddce19a606659163The Android Open Source Project status = mlme_smReportStatus(pMlme); 72964064216a8433360745f69edddce19a606659163The Android Open Source Project 73064064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 73164064216a8433360745f69edddce19a606659163The Android Open Source Project} 73264064216a8433360745f69edddce19a606659163The Android Open Source Project 73364064216a8433360745f69edddce19a606659163The Android Open Source Project 73464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smStopAssoc(mlme_t *pMlme) 73564064216a8433360745f69edddce19a606659163The Android Open Source Project{ 73664064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_stopAssocAndAuth(pMlme); 73764064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 73864064216a8433360745f69edddce19a606659163The Android Open Source Project} 73964064216a8433360745f69edddce19a606659163The Android Open Source Project 74064064216a8433360745f69edddce19a606659163The Android Open Source Project 74164064216a8433360745f69edddce19a606659163The Android Open Source Project 74264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smNOP(mlme_t *pMlme) 74364064216a8433360745f69edddce19a606659163The Android Open Source Project{ 74464064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 74564064216a8433360745f69edddce19a606659163The Android Open Source Project} 74664064216a8433360745f69edddce19a606659163The Android Open Source Project 74764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smActionUnexpected(mlme_t *pMlme) 74864064216a8433360745f69edddce19a606659163The Android Open Source Project{ 74964064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 75064064216a8433360745f69edddce19a606659163The Android Open Source Project} 75164064216a8433360745f69edddce19a606659163The Android Open Source Project 75264064216a8433360745f69edddce19a606659163The Android Open Source Project/* local functions */ 75364064216a8433360745f69edddce19a606659163The Android Open Source Project 75464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS mlme_smReportStatus(mlme_t *pMlme) 75564064216a8433360745f69edddce19a606659163The Android Open Source Project{ 75664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 75764064216a8433360745f69edddce19a606659163The Android Open Source Project 75864064216a8433360745f69edddce19a606659163The Android Open Source Project if (pMlme == NULL) 75964064216a8433360745f69edddce19a606659163The Android Open Source Project { 76064064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 76164064216a8433360745f69edddce19a606659163The Android Open Source Project } 76264064216a8433360745f69edddce19a606659163The Android Open Source Project 76364064216a8433360745f69edddce19a606659163The Android Open Source Project status = conn_reportMlmeStatus(pMlme->hConn, pMlme->mlmeData.mgmtStatus, pMlme->mlmeData.uStatusCode); 76464064216a8433360745f69edddce19a606659163The Android Open Source Project 76564064216a8433360745f69edddce19a606659163The Android Open Source Project return status; 76664064216a8433360745f69edddce19a606659163The Android Open Source Project} 76764064216a8433360745f69edddce19a606659163The Android Open Source Project 76864064216a8433360745f69edddce19a606659163The Android Open Source Project 76964064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef NO_HAL_VOB 77064064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void mlme_logBeaconReceived(TI_HANDLE hMlme) 77164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 77264064216a8433360745f69edddce19a606659163The Android Open Source Project mlme_beaconReceivedPrint(hMlme); 77364064216a8433360745f69edddce19a606659163The Android Open Source Project} 77464064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 77564064216a8433360745f69edddce19a606659163The Android Open Source Project 77664064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid mlme_stopAssocAndAuth(mlme_t *pMlme) 77764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 77864064216a8433360745f69edddce19a606659163The Android Open Source Project 77964064216a8433360745f69edddce19a606659163The Android Open Source Project BOOL sendDeAuth; 78064064216a8433360745f69edddce19a606659163The Android Open Source Project BOOL sendDisAssoc; 78164064216a8433360745f69edddce19a606659163The Android Open Source Project 78264064216a8433360745f69edddce19a606659163The Android Open Source Project switch( pMlme->disConnType ) 78364064216a8433360745f69edddce19a606659163The Android Open Source Project { 78464064216a8433360745f69edddce19a606659163The Android Open Source Project case DISCONN_TYPE_IMMEDIATE: 78564064216a8433360745f69edddce19a606659163The Android Open Source Project sendDeAuth = FALSE; 78664064216a8433360745f69edddce19a606659163The Android Open Source Project sendDisAssoc = FALSE; 78764064216a8433360745f69edddce19a606659163The Android Open Source Project break; 78864064216a8433360745f69edddce19a606659163The Android Open Source Project 78964064216a8433360745f69edddce19a606659163The Android Open Source Project case DISCONN_TYPE_DISASSOC: 79064064216a8433360745f69edddce19a606659163The Android Open Source Project sendDisAssoc = TRUE; 79164064216a8433360745f69edddce19a606659163The Android Open Source Project sendDeAuth = FALSE; 79264064216a8433360745f69edddce19a606659163The Android Open Source Project break; 79364064216a8433360745f69edddce19a606659163The Android Open Source Project 79464064216a8433360745f69edddce19a606659163The Android Open Source Project case DISCONN_TYPE_DEAUTH: 79564064216a8433360745f69edddce19a606659163The Android Open Source Project sendDisAssoc = FALSE; 79664064216a8433360745f69edddce19a606659163The Android Open Source Project sendDeAuth = TRUE; 79764064216a8433360745f69edddce19a606659163The Android Open Source Project break; 79864064216a8433360745f69edddce19a606659163The Android Open Source Project 79964064216a8433360745f69edddce19a606659163The Android Open Source Project default: 80064064216a8433360745f69edddce19a606659163The Android Open Source Project return; 80164064216a8433360745f69edddce19a606659163The Android Open Source Project } 80264064216a8433360745f69edddce19a606659163The Android Open Source Project 80364064216a8433360745f69edddce19a606659163The Android Open Source Project assoc_setDisAssocFlag(pMlme->hAssoc, sendDisAssoc); 80464064216a8433360745f69edddce19a606659163The Android Open Source Project assoc_stop(pMlme->hAssoc); 80564064216a8433360745f69edddce19a606659163The Android Open Source Project 80664064216a8433360745f69edddce19a606659163The Android Open Source Project auth_stop(pMlme->hAuth, sendDeAuth, pMlme->disConnReason ); 80764064216a8433360745f69edddce19a606659163The Android Open Source Project 80864064216a8433360745f69edddce19a606659163The Android Open Source Project /* If the dis association frame is not sent the MLME generate the event 80964064216a8433360745f69edddce19a606659163The Android Open Source Project by itself */ 81064064216a8433360745f69edddce19a606659163The Android Open Source Project if (( sendDisAssoc == FALSE) && (sendDeAuth==FALSE)) { 81164064216a8433360745f69edddce19a606659163The Android Open Source Project conn_disConnFrameSentCBFunc(pMlme->hConn); 81264064216a8433360745f69edddce19a606659163The Android Open Source Project } 81364064216a8433360745f69edddce19a606659163The Android Open Source Project} 81464064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************** 81564064216a8433360745f69edddce19a606659163The Android Open Source Project** 81664064216a8433360745f69edddce19a606659163The Android Open Source Project** MLME messages builder/Parser 81764064216a8433360745f69edddce19a606659163The Android Open Source Project** 81864064216a8433360745f69edddce19a606659163The Android Open Source Project*****************************************************************************/ 81964064216a8433360745f69edddce19a606659163The Android Open Source Project 82064064216a8433360745f69edddce19a606659163The Android Open Source Project 82164064216a8433360745f69edddce19a606659163The Android Open Source Project 82264064216a8433360745f69edddce19a606659163The Android Open Source Project 82364064216a8433360745f69edddce19a606659163The Android Open Source Project 82464064216a8433360745f69edddce19a606659163The Android Open Source Project 82564064216a8433360745f69edddce19a606659163The Android Open Source Project 826