• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** \file regulatoryDomain.h
2  *  \brief regulatoryDomain module internal header file
3  *
4  *  \see regulatoryDomain.c
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 /***************************************************************************/
42 /*                                                                          */
43 /*    MODULE:   regulatoryDomain.h                                          */
44 /*    PURPOSE:  regulatoryDomain module internal header file                */
45 /*                                                                          */
46 /***************************************************************************/
47 #ifndef __REGULATORY_DOMAIN_H__
48 #define __REGULATORY_DOMAIN_H__
49 
50 #include "paramOut.h"
51 #include "fsm.h"
52 #include "802_11Defs.h"
53 #include "whalCtrl_api.h"
54 #include "regulatoryDomainApi.h"
55 
56 #define BG_24G_BAND_CHANNEL_HOPS    1
57 #define BG_24G_BAND_MIN_CHANNEL     1
58 
59 #define A_5G_BAND_CHANNEL_HOPS      4
60 
61 #define A_5G_BAND_MIN_MIDDLE_BAND_DFS_CHANNEL   52
62 #define A_5G_BAND_MAX_MIDDLE_BAND_DFS_CHANNEL   64
63 #define A_5G_BAND_MIN_UPPER_BAND_DFS_CHANNEL    100
64 #define A_5G_BAND_MAX_UPPER_BAND_DFS_CHANNEL    140
65 
66 typedef struct
67 {
68     BOOL    channelValidityPassive; /*TRUE-valid, FALSE-invalid */
69     BOOL    channelValidityActive; /*TRUE-valid, FALSE-invalid */
70     BOOL    bChanneInCountryIe;
71 
72     UINT8   uMaxTxPowerDomain;		 /*
73 									  * Holds ONLY the default limitation (Application)
74 									  * or according to 11d country code IE
75 									  * Updated on init phase or upon receiving new country code IE
76 									  */
77     UINT32  timestamp;
78 }   channelCapability_t;
79 
80 
81 typedef struct
82 {
83     /* Variables read from registry */
84     /********************************/
85     /* 802.11h enabled or disabled */
86     BOOL                            spectrumManagementEnabled;
87     /* 802.11d enabled or disabled */
88     BOOL                            regulatoryDomainEnabled;
89     /* scan availability channels from registry */
90     scanControlTable_t              scanControlTable;
91     /* Desired Temp Tx Power */
92     UINT8                           uDesiredTemporaryTxPower;
93 	/* Actual Temp Tx Power */
94     UINT8                           uTemporaryTxPower;
95 
96     /* User configuration for max Tx power */
97     UINT8                           uUserMaxTxPower;
98     /* The TX power level translation from NVS */
99     powerLevelTableInterrogate_t    tPowerLevelTableInterrogate;
100 
101 	/* Min and Max values of Dbm retrieved from power level table and used for 11h assoc request */
102 	UINT8							uMinPowerDbm;
103 	UINT8							uMaxPowerDbm;
104       /* Internal reg domain variables */
105     /********************************/
106 
107     /* Power Constraint IE 32 in DBM/10, valid only when 802.11h is enabled  */
108     UINT8                           uPowerConstraint;
109     /* External TX Power Control in DBM/10, valid only when 802.11h is disabled */
110     UINT8                           uExternTxPowerPreferred;
111 
112     UINT8                           minDFS_channelNum;
113     UINT8                           maxDFS_channelNum;
114 
115     country_t                       country24;   /* Detected County IE for 2.4 Ghz */
116     country_t                       country5;    /* Detected County IE for 5 Ghz */
117     BOOL                            country_2_4_WasFound;
118     BOOL                            country_5_WasFound;
119     UINT32                          uLastCountryReceivedTS;
120     UINT32                          uTimeOutToResetCountryMs;
121     channelCapability_t             supportedChannels_band_5[A_5G_BAND_NUM_CHANNELS];
122     channelCapability_t             supportedChannels_band_2_4[NUM_OF_CHANNELS_24];
123 
124     /* set the size of the array to max of B_G & A, so that the array doesnt overflow. +3 for word alignment */
125     UINT8                           pDefaultChannels[A_5G_BAND_NUM_CHANNELS+3];
126     /* merge 4.02/4.03 evaluate the +3 above and adjust or hSiteMgr and below will be
127        will be unaligned accesses.  Expect it might now be +1 since 2 UINT8 variable
128        have been added in 4.03 (max and min DFS_channelNum above) */
129 
130 
131     /* Handles to other objects */
132     TI_HANDLE                       hSiteMgr;
133     TI_HANDLE                       hHalCtrl;
134     TI_HANDLE                       hSwitchChannel;
135     TI_HANDLE                       hReport;
136     TI_HANDLE                       hOs;
137 
138 
139 } regulatoryDomain_t;
140 
141 
142 
143 
144 
145 #endif /* __REGULATORY_DOMAIN_H__*/
146