Home | History | Annotate | Download | only in inc
      1 /** \file ScanCncnApi.h
      2  *  \brief This file include public definitions for the scan concentrator module, comprising its API.
      3  *  \author Ronen Kalish
      4  *  \date 30-Dec-2004
      5  */
      6  /****************************************************************************
      7 **+-----------------------------------------------------------------------+**
      8 **|                                                                       |**
      9 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
     10 **| All rights reserved.                                                  |**
     11 **|                                                                       |**
     12 **| Redistribution and use in source and binary forms, with or without    |**
     13 **| modification, are permitted provided that the following conditions    |**
     14 **| are met:                                                              |**
     15 **|                                                                       |**
     16 **|  * Redistributions of source code must retain the above copyright     |**
     17 **|    notice, this list of conditions and the following disclaimer.      |**
     18 **|  * Redistributions in binary form must reproduce the above copyright  |**
     19 **|    notice, this list of conditions and the following disclaimer in    |**
     20 **|    the documentation and/or other materials provided with the         |**
     21 **|    distribution.                                                      |**
     22 **|  * Neither the name Texas Instruments nor the names of its            |**
     23 **|    contributors may be used to endorse or promote products derived    |**
     24 **|    from this software without specific prior written permission.      |**
     25 **|                                                                       |**
     26 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
     27 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
     28 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
     29 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
     30 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
     31 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
     32 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
     33 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
     34 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
     35 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
     36 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
     37 **|                                                                       |**
     38 **+-----------------------------------------------------------------------+**
     39 ****************************************************************************/
     40 
     41 #ifndef __SCANCNCNAPI_H__
     42 #define __SCANCNCNAPI_H__
     43 
     44 #include "osApi.h"
     45 #include "scrApi.h"
     46 #include "paramOut.h"
     47 #include "mlmeApi.h"
     48 #include "MacServices_api.h"
     49 
     50 
     51 /** \enum connectionStatus_e
     52  * \brief enumerates the different connection statuses
     53  */
     54 typedef enum
     55 {
     56     STA_CONNECTED = 0,              /**< the station is connected to an infrastructure BSS */
     57     STA_NOT_CONNECTED,              /**< the station is not connected to an infrastructure BSS */
     58     STA_IBSS                        /**< the station is participating in an IBSS */
     59 } connectionStatus_e;
     60 
     61 
     62 /** \enum scan_CncnClient_e
     63  * \brief enumerates the different possible clients requesting scan from the scan concentrator
     64  */
     65 typedef enum
     66 {
     67     SCAN_SCC_ROAMING_IMMED = 0,     /**< immediate scan for roaming */
     68     SCAN_SCC_ROAMING_CONT,          /**< continuous scan for roaming */
     69     SCAN_SCC_DRIVER,                /**< driver (SME) scan */
     70     SCAN_SCC_APP,                   /**< application (user) scan */
     71     SCAN_SCC_NUM_OF_CLIENTS,        /**< number of clients */
     72     SCAN_SCC_NO_CLIENT              /**< no client */
     73 } scan_CncnClient_e;
     74 
     75 /** \enum scan_cncnResultStatus_e
     76  * \brief enumerates the different scan result statuses
     77  */
     78 typedef enum
     79 {
     80     SCAN_CRS_RECEIVED_FRAME = 0,            /**< scan not yet completed, indicating a frame received during scan */
     81     SCAN_CRS_SCAN_COMPLETE_OK,              /**< scan completed normally */
     82     SCAN_CRS_SCAN_RUNNING,                  /**< scan initialized successfully and is now running */
     83     SCAN_CRS_SCAN_FAILED,                   /**<
     84                                              * scan failed due to unexpected situation (SCR reject, no
     85                                              * channels available, scan SRV returned NOK, etc)
     86                                              */
     87     SCAN_CRS_SCAN_STOPPED,                  /**< scan stopped by user */
     88     SCAN_CRS_TSF_ERROR,                     /**< TSF error (AP recovery) occurred (for SPS only */
     89     SCAN_CRS_SCAN_ABORTED_FW_RESET,         /**< scan aborted due to FW reset */
     90     SCAN_CRS_SCAN_ABORTED_HIGHER_PRIORITY,  /**< scan aborted due to a higher priority client */
     91     SCAN_CRS_NUM_OF_RES_STATUS              /**< number of possible result status */
     92 } scan_cncnResultStatus_e;
     93 
     94 /*
     95  ***********************************************************************
     96  *	External data definitions.
     97  ***********************************************************************
     98  */
     99 
    100 /** \struct scan_frameInfo_t
    101  * \brief contains a single frame information, returned by the result CB when a frame is available
    102  */
    103 typedef struct
    104 {
    105     macAddress_t*       bssId;              /* MAC address of the AP from which the frame was received */
    106     mlmeFrameInfo_t*    parsedIEs;          /* parsed frame IEs */
    107     radioBand_e         band;               /* band on which the frame was received */
    108     UINT8               channel;            /* channel on which the frame was received */
    109     UINT32              staTSF;             /* TSF of the station when the frame was received */
    110     INT8                rssi;               /* RSSI level at which frame was received */
    111     rate_e              rate;               /* bitrate at which frame was received */
    112     UINT8*              buffer;             /* frame body */
    113     UINT16              bufferLength;       /* frame body length */
    114 } scan_frameInfo_t;
    115 
    116 /*
    117  ***********************************************************************
    118  *	Typedefs.
    119  ***********************************************************************
    120  */
    121 
    122  /** \typedef scan_resultCB_t
    123   * \brief Defines the function prototype for the scan result callback
    124   * (notification by the scan concentrator to a client of either a scan
    125   * termination or a result frame received).
    126   */
    127 typedef void (*scan_resultCB_t) ( TI_HANDLE clientObj, scan_cncnResultStatus_e status,
    128                                  scan_frameInfo_t* frameInfo, UINT16 SPSStatus );
    129 
    130 /*
    131  ***********************************************************************
    132  *	External functions definitions
    133  ***********************************************************************
    134  */
    135 
    136 /**
    137  * \author Ronen Kalish\n
    138  * \date 02-Jan-2005\n
    139  * \brief Creates the scan concentrator object
    140  *
    141  * Function Scope \e Public.\n
    142  * \param hOS - handle to the OS object.\n
    143  * \return a handle to the scan SRV object, NULL if an error occurred.\n
    144  */
    145 TI_HANDLE scanConcentrator_create( TI_HANDLE hOS );
    146 
    147 /**
    148  * \author Ronen Kalish\n
    149  * \date 02-Jan-2005\n
    150  * \brief Finalizes the scan concentrator object (freeing system resources)
    151  *
    152  * Function Scope \e Public.\n
    153  * \param hScanCncn - handle to the scan concentrator object.\n
    154  */
    155 void scanConcentrator_release( TI_HANDLE hScanCncn );
    156 
    157 /**
    158  * \author Ronen Kalish\n
    159  * \date 02-Jan-2005\n
    160  * \brief Initialize the scan concentrator object.
    161  *
    162  * Function Scope \e Public.\n
    163  * \param hScanCncn - handle to the scan concentrator object.\n
    164  * \param hHalCtrl - handle to the Hal Ctrl object.\n
    165  * \param hReport - handle to the Report object.\n
    166  * \param hRegDomain - handle to the regulatory domain object.\n
    167  * \param hSiteMngr - handle to the site manager object.\n
    168  * \param hSCR - handle to the SCR object.\n
    169  * \param hMacServices - handle to the MacServices object.\n
    170  * \param hAPConn - handle to the AP connection object.\n
    171  * \param hEventSRV - handle to the event SRV object.\n
    172  * \param hMlme - handle to the MLME object.\n
    173  * \param hCtrlData - handle to the data CTRL object.\n
    174  * \param hHealthMonitor - handle to the health monitor object.\n
    175  * \param pScanConcentratorInitParams - pointer to the init parameters structure.\n
    176  */
    177 void scanConcentrator_init( TI_HANDLE hScanCncn,
    178 						    TI_HANDLE hHalCtrl,
    179                             TI_HANDLE hReport,
    180                             TI_HANDLE hRegDomain,
    181                             TI_HANDLE hSiteMngr,
    182                             TI_HANDLE hSCR,
    183                             TI_HANDLE hMacServices,
    184                             TI_HANDLE hAPConn,
    185                             TI_HANDLE hEventSRV,
    186                             TI_HANDLE hMlme,
    187                             TI_HANDLE hCtrlData,
    188 							TI_HANDLE hHealthMonitor,
    189                             scanConcentratorInitParams_t *pScanConcentratorInitParams );
    190 
    191 /**
    192  * \author Ronen Kalish\n
    193  * \date 02-Jan-2005\n
    194  * \brief switch the connection mode to connected (infrastructure BSS)
    195  *
    196  * Function Scope \e Public.\n
    197  * \param hScanCncn - handle to the scan concentrator object.\n
    198  */
    199 void scanConcentrator_switchToConnected( TI_HANDLE hScanCncn );
    200 
    201 /**
    202  * \author Ronen Kalish\n
    203  * \date 02-Jan-2005\n
    204  * \brief switch the connection mode to not connected
    205  *
    206  * Function Scope \e Public.\n
    207  * \param hScanCncn - handle to the scan concentrator object.\n
    208  */
    209 void scanConcentrator_switchToNotConnected( TI_HANDLE hScanCncn );
    210 
    211 /**
    212  * \author Ronen Kalish\n
    213  * \date 02-Jan-2005\n
    214  * \brief switch the connection mode to IBSS participation
    215  *
    216  * Function Scope \e Public.\n
    217  * \param hScanCncn - handle to the scan concentrator object.\n
    218  */
    219 void scanConcentrator_switchToIBSS( TI_HANDLE hScanCncn );
    220 
    221 /**
    222  * \author Ronen Kalish\n
    223  * \date 02-Jan-2005\n
    224  * \brief Called by a client to request a scan.
    225  *
    226  * Function Scope \e Public.\n
    227  * \param hScanCncn - handle to the scan concentrator object.\n
    228  * \param client - the client ID.\n
    229  * \return scan operation detailed result status.\n
    230  * \retval SCAN_CRS_SCAN_RUNNING - scan started successfully and is now running.\n
    231  * \retval SCAN_CRS_SCAN_FAILED - scan failed to start due to an unexpected error.\n
    232  */
    233 scan_cncnResultStatus_e scanConcentrator_scan( TI_HANDLE hScanCncn,
    234                                                scan_CncnClient_e client,
    235                                                scan_Params_t* pScanParams );
    236 
    237 /**
    238  * \author Ronen Kalish\n
    239  * \date 02-Jan-2005\n
    240  * \brief Called by a client to stop a scan request in process. A client should ONLY stop its own request!
    241  *
    242  * Function Scope \e Public.\n
    243  * \param hScanCncn - handle to the scan concentrator object.\n
    244  * \param client - the client ID.\n
    245  */
    246 void scanConcentrator_stopScan( TI_HANDLE hScanCncn, scan_CncnClient_e client );
    247 
    248 /**
    249  * \author Ronen Kalish\n
    250  * \date 02-Jan-2005\n
    251  * \brief Registers a scan result function for a specific client.
    252  *
    253  * Function Scope \e Public.\n
    254  * \param hScanCncn - handle to the scan concentrator object.\n
    255  * \param client - the client ID.\n
    256  * \param scanResultCBFunc - the function to use.\n
    257  * \param scanresultCBObj - the object to pass to the scan result CB function.\n
    258  */
    259 void scanConcentrator_registerScanResultCB( TI_HANDLE hScanCncn, scan_CncnClient_e client,
    260                                             scan_resultCB_t scanResultCBFunc, TI_HANDLE scanResultCBObj );
    261 
    262 /**
    263  * \author Ronen Kalish\n
    264  * \date 02-Jan-2005\n
    265  * \brief Called by the scan SRV (after registration) to notify of a scan complete event.
    266  *
    267  * Function Scope \e Public.\n
    268  * \param hScanCncn - handle to the scan concentrator object.\n
    269  * \param SPSStatus - which channels were attempted (if SPS scan).\n
    270  * \param bTSFError - whether a TSF error occurred (if SPS scan).\n
    271  * \param  ScanStatus - return the status of the scan . \n
    272  */
    273 void scanConcentrator_scanCompleteNotificationCB( TI_HANDLE hScanCncn, UINT16 SPSStatus, BOOLEAN bTSFError , TI_STATUS ScanStatus , TI_STATUS PSMode);
    274 
    275 /**
    276  * \author Ronen Kalish\n
    277  * \date 02-Jan-2005\n
    278  * \brief Called by the MLME parser to pass information received on a beacon or probe response.
    279  *
    280  * Function Scope \e Public.\n
    281  * \param hScanCncn - handle to the scan concentrator object.\n
    282  * \param bssid - a pointer to the address of the AP sending this frame.\n
    283  * \param frameInfo - the IE in the frame.\n
    284  * \param pRxAttr - a pointer to TNET RX attributes struct.\n
    285  * \param buffer - a pointer to the frame body.\n
    286  * \param byfferLength - the frame body length.\n
    287  */
    288 void scanConcentrator_mlmeResultCB( TI_HANDLE hScanCncn, macAddress_t* bssid, mlmeFrameInfo_t* frameInfo,
    289                                     Rx_attr_t* pRxAttr, UINT8* buffer, UINT16 bufferLength );
    290 
    291 /**
    292  * \author Ronen Kalish\n
    293  * \date 02-Jan-2005\n
    294  * \brief Called by the SCR (after registration) to notify the scan concentrator of a status change
    295  * \brief for the immediate scan for roaming client.
    296  *
    297  * Function Scope \e Public.\n
    298  * \param hScanCncn - handle to the scan concentrator object.\n
    299  * \param requestStatus - the continuous scan for roaming client status.\n
    300  * \param pendReason - the reason for pend status, if the status is pend.\n
    301  */
    302 void scanConcentrator_scrRoamingImmedCB( TI_HANDLE hScanCncn, scr_clientRequestStatus_e requestStatus,
    303                                          scr_pendReason_e pendReason );
    304 
    305 /**
    306  * \author Ronen Kalish\n
    307  * \date 02-Jan-2005\n
    308  * \brief Called by the SCR (after registration) to notify the scan concentrator of a status change
    309  * \brief for the continuous scan for roaming client.
    310  *
    311  * Function Scope \e Public.\n
    312  * \param hScanCncn - handle to the scan concentrator object.\n
    313  * \param requestStatus - the continuous scan for roaming client status.\n
    314  * \param pendReason - the reason for pend status, if the status is pend.\n
    315  */
    316 void scanConcentrator_scrRoamingContCB( TI_HANDLE hScanCncn, scr_clientRequestStatus_e requestStatus,
    317                                         scr_pendReason_e pendReason );
    318 
    319 /**
    320  * \author Ronen Kalish\n
    321  * \date 02-Jan-2005\n
    322  * \brief Called by the SCR (after registration) to notify the scan concentrator of a status change
    323  * \brief for the Application scan client.
    324  *
    325  * Function Scope \e Public.\n
    326  * \param hScanCncn - handle to the scan concentrator object.\n
    327  * \param requestStatus - the application scan status.\n
    328  * \param pendReason - the reason for pend status, if the status is pend.\n
    329  */
    330 void scanConcentrator_scrAppCB( TI_HANDLE hScanCncn, scr_clientRequestStatus_e requestStatus,
    331                                 scr_pendReason_e pendReason );
    332 
    333 /**
    334  * \author Ronen Kalish\n
    335  * \date 02-Jan-2005\n
    336  * \brief Called by the SCR (after registration) to notify the scan concentrator of a status change
    337  * \brief for the driver scan client.
    338  *
    339  * Function Scope \e Public.\n
    340  * \param hScanCncn - handle to the scan concentrator object.\n
    341  * \param requestStatus - the driver scan status.\n
    342  */
    343 void scanConcentrator_scrDriverCB( TI_HANDLE hScanCncn, scr_clientRequestStatus_e requestStatus,
    344                                    scr_pendReason_e pendReason );
    345 
    346 /**
    347  * \author Yuval Adler\n
    348  * \date 26-Jan-2006\n
    349  * \brief enable/disable the use of SG parameters , and update parameters of next scans
    350  *		requests for minDwellTime,MaxDwellTime,numProbeReq  .\n
    351  *			this function is called when SG is enabled or disabled
    352  * Function Scope \e Private.\n
    353  * \param hScanCncn - handle to the scan concentrator object.\n
    354  * \param bUseSGParams - whether to use the new parameters (TRUE when SG is enabled)
    355  * \param probeReqNumber -
    356  * \param SGcompensationMaxTime - max value from which we won't increase dwelling time
    357  * \param SGcompensationPercent - increasing dwell time in that percentage
    358  */
    359 void scanConcentrator_SGconfigureScanParams( TI_HANDLE hScanCncn, BOOL bUseSGParams ,
    360 											 UINT8 probeReqNumber , UINT32 SGcompensationMaxTime,
    361 											 UINT32 SGcompensationPercent);
    362 #endif /* __SCANCNCNAPI_H__ */
    363