Home | History | Annotate | Download | only in Application
      1 /*
      2  * scanMngr.h
      3  *
      4  * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  *
     11  *  * Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  *  * Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in
     15  *    the documentation and/or other materials provided with the
     16  *    distribution.
     17  *  * Neither the name Texas Instruments nor the names of its
     18  *    contributors may be used to endorse or promote products derived
     19  *    from this software without specific prior written permission.
     20  *
     21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32  */
     33 
     34 /** \file  scanMngr.h
     35  *  \brief This file include private definitions for the scan manager module.
     36  *
     37  *  \see   scanMngr.c, scanMngrApi.h, scanMngrTypes.h
     38  */
     39 
     40 
     41 #ifndef __SCAN_MNGR_H__
     42 #define __SCAN_MNGR_H__
     43 
     44 #include "scanMngrApi.h"
     45 
     46 /*
     47  ***********************************************************************
     48  *  Constant definitions.
     49  ***********************************************************************
     50  */
     51 
     52 /* SPS guard times */
     53 #ifdef TI_DBG
     54 #define SCAN_SPS_GUARD_FROM_CURRENT_TSF         300000 /* 300 msecs - to allow for some debug printouts */
     55 #else
     56 #define SCAN_SPS_GUARD_FROM_CURRENT_TSF         50000 /* 50 msecs */
     57 #endif /* TI_DBG */
     58 #define SCAN_SPS_GUARD_FROM_LAST_BSS            2000 /* 2 msecs */
     59 #define SCAN_SPS_DURATION_PART_IN_ADVANCE       4 /* 1/4 of scan duration in advance */
     60 #define SCAN_SPS_USE_DRIFT_COMPENSATION         1 /* if defined, use drift compensation algorithm */
     61 #define SCAN_SPS_NUM_OF_TSF_DELTA_ENTRIES       4 /* number of TSF delta ^ 2 entries */
     62 #define SCAN_SPS_FW_DTIM_LENGTH                 1000 /* time (in usec) for a DTIM event to complete in the FW */
     63 
     64 /* Quality calculation constants */
     65 #define RSSI_PREVIOUS_COEFFICIENT               9
     66 
     67 /* scan iteration number after which, if no new AP was found, pre-auth needs to be re-done */
     68 #define SCAN_MNGR_CONSEC_SCAN_ITER_FOR_PRE_AUTH 50
     69 
     70 #define MAX_DESC_LENGTH                         50 /* max characters for a description string */
     71 #define SCAN_MNGR_STAT_MAX_TRACK_FAILURE        10 /* max track filures for statistics histogram */
     72 
     73 #ifdef TI_DBG
     74 /*#define SCAN_MNGR_DBG 1
     75 #define SCAN_MNGR_SPS_DBG 1
     76 #define SCAN_MNGR_DTIM_DBG 1 */
     77 #endif
     78 
     79  /*
     80  ***********************************************************************
     81  *  Enums.
     82  ***********************************************************************
     83  */
     84 
     85  /** \enum scan_immedScanState_e
     86  * \brief enumerates immediate scan internal status
     87  */
     88 typedef enum
     89 {
     90     SCAN_ISS_IDLE = 0,                  /**< immediate scan is not running */
     91     SCAN_ISS_G_BAND,                    /**< immediate scan is running on G band */
     92     SCAN_ISS_A_BAND,                    /**< immediate scan is running on A band */
     93     SCAN_ISS_STOPPING,                  /**< stop was requested and is now pending */
     94     SCAN_ISS_NUM_OF_STATES              /**< number of available immediate scan states states */
     95 } scan_immedScanState_e;
     96 
     97 /** \enum scan_contScanState_e
     98  * \brief enumerates continuous scan internal status
     99  */
    100 typedef enum
    101 {
    102     SCAN_CSS_IDLE = 0,                  /**< continuous scan is not running */
    103     SCAN_CSS_TRACKING_G_BAND,           /**< continuous scan is performing tracking scan on G */
    104     SCAN_CSS_TRACKING_A_BAND,           /**< continuous scan is performing tracking scan on A */
    105     SCAN_CSS_DISCOVERING,               /**< continuous scan is performing discovery scan */
    106     SCAN_CSS_STOPPING,                  /**< continuous scan is waiting for scan complete notification */
    107     SCAN_CSS_NUM_OF_STATES              /**< number of available continuous scan states */
    108 } scan_contScanState_e;
    109 
    110 /** \enum scan_discoveryPart_e
    111  * \brief enumerates the different parts in the discovery process
    112  */
    113 typedef enum
    114 {
    115     SCAN_SDP_NEIGHBOR_G = 0,            /**< attempting to discover neighbor APs in G band */
    116     SCAN_SDP_NEIGHBOR_A,                /**< attempting to discover neighbor APs in A band */
    117     SCAN_SDP_CHANNEL_LIST_G,            /**< attempting to discover all APs in G band */
    118     SCAN_SDP_CHANNEL_LIST_A,            /**< attempting to discover all APs in A band */
    119     SCAN_SDP_NO_DISCOVERY,              /**< no discovery should be attempted */
    120     SCAN_SDP_NUMBER_OF_DISCOVERY_PARTS  /**< number of discovery parts available */
    121 } scan_discoveryPart_e;
    122 
    123 /** \enum scan_neighborDiscoveryState_e
    124  * \brief enumerates the different discovery states possible for a neighbor AP
    125  */
    126 typedef enum
    127 {
    128     SCAN_NDS_DISCOVERED = 0,            /**< Neighbor AP was discovered and is now being tracked */
    129     SCAN_NDS_NOT_DISCOVERED,            /**< Neighbor AP was not yet discovered, and should be */
    130     SCAN_NDS_CURRENT_AP,                /**<
    131                                          * Neighbor AP is the AP STA is currently connected to,
    132                                          * and shouldn't be discovered
    133                                          */
    134     SCAN_NDS_NUMBER_OF_NEIGHBOR_DISCOVERY_STATES
    135                                         /**< number of available neighbor disocvery states */
    136 } scan_neighborDiscoveryState_e;
    137 
    138 /*
    139  ***********************************************************************
    140  *  Typedefs.
    141  ***********************************************************************
    142  */
    143 
    144 #define WAS_SPS_CHANNEL_ATTENDED( SPSStatus, i )    \
    145     (0 != (SPSStatus & (1<<i)) ? TI_TRUE : TI_FALSE)
    146 
    147 /*
    148  ***********************************************************************
    149  *  Structure definitions.
    150  ***********************************************************************
    151  */
    152 
    153 /** \struct scan_neighborAPListDiscovery_t
    154  * \brief This structure contains Neighbor AP list and their detection status
    155  */
    156 typedef struct
    157 {
    158     TI_UINT8                            numOfEntries;                                   /**< number of entries in the list */
    159     neighborAP_t                    APListPtr[ MAX_NUM_OF_NEIGHBOR_APS ];           /**< neighbor APs list */
    160     scan_neighborDiscoveryState_e   trackStatusList[ MAX_NUM_OF_NEIGHBOR_APS ];     /**< tracking status list */
    161 } scan_neighborAPListDiscovery_t;
    162 
    163 /** \struct scan_BSSEntry
    164  * \brief This structure contains information relevant only for scan manager module on a BSS
    165  */
    166 typedef struct
    167 {
    168     TI_UINT8                    trackFailCount;                 /**< number of consecutive failed track attempts */
    169     TI_UINT64                   localTSF;                       /**<
    170                                                              * the TSF of the AP the station is connected to at the
    171                                                              * reception of the last frame from this AP
    172                                                              */
    173 #ifdef SCAN_SPS_USE_DRIFT_COMPENSATION
    174     TI_INT64               prevTSFDelta;                                               /**< Previous TSF delta */
    175     TI_INT32               deltaChangeArray[ SCAN_SPS_NUM_OF_TSF_DELTA_ENTRIES ];      /**<
    176                                                                                      * Array holding deltas
    177                                                                                      * between prev. TSF delta
    178                                                                                      */
    179     int                 deltaChangeArrayIndex;                                      /**<
    180                                                                                      * index to where next entry
    181                                                                                      * in the delta array should
    182                                                                                      * be stored
    183                                                                                      */
    184 #endif
    185 } scan_BSSEntry_t;
    186 
    187 /** \struct scan_BSSList
    188  * \brief This structure contains the BSS tracking list.
    189  */
    190 typedef struct
    191 {
    192     TI_UINT8               numOfEntries;                                               /**< Number of entries in the list */
    193     bssEntry_t          BSSList[ MAX_SIZE_OF_BSS_TRACK_LIST ];                      /**< BSS public information */
    194     scan_BSSEntry_t     scanBSSList[ MAX_SIZE_OF_BSS_TRACK_LIST ];                  /**<
    195                                                                                      * BSS scan manager private
    196                                                                                      * information
    197                                                                                      */
    198 } scan_BSSList_t;
    199 
    200 /** \struct scan_SPSHelper_t
    201  * \brief This structure contains information used for building SPS scan command
    202  */
    203 typedef struct
    204 {
    205     TI_UINT64                          nextEventTSF;                                   /**<
    206                                                                                      * local TSF value of AP next frame
    207                                                                                      * transmission
    208                                                                                      */
    209     int                             trackListIndex;                                 /**< index to BSS info in the track list */
    210     int                             nextAPIndex;                                    /**< index of next AP entry */
    211 } scan_SPSHelper_t;
    212 
    213 #ifdef TI_DBG
    214 /** \struct scan_mngrStat_t
    215  * \brief holds all scan manager statistics
    216  */
    217 typedef struct
    218 {
    219     TI_UINT32      receivedFrames;                                     /**< Number of scan results received */
    220     TI_UINT32      discardedFramesLowRSSI;                             /**<
    221                                                                      * Number of frames discarded due
    222                                                                      * to RSSI lower than threshold
    223                                                                      */
    224     TI_UINT32      discardedFramesOther;                               /**<
    225                                                                      * Number of frames discarded due to
    226                                                                      * other reasons (invalid band,
    227                                                                      * list full)
    228                                                                      */
    229     TI_UINT32      SPSSavedByDTIMCheck;                                /**<
    230                                                                      * Number of SPS scans that were moved
    231                                                                      * due to the DTIM collision detection mechanism
    232                                                                      */
    233     TI_UINT32      APsRemovedDTIMOverlap;                              /**<
    234                                                                      * Number of times APs were removed from
    235                                                                      * tracking list because all their beacons
    236                                                                      * collide with current AP DTIMs
    237                                                                      */
    238     TI_UINT32      APsRemovedInvalidChannel;                           /**<
    239                                                                      * Number of times APs were removed from
    240                                                                      * tracking list because their channel was
    241                                                                      * not valid for tracking scan type
    242                                                                      */
    243     TI_UINT32      TrackingGByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ];    /**<
    244                                                                      * Number of track scans on G,
    245                                                                      * according to completion status
    246                                                                      */
    247     TI_UINT32      TrackingAByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ];    /**<
    248                                                                      * Number of track scans on A,
    249                                                                      * according to completion status
    250                                                                      */
    251     TI_UINT32      DiscoveryGByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ];   /**<
    252                                                                      * Number of discovery scans on G,
    253                                                                      * according to completion status
    254                                                                      */
    255     TI_UINT32      DiscoveryAByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ];   /**<
    256                                                                      * Number of discovery scans on A,
    257                                                                      * according to completion status
    258                                                                      */
    259     TI_UINT32      ImmediateGByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ];   /**<
    260                                                                      * Number of immediate scans on G,
    261                                                                      * according to completion status
    262                                                                      */
    263     TI_UINT32      ImmediateAByStatus[ SCAN_CRS_NUM_OF_RES_STATUS ];   /**<
    264                                                                      * Number of immediate scans on A,
    265                                                                      * according to completion status
    266                                                                      */
    267     TI_UINT32      ConsecutiveTrackFailCountHistogram[ SCAN_MNGR_STAT_MAX_TRACK_FAILURE ];
    268                                                                     /**<
    269                                                                      * Number of consecutive track
    270                                                                      * fail counts */
    271     TI_UINT32      SPSChannelsNotAttended[ SCAN_MAX_NUM_OF_SPS_CHANNELS_PER_COMMAND ];
    272                                                                     /**<
    273                                                                      * Number of times SPS channels were
    274                                                                      * not scanned by FW, according to
    275                                                                      * their location in the scan command
    276                                                                      */
    277 } scan_mngrStat_t;
    278 #endif
    279 
    280 /** \struct scanMngr_t
    281  * \brief This structure contains the scan manager object data
    282  */
    283 typedef struct
    284 {
    285     TTsfDtim                        currTsfDtimMib;
    286     /* handles to other modules */
    287     TI_HANDLE                       hOS;                                            /**< handle to the OS object */
    288     TI_HANDLE                       hReport;                                        /**< handle to the report object */
    289     TI_HANDLE                       hRegulatoryDomain;                              /**<
    290                                                                                      * handle to the regulatory domain
    291                                                                                      * object
    292                                                                                      */
    293     TI_HANDLE                       hScanCncn;                                      /**<
    294                                                                                      * handle to the scan concentrator
    295                                                                                      * object
    296                                                                                      */
    297     TI_HANDLE                       hRoamingMngr;                                   /**<
    298                                                                                      * handle to the roaming manager
    299                                                                                      * object
    300                                                                                      */
    301     TI_HANDLE                       hSiteMngr;                                      /**<
    302                                                                                      * handle to the site manager object*/
    303     TI_HANDLE                       hTWD;
    304 
    305     TI_HANDLE                       hTimer;                                         /* handle to the timer module */
    306 
    307     TI_HANDLE                       hEvHandler;                                     /* handle to the eventHandler module */
    308     TI_HANDLE                       hAPConnection;                                  /* handle to the AP connection module */
    309     /* start / stop flag */
    310     TI_BOOL                         bContinuousScanStarted;                         /**<
    311                                                                                      * Indicates whether continuous scan
    312                                                                                      * was started
    313                                                                                      */
    314     /* Timer */
    315     TI_HANDLE                       hContinuousScanTimer;                           /**< continuous scan timer object */
    316     TI_BOOL                         bTimerRunning;                                  /**<
    317                                                                                      * indicates whether the timer was
    318                                                                                      * started
    319                                                                                      */
    320 
    321     /* scan policy */
    322     TScanPolicy                     scanPolicy;                                     /**< scan policy */
    323     TI_BOOL                         bLowQuality;                                    /**<
    324                                                                                      * Indicates whether to use the low
    325                                                                                      * quality time or normal quality
    326                                                                                      * timer for continuous scan.
    327                                                                                      */
    328 
    329     /* tracking and discovery information */
    330     scan_contScanState_e            contScanState;                                  /**< current continuous scan state */
    331     scan_immedScanState_e           immedScanState;                                 /**< current immediate scan state */
    332     TI_BOOL                         bImmedNeighborAPsOnly;                          /**<
    333                                                                                      * whether immediate scan is to search
    334                                                                                      * for neighbor AP's only
    335                                                                                      */
    336     scan_neighborAPListDiscovery_t  neighborAPsDiscoveryList[ RADIO_BAND_NUM_OF_BANDS ];
    337                                                                                     /**<
    338                                                                                      * List of neighbor APs and their
    339                                                                                      * discovery status
    340                                                                                      */
    341     TI_UINT8                        neighborAPsDiscoveryIndex[ RADIO_BAND_NUM_OF_BANDS ];
    342                                                                                     /**<
    343                                                                                      * Indexes for the neighbor APs
    344                                                                                      * discovery lists
    345                                                                                      */
    346     TI_UINT8                        channelDiscoveryIndex[ RADIO_BAND_NUM_OF_BANDS ];  /**< Indexes for the channels lists */
    347     scan_discoveryPart_e            currentDiscoveryPart;                           /**< current discovery part */
    348     TI_BOOL                         bSynchronized;                                  /**<
    349                                                                                      * TI_TRUE if SPS data is synchronized
    350                                                                                      * (no TSF error event occurred)
    351                                                                                      */
    352     TI_UINT64                       currentTSF;                                     /**<
    353                                                                                      * the local current TSF value
    354                                                                                      */
    355     TI_UINT32                       currentHostTimeStamp;                           /**<
    356                                                                                      * The current local host time stamp
    357                                                                                      * (at the time of the above TSF value)
    358                                                                                      */
    359     TI_UINT8                        lastLocalBcnDTIMCount;                          /**<
    360                                                                                      * the DTIM count at the last
    361                                                                                      * local beacon reception in the FW
    362                                                                                      */
    363     TI_UINT64                       lastLocalBcnTSF;                                /**<
    364                                                                                      * The local TSF value at the last
    365                                                                                      * local beacon reception
    366                                                                                      */
    367     TMacAddr                        currentBSS;                                     /**< MAC address of current BSS */
    368     ERadioBand                      currentBSSBand;                                 /**< band of current BSS */
    369     TI_UINT32                       currentBSSBeaconInterval;                       /**< Beacon interval of current BSS */
    370     TI_UINT32                       currentBSSDtimPeriod;                           /**< DTIM period of current BSS */
    371     TI_BOOL                         bNewBSSFound;                                   /**<
    372                                                                                      * Indicates whether a new BSS was
    373                                                                                      * found during the last discovery
    374                                                                                      * stage
    375                                                                                      */
    376     TI_UINT16                       consecNotFound;                                 /**<
    377                                                                                      * consecutive number of scan
    378                                                                                      * cycles in which no new AP was found
    379                                                                                      * (used to re-pre-auth current APs)
    380                                                                                      */
    381     TScanParams                     scanParams;                                     /**< temporary storage for scan command */
    382     scan_BSSList_t                  BSSList;                                        /**< BSS list (also used for tracking) */
    383 
    384     scanMngr_connStatus_e           connStatus;                                /* save the connection status during manual roaming */
    385 	TI_UINT8                        scanningOperationalMode;                   /* 0 - manual ,  1 - auto */
    386     TScanParams                     manualScanParams;                          /* temporary storage for manual scan command */
    387 
    388 
    389 
    390 #ifdef TI_DBG
    391     scan_mngrStat_t                 stats;                                          /**< statistics */
    392     ERadioBand                      statsLastDiscoveryBand;                         /**<
    393                                                                                      * For statistics: the band on which
    394                                                                                      * discovery was last performed.
    395                                                                                      */
    396 #endif
    397 
    398 } scanMngr_t;
    399 
    400 /*
    401  ***********************************************************************
    402  *  External data definitions.
    403  ***********************************************************************
    404  */
    405 
    406 /*
    407  ***********************************************************************
    408  *  External functions definitions
    409  ***********************************************************************
    410  */
    411 
    412 /**
    413  * \\n
    414  * \date 01-Mar-2005\n
    415  * \brief Frees scan manager resources.\n
    416  *
    417  * Function Scope \e Private.\n
    418  * \param hScanMngr - handle to the scan manager object.\n
    419  */
    420 void scanMngrFreeMem (TI_HANDLE hScanMngr);
    421 
    422 /**
    423  * \\n
    424  * \date 01-Mar-2005\n
    425  * \brief Starts a continuous scan operation.\n
    426  *
    427  * Function Scope \e Private.\n
    428  * \param hScanMngr - handle to the scan manager object.\n
    429  */
    430 void scanMngrPerformContinuousScan( TI_HANDLE hScanMngr );
    431 
    432 void scanMngrGetCurrentTsfDtimMibCB(TI_HANDLE hScanMngr, TI_STATUS status, TI_UINT8* CB_buf) ;
    433 void scanMngr_GetUpdatedTsfDtimMibForScan (TI_HANDLE hScanMngr, TI_BOOL bTwdInitOccured) ;
    434 
    435 /**
    436  * \\n
    437  * \date 01-Mar-2005\n
    438  * \brief Perform aging on the BSS list.\n
    439  *
    440  * Function Scope \e Private.\n
    441  * \param hScanMngr - handle to the scan manager object.\n
    442  */
    443 void scanMngrPerformAging( TI_HANDLE hScanMngr );
    444 
    445 /**
    446  * \\n
    447  * \date 01-Mar-2005\n
    448  * \brief Updates object data according to a received frame.\n
    449  *
    450  * Function Scope \e Private.\n
    451  * \param hScanMngr - handle to the scan manager object.\n
    452  * \param frameInfo - all frame related information.\n
    453  */
    454 void scanMngrUpdateReceivedFrame( TI_HANDLE hScanMngr, TScanFrameInfo* frameInfo );
    455 
    456 /**
    457  * \\n
    458  * \date 17-Mar-2005\n
    459  * \brief Cerate a new tracking entry and store the newly discovered AP info in it.\n
    460  *
    461  * Function Scope \e Private.\n
    462  * \param hScanMngr - handle to the scan manager object.\n
    463  * \param frameInfo - a pointer to the information received from this AP.\n
    464  */
    465 void scanMngrInsertNewBSSToTrackingList( TI_HANDLE hScanMngr, TScanFrameInfo* frameInfo );
    466 
    467 /**
    468  * \\n
    469  * \date 17-Mar-2005\n
    470  * \brief Updates tracked AP information.\n
    471  *
    472  * Function Scope \e Private.\n
    473  * \param hScanMngr - handle to the scan manager object.\n
    474  * \param BSSListIndex - index to the BSS list where the AP information is stored.\n
    475  * \param frameInfo - a pointer to the information received from this AP.\n
    476  */
    477 void scanMngrUpdateBSSInfo( TI_HANDLE hScanMngr, TI_UINT8 BSSListIndex, TScanFrameInfo* frameInfo );
    478 
    479 /**
    480  * \\n
    481  * \date 16-Mar-2005\n
    482  * \brief Searched tracking list for an entry matching given BSSID.\n
    483  *
    484  * Function Scope \e Private.\n
    485  * \param hScanMngr - handle to the scan manager object.\n
    486  * \param bssId - the BSSID to search for.\n
    487  * \return entry index if found, -1 if no entry matching the BSSID was found.\n
    488  */
    489 TI_INT8 scanMngrGetTrackIndexByBssid( TI_HANDLE hScanMngr, TMacAddr* bssId );
    490 
    491 /**
    492  * \\n
    493  * \date 02-Mar-2005\n
    494  * \brief Search current policy for band policy
    495  *
    496  * Function Scope \e Private.\n
    497  * \param hScanMngr - handle to the scan manager object.\n
    498  * \param band - the band to find policy for.\n
    499  * \return the policy structure if found, NULL if no policy configured for this band.\n
    500  */
    501 TScanBandPolicy* scanMngrGetPolicyByBand( TI_HANDLE hScanMngr, ERadioBand band );
    502 
    503 /**
    504  * \\n
    505  * \date 06-Mar-2005\n
    506  * \brief Sets the next discovery part according to current discovery part, policies and neighbor APs availability .\n
    507  *
    508  * Function Scope \e Private.\n
    509  * \param hScanMngr - handle to the scan manager object.\n
    510  */
    511 void scanMngrSetNextDiscoveryPart( TI_HANDLE hScanMngr );
    512 
    513 /**
    514  * \\n
    515  * \date 06-Mar-2005\n
    516  * \brief Checks whether discovery should be performed on the specified discovery part.\n
    517  *
    518  * Function Scope \e Private.\n
    519  * \param hScanMngr - handle to the scan manager object.\n
    520  * \param discoveryPart - the discovery part to check.\n
    521  */
    522 TI_BOOL scanMngrIsDiscoveryValid( TI_HANDLE hScanMngr, scan_discoveryPart_e discoveryPart );
    523 
    524 /**
    525  * \\n
    526  * \date 07-Mar-2005\n
    527  * \brief Check whether there are neighbor APs to track on the given band.\n
    528  *
    529  * Function Scope \e Private.\n
    530  * \param hScanMngr - handle to the scan manager object.\n
    531  * \param bandPolicy - The scan policy for the requested band.\n
    532  * \param bNeighborAPsOnly - whether to scan for neighbor APs only or for all policy defined channels.\n
    533  */
    534 TI_BOOL scanMngrNeighborAPsAvailableForDiscovery( TI_HANDLE hScanMngr, ERadioBand band );
    535 
    536 /**
    537  * \\n
    538  * \date 02-Mar-2005\n
    539  * \brief Builds a scan command on the object workspace for immediate scan.\n
    540  *
    541  * Function Scope \e Private.\n
    542  * \param hScanMngr - handle to the scan manager object.\n
    543  * \param bandPolicy - The scan policy for the requested band.\n
    544  * \param bNeighborAPsOnly - whether to scan for neighbor APs only or for all policy defined channels.\n
    545  */
    546 void scanMngrBuildImmediateScanCommand( TI_HANDLE hScanMngr, TScanBandPolicy* bandPolicy, TI_BOOL bNeighborAPsOnly );
    547 
    548 /**
    549  * \\n
    550  * \date 03-Mar-2005\n
    551  * \brief Builds a scan command on the object workspace for tracking.\n
    552  *
    553  * Function Scope \e Private.\n
    554  * \param hScanMngr - handle to the scan manager object.\n
    555  * \param bandPolicy - The scan policy for the band to track on.\n
    556  * \param band - the band to scan.\n
    557  */
    558 void scanMngrBuildTrackScanCommand( TI_HANDLE hScanMngr, TScanBandPolicy* bandPolicy, ERadioBand band );
    559 
    560 /**
    561  * \\n
    562  * \date 03-Mar-2005\n
    563  * \brief Builds a scan command on the object workspace for discovery.\n
    564  *
    565  * Function Scope \e Private.\n
    566  * \param hScanMngr - handle to the scan manager object.\n
    567  */
    568 void scanMngrBuildDiscoveryScanCommand( TI_HANDLE hScanMngr );
    569 
    570 /**
    571  * \\n
    572  * \date 02-Mar-2005\n
    573  * \brief Builds the scan command header on the object workspace.\n
    574  *
    575  * Function Scope \e Private.\n
    576  * \param hScanMngr - handle to the scan manager object.\n
    577  * \param scanMethod - The scan method (and parameters) to use.\n
    578  * \param band - the band to scan.\n
    579  */
    580 void scanMngrBuildScanCommandHeader( TI_HANDLE hScanMngr, TScanMethod* scanMethod, ERadioBand band );
    581 
    582 /**
    583  * \\n
    584  * \date 06-Mar-2005\n
    585  * \brief Add neighbor APs to scan command on the object workspace for discovery scan.\n
    586  *
    587  * Function Scope \e Private.\n
    588  * \param hScanMngr - handle to the scan manager object.\n
    589  * \param bandPolicy - the scan policy for the band to use.\n
    590  */
    591 void scanMngrAddNeighborAPsForDiscovery( TI_HANDLE hScanMngr, TScanBandPolicy* bandPolicy );
    592 
    593 /**
    594  * \\n
    595  * \date 06-Mar-2005\n
    596  * \brief Add channel from policy channels list to scan command on the object workspace for discovery scan.\n
    597  *
    598  * Function Scope \e Private.\n
    599  * \param hScanMngr - handle to the scan manager object.\n
    600  * \param bandPolicy - the scan policy for the band to use.\n
    601  */
    602 void scanMngrAddChannelListForDiscovery( TI_HANDLE hScanMngr, TScanBandPolicy* bandPolicy );
    603 
    604 /**
    605  * \\n
    606  * \date 02-Mar-2005\n
    607  * \brief Add SPS channels to scan command on the object workspace.\n
    608  *
    609  * Function Scope \e Private.\n
    610  * \param hScanMngr - handle to the scan manager object.\n
    611  * \param scanMethod - The scan method (and parameters) to use.\n
    612  * \param band - the band to scan.\n
    613  */
    614 void scanMngrAddSPSChannels( TI_HANDLE hScanMngr, TScanMethod* scanMethod, ERadioBand band );
    615 
    616 /**
    617  * \\n
    618  * \date 07-Mar-2005\n
    619  * \brief Calculates local TSF of the next event (beacon or GPR) of the given tracked AP.\n
    620  *
    621  * Function Scope \e Private.\n
    622  * \param hScanMngr - handle to the scan manager object.\n
    623  * \param BSSList - a pointer to the track list.\n
    624  * \param entryIndex - the index of the AP for which calculation is requires in the tracking list.\n
    625  * \param initialTSFValue - local TSF value AFTER which the next event is to found.\n
    626  * \return The approximate current TSF
    627  */
    628 TI_UINT64 scanMngrCalculateNextEventTSF( TI_HANDLE hScanMngr, scan_BSSList_t* BSSList, TI_UINT8 entryIndex, TI_UINT64 initialTSFValue );
    629 
    630 /**
    631  * \\n
    632  * \date 20-September-2005\n
    633  * \brief Check whether a time range collides with current AP DTIM
    634  *
    635  * Function Scope \e Private.\n
    636  * \param hScanMngr - handle to the scan manager object.\n
    637  * \param rangeStart - the time range start TSF.\n
    638  * \param eventEnd - the time range end TSF.\n
    639  * \return Whether the event collides with a DTIM (TRUF if it does, TI_FALSE if it doesn't).\n
    640  */
    641 TI_BOOL scanMngrDTIMInRange( TI_HANDLE hScanMngr, TI_UINT64 eventStart, TI_UINT64 eventEnd );
    642 
    643 /**
    644  * \\n
    645  * \date 03-Mar-2005\n
    646  * \brief Add a normal channel entry to the object workspace scan command.\n
    647  *
    648  * Function Scope \e Private.\n
    649  * \param hScanMngr - handle to the scan manager object.\n
    650  * \param scanMethod - The scan method (and parameters) to use.\n
    651  * \param channel - the channel index.\n
    652  * \param BSSID - pointer to the BSSID to use (may be broadcast.\n
    653  * \param txPowerDbm - Tx power to transmit probe requests.\n
    654  */
    655 void scanMngrAddNormalChannel( TI_HANDLE hScanMngr, TScanMethod* scanMethod, TI_UINT8 channel,
    656                                TMacAddr* BSSID, TI_UINT8 txPowerDbm );
    657 /**
    658  * \\n
    659  * \date 02-Mar-2005\n
    660  * \brief Removes an entry from the BSS list (by replacing it with another entry, if any).\n
    661  *
    662  * Function Scope \e Private.\n
    663  * \param hScanMngr - handle to the scan manager object.\n
    664  * \param BSSEntryIndex - index of the entry to remove.\n
    665  */
    666 void scanMngrRemoveBSSListEntry( TI_HANDLE hScanMngr, TI_UINT8 BSSEntryIndex );
    667 
    668 /**
    669  * \\n
    670  * \date 02-Mar-2005\n
    671  * \brief Removes all BSS list entries that are neither neighbor APs not on a policy defined channel.\n
    672  *
    673  * Function Scope \e Private.\n
    674  * \param hScanMngr - handle to the scan manager object.\n
    675  * \param bCheckNeighborAPs - whether to verify that APs marked as neighbor APs are really neighbor APs.\n
    676  * \param bCheckChannels - whether to verify that APs not marked as neighbor APs are on policy defined channel.\n
    677  */
    678 void scanMngrUpdateBSSList( TI_HANDLE hScanMngr, TI_BOOL bCheckNeighborAPs, TI_BOOL bCheckChannels );
    679 
    680 /**
    681  * \\n
    682  * \date 02-Mar-2005\n
    683  * \brief returns the index of a neighbor AP.\n
    684  *
    685  * Function Scope \e Private.\n
    686  * \param hScanMngr - handle to the scan manager object.\n
    687  * \param band - the band on which the AP resides.\n
    688  * \param bssId - the AP's BSSID.\n
    689  * \return the index into the neighbor AP list for the given address, -1 if AP is not in list.\n
    690  */
    691 TI_INT8 scanMngrGetNeighborAPIndex( TI_HANDLE hScanMngr, ERadioBand band, TMacAddr* bssId );
    692 
    693 /**
    694  * \\n
    695  * \date 02-Mar-2005\n
    696  * \brief Checks whether a channel is defined on a policy.\n
    697  *
    698  * Function Scope \e Private.\n
    699  * \param hScanMngr - handle to the scan manager object.\n
    700  * \param band - the band on which the channel is.\n
    701  * \param channel - the channel number.\n
    702  * \return TI_TRUE if channel is defined on policy, TI_FALSE otherwise.\n
    703  */
    704 TI_BOOL scanMngrIsPolicyChannel( TI_HANDLE hScanMngr, ERadioBand band, TI_UINT8 channel );
    705 
    706 /**
    707  * \\n
    708  * \date 18-Apr-2005\n
    709  * \brief Converts scan concentrator result status to scan manager result status, to be returned to roaming manager.\n
    710  *
    711  * Function Scope \e Private.\n
    712  * \param result status - scan concentrator result status.\n
    713  * \return appropriate scan manager status.\n
    714  */
    715 scan_mngrResultStatus_e scanMngrConvertResultStatus( EScanCncnResultStatus resultStatus );
    716 
    717 /**
    718  * \\n
    719  * \date 09-Mar-2005\n
    720  * \brief Print a neighbor AP list.\n
    721  *
    722  * Function Scope \e Private.\n
    723  * \param hScanMngr - handle to the scan manager object.\n
    724  * \param neighborAPList - the list of neighbor APs to print
    725  */
    726 void scanMngrTracePrintNeighborAPsList( TI_HANDLE hScanMngr, neighborAPList_t *neighborAPList );
    727 
    728 /**
    729  * \\n
    730  * \date 09-Mar-2005\n
    731  * \brief Print a neighbor AP.\n
    732  *
    733  * Function Scope \e Private.\n
    734  * \param hScanMngr - handle to the scan manager object.\n
    735  * \param neighborAP - the neighbor AP to print
    736  */
    737 void scanMngrTracePrintNeighborAP( TI_HANDLE hScanMngr, neighborAP_t* neighborAP );
    738 
    739 /**
    740  * \\n
    741  * \date 09-Mar-2005\n
    742  * \brief Print a band scan policy AP.\n
    743  *
    744  * Function Scope \e Private.\n
    745  * \param bandPolicy - the band scan policy to print.\n
    746  */
    747 void scanMngrTracePrintBandScanPolicy( TScanBandPolicy* bandPolicy );
    748 
    749 /**
    750  * \\n
    751  * \date 09-Mar-2005\n
    752  * \brief Print a scan method
    753  *
    754  * Function Scope \e Private.\n
    755  * \param scanMethod - the scan method to print.\n
    756  */
    757 void scanMngrTracePrintScanMethod( TScanMethod* scanMethod );
    758 
    759 /**
    760  * \\n
    761  * \date 09-Mar-2005\n
    762  * \brief print a normal scan method
    763  *
    764  * Function Scope \e Private.\n
    765  * \param basicMethodParams - the basic method parameters to print.\n
    766  */
    767 void scanMngrTracePrintNormalScanMethod( TScanBasicMethodParams* basicMethodParams );
    768 
    769 /**
    770  * \\n
    771  * \date 09-Mar-2005\n
    772  * \brief print an AC triggered scan method
    773  *
    774  * Function Scope \e Private.\n
    775  * \param triggeredMethodParams - the Tid-triggered method parameters to print.\n
    776  */
    777 void scanMngrTracePrintTriggeredScanMethod( TScanTidTriggeredMethodParams* triggeredMethodParams );
    778 
    779 /**
    780  * \\n
    781  * \date 09-Mar-2005\n
    782  * \brief print a SPS scan method
    783  *
    784  * Function Scope \e Private.\n
    785  * \param SPSMethodParams - the SPS method parameters to print.\n
    786  */
    787 void scanMngrTracePrintSPSScanMethod( TScanSPSMethodParams* SPSMethodParams );
    788 
    789 #ifdef TI_DBG
    790 /**
    791  * \\n
    792  * \date 31-Mar-2005\n
    793  * \brief print debug information for every received frame.\n
    794  *
    795  * Function Scope \e Private.\n
    796  * \param hScanMngr - handle to the scan manager object.\n
    797  * \param frameInfo - holding all frame related information.\n
    798  */
    799 void scanMngrDebugPrintReceivedFrame( TI_HANDLE hScanMngr, TScanFrameInfo *frameInfo );
    800 
    801 /**
    802  * \\n
    803  * \date 31-Mar-2005\n
    804  * \brief print BSS list.\n
    805  *
    806  * Function Scope \e Private.\n
    807  * \param hScanMngr - handle to the scan manager object.\n
    808  */
    809 void scanMngrDebugPrintBSSList( TI_HANDLE hScanMngr );
    810 
    811 /**
    812  * \\n
    813  * \date 31-Mar-2005\n
    814  * \brief print one entry in the BSS list.\n
    815  *
    816  * Function Scope \e Private.\n
    817  * \param hScanMngr - handle to the scan manager object.\n
    818  * \param entryIndex - the index of the entry to print.\n
    819  */
    820 void scanMngrDebugPrintBSSEntry( TI_HANDLE hScanMngr, TI_UINT8 entryIndex );
    821 
    822 /**
    823  * \\n
    824  * \date 14-Apr-2005\n
    825  * \brief print SPS helper list
    826  *
    827  * Function Scope \e Private.\n
    828  * \param hScanMngr - handle to the scan manager object.\n
    829  * \param spsHelperList - the list to print.\n
    830  * \param arrayHead - the index of the first element in the list.\n
    831  * \param arraySize - the size of the array.\n
    832  */
    833 void scanMngrDebugPrintSPSHelperList( TI_HANDLE hScanMngr, scan_SPSHelper_t* spsHelperList, int arrayHead, int arraySize );
    834 
    835 /**
    836  * \\n
    837  * \date 26-May-2005\n
    838  * \brief Print scan result histogram statistics.\n
    839  *
    840  * Function Scope \e Private.\n
    841  * \param scanResultHistogram - Scan results histogram (by scan complete reason).\n
    842  */
    843 void scanMngrStatsPrintScanResultHistogram( TI_UINT32 scanResultHistogram[] );
    844 
    845 /**
    846  * \\n
    847  * \date 26-May-2005\n
    848  * \brief Print track fail count histogram statistics.\n
    849  *
    850  * Function Scope \e Private.\n
    851  * \param trackFailHistogram - tracking failure histogram (by tracking retry).\n
    852  */
    853 void scanMngrStatsPrintTrackFailHistogrsm( TI_UINT32 trackFailHistogram[] );
    854 
    855 /**
    856  * \\n
    857  * \date 26-May-2005\n
    858  * \brief Print SPS attendant channel histogram statistics.\n
    859  *
    860  * Function Scope \e Private.\n
    861  * \param SPSChannelsNotAttendedHistogram - SPS channels attendant histogram.\n
    862  */
    863 void scanMngrStatsPrintSPSChannelsHistogram( TI_UINT32 SPSChannelsNotAttendedHistogram[] );
    864 
    865 /**
    866  * \\n
    867  * \date 25-July-2005\n
    868  * \brief Print One neighbor AP entry.\n
    869  *
    870  * Function Scope \e Private.\n
    871  * \param pNeighborAp - pointer to the neighbor AP data.\n
    872  * \param discovery state - the discovery state of this neighbor AP.\n
    873  */
    874 void scanMngrDebugPrintNeighborAP( neighborAP_t* pNeighborAp, scan_neighborDiscoveryState_e discoveryState );
    875 
    876 /**
    877  * \\n
    878  * \date 27-July-2005\n
    879  * \brief Prints a scan command.\n
    880  *
    881  * Function Scope \e Private.\n
    882  * \param pScanParams - a pointer to the scan parameters structure.\n
    883  */
    884 void scanMngrDebugPrintScanCommand( TScanParams* pScanParams );
    885 
    886 /**
    887  * \\n
    888  * \date 27-July-2005\n
    889  * \brief Prints scan command single normal channel.\n
    890  *
    891  * Function Scope \e Private.\n
    892  * \param pNormalChannel - a pointer to the normal channel to print.\n
    893  */
    894 void scanMngrDebugPrintNormalChannelParam( TScanNormalChannelEntry* pNormalChannel );
    895 
    896 /**
    897  * \\n
    898  * \date 27-July-2005\n
    899  * \brief Prints scan command single SPS channel.\n
    900  *
    901  * Function Scope \e Private.\n
    902  * \param pSPSChannel - a pointer to the SPS channel to print.\n
    903  */
    904 void scanMngrDebugPrintSPSChannelParam( TScanSpsChannelEntry* pSPSChannel );
    905 
    906 
    907 #endif /* TI_DBG */
    908 
    909 #endif /* __SCAN_MNGR_H__ */
    910