diff options
Diffstat (limited to 'wilink_6_1/stad/src/Application/scanMngr.h')
-rw-r--r-- | wilink_6_1/stad/src/Application/scanMngr.h | 909 |
1 files changed, 909 insertions, 0 deletions
diff --git a/wilink_6_1/stad/src/Application/scanMngr.h b/wilink_6_1/stad/src/Application/scanMngr.h new file mode 100644 index 0000000..ca08c04 --- /dev/null +++ b/wilink_6_1/stad/src/Application/scanMngr.h @@ -0,0 +1,909 @@ +/* + * 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__ */ |