blob: e8a51063e1b5e507a70069f20506d92cdf46969c [file] [log] [blame]
/*
* regulatoryDomain.h
*
* Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name Texas Instruments nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/** \file regulatoryDomain.h
* \brief regulatoryDomain module internal header file
*
* \see regulatoryDomain.c
*/
/***************************************************************************/
/* */
/* MODULE: regulatoryDomain.h */
/* PURPOSE: regulatoryDomain module internal header file */
/* */
/***************************************************************************/
#ifndef __REGULATORY_DOMAIN_H__
#define __REGULATORY_DOMAIN_H__
#include "paramOut.h"
#include "fsm.h"
#include "802_11Defs.h"
#define BG_24G_BAND_CHANNEL_HOPS 1
#define BG_24G_BAND_MIN_CHANNEL 1
#define A_5G_BAND_CHANNEL_HOPS 4
#define A_5G_BAND_MIN_MIDDLE_BAND_DFS_CHANNEL 52
#define A_5G_BAND_MAX_MIDDLE_BAND_DFS_CHANNEL 64
#define A_5G_BAND_MIN_UPPER_BAND_DFS_CHANNEL 100
#define A_5G_BAND_MAX_UPPER_BAND_DFS_CHANNEL 140
typedef struct
{
TI_BOOL channelValidityPassive; /*TI_TRUE-valid, TI_FALSE-invalid */
TI_BOOL channelValidityActive; /*TI_TRUE-valid, TI_FALSE-invalid */
TI_BOOL bChanneInCountryIe;
TI_UINT8 uMaxTxPowerDomain; /*
* Holds ONLY the default limitation (Application)
* or according to 11d country code IE
* Updated on init phase or upon receiving new country code IE
*/
TI_UINT32 timestamp;
} channelCapability_t;
typedef struct
{
/* Variables read from registry */
/********************************/
/* 802.11h enabled or disabled */
TI_BOOL spectrumManagementEnabled;
/* 802.11d enabled or disabled */
TI_BOOL regulatoryDomainEnabled;
/* scan availability channels from registry */
scanControlTable_t scanControlTable;
/* Desired Temp Tx Power */
TI_UINT8 uDesiredTemporaryTxPower;
/* Actual Temp Tx Power */
TI_UINT8 uTemporaryTxPower;
/* User configuration for max Tx power */
TI_UINT8 uUserMaxTxPower;
/* Tx Power Control adjustment flag on=TI_TRUE\off=TI_FALSE */
TI_BOOL bTemporaryTxPowerEnable;
/* Internal reg domain variables */
/*********************************/
/* Power Constraint IE 32 in DBM/10, valid only when 802.11h is enabled */
TI_UINT8 uPowerConstraint;
/* External TX Power Control in DBM/10, valid only when 802.11h is disabled */
TI_UINT8 uExternTxPowerPreferred;
TI_UINT8 minDFS_channelNum;
TI_UINT8 maxDFS_channelNum;
TCountry country24; /* Detected County IE for 2.4 Ghz */
TCountry country5; /* Detected County IE for 5 Ghz */
TI_BOOL country_2_4_WasFound;
TI_BOOL country_5_WasFound;
TI_UINT32 uLastCountryReceivedTS;
TI_UINT32 uTimeOutToResetCountryMs;
channelCapability_t supportedChannels_band_5[A_5G_BAND_NUM_CHANNELS];
channelCapability_t supportedChannels_band_2_4[NUM_OF_CHANNELS_24];
/* set the size of the array to max of B_G & A, so that the array doesnt overflow. +3 for word alignment */
TI_UINT8 pDefaultChannels[A_5G_BAND_NUM_CHANNELS+3];
/* merge 4.02/4.03 evaluate the +3 above and adjust or hSiteMgr and below will be
will be unaligned accesses. Expect it might now be +1 since 2 UINT8 variable
have been added in 4.03 (max and min DFS_channelNum above) */
/* Handles to other objects */
TI_HANDLE hSiteMgr;
TI_HANDLE hTWD;
TI_HANDLE hSwitchChannel;
TI_HANDLE hReport;
TI_HANDLE hOs;
} regulatoryDomain_t;
#endif /* __REGULATORY_DOMAIN_H__*/