Home | History | Annotate | Download | only in inc
      1 /***************************************************************************
      2 **+-----------------------------------------------------------------------+**
      3 **|                                                                       |**
      4 **| Copyright(c) 1998 - 2008 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 ****************************************************************************/
     35 /** \file scanMngrApi.h
     36  *  \brief This file include public definitions for the scan manager module, comprising its API.
     37  *  \author Ronen Kalish
     38  *  \date 01-Mar-2005
     39  */
     40 
     41 #ifndef __SCAN_MNGR_API_H__
     42 #define __SCAN_MNGR_API_H__
     43 
     44 #include "scanMngrTypes.h"
     45 #include "bssTypes.h"
     46 #include "ScanCncnApi.h"
     47 
     48 /*
     49  ***********************************************************************
     50  *	Constant definitions.
     51  ***********************************************************************
     52  */
     53 
     54 /*
     55  ***********************************************************************
     56  *	Enums.
     57  ***********************************************************************
     58  */
     59 
     60 /** \enum scan_mngrResultStatus_e
     61  * \brief enumerates the different result statuses that the scan manager
     62  * \brief can return in response to an immediate scan request.
     63  */
     64 typedef enum
     65 {
     66 	SCAN_MRS_SCAN_COMPLETE_OK= 0,                           /**< Scan was completed successfully */
     67 	SCAN_MRS_SCAN_RUNNING,                                  /**< Scan was started successfully and is now running */
     68 	SCAN_MRS_SCAN_NOT_ATTEMPTED_ALREADY_RUNNING,            /**< scan was not attempted because it is already running */
     69     SCAN_MRS_SCAN_NOT_ATTEMPTED_EMPTY_POLICY,               /**<
     70                                                              * Scan was not attempted because the policy defines
     71                                                              * NULL scan type
     72                                                              */
     73 	SCAN_MRS_SCAN_NOT_ATTEMPTED_NO_CHANNLES_AVAILABLE,      /**<
     74                                                              * Scan was not attempted because no channels are
     75                                                              * available for scan, according to the defined policy.
     76                                                              */
     77 	SCAN_MRS_SCAN_FAILED,                                   /**< Scan failed to start */
     78 	SCAN_MRS_SCAN_STOPPED,                                  /**< Scan was stopped by caller */
     79 	SCAN_MRS_SCAN_ABORTED_FW_RESET,                         /**< Scan was aborted due to recovery */
     80 	SCAN_MRS_SCAN_ABORTED_HIGHER_PRIORITY,                  /**< Scan was aborted due to a higher priority client */
     81 } scan_mngrResultStatus_e;
     82 
     83 /*
     84  ***********************************************************************
     85  *	Typedefs.
     86  ***********************************************************************
     87  */
     88 
     89 /*
     90  ***********************************************************************
     91  *	Structure definitions.
     92  ***********************************************************************
     93  */
     94 
     95 /*
     96  ***********************************************************************
     97  *	External data definitions.
     98  ***********************************************************************
     99  */
    100 
    101 /*
    102  ***********************************************************************
    103  *	External functions definitions
    104  ***********************************************************************
    105  */
    106 
    107 /**
    108  * \author Ronen Kalish\n
    109  * \date 01-Mar-2005\n
    110  * \brief Creates the scan manager object.\n
    111  *
    112  * Function Scope \e Public.\n
    113  * \param hScanMngr - handle to the OS object.\n
    114  * \return a pointer to the scan manager object if successful, NULL otherwise.\n
    115  */
    116 TI_HANDLE scanMngr_create( TI_HANDLE hOS );
    117 
    118 /**
    119  * \author Ronen Kalish\n
    120  * \date 01-Mar-2005\n
    121  * \brief Initializes the scan manager.\n
    122  *
    123  * Function Scope \e Public.\n
    124  * \param hScanMngr - handle to the scan manager object.\n
    125  * \param hReport - handle to the report object.\n
    126  * \param hRegDomain - handle to the regulatory domain object.\n
    127  * \param hScanCncn - handle to the scan concentrator object.\n
    128  * \param hRoamMngr - handle to the roaming manager object.\n
    129  * \param hSiteMngr - handle to the site manager object.\n
    130  */
    131 void scanMngr_init( TI_HANDLE hScanMngr, TI_HANDLE hReport, TI_HANDLE hRegDomain,
    132                     TI_HANDLE hScanCncn, TI_HANDLE hRoamMngr, TI_HANDLE hSiteMngr,
    133 					TI_HANDLE hHalCtrl);
    134 
    135 /**
    136  * \author Ronen Kalish\n
    137  * \date 01-Mar-2005\n
    138  * \brief unloads the scan manager object.\n
    139  *
    140  * Function Scope \e Public.\n
    141  * \param hScanMngr - handle to the scan manager object.\n
    142  */
    143 void scanMngr_unload( TI_HANDLE hScanMngr );
    144 
    145 /**
    146  * \author Ronen Kalish\n
    147  * \date 01-Mar-2005\n
    148  * \brief Starts an immediate scan operation.\n
    149  *
    150  * Function Scope \e Public.\n
    151  * \param hScanMngr - handle to the scan manager object.\n
    152  * \param pNeighborAPsOnly - TRUE if scan for neighbor APs only, FALSE if scan on all channels.\n
    153  * \return status indication.\n
    154  * \retval SCAN_MRS_SCAN_RUNNING - the scan started successfully and is now running.\n
    155  * \retval SCAN_MRS_SCAN_NOT_ATTEMPTED_ALREADY_RUNNING - scan was not attempted because it is already running.\n
    156  * \retval SCAN_MRS_SCAN_NOT_ATTEMPTED_EMPTY_POLICY - scan was not attempted because NULL policy defined.\n
    157  * \retval SCAN_MRS_SCAN_NOT_ATTEMPTED_NO_CHANNLES_AVAILABLE - scan was not attempted because no channels were available.\n
    158  * \retval SCAN_MRS_SCAN_FAILED - scan failed to start at lower levels.\n
    159  */
    160 scan_mngrResultStatus_e scanMngr_startImmediateScan( TI_HANDLE hScanMngr, BOOLEAN bNeighborAPsOnly);
    161 
    162 /**
    163  * \author Ronen Kalish\n
    164  * \date 01-Mar-2005\n
    165  * \brief Stops an immediate scan operation.\n
    166  *
    167  * Function Scope \e Public.\n
    168  * \param hScanMngr - handle to the scan manager object.\n
    169  */
    170 void scanMngr_stopImmediateScan( TI_HANDLE hScanMngr );
    171 
    172 /**
    173  * \author Ronen Kalish\n
    174  * \date 01-Mar-2005\n
    175  * \brief Starts the continuous scan timer.\n
    176  *
    177  * Function Scope \e Public.\n
    178  * \param hScanMngr - handle to the scan manager object.\n
    179  * \param currentBSS - the AP we are currently connected to.\n
    180  * \currentBSSBand - the band of the current BSS.\n
    181  */
    182 void scanMngr_startContScan( TI_HANDLE hScanMngr, macAddress_t* currentBSS, radioBand_e currentBSSBand );
    183 
    184 /**
    185  * \author Ronen Kalish\n
    186  * \date 01-Mar-2005\n
    187  * \brief Stops the continuous scan timer.\n
    188  *
    189  * Function Scope \e Public.\n
    190  * \param hScanMngr - handle to the scan manager object.\n
    191  */
    192 void scanMngr_stopContScan( TI_HANDLE hScanMngr );
    193 
    194 /**
    195  * \author Ronen Kalish\n
    196  * \date 01-Mar-2005\n
    197  * \brief returns the currently available BSS list.\n
    198  *
    199  * Function Scope \e Public.\n
    200  * \param hScanMngr - handle to the scan manager object.\n
    201  * \return BSS list structure pointer.\n
    202  */
    203 bssList_t *scanMngr_getBSSList( TI_HANDLE hScanMngr );
    204 
    205 /**
    206  * \author Ronen Kalish\n
    207  * \date 01-Mar-2005\n
    208  * \brief Sets the neighbor APs.\n
    209  *
    210  * Function Scope \e Public.\n
    211  * \param hScanMngr - handle to the scan manager object.\n
    212  * \param neighborAPList - the neighbor AP list.\n
    213  */
    214 void scanMngr_setNeighborAPs( TI_HANDLE hScanMngr, neighborAPList_t* neighborAPList );
    215 
    216 /**
    217  * \author Ronen Kalish\n
    218  * \date 01-Mar-2005\n
    219  * \brief change quality level (normal / deteriorating).\n
    220  *
    221  * Function Scope \e Public.\n
    222  * \param hScanMngr - handle to the scan manager object.\n
    223  * \param bLowQuality - TRUE if quality is deteriorating, FALSE if quality is normal.\n
    224  */
    225 void scanMngr_qualityChangeTrigger( TI_HANDLE hScanMngr, BOOLEAN bLowQuality );
    226 
    227 /**
    228  * \author Ronen Kalish\n
    229  * \date 13-Mar-2005\n
    230  * \brief Notifies the scan manager of a roaming event. Should be called BEFORE the SCR group
    231  * \brief is changed back to connected.\n
    232  *
    233  * Function Scope \e Public.\n
    234  * \param hScanMngr - handle to the scan manager object.\n
    235  * \param macAddress - mac address of the new AP.\n
    236  * \param band - the band of the new AP.\n
    237  */
    238 void scanMngr_handoverDone( TI_HANDLE hScanMngr, macAddress_t* macAddress, radioBand_e band );
    239 
    240 /**
    241  * \author Ronen Kalish\n
    242  * \date 01-Mar-2005\n
    243  * \brief Callback used by the scan concentrator for immediate scan result.\n
    244  *
    245  * Function Scope \e Public.\n
    246  * \param hScanMngr - handle to the scan manager object.\n
    247  * \param resultStatus - reason for calling this function (frame received / scan complete).\n
    248  * \param frameInfo - frame related information (in case of a frame reception).\n
    249  * \param SPSStatus - bitmap indicating which channels were scan, in case of an SPS scan.\n
    250  */
    251 void scanMngr_immedScanCB( TI_HANDLE hScanMngr, scan_cncnResultStatus_e resultStatus,
    252                            scan_frameInfo_t* frameInfo, UINT16 SPSStatus );
    253 
    254 /**
    255  * \author Ronen Kalish\n
    256  * \date 01-Mar-2005\n
    257  * \brief Callback used by the scan concentrator for continuous scan result.\n
    258  *
    259  * Function Scope \e Public.\n
    260  * \param hScanMngr - handle to the scan manager object.\n
    261  * \param resultStatus - reason for calling this function (frame received / scan complete).\n
    262  * \param frameInfo - frame related info (in case of a frame reception).\n
    263  * \param SPSStatus - bitmap indicating which channels were scan, in case of an SPS scan.\n
    264  */
    265 void scanMngr_contScanCB( TI_HANDLE hScanMngr, scan_cncnResultStatus_e resultStatus,
    266                          scan_frameInfo_t* frameInfo, UINT16 SPSStatus );
    267 
    268 /**
    269  * \author Ronen Kalish\n
    270  * \date 08-Mar-2005\n
    271  * \brief Parses and executes a get param command.\n
    272  *
    273  * Function Scope \e Public.\n
    274  * \param hScanMngr - handle to the scan manager object.\n
    275  * \param pParam - the param to get.\n
    276  * \return OK if the parameter was get successfully, NOK otherwise.\n
    277  */
    278 TI_STATUS scanMngr_getParam( TI_HANDLE hScanMngr, paramInfo_t *pParam );
    279 
    280 /**
    281  * \author Ronen Kalish\n
    282  * \date 01-Mar-2005\n
    283  * \brief Parses and executes a set param command.\n
    284  *
    285  * Function Scope \e Public.\n
    286  * \param hScanMngr - handle to the scan manager object.\n
    287  * \param pParam - the param to set.\n
    288  * \return OK if the parameter was set successfully, NOK otherwise.\n
    289  */
    290 TI_STATUS scanMngr_setParam( TI_HANDLE hScanMngr, paramInfo_t *pParam );
    291 
    292 /**
    293  * \author Ronen Kalish\n
    294  * \date 01-Mar-2005\n
    295  * \brief Sets the scan policy.\n
    296  *
    297  * Function Scope \e Public.\n
    298  * \param hScanMngr - handle to the scan manager object.\n
    299  * \param scanPolicy - a pointer to the policy data.\n
    300  */
    301 void scanMngr_setScanPolicy( TI_HANDLE hScanMngr, scan_Policy_t* scanPolicy );
    302 
    303 /* Clear all candidate BSSList for Roaming */
    304 void scanMngrClearBSSListEntry( TI_HANDLE hScanMngr );
    305 
    306 #ifdef TI_DBG
    307 /**
    308  * \author Ronen Kalish\n
    309  * \date 09-Mar-2005\n
    310  * \brief Print scan policy.\n
    311  *
    312  * Function Scope \e Private.\n
    313  * \param scanPolicy - scan policy to print.\n
    314  */
    315 void scanMngrTracePrintScanPolicy( scan_Policy_t* scanPolicy );
    316 
    317 /**
    318  * \author Ronen Kalish\n
    319  * \date 26-May-2005\n
    320  * \brief Print scan manager statistics.\n
    321  *
    322  * Function Scope \e Public.\n
    323  * \param hScanMngr - handle to the scan manager object.\n
    324  */
    325 void scanMngr_statsPrint( TI_HANDLE hScanMngr );
    326 
    327 /**
    328  * \author Ronen Kalish\n
    329  * \date 26-May-2005\n
    330  * \brief Reset scan manager statistics.\n
    331  *
    332  * Function Scope \e Public.\n
    333  * \param hScanMngr - handle to the scan manager object.\n
    334  */
    335 void scanMngr_statsReset( TI_HANDLE hScanMngr );
    336 
    337 /**
    338  * \author Ronen Kalish\n
    339  * \date 25-July-2005\n
    340  * \brief Print Neighbor AP list.\n
    341  *
    342  * Function Scope \e Public.\n
    343  * \param hScanMngr - Handle to the scan manager object.\n
    344  */
    345 void scanMngrDebugPrintNeighborAPList( TI_HANDLE hScanMngr );
    346 
    347 /**
    348  * \author Ronen Kalish\n
    349  * \date 25-July-2005\n
    350  * \brief Prints all data in the scan manager object.\n
    351  *
    352  * Function Scope \e Public.\n
    353  * \param hScanMngr - handle to the scan manager object.\n
    354  */
    355 void scanMngrDebugPrintObject( TI_HANDLE hScanMngr );
    356 
    357 #endif /* TI_DBG */
    358 
    359 #endif /* __SCAN_MNGR_API_H__ */
    360