Home | History | Annotate | Download | only in Sta_Management
      1 /*
      2  * currBss.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 currBss.h
     35  *  \brief Current BSS module API
     36  *
     37  *  \see currBss.c
     38  */
     39 
     40 /****************************************************************************
     41  *                                                                          *
     42  *   MODULE:  Current BSS                                               *
     43  *   PURPOSE: Current BSS Module API                                    *
     44  *                                                                          *
     45  ****************************************************************************/
     46 
     47 #ifndef _CURR_BSS_H_
     48 #define _CURR_BSS_H_
     49 
     50 #include "siteMgrApi.h"
     51 #include "roamingMngrTypes.h"
     52 #include "paramOut.h"
     53 
     54 /* Constants */
     55 
     56 #define MAX_NUM_OF_RSSI_SNR_TRIGGERS 8
     57 
     58 /* Enumerations */
     59 
     60 /**
     61 * Current BSS module configurable parameters type
     62 */
     63 typedef enum
     64 {
     65     CURR_BSS_TYPE = 0,          /**< BSS or IBSS */
     66     CURR_BSS_CONNECTED_STATE,   /**< Connected or not connected, roaming enabled or not */
     67     CURR_BSS_LOW_RSSI_SCAN_COND,/**< Set by AP Connection when Roaming Manager configures low RSSI threshold for BG scan */
     68     CURR_BSS_HI_RSSI_SCAN_COND, /**< Set by AP Connection when Roaming Manager configures normal RSSI threshold for BG scan */
     69     CURR_BSS_QUALITY_THRESHOLD, /**< Set by AP Connection when Roaming Manager configures event of type 'Low RSSI' */
     70     CURR_BSS_NO_BSS_THRESHOLDS, /**< Set by AP Connection when Roaming Manager configures event of type 'BSS Loss' */
     71     CURR_BSS_NUM_OF_TEST_REPEAT,/**< Set by AP Connection when Roaming Manager configures event of type 'BSS Loss' */
     72     CURR_BSS_CONSEC_NACK,       /**< Set by AP Connection when Roaming Manager configures event of type 'Consecutive nack' */
     73     CURR_BSS_INFO               /**< Requested by AP Connection: includes quality and last beacon info */
     74 } currBSS_configParam_e;
     75 
     76 
     77 /* Structures */
     78 
     79 typedef struct triggerDataEx
     80 {
     81     TI_UINT8* pData;
     82     TI_UINT8  dataLength;
     83     TI_UINT16 clientID;
     84 } triggerDataEx_t;
     85 
     86 
     87 typedef struct triggerDesc
     88 {
     89 	TI_UINT16	clientID;
     90 	TI_HANDLE	fCB;
     91 	TI_HANDLE	hCB;
     92     TI_BOOL	    WasRegisteredByApp;
     93 } triggerDesc_t;
     94 
     95 
     96 /**
     97 * Current BSS control block
     98 * Following structure defines parameters that can be configured externally,
     99 * internal variables, and handlers of other modules used by Current BSS module
    100 */
    101 
    102 typedef struct _currBSS_t
    103 {
    104     /* Internal variables and configurable parameters */
    105     ScanBssType_e type;                   /**< Set by SME module; EBSS, IBSS or none */
    106     ERadioBand  band;                   /**< Set by SME module */
    107     TI_UINT8    channel;                /**< Set by AP Connection, SME and Switch Channel modules */
    108     TI_BOOL     isConnected;            /**< Default: not connected */
    109     bssEntry_t  currAPInfo;             /**< Set by SME upon request from AP Connection */
    110 
    111     TI_INT8     lowRssiThreshold;       /**< Last configured threshold for Low-RSSI */
    112     TI_INT8     lowSnrThreshold;        /**< Last configured threshold Low-SNR */
    113     TI_INT8     lowQualityForBkgrdScan; /**< Indicator used to increase the background scan period when quality is low */
    114     TI_INT8     highQualityForBkgrdScan;/**< Indicator used to reduce the background scan period when quality is normal */
    115     TI_UINT8    numExpectedTbttForBSSLoss;/**< last configured value without Soft Gemini compensation */
    116     TI_UINT8    maxTxRetryThreshold;    /**< last configured threshold for max Tx retry */
    117 
    118     TI_BOOL     bUseSGParams;           /**< Whether to use the Soft Gemini compensation on the roaming triggers (currently: BSS Loss) */
    119                                         /**< This compensation is needed since BT Activity might over-run beacons                       */
    120     TI_UINT32   SGcompensationPercent;  /**< the percentage of increasing the TbttForBSSLoss value when SG is enabled */
    121     TI_UINT8    uDefaultKeepAlivePeriod;/**< The default keep-alive period in seconds */
    122     TI_UINT8    keepAliveBuffer[ WLAN_WITH_SNAP_QOS_HEADER_MAX_SIZE ];
    123                                         /**< Buffer to store null-data keep-alive template */
    124 
    125     TI_UINT16     BssLossClientID;  /* holds the application client which registered to BssLoss event*/
    126     TI_UINT16     TxRetryClientID;  /* holds the application client which registered to TxRetry event*/
    127     triggerDesc_t aTriggersDesc[MAX_NUM_OF_RSSI_SNR_TRIGGERS]; /* static table to be used for trigger event registration*/
    128     TI_UINT8	  RoamingOperationalMode;                      /* 0 - manual , 1 - Auto */
    129 
    130     /* Handlers of other modules used by AP Connection */
    131     TI_HANDLE   hOs;
    132     TI_HANDLE   hPowerMngr;
    133     TI_HANDLE   hAPConn;
    134     TI_HANDLE   hSme;
    135     TI_HANDLE   hTWD;
    136     TI_HANDLE   hMlme;
    137     TI_HANDLE   hReport;
    138     TI_HANDLE   hRegulatoryDomain;
    139     TI_HANDLE   hSiteMgr;
    140     TI_HANDLE   hScanMngr;
    141     TI_HANDLE   hEvHandler;
    142     TI_HANDLE   hTxCtrl;
    143 } currBSS_t;
    144 
    145 
    146 /* Typedefs */
    147 
    148 typedef void (*TCurrBssDataCb) (TI_HANDLE hCurrBSS, TI_UINT8 *data, TI_UINT8 dataLength);
    149 
    150 /* External data definitions */
    151 
    152 /* External functions definitions */
    153 
    154 /* Function prototypes */
    155 
    156 TI_HANDLE currBSS_create(TI_HANDLE hOs);
    157 void      currBSS_init (TStadHandlesList *pStadHandles);
    158 TI_STATUS currBSS_SetDefaults (TI_HANDLE hCurrBSS, TCurrBssInitParams *pInitParams);
    159 TI_STATUS currBSS_unload(TI_HANDLE hCurrBSS);
    160 
    161 void currBSS_updateConnectedState(TI_HANDLE hCurrBSS, TI_BOOL isConnected, ScanBssType_e type);
    162 TI_STATUS currBSS_updateRoamingTriggers(TI_HANDLE hCurrBSS,
    163                                         roamingMngrThresholdsConfig_t *params);
    164 void currBSS_SGconfigureBSSLoss(TI_HANDLE hCurrBSS,
    165                                         TI_UINT32 SGcompensationPercent , TI_BOOL bUseSGParams);
    166 bssEntry_t *currBSS_getBssInfo(TI_HANDLE hCurrBSS);
    167 
    168 TI_STATUS currBSS_getRoamingParams(TI_HANDLE hCurrBSS,
    169                                    TI_UINT8 * aNumExpectedTbttForBSSLoss,
    170                                    TI_INT8 * aLowQualityForBackgroungScanCondition,
    171                                    TI_INT8 * aNormalQualityForBackgroungScanCondition);
    172 
    173 TI_STATUS currBSS_probRespReceivedCallb(TI_HANDLE hCurrBSS,
    174                                         TRxAttr *pRxAttr,
    175                                         TMacAddr *bssid,
    176                                         mlmeFrameInfo_t *pFrameInfo,
    177 										TI_UINT8 *dataBuffer,
    178                                         TI_UINT16 bufLength);
    179 
    180 TI_STATUS currBSS_beaconReceivedCallb(TI_HANDLE hCurrBSS,
    181                                         TRxAttr *pRxAttr,
    182                                         TMacAddr *bssid,
    183                                         mlmeFrameInfo_t *pFrameInfo,
    184 										TI_UINT8 *dataBuffer,
    185                                         TI_UINT16 bufLength);
    186 
    187 void currBSS_restartRssiCounting(TI_HANDLE hCurrBSS);
    188 
    189 void currBSS_GetDefaultKeepAlivePeriod(TI_HANDLE hCurrBSS, TI_UINT8* uDefaultKeepAlivePeriod);
    190 
    191 void currBss_DbgPrintTriggersTable(TI_HANDLE hCurrBSS);
    192 
    193 #endif /*  _CURR_BSS_H_*/
    194 
    195