diff options
Diffstat (limited to 'wilink_6_1/stad/src/Application/scanMngrApi.h')
-rw-r--r-- | wilink_6_1/stad/src/Application/scanMngrApi.h | 396 |
1 files changed, 396 insertions, 0 deletions
diff --git a/wilink_6_1/stad/src/Application/scanMngrApi.h b/wilink_6_1/stad/src/Application/scanMngrApi.h new file mode 100644 index 0000000..792c25d --- /dev/null +++ b/wilink_6_1/stad/src/Application/scanMngrApi.h @@ -0,0 +1,396 @@ +/* + * scanMngrApi.h + * + * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name Texas Instruments nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** \file scanMngrApi.h + * \brief This file include public definitions for the scan manager module, comprising its API. + * + * \see scanMngr.c, scanMngr.h, scanMngrTypes.h + */ + + +#ifndef __SCAN_MNGR_API_H__ +#define __SCAN_MNGR_API_H__ + +#include "scanMngrTypes.h" +#include "bssTypes.h" +#include "ScanCncn.h" +#include "DrvMainModules.h" + + +/* + *********************************************************************** + * Constant definitions. + *********************************************************************** + */ + +#define SCANNING_OPERATIONAL_MODE_MANUAL 0 +#define SCANNING_OPERATIONAL_MODE_AUTO 1 + + +/* + *********************************************************************** + * Enums. + *********************************************************************** + */ +/** \enum scan_mngrResultStatus_e + * + * \brief Scan Manager Result Status + * + * \par Description + * Enumerates the possible Scan result statuses. + * Returned as a response to an immediate scan request. + * + * \sa + */ + typedef enum +{ +/* 0 */ SCAN_MRS_SCAN_COMPLETE_OK, /**< Scan was completed successfully */ +/* 1 */ SCAN_MRS_SCAN_RUNNING, /**< Scan was started successfully and is now running */ +/* 2 */ SCAN_MRS_SCAN_NOT_ATTEMPTED_ALREADY_RUNNING, /**< scan was not attempted because it is already running */ +/* 3 */ SCAN_MRS_SCAN_NOT_ATTEMPTED_EMPTY_POLICY, /**< + * Scan was not attempted because the policy defines + * NULL scan type + */ +/* 4 */ SCAN_MRS_SCAN_NOT_ATTEMPTED_NO_CHANNLES_AVAILABLE, /**< + * Scan was not attempted because no channels are + * available for scan, according to the defined policy. + */ +/* 5 */ SCAN_MRS_SCAN_FAILED, /**< Scan failed to start */ +/* 6 */ SCAN_MRS_SCAN_STOPPED, /**< Scan was stopped by caller */ +/* 7 */ SCAN_MRS_SCAN_ABORTED_FW_RESET, /**< Scan was aborted due to recovery */ +/* 8 */ SCAN_MRS_SCAN_ABORTED_HIGHER_PRIORITY /**< Scan was aborted due to a higher priority client */ + +} scan_mngrResultStatus_e; + +typedef enum { + CONNECTION_STATUS_CONNECTED =0, + CONNECTION_STATUS_NOT_CONNECTED +} scanMngr_connStatus_e; + + + + +/* + *********************************************************************** + * Typedefs. + *********************************************************************** + */ + +/* + *********************************************************************** + * Structure definitions. + *********************************************************************** + */ + +typedef struct { + TI_UINT8 numOfChannels; /**< Number of channels to scan */ + TScanChannelEntry channelEntry[ MAX_NUMBER_OF_CHANNELS_PER_SCAN ]; /**< Channel data array, actual size according to the above field. */ +} channelList_t; + +typedef struct _BssListEx_t +{ + bssList_t *pListOfAPs; + TI_BOOL scanIsRunning; +} BssListEx_t; + + +/* + *********************************************************************** + * External data definitions. + *********************************************************************** + */ +/* + *********************************************************************** + * External functions definitions + *********************************************************************** + */ +/** + * \brief Creates the scan manager object + * + * \param hScanMngr - handle to the OS object + * \return Handle to the Scan Manager Object on Success, NULL otherwise + * + * \par Description + * Creates (allocates) the scan manager object and its database + * + * \sa + */ +TI_HANDLE scanMngr_create( TI_HANDLE hOS ); +/** + * \brief Initializes the scan manager + * + * \param pStadHandles - The driver modules handles + * \return void + * + * \par Description + * Initializes the scan manager object with other object handlers called by the driver core logic, + * and creates Scan Manager Timer + * + * \sa scanMngr_unload + */ +void scanMngr_init (TStadHandlesList *pStadHandles); +/** + * \brief Unloads the scan manager object + * + * \param hScanMngr - Handle to the scan manager object to unload + * \return void + * + * \par Description + * Frees the memory allocated by the scan manager. + * The function is called as part of the unloading process of the driver. + * + * \sa + */ +void scanMngr_unload( TI_HANDLE hScanMngr ); +/** + * \brief Starts an immediate scan operation + * + * \param hScanMngr - handle to the scan manager object + * \param pNeighborAPsOnly - Indicates whether to scan only neighbor APs (or all channels defined by the policy) + * TI_TRUE if scan for neighbor APs only, TI_FALSE if scan on all channels + * \return Scan Result Status + * + * \par Description + * + * \sa scanMngr_create + */ +scan_mngrResultStatus_e scanMngr_startImmediateScan( TI_HANDLE hScanMngr, TI_BOOL bNeighborAPsOnly ); +/** + * \brief Stops the immediate scan operation + * + * \param hScanMngr - handle to the scan manager object + * \return void + * + * \par Description + * + * \sa + */ +void scanMngr_stopImmediateScan( TI_HANDLE hScanMngr ); +/** + * \brief Starts the continuous scan timer + * + * \param hScanMngr - Handle to the scan manager object + * \param currentBSS - BSSID of the AP to which the STA is connected + * \param currentBSSBand - Band of the AP to which the STA is connected + * \return void + * + * \par Description + * Starts the continuous scan process performed by the scan manager. + * It is called by the roaming manager when an STA connection is established + * + * \sa + */ +void scanMngr_startContScan( TI_HANDLE hScanMngr, TMacAddr* currentBSS, ERadioBand currentBSSBand ); +/** + * \brief Stops the continuous scan timer + * + * \param hScanMngr - Handle to the scan manager object + * \return void + * + * \par Description + * Stops the continues scan performed by the scan manager. + * It is called by the roaming manager when the STA disconnects + * + * \sa + */ +void scanMngr_stopContScan( TI_HANDLE hScanMngr ); +/** + * \brief Returns the currently available BSS list + * + * \param hScanMngr - Handle to the scan manager object + * \return Pointer to BSS list + * + * \par Description + * Used by the roaming manager to obtain the scan manager BSS list. + * + * \sa + */ +bssList_t *scanMngr_getBSSList( TI_HANDLE hScanMngr ); +/** + * \brief Sets the neighbor APs + * + * \param hScanMngr - Handle to the scan manager object + * \param neighborAPList - Pointer to the neighbor AP list + * \return void + * + * \par Description + * Used by the roaming manager to set a list of neighbor APs for the scan manager, + * which are then given priority over policy channels in the discovery phase + * + * \sa + */ +void scanMngr_setNeighborAPs( TI_HANDLE hScanMngr, neighborAPList_t* neighborAPList ); +/** + * \brief Change quality level (normal / deteriorating) + * + * \param hScanMngr - Handle to the scan manager object + * \param bLowQuality - TI_TRUE if quality is deteriorating, TI_FALSE if quality is normal + * \return void + * + * \par Description + * Used by the roaming manager to set the scan interval used by the scan manager, + * according to the current AP quality level + * + * \sa + */ +void scanMngr_qualityChangeTrigger( TI_HANDLE hScanMngr, TI_BOOL bLowQuality ); +/** + * \brief Change quality level (normal / deteriorating) + * + * \param hScanMngr - Handle to the scan manager object + * \param macAddress - MAC address of the new AP (to which the STA is currently connected to) + * \param band - Band of the new AP (to which the STA is currently connected to) + * \return void + * + * \par Description + * Used by the roaming manager to notify the scan manager that roaming is complete. + * This is done so that the scan manager does not attempt to discover the current AP, + * in case it is also a neighbor AP + * + * \sa + */ +void scanMngr_handoverDone( TI_HANDLE hScanMngr, TMacAddr* macAddress, ERadioBand band ); +/** + * \brief Get Scan Manager Parameters + * + * \param hScanMngr - Handle to the scan manager object + * \param pParam - Pointer to get Parameter + * \return TI_OK if the parameter got successfully, TI_NOK otherwise + * + * \par Description + * Parses and executes a get parameter command + * + * \sa + */ +TI_STATUS scanMngr_getParam( TI_HANDLE hScanMngr, paramInfo_t *pParam ); +/** + * \brief Set Scan Manager Parameters + * + * \param hScanMngr - Handle to the scan manager object + * \param pParam - Pointer to set Parameter + * \return TI_OK if the parameter was set successfully, TI_NOK otherwise + * + * \par Description + * Called when the user configures scan parameters. It parses and executes a set parameter command + * + * \sa + */ +TI_STATUS scanMngr_setParam( TI_HANDLE hScanMngr, paramInfo_t *pParam ); + + + + + +/********** New APIs added for EMP manual scan support ******/ + +void scanMngr_startManual(TI_HANDLE hScanMngr); + +void scanMngr_stopManual(TI_HANDLE hScanMngr); + +TI_STATUS scanMngr_setManualScanChannelList (TI_HANDLE hScanMngr, channelList_t* pChannelList); + +EScanCncnResultStatus scanMngr_Start1ShotScan (TI_HANDLE hScanMngr, EScanCncnClient eClient); + +TI_STATUS scanMngr_immediateScanComplete(TI_HANDLE hScanMngr, scan_mngrResultStatus_e scanCmpltStatus); + +TI_STATUS scanMngr_reportImmediateScanResults(TI_HANDLE hScanMngr, scan_mngrResultStatus_e scanCmpltStatus); + +TI_STATUS scanMngr_startContinuousScanByApp (TI_HANDLE hScanMngr, channelList_t* pChannelList); + +TI_STATUS scanMngr_stopContinuousScanByApp (TI_HANDLE hScanMngr); + +/********** New APIs added for EMP manual scan support ******/ + + +#ifdef TI_DBG +/** + * \brief Print scan policy + * + * \param scanPolicy - scan policy to print + * \return void + * + * \par Description + * + * \sa + */ +void scanMngrTracePrintScanPolicy( TScanPolicy* scanPolicy ); +/** + * \brief Print scan manager statistics + * + * \param hScanMngr - handle to the scan manager object.\n + * \return void + * + * \par Description + * + * \sa + */ +void scanMngr_statsPrint( TI_HANDLE hScanMngr ); +/** + * \brief Reset scan manager statistics + * + * \param hScanMngr - handle to the scan manager object.\n + * \return void + * + * \par Description + * + * \sa + */ +void scanMngr_statsReset( TI_HANDLE hScanMngr ); +/** + * \brief Print Neighbor AP list + * + * \param hScanMngr - handle to the scan manager object.\n + * \return void + * + * \par Description + * + * \sa + */ +void scanMngrDebugPrintNeighborAPList( TI_HANDLE hScanMngr ); +/** + * \brief Prints all data in the scan manager object + * + * \param hScanMngr - handle to the scan manager object.\n + * \return void + * + * \par Description + * + * \sa + */ +void scanMngrDebugPrintObject( TI_HANDLE hScanMngr ); + +#endif /* TI_DBG */ + +void scanMngr_SetDefaults (TI_HANDLE hScanMngr, TRoamScanMngrInitParams *pInitParams); + +#endif /* __SCAN_MNGR_API_H__ */ |