1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * currBss.h 3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 43bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. 5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved. 6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without 8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions 9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met: 10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Redistributions of source code must retain the above copyright 12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notice, this list of conditions and the following disclaimer. 13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Redistributions in binary form must reproduce the above copyright 14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notice, this list of conditions and the following disclaimer in 15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * the documentation and/or other materials provided with the 16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * distribution. 17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Neither the name Texas Instruments nor the names of its 18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * contributors may be used to endorse or promote products derived 19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * from this software without specific prior written permission. 20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file currBss.h 35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Current BSS module API 36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \see currBss.c 38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * 42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * MODULE: Current BSS * 43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * PURPOSE: Current BSS Module API * 44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * 45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifndef _CURR_BSS_H_ 48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define _CURR_BSS_H_ 49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "siteMgrApi.h" 51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "roamingMngrTypes.h" 52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "paramOut.h" 53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Constants */ 55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define MAX_NUM_OF_RSSI_SNR_TRIGGERS 8 57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Enumerations */ 59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Current BSS module configurable parameters type 62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef enum 64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_TYPE = 0, /**< BSS or IBSS */ 66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_CONNECTED_STATE, /**< Connected or not connected, roaming enabled or not */ 67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_LOW_RSSI_SCAN_COND,/**< Set by AP Connection when Roaming Manager configures low RSSI threshold for BG scan */ 68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_HI_RSSI_SCAN_COND, /**< Set by AP Connection when Roaming Manager configures normal RSSI threshold for BG scan */ 69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_QUALITY_THRESHOLD, /**< Set by AP Connection when Roaming Manager configures event of type 'Low RSSI' */ 70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_NO_BSS_THRESHOLDS, /**< Set by AP Connection when Roaming Manager configures event of type 'BSS Loss' */ 71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_NUM_OF_TEST_REPEAT,/**< Set by AP Connection when Roaming Manager configures event of type 'BSS Loss' */ 72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_CONSEC_NACK, /**< Set by AP Connection when Roaming Manager configures event of type 'Consecutive nack' */ 73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CURR_BSS_INFO /**< Requested by AP Connection: includes quality and last beacon info */ 74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} currBSS_configParam_e; 75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Structures */ 78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct triggerDataEx 80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 data; 82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT16 clientID; 83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} triggerDataEx_t; 84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct triggerDesc 87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT16 clientID; 89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE fCB; 90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hCB; 91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_BOOL WasRegisteredByApp; 92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} triggerDesc_t; 93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Current BSS control block 97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Following structure defines parameters that can be configured externally, 98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* internal variables, and handlers of other modules used by Current BSS module 99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct _currBSS_t 102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Internal variables and configurable parameters */ 104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ScanBssType_e type; /**< Set by SME module; EBSS, IBSS or none */ 105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ERadioBand band; /**< Set by SME module */ 106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 channel; /**< Set by AP Connection, SME and Switch Channel modules */ 107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_BOOL isConnected; /**< Default: not connected */ 108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt bssEntry_t currAPInfo; /**< Set by SME upon request from AP Connection */ 109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT8 lowRssiThreshold; /**< Last configured threshold for Low-RSSI */ 111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT8 lowSnrThreshold; /**< Last configured threshold Low-SNR */ 112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT8 lowQualityForBkgrdScan; /**< Indicator used to increase the background scan period when quality is low */ 113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT8 highQualityForBkgrdScan;/**< Indicator used to reduce the background scan period when quality is normal */ 114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 numExpectedTbttForBSSLoss;/**< last configured value without Soft Gemini compensation */ 115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 maxTxRetryThreshold; /**< last configured threshold for max Tx retry */ 116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_BOOL bUseSGParams; /**< Whether to use the Soft Gemini compensation on the roaming triggers (currently: BSS Loss) */ 118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /**< This compensation is needed since BT Activity might over-run beacons */ 119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 SGcompensationPercent; /**< the percentage of increasing the TbttForBSSLoss value when SG is enabled */ 120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 uDefaultKeepAlivePeriod;/**< The default keep-alive period in seconds */ 121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keepAliveBuffer[ WLAN_WITH_SNAP_QOS_HEADER_MAX_SIZE ]; 122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /**< Buffer to store null-data keep-alive template */ 123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt triggerDesc_t aTriggersDesc[MAX_NUM_OF_RSSI_SNR_TRIGGERS]; /* static table to be used for trigger event registration*/ 125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 RoamingOperationalMode; /* 0 - manual , 1 - Auto */ 126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Handlers of other modules used by AP Connection */ 128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hOs; 129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hPowerMngr; 130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hAPConn; 131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hSme; 132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hTWD; 133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hMlme; 134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hReport; 135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hRegulatoryDomain; 136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hSiteMgr; 1373bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt TI_HANDLE hConn; 138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hScanMngr; 139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hEvHandler; 140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hTxCtrl; 141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} currBSS_t; 142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Typedefs */ 145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef void (*TCurrBssDataCb) (TI_HANDLE hCurrBSS, TI_UINT8 *data, TI_UINT8 dataLength); 147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External data definitions */ 149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External functions definitions */ 151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Function prototypes */ 153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 154a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_HANDLE currBSS_create(TI_HANDLE hOs); 155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid currBSS_init (TStadHandlesList *pStadHandles); 156a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS currBSS_SetDefaults (TI_HANDLE hCurrBSS, TCurrBssInitParams *pInitParams); 157a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS currBSS_unload(TI_HANDLE hCurrBSS); 158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid currBSS_updateConnectedState(TI_HANDLE hCurrBSS, TI_BOOL isConnected, ScanBssType_e type); 160a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS currBSS_updateRoamingTriggers(TI_HANDLE hCurrBSS, 161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt roamingMngrThresholdsConfig_t *params); 162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid currBSS_SGconfigureBSSLoss(TI_HANDLE hCurrBSS, 163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 SGcompensationPercent , TI_BOOL bUseSGParams); 164a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtbssEntry_t *currBSS_getBssInfo(TI_HANDLE hCurrBSS); 165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 166a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS currBSS_getRoamingParams(TI_HANDLE hCurrBSS, 167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 * aNumExpectedTbttForBSSLoss, 168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT8 * aLowQualityForBackgroungScanCondition, 169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT8 * aNormalQualityForBackgroungScanCondition); 170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 171a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS currBSS_probRespReceivedCallb(TI_HANDLE hCurrBSS, 172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRxAttr *pRxAttr, 173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TMacAddr *bssid, 174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlmeFrameInfo_t *pFrameInfo, 175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 *dataBuffer, 176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT16 bufLength); 177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 178a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS currBSS_beaconReceivedCallb(TI_HANDLE hCurrBSS, 179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRxAttr *pRxAttr, 180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TMacAddr *bssid, 181a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlmeFrameInfo_t *pFrameInfo, 182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 *dataBuffer, 183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT16 bufLength); 184a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid currBSS_restartRssiCounting(TI_HANDLE hCurrBSS); 186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid currBSS_GetDefaultKeepAlivePeriod(TI_HANDLE hCurrBSS, TI_UINT8* uDefaultKeepAlivePeriod); 188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid currBss_DbgPrintTriggersTable(TI_HANDLE hCurrBSS); 190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* _CURR_BSS_H_*/ 192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 193