| /* |
| * 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__ */ |