| /* |
| * scanMngr.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 scanMngr.h |
| * \brief This file include private definitions for the scan manager module. |
| * |
| * \see scanMngr.c, scanMngrApi.h, scanMngrTypes.h |
| */ |
| |
| |
| #ifndef __SCAN_MNGR_H__ |
| #define __SCAN_MNGR_H__ |
| |
| #include "scanMngrApi.h" |
| |
| /* |
| *********************************************************************** |
| * Constant definitions. |
| *********************************************************************** |
| */ |
| |
| /* SPS guard times */ |
| #ifdef TI_DBG |
| #define SCAN_SPS_GUARD_FROM_CURRENT_TSF 300000 /* 300 msecs - to allow for some debug printouts */ |
| #else |
| #define SCAN_SPS_GUARD_FROM_CURRENT_TSF 50000 /* 50 msecs */ |
| #endif /* TI_DBG */ |
| #define SCAN_SPS_GUARD_FROM_LAST_BSS 2000 /* 2 msecs */ |
| #define SCAN_SPS_DURATION_PART_IN_ADVANCE 4 /* 1/4 of scan duration in advance */ |
| #define SCAN_SPS_USE_DRIFT_COMPENSATION 1 /* if defined, use drift compensation algorithm */ |
| #define SCAN_SPS_NUM_OF_TSF_DELTA_ENTRIES 4 /* number of TSF delta ^ 2 entries */ |
| #define SCAN_SPS_FW_DTIM_LENGTH 1000 /* time (in usec) for a DTIM event to complete in the FW */ |
| |
| /* Quality calculation constants */ |
| #define RSSI_PREVIOUS_COEFFICIENT 9 |
| |
| /* scan iteration number after which, if no new AP was found, pre-auth needs to be re-done */ |
| #define SCAN_MNGR_CONSEC_SCAN_ITER_FOR_PRE_AUTH 50 |
| |
| #define MAX_DESC_LENGTH 50 /* max characters for a description string */ |
| #define SCAN_MNGR_STAT_MAX_TRACK_FAILURE 10 /* max track filures for statistics histogram */ |
| |
| #ifdef TI_DBG |
| /*#define SCAN_MNGR_DBG 1 |
| #define SCAN_MNGR_SPS_DBG 1 |
| #define SCAN_MNGR_DTIM_DBG 1 */ |
| #endif |
| |
| /* |
| *********************************************************************** |
| * Enums. |
| *********************************************************************** |
| */ |
| |
| /** \enum scan_immedScanState_e |
| * \brief enumerates immediate scan internal status |
| */ |
| typedef enum |
| { |
| SCAN_ISS_IDLE = 0, /**< immediate scan is not running */ |
| SCAN_ISS_G_BAND, /**< immediate scan is running on G band */ |
| SCAN_ISS_A_BAND, /**< immediate scan is running on A band */ |
| SCAN_ISS_STOPPING, /**< stop was requested and is now pending */ |
| SCAN_ISS_NUM_OF_STATES /**< number of available immediate scan states states */ |
| } scan_immedScanState_e; |
| |
| /** \enum scan_contScanState_e |
| * \brief enumerates continuous scan internal status |
| */ |
| typedef enum |
| { |
| SCAN_CSS_IDLE = 0, /**< continuous scan is not running */ |
| SCAN_CSS_TRACKING_G_BAND, /**< continuous scan is performing tracking scan on G */ |
| SCAN_CSS_TRACKING_A_BAND, /**< continuous scan is performing tracking scan on A */ |
| SCAN_CSS_DISCOVERING, /**< continuous scan is performing discovery scan */ |
| SCAN_CSS_STOPPING, /**< continuous scan is waiting for scan complete notification */ |
| SCAN_CSS_NUM_OF_STATES /**< number of available continuous scan states */ |
| } scan_contScanState_e; |
| |
| /** \enum scan_discoveryPart_e |
| * \brief enumerates the different parts in the discovery process |
| */ |
| typedef enum |
| { |
| SCAN_SDP_NEIGHBOR_G = 0, /**< attempting to discover neighbor APs in G band */ |
| SCAN_SDP_NEIGHBOR_A, /**< attempting to discover neighbor APs in A band */ |
| SCAN_SDP_CHANNEL_LIST_G, /**< attempting to discover all APs in G band */ |
| SCAN_SDP_CHANNEL_LIST_A, /**< attempting to discover all APs in A band */ |
| SCAN_SDP_NO_DISCOVERY, /**< no discovery should be attempted */ |
| SCAN_SDP_NUMBER_OF_DISCOVERY_PARTS /**< number of discovery parts available */ |
| } scan_discoveryPart_e; |
| |
| /** \enum scan_neighborDiscoveryState_e |
| * \brief enumerates the different discovery states possible for a neighbor AP |
| */ |
| typedef enum |
| { |
| SCAN_NDS_DISCOVERED = 0, /**< Neighbor AP was discovered and is now being tracked */ |
| SCAN_NDS_NOT_DISCOVERED, /**< Neighbor AP was not yet discovered, and should be */ |
| SCAN_NDS_CURRENT_AP, /**< |
| * Neighbor AP is the AP STA is currently connected to, |
| * and shouldn't be discovered |
| */ |
| SCAN_NDS_NUMBER_OF_NEIGHBOR_DISCOVERY_STATES |
| /**< number of available neighbor disocvery states */ |
| } scan_neighborDiscoveryState_e; |
| |
| /* |
| *********************************************************************** |
| * Typedefs. |
| *********************************************************************** |
| */ |
| |
| #define WAS_SPS_CHANNEL_ATTENDED( SPSStatus, i ) \ |
| (0 != (SPSStatus & (1<<i)) ? TI_TRUE : TI_FALSE) |
| |
| /* |
| *********************************************************************** |
| * Structure definitions. |
| *********************************************************************** |
| */ |
| |
| /** \struct scan_neighborAPListDiscovery_t |
| * \brief This structure contains Neighbor AP list and their detection status |
| */ |
| typedef struct |
| { |
| TI_UINT8 numOfEntries; /**< number of entries in the list */ |
| neighborAP_t APListPtr[ MAX_NUM_OF_NEIGHBOR_APS ]; /**< neighbor APs list */ |
| scan_neighborDiscoveryState_e trackStatusList[ MAX_NUM_OF_NEIGHBOR_APS ]; /**< tracking status list */ |
| } scan_neighborAPListDiscovery_t; |
| |
| /** \struct scan_BSSEntry |
| * \brief This structure contains information relevant only for scan manager module on a BSS |
| */ |
| typedef struct |
| { |
| TI_UINT8 trackFailCount; /**< number of consecutive failed track attempts */ |
| TI_UINT64 localTSF; /**< |
| * the TSF of the AP the station is connected to at the |
| * reception of the last frame from this AP |
| */ |
| #ifdef SCAN_SPS_USE_DRIFT_COMPENSATION |
| TI_INT64 prevTSFDelta; /**< Previous TSF delta */ |
| TI_INT32 deltaChangeArray[ SCAN_SPS_NUM_OF_TSF_DELTA_ENTRIES ]; /**< |
| * Array holding deltas |
| * between prev. TSF delta |
| */ |
| int deltaChangeArrayIndex; /**< |
| * index to where next entry |
| * in the delta array should |
| * be stored |
| */ |
| #endif |
| } scan_BSSEntry_t; |
| |
| /** \struct scan_BSSList |
| * \brief This structure contains the BSS tracking list. |
| */ |
| typedef struct |
| { |
| TI_UINT8 numOfEntries; /**< Number of entries in the list */ |
| bssEntry_t BSSList[ MAX_SIZE_OF_BSS_TRACK_LIST ]; /**< BSS public information */ |
| scan_BSSEntry_t scanBSSList[ MAX_SIZE_OF_BSS_TRACK_LIST ]; /**< |
| * BSS scan manager private |
| * information |
| */ |
| } scan_BSSList_t; |
| |
| /** \struct scan_SPSHelper_t |
| * \brief This structure contains information used for building SPS scan command |
| */ |
| typedef struct |
| { |
| TI_UINT64 nextEventTSF; /**< |
| * local TSF value of AP next frame |
| * transmission |
| */ |
| int trackListIndex; /**< index to BSS info in the track list */ |
| int nextAPIndex; /**< index of next AP entry */ |
| } scan_SPSHelper_t; |
| |
| #ifdef TI_DBG |
| /** \struct scan_mngrStat_t |
| * \brief holds all scan manager statistics |
| */ |
| typedef struct |
| { |
| TI_UINT32 receivedFrames; /**< Number of scan results received */ |
| TI_UINT32 discardedFramesLowRSSI; /**< |
| * Number of frames discarded due |
| * to RSSI lower than threshold |
| */ |
| TI_UINT32 discardedFramesOther; /**< |
| * Number of frames discarded due to |
| * other reasons (invalid band, |
| * list full) |
| */ |
| TI_UINT32 SPSSavedByDTIMCheck; /**< |
| * Number of SPS scans that were moved |
| * due to the DTIM collision detection mechanism |
| */ |
| TI_UINT32 APsRemovedDTIMOverlap; /**< |
| * Number of times APs were removed from |
| * tracking list because all their beacons |
| * collide with current AP DTIMs |
| */ |
| TI_UINT32 APsRemovedInvalidChannel; /**< |
| * Number of times APs were removed from |
| * tracking list because their channel was |
| * not valid for tracking scan type |
| */ |
| TI_UINT32 TrackingGByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ]; /**< |
| * Number of track scans on G, |
| * according to completion status |
| */ |
| TI_UINT32 TrackingAByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ]; /**< |
| * Number of track scans on A, |
| * according to completion status |
| */ |
| TI_UINT32 DiscoveryGByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ]; /**< |
| * Number of discovery scans on G, |
| * according to completion status |
| */ |
| TI_UINT32 DiscoveryAByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ]; /**< |
| * Number of discovery scans on A, |
| * according to completion status |
| */ |
| TI_UINT32 ImmediateGByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ]; /**< |
| * Number of immediate scans on G, |
| * according to completion status |
| */ |
| TI_UINT32 ImmediateAByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ]; /**< |
| * Number of immediate scans on A, |
| * according to completion status |
| */ |
| TI_UINT32 ConsecutiveTrackFailCountHistogram[ SCAN_MNGR_STAT_MAX_TRACK_FAILURE ]; |
| /**< |
| * Number of consecutive track |
| * fail counts */ |
| TI_UINT32 SPSChannelsNotAttended[ SCAN_MAX_NUM_OF_SPS_CHANNELS_PER_COMMAND ]; |
| /**< |
| * Number of times SPS channels were |
| * not scanned by FW, according to |
| * their location in the scan command |
| */ |
| } scan_mngrStat_t; |
| #endif |
| |
| /** \struct scanMngr_t |
| * \brief This structure contains the scan manager object data |
| */ |
| typedef struct |
| { |
| TTsfDtim currTsfDtimMib; |
| /* handles to other modules */ |
| TI_HANDLE hOS; /**< handle to the OS object */ |
| TI_HANDLE hReport; /**< handle to the report object */ |
| TI_HANDLE hRegulatoryDomain; /**< |
| * handle to the regulatory domain |
| * object |
| */ |
| TI_HANDLE hScanCncn; /**< |
| * handle to the scan concentrator |
| * object |
| */ |
| TI_HANDLE hRoamingMngr; /**< |
| * handle to the roaming manager |
| * object |
| */ |
| TI_HANDLE hSiteMngr; /**< |
| * handle to the site manager object*/ |
| TI_HANDLE hTWD; |
| |
| TI_HANDLE hTimer; /* handle to the timer module */ |
| |
| TI_HANDLE hEvHandler; /* handle to the eventHandler module */ |
| TI_HANDLE hAPConnection; /* handle to the AP connection module */ |
| /* start / stop flag */ |
| TI_BOOL bContinuousScanStarted; /**< |
| * Indicates whether continuous scan |
| * was started |
| */ |
| /* Timer */ |
| TI_HANDLE hContinuousScanTimer; /**< continuous scan timer object */ |
| TI_BOOL bTimerRunning; /**< |
| * indicates whether the timer was |
| * started |
| */ |
| |
| /* scan policy */ |
| TScanPolicy scanPolicy; /**< scan policy */ |
| TI_BOOL bLowQuality; /**< |
| * Indicates whether to use the low |
| * quality time or normal quality |
| * timer for continuous scan. |
| */ |
| |
| /* tracking and discovery information */ |
| scan_contScanState_e contScanState; /**< current continuous scan state */ |
| scan_immedScanState_e immedScanState; /**< current immediate scan state */ |
| TI_BOOL bImmedNeighborAPsOnly; /**< |
| * whether immediate scan is to search |
| * for neighbor AP's only |
| */ |
| scan_neighborAPListDiscovery_t neighborAPsDiscoveryList[ RADIO_BAND_NUM_OF_BANDS ]; |
| /**< |
| * List of neighbor APs and their |
| * discovery status |
| */ |
| TI_UINT8 neighborAPsDiscoveryIndex[ RADIO_BAND_NUM_OF_BANDS ]; |
| /**< |
| * Indexes for the neighbor APs |
| * discovery lists |
| */ |
| TI_UINT8 channelDiscoveryIndex[ RADIO_BAND_NUM_OF_BANDS ]; /**< Indexes for the channels lists */ |
| scan_discoveryPart_e currentDiscoveryPart; /**< current discovery part */ |
| TI_BOOL bSynchronized; /**< |
| * TI_TRUE if SPS data is synchronized |
| * (no TSF error event occurred) |
| */ |
| TI_UINT64 currentTSF; /**< |
| * the local current TSF value |
| */ |
| TI_UINT32 currentHostTimeStamp; /**< |
| * The current local host time stamp |
| * (at the time of the above TSF value) |
| */ |
| TI_UINT8 lastLocalBcnDTIMCount; /**< |
| * the DTIM count at the last |
| * local beacon reception in the FW |
| */ |
| TI_UINT64 lastLocalBcnTSF; /**< |
| * The local TSF value at the last |
| * local beacon reception |
| */ |
| TMacAddr currentBSS; /**< MAC address of current BSS */ |
| ERadioBand currentBSSBand; /**< band of current BSS */ |
| TI_UINT32 currentBSSBeaconInterval; /**< Beacon interval of current BSS */ |
| TI_UINT32 currentBSSDtimPeriod; /**< DTIM period of current BSS */ |
| TI_BOOL bNewBSSFound; /**< |
| * Indicates whether a new BSS was |
| * found during the last discovery |
| * stage |
| */ |
| TI_UINT16 consecNotFound; /**< |
| * consecutive number of scan |
| * cycles in which no new AP was found |
| * (used to re-pre-auth current APs) |
| */ |
| TScanParams scanParams; /**< temporary storage for scan command */ |
| scan_BSSList_t BSSList; /**< BSS list (also used for tracking) */ |
| |
| scanMngr_connStatus_e connStatus; /* save the connection status during manual roaming */ |
| TI_UINT8 scanningOperationalMode; /* 0 - manual , 1 - auto */ |
| TScanParams manualScanParams; /* temporary storage for manual scan command */ |
| |
| |
| |
| #ifdef TI_DBG |
| scan_mngrStat_t stats; /**< statistics */ |
| ERadioBand statsLastDiscoveryBand; /**< |
| * For statistics: the band on which |
| * discovery was last performed. |
| */ |
| #endif |
| |
| } scanMngr_t; |
| |
| /* |
| *********************************************************************** |
| * External data definitions. |
| *********************************************************************** |
| */ |
| |
| /* |
| *********************************************************************** |
| * External functions definitions |
| *********************************************************************** |
| */ |
| |
| /** |
| * \\n |
| * \date 01-Mar-2005\n |
| * \brief Frees scan manager resources.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| */ |
| void scanMngrFreeMem (TI_HANDLE hScanMngr); |
| |
| /** |
| * \\n |
| * \date 01-Mar-2005\n |
| * \brief Starts a continuous scan operation.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| */ |
| void scanMngrPerformContinuousScan( TI_HANDLE hScanMngr ); |
| |
| void scanMngrGetCurrentTsfDtimMibCB(TI_HANDLE hScanMngr, TI_STATUS status, TI_UINT8* CB_buf) ; |
| void scanMngr_GetUpdatedTsfDtimMibForScan (TI_HANDLE hScanMngr, TI_BOOL bTwdInitOccured) ; |
| |
| /** |
| * \\n |
| * \date 01-Mar-2005\n |
| * \brief Perform aging on the BSS list.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| */ |
| void scanMngrPerformAging( TI_HANDLE hScanMngr ); |
| |
| /** |
| * \\n |
| * \date 01-Mar-2005\n |
| * \brief Updates object data according to a received frame.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param frameInfo - all frame related information.\n |
| */ |
| void scanMngrUpdateReceivedFrame( TI_HANDLE hScanMngr, TScanFrameInfo* frameInfo ); |
| |
| /** |
| * \\n |
| * \date 17-Mar-2005\n |
| * \brief Cerate a new tracking entry and store the newly discovered AP info in it.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param frameInfo - a pointer to the information received from this AP.\n |
| */ |
| void scanMngrInsertNewBSSToTrackingList( TI_HANDLE hScanMngr, TScanFrameInfo* frameInfo ); |
| |
| /** |
| * \\n |
| * \date 17-Mar-2005\n |
| * \brief Updates tracked AP information.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param BSSListIndex - index to the BSS list where the AP information is stored.\n |
| * \param frameInfo - a pointer to the information received from this AP.\n |
| */ |
| void scanMngrUpdateBSSInfo( TI_HANDLE hScanMngr, TI_UINT8 BSSListIndex, TScanFrameInfo* frameInfo ); |
| |
| /** |
| * \\n |
| * \date 16-Mar-2005\n |
| * \brief Searched tracking list for an entry matching given BSSID.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param bssId - the BSSID to search for.\n |
| * \return entry index if found, -1 if no entry matching the BSSID was found.\n |
| */ |
| TI_INT8 scanMngrGetTrackIndexByBssid( TI_HANDLE hScanMngr, TMacAddr* bssId ); |
| |
| /** |
| * \\n |
| * \date 02-Mar-2005\n |
| * \brief Search current policy for band policy |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param band - the band to find policy for.\n |
| * \return the policy structure if found, NULL if no policy configured for this band.\n |
| */ |
| TScanBandPolicy* scanMngrGetPolicyByBand( TI_HANDLE hScanMngr, ERadioBand band ); |
| |
| /** |
| * \\n |
| * \date 06-Mar-2005\n |
| * \brief Sets the next discovery part according to current discovery part, policies and neighbor APs availability .\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| */ |
| void scanMngrSetNextDiscoveryPart( TI_HANDLE hScanMngr ); |
| |
| /** |
| * \\n |
| * \date 06-Mar-2005\n |
| * \brief Checks whether discovery should be performed on the specified discovery part.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param discoveryPart - the discovery part to check.\n |
| */ |
| TI_BOOL scanMngrIsDiscoveryValid( TI_HANDLE hScanMngr, scan_discoveryPart_e discoveryPart ); |
| |
| /** |
| * \\n |
| * \date 07-Mar-2005\n |
| * \brief Check whether there are neighbor APs to track on the given band.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param bandPolicy - The scan policy for the requested band.\n |
| * \param bNeighborAPsOnly - whether to scan for neighbor APs only or for all policy defined channels.\n |
| */ |
| TI_BOOL scanMngrNeighborAPsAvailableForDiscovery( TI_HANDLE hScanMngr, ERadioBand band ); |
| |
| /** |
| * \\n |
| * \date 02-Mar-2005\n |
| * \brief Builds a scan command on the object workspace for immediate scan.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param bandPolicy - The scan policy for the requested band.\n |
| * \param bNeighborAPsOnly - whether to scan for neighbor APs only or for all policy defined channels.\n |
| */ |
| void scanMngrBuildImmediateScanCommand( TI_HANDLE hScanMngr, TScanBandPolicy* bandPolicy, TI_BOOL bNeighborAPsOnly ); |
| |
| /** |
| * \\n |
| * \date 03-Mar-2005\n |
| * \brief Builds a scan command on the object workspace for tracking.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param bandPolicy - The scan policy for the band to track on.\n |
| * \param band - the band to scan.\n |
| */ |
| void scanMngrBuildTrackScanCommand( TI_HANDLE hScanMngr, TScanBandPolicy* bandPolicy, ERadioBand band ); |
| |
| /** |
| * \\n |
| * \date 03-Mar-2005\n |
| * \brief Builds a scan command on the object workspace for discovery.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| */ |
| void scanMngrBuildDiscoveryScanCommand( TI_HANDLE hScanMngr ); |
| |
| /** |
| * \\n |
| * \date 02-Mar-2005\n |
| * \brief Builds the scan command header on the object workspace.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param scanMethod - The scan method (and parameters) to use.\n |
| * \param band - the band to scan.\n |
| */ |
| void scanMngrBuildScanCommandHeader( TI_HANDLE hScanMngr, TScanMethod* scanMethod, ERadioBand band ); |
| |
| /** |
| * \\n |
| * \date 06-Mar-2005\n |
| * \brief Add neighbor APs to scan command on the object workspace for discovery scan.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param bandPolicy - the scan policy for the band to use.\n |
| */ |
| void scanMngrAddNeighborAPsForDiscovery( TI_HANDLE hScanMngr, TScanBandPolicy* bandPolicy ); |
| |
| /** |
| * \\n |
| * \date 06-Mar-2005\n |
| * \brief Add channel from policy channels list to scan command on the object workspace for discovery scan.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param bandPolicy - the scan policy for the band to use.\n |
| */ |
| void scanMngrAddChannelListForDiscovery( TI_HANDLE hScanMngr, TScanBandPolicy* bandPolicy ); |
| |
| /** |
| * \\n |
| * \date 02-Mar-2005\n |
| * \brief Add SPS channels to scan command on the object workspace.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param scanMethod - The scan method (and parameters) to use.\n |
| * \param band - the band to scan.\n |
| */ |
| void scanMngrAddSPSChannels( TI_HANDLE hScanMngr, TScanMethod* scanMethod, ERadioBand band ); |
| |
| /** |
| * \\n |
| * \date 07-Mar-2005\n |
| * \brief Calculates local TSF of the next event (beacon or GPR) of the given tracked AP.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param BSSList - a pointer to the track list.\n |
| * \param entryIndex - the index of the AP for which calculation is requires in the tracking list.\n |
| * \param initialTSFValue - local TSF value AFTER which the next event is to found.\n |
| * \return The approximate current TSF |
| */ |
| TI_UINT64 scanMngrCalculateNextEventTSF( TI_HANDLE hScanMngr, scan_BSSList_t* BSSList, TI_UINT8 entryIndex, TI_UINT64 initialTSFValue ); |
| |
| /** |
| * \\n |
| * \date 20-September-2005\n |
| * \brief Check whether a time range collides with current AP DTIM |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param rangeStart - the time range start TSF.\n |
| * \param eventEnd - the time range end TSF.\n |
| * \return Whether the event collides with a DTIM (TRUF if it does, TI_FALSE if it doesn't).\n |
| */ |
| TI_BOOL scanMngrDTIMInRange( TI_HANDLE hScanMngr, TI_UINT64 eventStart, TI_UINT64 eventEnd ); |
| |
| /** |
| * \\n |
| * \date 03-Mar-2005\n |
| * \brief Add a normal channel entry to the object workspace scan command.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param scanMethod - The scan method (and parameters) to use.\n |
| * \param channel - the channel index.\n |
| * \param BSSID - pointer to the BSSID to use (may be broadcast.\n |
| * \param txPowerDbm - Tx power to transmit probe requests.\n |
| */ |
| void scanMngrAddNormalChannel( TI_HANDLE hScanMngr, TScanMethod* scanMethod, TI_UINT8 channel, |
| TMacAddr* BSSID, TI_UINT8 txPowerDbm ); |
| /** |
| * \\n |
| * \date 02-Mar-2005\n |
| * \brief Removes an entry from the BSS list (by replacing it with another entry, if any).\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param BSSEntryIndex - index of the entry to remove.\n |
| */ |
| void scanMngrRemoveBSSListEntry( TI_HANDLE hScanMngr, TI_UINT8 BSSEntryIndex ); |
| |
| /** |
| * \\n |
| * \date 02-Mar-2005\n |
| * \brief Removes all BSS list entries that are neither neighbor APs not on a policy defined channel.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param bCheckNeighborAPs - whether to verify that APs marked as neighbor APs are really neighbor APs.\n |
| * \param bCheckChannels - whether to verify that APs not marked as neighbor APs are on policy defined channel.\n |
| */ |
| void scanMngrUpdateBSSList( TI_HANDLE hScanMngr, TI_BOOL bCheckNeighborAPs, TI_BOOL bCheckChannels ); |
| |
| /** |
| * \\n |
| * \date 02-Mar-2005\n |
| * \brief returns the index of a neighbor AP.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param band - the band on which the AP resides.\n |
| * \param bssId - the AP's BSSID.\n |
| * \return the index into the neighbor AP list for the given address, -1 if AP is not in list.\n |
| */ |
| TI_INT8 scanMngrGetNeighborAPIndex( TI_HANDLE hScanMngr, ERadioBand band, TMacAddr* bssId ); |
| |
| /** |
| * \\n |
| * \date 02-Mar-2005\n |
| * \brief Checks whether a channel is defined on a policy.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param band - the band on which the channel is.\n |
| * \param channel - the channel number.\n |
| * \return TI_TRUE if channel is defined on policy, TI_FALSE otherwise.\n |
| */ |
| TI_BOOL scanMngrIsPolicyChannel( TI_HANDLE hScanMngr, ERadioBand band, TI_UINT8 channel ); |
| |
| /** |
| * \\n |
| * \date 18-Apr-2005\n |
| * \brief Converts scan concentrator result status to scan manager result status, to be returned to roaming manager.\n |
| * |
| * Function Scope \e Private.\n |
| * \param result status - scan concentrator result status.\n |
| * \return appropriate scan manager status.\n |
| */ |
| scan_mngrResultStatus_e scanMngrConvertResultStatus( EScanCncnResultStatus resultStatus ); |
| |
| /** |
| * \\n |
| * \date 09-Mar-2005\n |
| * \brief Print a neighbor AP list.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param neighborAPList - the list of neighbor APs to print |
| */ |
| void scanMngrTracePrintNeighborAPsList( TI_HANDLE hScanMngr, neighborAPList_t *neighborAPList ); |
| |
| /** |
| * \\n |
| * \date 09-Mar-2005\n |
| * \brief Print a neighbor AP.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param neighborAP - the neighbor AP to print |
| */ |
| void scanMngrTracePrintNeighborAP( TI_HANDLE hScanMngr, neighborAP_t* neighborAP ); |
| |
| /** |
| * \\n |
| * \date 09-Mar-2005\n |
| * \brief Print a band scan policy AP.\n |
| * |
| * Function Scope \e Private.\n |
| * \param bandPolicy - the band scan policy to print.\n |
| */ |
| void scanMngrTracePrintBandScanPolicy( TScanBandPolicy* bandPolicy ); |
| |
| /** |
| * \\n |
| * \date 09-Mar-2005\n |
| * \brief Print a scan method |
| * |
| * Function Scope \e Private.\n |
| * \param scanMethod - the scan method to print.\n |
| */ |
| void scanMngrTracePrintScanMethod( TScanMethod* scanMethod ); |
| |
| /** |
| * \\n |
| * \date 09-Mar-2005\n |
| * \brief print a normal scan method |
| * |
| * Function Scope \e Private.\n |
| * \param basicMethodParams - the basic method parameters to print.\n |
| */ |
| void scanMngrTracePrintNormalScanMethod( TScanBasicMethodParams* basicMethodParams ); |
| |
| /** |
| * \\n |
| * \date 09-Mar-2005\n |
| * \brief print an AC triggered scan method |
| * |
| * Function Scope \e Private.\n |
| * \param triggeredMethodParams - the Tid-triggered method parameters to print.\n |
| */ |
| void scanMngrTracePrintTriggeredScanMethod( TScanTidTriggeredMethodParams* triggeredMethodParams ); |
| |
| /** |
| * \\n |
| * \date 09-Mar-2005\n |
| * \brief print a SPS scan method |
| * |
| * Function Scope \e Private.\n |
| * \param SPSMethodParams - the SPS method parameters to print.\n |
| */ |
| void scanMngrTracePrintSPSScanMethod( TScanSPSMethodParams* SPSMethodParams ); |
| |
| #ifdef TI_DBG |
| /** |
| * \\n |
| * \date 31-Mar-2005\n |
| * \brief print debug information for every received frame.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param frameInfo - holding all frame related information.\n |
| */ |
| void scanMngrDebugPrintReceivedFrame( TI_HANDLE hScanMngr, TScanFrameInfo *frameInfo ); |
| |
| /** |
| * \\n |
| * \date 31-Mar-2005\n |
| * \brief print BSS list.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| */ |
| void scanMngrDebugPrintBSSList( TI_HANDLE hScanMngr ); |
| |
| /** |
| * \\n |
| * \date 31-Mar-2005\n |
| * \brief print one entry in the BSS list.\n |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param entryIndex - the index of the entry to print.\n |
| */ |
| void scanMngrDebugPrintBSSEntry( TI_HANDLE hScanMngr, TI_UINT8 entryIndex ); |
| |
| /** |
| * \\n |
| * \date 14-Apr-2005\n |
| * \brief print SPS helper list |
| * |
| * Function Scope \e Private.\n |
| * \param hScanMngr - handle to the scan manager object.\n |
| * \param spsHelperList - the list to print.\n |
| * \param arrayHead - the index of the first element in the list.\n |
| * \param arraySize - the size of the array.\n |
| */ |
| void scanMngrDebugPrintSPSHelperList( TI_HANDLE hScanMngr, scan_SPSHelper_t* spsHelperList, int arrayHead, int arraySize ); |
| |
| /** |
| * \\n |
| * \date 26-May-2005\n |
| * \brief Print scan result histogram statistics.\n |
| * |
| * Function Scope \e Private.\n |
| * \param scanResultHistogram - Scan results histogram (by scan complete reason).\n |
| */ |
| void scanMngrStatsPrintScanResultHistogram( TI_UINT32 scanResultHistogram[] ); |
| |
| /** |
| * \\n |
| * \date 26-May-2005\n |
| * \brief Print track fail count histogram statistics.\n |
| * |
| * Function Scope \e Private.\n |
| * \param trackFailHistogram - tracking failure histogram (by tracking retry).\n |
| */ |
| void scanMngrStatsPrintTrackFailHistogrsm( TI_UINT32 trackFailHistogram[] ); |
| |
| /** |
| * \\n |
| * \date 26-May-2005\n |
| * \brief Print SPS attendant channel histogram statistics.\n |
| * |
| * Function Scope \e Private.\n |
| * \param SPSChannelsNotAttendedHistogram - SPS channels attendant histogram.\n |
| */ |
| void scanMngrStatsPrintSPSChannelsHistogram( TI_UINT32 SPSChannelsNotAttendedHistogram[] ); |
| |
| /** |
| * \\n |
| * \date 25-July-2005\n |
| * \brief Print One neighbor AP entry.\n |
| * |
| * Function Scope \e Private.\n |
| * \param pNeighborAp - pointer to the neighbor AP data.\n |
| * \param discovery state - the discovery state of this neighbor AP.\n |
| */ |
| void scanMngrDebugPrintNeighborAP( neighborAP_t* pNeighborAp, scan_neighborDiscoveryState_e discoveryState ); |
| |
| /** |
| * \\n |
| * \date 27-July-2005\n |
| * \brief Prints a scan command.\n |
| * |
| * Function Scope \e Private.\n |
| * \param pScanParams - a pointer to the scan parameters structure.\n |
| */ |
| void scanMngrDebugPrintScanCommand( TScanParams* pScanParams ); |
| |
| /** |
| * \\n |
| * \date 27-July-2005\n |
| * \brief Prints scan command single normal channel.\n |
| * |
| * Function Scope \e Private.\n |
| * \param pNormalChannel - a pointer to the normal channel to print.\n |
| */ |
| void scanMngrDebugPrintNormalChannelParam( TScanNormalChannelEntry* pNormalChannel ); |
| |
| /** |
| * \\n |
| * \date 27-July-2005\n |
| * \brief Prints scan command single SPS channel.\n |
| * |
| * Function Scope \e Private.\n |
| * \param pSPSChannel - a pointer to the SPS channel to print.\n |
| */ |
| void scanMngrDebugPrintSPSChannelParam( TScanSpsChannelEntry* pSPSChannel ); |
| |
| |
| #endif /* TI_DBG */ |
| |
| #endif /* __SCAN_MNGR_H__ */ |