• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * public_radio.h
3  *
4  * Copyright(c) 1998 - 2010 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 /**********************************************************************************************************************
35   FILENAME:       public_radio.h
36 
37   DESCRIPTION:    Contains information element defines/structures used by the TNETxxxx and host and Radio Module.
38                   This is a PUBLIC header, which customers will use.
39 ***********************************************************************************************************************/
40 /*
41 =======================================================================================================================
42                       R E V I S I O N    H I S T O R Y
43 
44   04/29/05  BRK  1. retrieved from ClearCase and added this rev. history
45                  2. added two new entries to RadioParamType_e  enum
46                  3. increased MAX_RADIO_PARAM_POWER_TABLE (from 20 to 56)
47                     - this is sort of a kludge, struct RadioParam_t  should have used an
48                       array pointer instead of an actual data block
49   06/10/05  BRK  changed MAX_RADIO_PARAM_POWER_TABLE for 1251 support (sort of a KLUDGE)
50   07/15/05  BRK  added RADIO_PABIAS_TABLE entry to RadioParamType_e  enum
51   04/12/06  MH   Added new run-time calibration state: RFPLL_CALIBRATION_NEEDED
52 
53   Note: This code should only be edited with TAB stops set at 4
54 =======================================================================================================================
55  */
56 #ifndef PUBLIC_RADIO
57 #define PUBLIC_RADIO
58 
59 #include "public_types.h"
60 #define MAC_ADDR_SIZE 6
61 /* typedef uint8 TMacAddr[MAC_ADDR_SIZE]; */
62 /*defined in tiDefs.h*/
63 /************************************************************************/
64 /*																		*/
65 /*							Definitions section                         */
66 /*																		*/
67 /************************************************************************/
68 /* radio parameter to set */
69 #ifdef TNETW1251
70 #define MAX_RADIO_PARAM_POWER_TABLE  			(4*48)		/* cPowLmtTbl[] max size for ABG radios */
71 #else
72 #define MAX_RADIO_PARAM_POWER_TABLE  			(56)     	/* cPowLmtTbl[] max size for BG radios*/
73 #endif
74 #define MAX_RADIO_PARAM_LEN          			(MAX_RADIO_PARAM_POWER_TABLE)
75 
76 #define RADIO_PARAM_POWER_TABLE_ENABLE        	(0x01)  	/* mask for RADIO_PARAM_POWER_ENABLES usage*/
77 #define RADIO_PARAM_POWER_LIMIT_TABLE_ENABLE  	(0x02)  	/* mask for RADIO_PARAM_POWER_ENABLES usage*/
78 #define RADIO_PARAM_POWER_ADJ_TABLE_ENABLE    	(0x04)  	/* mask for RADIO_PARAM_POWER_ENABLES usage*/
79 
80 #define NUM_OF_POWER_LEVEL      				(4)
81 
82 
83 #define TX_TEMPLATE_MAX_BUF_LEN					(512)
84 
85 #define RX_PLT_LNA_STEPS_BUF_LEN				(4)
86 #define RX_PLT_TA_STEPS_BUF_LEN					(4)
87 
88 #define RX_STAT_PACKETS_PER_MESSAGE           	(20)
89 
90 #define MULTIPLE_PACKET_SIZE		1024
91 #define MAX_TX_PACKET_SIZE_11_B		(2 * MULTIPLE_PACKET_SIZE)
92 #define MAX_TX_PACKET_SIZE_11_G		(4 * MULTIPLE_PACKET_SIZE)
93 #define MAX_TX_PACKET_SIZE_11_N		(8 * MULTIPLE_PACKET_SIZE) /* must be PDU */
94 
95 /* Radio Band */
96 typedef enum
97 {
98 	eELEVEN_A_B,
99 	eELEVEN_A_G,
100 	eELEVEN_N,
101 
102 	MAX_MODULATION
103 }Modulation;
104 
105 /************************************************************************/
106 /*																		*/
107 /*							Enumerations section                        */
108 /*																		*/
109 /************************************************************************/
110 
111 /* Radio band types. */
112 typedef enum RADIO_BAND_TYPE_ENMT
113 {
114 	FIRST_BAND_TYPE_E,
115 /*______________________________________*/
116 
117 	_2_4_G_BAND_TYPE_E = FIRST_BAND_TYPE_E,
118 	_5_G_BAND_TYPE_E,
119 /*_______________________________________________*/
120     UNUSED_BAND_TYPE_E,
121 	NUMBER_OF_BANDS_E = UNUSED_BAND_TYPE_E,
122 	LAST_BAND_TYPE_E = (NUMBER_OF_BANDS_E - 1)
123 
124 }RADIO_BAND_TYPE_ENM;
125 
126 
127 #define RADIO_BAND_2_4GHZ_BASE_FREQUENCY					2407
128 #define RADIO_BAND_JAPAN_4_9_GHZ_BASE_FREQUENCY				5000
129 #define RADIO_BAND_5GHZ_BASE_FREQUENCY						5000
130 
131 #define RADIO_BAND_2_4GHZ_MULTIPLE_BASE_FREQUENCY			5
132 #define RADIO_BAND_JAPAN_4_9_GHZ_MULTIPLE_BASE_FREQUENCY	(-5)
133 #define RADIO_BAND_5GHZ_MULTIPLE_BASE_FREQUENCY				5
134 
135 #define GIGA_HZ_TO_MEGA_HZ									1000
136 
137 
138 
139 /* Radio sub-band types. */
140 typedef enum RADIO_SUB_BAND_TYPE_ENMT
141 {
142 	FIRST_SUB_BAND_TYPE_E,
143 /*______________________________________*/
144 
145 	_2_4_G_SUB_BAND_TYPE_E = FIRST_SUB_BAND_TYPE_E, /* band b/g */
146 	FIRST_SUB_BANDS_IN_5G_BAND_E,
147 	LOW_JAPAN_4_9_G_SUB_BAND_TYPE_E = FIRST_SUB_BANDS_IN_5G_BAND_E,	/* band 4.9Ghz (Japan) low sub-band (J1-J4) */
148 	MID_JAPAN_4_9_G_SUB_BAND_TYPE_E,                /* band 4.9Ghz (Japan) mid sub-band(J8,J12,J16) */
149 	HIGH_JAPAN_4_9_G_SUB_BAND_TYPE_E,               /* band 4.9Ghz (Japan) high sub-band(J34,36,J38,40, J42, 44, J46,48) */
150 	_5_G_FIRST_SUB_BAND_TYPE_E,                     /* band 5GHz 1st sub-band(52->64 in steps of 4) */
151 	_5_G_SECOND_SUB_BAND_TYPE_E,                    /* band 5GHz 2nd sub-band(100->116 in steps of 4) */
152 	_5_G_THIRD_SUB_BAND_TYPE_E,                     /* band 5GHz 3rd sub-band(120->140 in steps of 4) */
153     _5_G_FOURTH_SUB_BAND_TYPE_E,                    /* band 5GHz 4th sub-band(149->165 in steps of 4) */
154 	LAST_SUB_BANDS_IN_5G_BAND_E = _5_G_FOURTH_SUB_BAND_TYPE_E,
155 /*_______________________________________________*/
156     UNUSED_SUB_BAND_TYPE_E,
157 	NUMBER_OF_SUB_BANDS_E = UNUSED_SUB_BAND_TYPE_E,
158 	LAST_SUB_BAND_TYPE_E = (NUMBER_OF_SUB_BANDS_E - 1)
159 
160 }RADIO_SUB_BAND_TYPE_ENM;
161 
162 #define NUMBER_OF_SUB_BANDS_IN_5G_BAND_E	(LAST_SUB_BANDS_IN_5G_BAND_E - FIRST_SUB_BANDS_IN_5G_BAND_E + 1)
163 
164 typedef struct
165 {
166 	uint8					uDbm[NUMBER_OF_SUB_BANDS_E][NUM_OF_POWER_LEVEL];
167 } TpowerLevelTable_t;
168 
169 /* Channel number */
170 typedef enum RADIO_CHANNEL_NUMBER_ENMT
171 {
172 	/*---------------------------------*/
173 	/* _2_4_G_SUB_BAND_TYPE_E          */
174 	/*---------------------------------*/
175 
176 	/* index 0 */ RADIO_CHANNEL_INDEX_0_NUMBER_1_E = 1,
177 	/* index 1 */ RADIO_CHANNEL_INDEX_1_NUMBER_2_E = 2,
178 	/* index 2 */ RADIO_CHANNEL_INDEX_2_NUMBER_3_E = 3,
179 	/* index 3 */ RADIO_CHANNEL_INDEX_3_NUMBER_4_E = 4,
180 	/* index 4 */ RADIO_CHANNEL_INDEX_4_NUMBER_5_E = 5,
181 	/* index 5 */ RADIO_CHANNEL_INDEX_5_NUMBER_6_E = 6,
182 	/* index 6 */ RADIO_CHANNEL_INDEX_6_NUMBER_7_E = 7,
183 	/* index 7 */ RADIO_CHANNEL_INDEX_7_NUMBER_8_E = 8,
184 	/* index 8 */ RADIO_CHANNEL_INDEX_8_NUMBER_9_E = 9,
185 	/* index 9 */ RADIO_CHANNEL_INDEX_9_NUMBER_10_E = 10,
186 	/* index 10 */ RADIO_CHANNEL_INDEX_10_NUMBER_11_E = 11,
187 	/* index 11 */ RADIO_CHANNEL_INDEX_11_NUMBER_12_E = 12,
188 	/* index 12 */ RADIO_CHANNEL_INDEX_12_NUMBER_13_E = 13,
189 	/* index 13 */ RADIO_CHANNEL_INDEX_13_NUMBER_14_E = 14,
190 
191 	/*---------------------------------*/
192 	/* LOW_JAPAN_4_9_G_SUB_BAND_TYPE_E */
193 	/*---------------------------------*/
194 	/* index 14 */ RADIO_CHANNEL_INDEX_14_NUMBER_J1_E = 16,
195 	/* index 15 */ RADIO_CHANNEL_INDEX_15_NUMBER_J2_E = 12,
196 	/* index 16 */ RADIO_CHANNEL_INDEX_16_NUMBER_J3_E = 8,
197 	/* index 17 */ RADIO_CHANNEL_INDEX_17_NUMBER_J4_E = 4,
198 
199 	/*---------------------------------*/
200 	/* MID_JAPAN_4_9_G_SUB_BAND_TYPE_E */
201 	/*---------------------------------*/
202 	/* index 18 */ RADIO_CHANNEL_INDEX_18_NUMBER_J8_E = 8,
203 	/* index 19 */ RADIO_CHANNEL_INDEX_19_NUMBER_J12_E = 12,
204 	/* index 20 */ RADIO_CHANNEL_INDEX_20_NUMBER_J16_E = 16,
205 
206 	/*----------------------------------*/
207 	/* HIGH_JAPAN_4_9_G_SUB_BAND_TYPE_E */
208 	/*----------------------------------*/
209 	/* index 21 */ RADIO_CHANNEL_INDEX_21_NUMBER_J34_E = 34,
210 	/* index 22 */ RADIO_CHANNEL_INDEX_22_NUMBER_36_E = 36,
211 	/* index 23 */ RADIO_CHANNEL_INDEX_23_NUMBER_J38_E = 38,
212 	/* index 24 */ RADIO_CHANNEL_INDEX_24_NUMBER_40_E = 40,
213 	/* index 25 */ RADIO_CHANNEL_INDEX_25_NUMBER_J42_E = 42,
214 	/* index 26 */ RADIO_CHANNEL_INDEX_26_NUMBER_44_E = 44,
215 	/* index 27 */ RADIO_CHANNEL_INDEX_27_NUMBER_J46_E = 46,
216 	/* index 28 */ RADIO_CHANNEL_INDEX_28_NUMBER_48_E = 48,
217 
218 	/*---------------------------------*/
219 	/* _5_G_FIRST_SUB_BAND_TYPE_E      */
220 	/*---------------------------------*/
221 	/* index 29 */ RADIO_CHANNEL_INDEX_29_NUMBER_52_E = 52,
222 	/* index 30 */ RADIO_CHANNEL_INDEX_30_NUMBER_56_E = 56,
223 	/* index 31 */ RADIO_CHANNEL_INDEX_31_ENUMBER_60_E = 60,
224 	/* index 32 */ RADIO_CHANNEL_INDEX_32_ENUMBER_64_E = 64,
225 
226 	/*---------------------------------*/
227 	/* _5_G_SECOND_SUB_BAND_TYPE_E     */
228 	/*---------------------------------*/
229 	/* index 33 */ RADIO_CHANNEL_INDEX_33_NUMBER_100_E = 100,
230 	/* index 34 */ RADIO_CHANNEL_INDEX_34_NUMBER_104_E = 104,
231 	/* index 35 */ RADIO_CHANNEL_INDEX_35_NUMBER_108_E = 108,
232 	/* index 36 */ RADIO_CHANNEL_INDEX_36_NUMBER_112_E = 112,
233 	/* index 37 */ RADIO_CHANNEL_INDEX_37_NUMBER_116_E = 116,
234 
235 	/*---------------------------------*/
236 	/* _5_G_THIRD_SUB_BAND_TYPE_E      */
237 	/*---------------------------------*/
238 	/* index 38 */ RADIO_CHANNEL_INDEX_38_NUMBER_120_E = 120,
239 	/* index 39 */ RADIO_CHANNEL_INDEX_39_NUMBER_124_E = 124,
240 	/* index 40 */ RADIO_CHANNEL_INDEX_40_NUMBER_128_E = 128,
241 	/* index 41 */ RADIO_CHANNEL_INDEX_41_NUMBER_132_E = 132,
242 	/* index 42 */ RADIO_CHANNEL_INDEX_42_NUMBER_136_E = 136,
243 	/* index 43 */ RADIO_CHANNEL_INDEX_43_NUMBER_140_E = 140,
244 
245 
246 	/*---------------------------------*/
247 	/* _5_G_FOURTH_SUB_BAND_TYPE_E     */
248 	/*---------------------------------*/
249 	/* index 44 */ RADIO_CHANNEL_INDEX_44_NUMBER_149_E = 149,
250 	/* index 45 */ RADIO_CHANNEL_INDEX_45_NUMBER_153_E = 153,
251 	/* index 46 */ RADIO_CHANNEL_INDEX_46_NUMBER_157_E = 157,
252 	/* index 47 */ RADIO_CHANNEL_INDEX_47_NUMBER_161_E = 161,
253 	/* index 48 */ RADIO_CHANNEL_INDEX_48_NUMBER_165_E = 165
254 
255 }RADIO_CHANNEL_NUMBER_ENM;
256 
257 /* Radio channels */
258 typedef enum RADIO_CHANNEL_INDEX_ENMT
259 {
260 	FIRST_RADIO_CHANNEL_INDEX_E,
261 /*______________________________________*/
262 
263 	/*---------------------------------*/
264 	/* _2_4_G_SUB_BAND_TYPE_E          */
265 	/*---------------------------------*/
266 	FIRST_2_4_G_BAND_RADIO_CHANNEL_INDEX_E = FIRST_RADIO_CHANNEL_INDEX_E,					/* 0 */
267 	FIRST_2_4_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = FIRST_2_4_G_BAND_RADIO_CHANNEL_INDEX_E,	/* 0 */
268 
269 	/* Channels 0-13 indexes in the FW are 1-14 channels number in the RS */
270 	RADIO_CHANNEL_INDEX_0_E = FIRST_2_4_G_SUB_BAND_RADIO_CHANNEL_INDEX_E,/* 0 */
271 	RADIO_CHANNEL_INDEX_1_E,	/* 1 */
272 	RADIO_CHANNEL_INDEX_2_E,	/* 2 */
273 	RADIO_CHANNEL_INDEX_3_E,	/* 3 */
274 	RADIO_CHANNEL_INDEX_4_E,	/* 4 */
275 	RADIO_CHANNEL_INDEX_5_E,	/* 5 */
276 	RADIO_CHANNEL_INDEX_6_E,	/* 6 */
277 	RADIO_CHANNEL_INDEX_7_E,	/* 7 */
278 	RADIO_CHANNEL_INDEX_8_E,	/* 8 */
279 	RADIO_CHANNEL_INDEX_9_E,	/* 9 */
280 	RADIO_CHANNEL_INDEX_10_E,	/* 10 */
281 	RADIO_CHANNEL_INDEX_11_E,	/* 11 */
282 	RADIO_CHANNEL_INDEX_12_E,	/* 12 */
283 	RADIO_CHANNEL_INDEX_13_E,	/* 13 */
284 	LAST_2_4_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_13_E,				/* 13 */
285     LAST_2_4_G_BAND_RADIO_CHANNEL_INDEX_E = LAST_2_4_G_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 13 */
286 	NUMBER_OF_2_4_G_CHANNEL_INDICES_E = LAST_2_4_G_BAND_RADIO_CHANNEL_INDEX_E,			/* 13 */
287 
288 	/*---------------------------------*/
289 	/* LOW_JAPAN_4_9_G_SUB_BAND_TYPE_E */
290 	/*---------------------------------*/
291 	FIRST_5_G_BAND_RADIO_CHANNEL_INDEX_E,	/* 14 */
292 	FIRST_LOW_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = FIRST_5_G_BAND_RADIO_CHANNEL_INDEX_E,	/* 14 */
293 
294 	/* Channels 14-17 indexes in the FW are J1-J4 channels number in the RS */
295 	RADIO_CHANNEL_INDEX_14_E = FIRST_LOW_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E,				/* 14 */
296 	RADIO_CHANNEL_INDEX_15_E,	/* 15 */
297 	RADIO_CHANNEL_INDEX_16_E,	/* 16 */
298 	RADIO_CHANNEL_INDEX_17_E,	/* 17 */
299     LAST_LOW_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_17_E,	/* 17 */
300 
301 	/*---------------------------------*/
302 	/* MID_JAPAN_4_9_G_SUB_BAND_TYPE_E */
303 	/*---------------------------------*/
304 	FIRST_MID_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 18 */
305 
306 	/* Channel 18 index in the FW is channel number J8 in the RS */
307     RADIO_CHANNEL_INDEX_18_E = FIRST_MID_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 18 */
308 
309 	/* Channel 19 index in the FW is channel number J12 in the RS */
310 	RADIO_CHANNEL_INDEX_19_E,	/* 19 */
311 
312 	/* Channel 20 index in the FW is channel number J16 in the RS */
313 	RADIO_CHANNEL_INDEX_20_E,	/* 20 */
314     LAST_MID_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_20_E,		/* 20 */
315 
316 	/*----------------------------------*/
317 	/* HIGH_JAPAN_4_9_G_SUB_BAND_TYPE_E */
318 	/*----------------------------------*/
319 	FIRST_HIGH_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 21 */
320 
321 	/* Channel 21 index in the FW is channel number J34 in the RS */
322     RADIO_CHANNEL_INDEX_21_E = FIRST_HIGH_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 21 */
323 
324 	/* Channel 22 index in the FW is channel number 36 in the RS */
325 	RADIO_CHANNEL_INDEX_22_E,	/* 22 */
326 
327 	/* Channel 23 index in the FW is channel number J38 in the RS */
328 	RADIO_CHANNEL_INDEX_23_E,	/* 23 */
329 
330 	/* Channel 24 index in the FW is channel number 40 in the RS */
331 	RADIO_CHANNEL_INDEX_24_E,	/* 24 */
332 
333 	/* Channel 25 index in the FW is channel number J42 in the RS */
334 	RADIO_CHANNEL_INDEX_25_E,	/* 25 */
335 
336 	/* Channel 26 index in the FW is channel number 44 in the RS */
337 	RADIO_CHANNEL_INDEX_26_E,	/* 26 */
338 
339 	/* Channel 27 index in the FW is channel number J46 in the RS */
340 	RADIO_CHANNEL_INDEX_27_E,	/* 27 */
341 
342 	/* Channel 28 index in the FW is channel number 48 in the RS */
343 	RADIO_CHANNEL_INDEX_28_E,	/* 28 */
344     LAST_HIGH_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_28_E, /* 28 */
345     LAST_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = LAST_HIGH_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 28 */
346 	/*---------------------------------*/
347 	/* _5_G_FIRST_SUB_BAND_TYPE_E      */
348 	/*---------------------------------*/
349 	FIRST_5_G_FIRST_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 29 */
350 
351 	/* Channel 29 index in the FW is channel number 52 in the RS */
352 	RADIO_CHANNEL_INDEX_29_E = FIRST_5_G_FIRST_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 29 */
353 
354 	/* Channel 30 index in the FW is channel number 56 in the RS */
355 	RADIO_CHANNEL_INDEX_30_E,	/* 30 */
356 
357 	/* Channel 31 index in the FW is channel number 60 in the RS */
358 	RADIO_CHANNEL_INDEX_31_E,	/* 31 */
359 
360 	/* Channel 32 index in the FW is channel number 64 in the RS */
361 	RADIO_CHANNEL_INDEX_32_E,	/* 32 */
362 	LAST_5_G_FIRST_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_32_E,	/* 32 */
363 
364 	/*---------------------------------*/
365 	/* _5_G_SECOND_SUB_BAND_TYPE_E     */
366 	/*---------------------------------*/
367 	FIRST_5_G_SECOND_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 33 */
368 
369 	/* Channel 33 index in the FW is channel number 100 in the RS */
370 	RADIO_CHANNEL_INDEX_33_E = FIRST_5_G_SECOND_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 33 */
371 
372 	/* Channel 34 index in the FW is channel number 104 in the RS */
373 	RADIO_CHANNEL_INDEX_34_E,	/* 34 */
374 
375 	/* Channel 35 index in the FW is channel number 108 in the RS */
376 	RADIO_CHANNEL_INDEX_35_E,	/* 35 */
377 
378 	/* Channel 36 index in the FW is channel number 112 in the RS */
379 	RADIO_CHANNEL_INDEX_36_E,	/* 36 */
380 
381 	/* Channel 37 index in the FW is channel number 116 in the RS */
382 	RADIO_CHANNEL_INDEX_37_E,	/* 37 */
383 	LAST_5_G_SECOND_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_37_E,	/* 37 */
384 
385 	/*---------------------------------*/
386 	/* _5_G_THIRD_SUB_BAND_TYPE_E      */
387 	/*---------------------------------*/
388 	FIRST_5_G_THIRD_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 38 */
389 
390 	/* Channel 38 index in the FW is channel number 120 in the RS */
391 	RADIO_CHANNEL_INDEX_38_E = FIRST_5_G_THIRD_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 38 */
392 
393 	/* Channel 39 index in the FW is channel number 124 in the RS */
394 	RADIO_CHANNEL_INDEX_39_E,	/* 39 */
395 
396 	/* Channel 40 index in the FW in the FW is channel number 128 in the RS */
397 	RADIO_CHANNEL_INDEX_40_E,	/* 40 */
398 
399 	/* Channel 41 index in the FW is channel number 132 in the RS */
400 	RADIO_CHANNEL_INDEX_41_E,	/* 41 */
401 
402 	/* Channel 42 index in the FW is channel number 136 in the RS */
403 	RADIO_CHANNEL_INDEX_42_E,	/* 42 */
404 
405 	/* Channel 43 index in the FW is channel number 140 in the RS */
406 	RADIO_CHANNEL_INDEX_43_E,	/* 43 */
407 	LAST_5_G_THIRD_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_43_E,	/* 43 */
408 
409 	/*---------------------------------*/
410 	/* _5_G_FOURTH_SUB_BAND_TYPE_E     */
411 	/*---------------------------------*/
412 	FIRST_5_G_FOURTH_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 44 */
413 
414 	/* Channel 44 index in the FW is channel number 149 in the RS */
415     RADIO_CHANNEL_INDEX_44_E = FIRST_5_G_FOURTH_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 44 */
416 
417 	/* Channel 45 index in the FW is channel number 153 in the RS */
418 	RADIO_CHANNEL_INDEX_45_E,	/* 45 */
419 
420 	/* Channel 46 index in the FW is channel number 157 in the RS */
421 	RADIO_CHANNEL_INDEX_46_E,	/* 46 */
422 
423 	/* Channel 47 index in the FW is channel number 161 in the RS */
424 	RADIO_CHANNEL_INDEX_47_E,	/* 47 */
425 
426 	/* Channel 48 index in the FW is channel number 165 in the RS */
427 	RADIO_CHANNEL_INDEX_48_E,	/* 48 */
428 	LAST_5_G_FOURTH_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_48_E,	/* 48 */
429 	LAST_5_G_BAND_RADIO_CHANNEL_INDEX_E = LAST_5_G_FOURTH_SUB_BAND_RADIO_CHANNEL_INDEX_E,	/* 48 */
430 /*_______________________________________________*/
431 
432     UNUSED_RADIO_CHANNEL_INDEX_E,               /* 49 */
433 	NUMBER_OF_RADIO_CHANNEL_INDEXS_E = UNUSED_RADIO_CHANNEL_INDEX_E,	/* 49 */
434 	LAST_RADIO_CHANNEL_INDEX_E = (NUMBER_OF_RADIO_CHANNEL_INDEXS_E - 1)	/* 48 */
435 
436 }RADIO_CHANNEL_INDEX_ENM;
437 
438 #define NUMBER_OF_2_4_G_CHANNELS    	(NUMBER_OF_2_4_G_CHANNEL_INDICES_E + 1)
439 #define NUMBER_OF_5G_CHANNELS       	(NUMBER_OF_RADIO_CHANNEL_INDEXS_E - NUMBER_OF_2_4_G_CHANNELS)
440 #define HALF_NUMBER_OF_2_4_G_CHANNELS 	(NUMBER_OF_2_4_G_CHANNELS / 2)
441 #define HALF_NUMBER_OF_5G_CHANNELS  	((NUMBER_OF_5G_CHANNELS + 1) / 2)
442 
443 typedef enum RADIO_RATE_GROUPS_ENMT
444 {
445 	FIRST_RATE_GROUP_E,
446 /*______________________________________*/
447 
448 	MCS7_RATE_GROUP_E = FIRST_RATE_GROUP_E,
449 	_54_48_RATE_GROUP_E,                /* band 4.9Ghz (Japan) low sub-band (J1-J4) */
450 	_36_24_RATE_GROUP_E,                /* band 4.9Ghz (Japan) mid sub-band(J8,J12,J16) */
451 	_18_12_RATE_GROUP_E,                /* band 4.9Ghz (Japan) high sub-band(J34,36,J38,40, J42, 44, J46,48) */
452 	_9_6_RATE_GROUP_E,                  /* band 5GHz 1st sub-band(52->64 in steps of 4) */
453 	_11b_RATE_GROUP_E,                  /* band 5GHz 2nd sub-band(100->116 in steps of 4) */
454 /*_______________________________________________*/
455     UNUSED_RATE_GROUPS_E,
456 	NUMBER_OF_RATE_GROUPS_E = UNUSED_RATE_GROUPS_E,
457 	LAST_RATE_GROUP_E = (NUMBER_OF_RATE_GROUPS_E - 1)
458 
459 }RADIO_RATE_GROUPS_ENM;
460 
461 
462 typedef enum
463 {
464     RADIO_BAND_2_4_GHZ                  = 0,
465     RADIO_BAND_5_0_GHZ                  = 1,
466     RADIO_BAND_DUAL                     = 2,
467     RADIO_BAND_NUM_OF_BANDS             = 2
468 
469 } ERadioBand;
470 
471 
472 /******************************************************************************
473  TTestCmdRunCalibration - Calibration manager message
474 
475  Note:
476 ******************************************************************************/
477 
478 typedef enum CALIBRATION_COMMANDS_ENMT
479 {
480 	/* RX */
481 	CM_space1_e,
482 	CM_RX_IQ_MM_calibration_e,
483 	CM_RX_IQ_MM_correction_upon_channel_change_e,
484 	CM_RX_IQ_MM_correction_upon_temperature_change_e,
485 	CM_RX_IQ_MM_duplicate_VGA_e,
486 	CM_space2_e,
487 
488 	CM_RX_analog_DC_Correction_calibration_e,
489 	CM_RX_DC_AUX_cal_mode_e,
490 	CM_RX_DC_AUX_normal_mode_e,
491 	CM_space3_e,
492 
493 	CM_RX_BIP_enter_mode_e,
494 	CM_RX_BIP_perform_e,
495 	CM_RX_BIP_exit_mode_e,
496 	CM_space4_e,
497 
498 	/* TX */
499 	CM_TX_power_detector_calibration_e,
500 	CM_TX_power_detector_buffer_calibration_e,
501 	CM_space5_e,
502 
503 	CM_TX_LO_Leakage_calibration_e,
504 	CM_TX_PPA_Steps_calibration_e,
505 	CM_TX_CLPC_calibration_e,
506 	CM_TX_IQ_MM_calibration_e,
507 	CM_TX_BIP_calibration_e,
508     /* DRPw */
509 	CM_RX_TANK_TUNE_calibration_e,
510 /*    CM_PD_BUFF_TUNE_calibration_e,*/
511     CM_RX_DAC_TUNE_calibration_e,
512     CM_RX_IQMM_TUNE_calibration_e,
513     CM_RX_LPF_TUNE_calibration_e,
514     CM_TX_LPF_TUNE_calibration_e,
515     CM_TA_TUNE_calibration_e,
516     CM_TX_MIXERFREQ_calibration_e,
517     CM_RX_IF2GAIN_calibration_e,
518     CM_RTRIM_calibration_e,
519     CM_RX_LNAGAIN_calibration_e,
520 
521 	CM_SMART_REFLEX_calibration_e,
522 	CM_CHANNEL_RESPONSE_calibration_e
523 
524 }CALIBRATION_COMMANDS_ENM;
525 
526 
527 typedef enum CALIBRATIONS_ENMT
528 {
529 	FIRST_CALIBRATION_TYPE_E,
530 /*----------------------------------------------------------*/
531 	/**** GENERAL ****/
532 	DRPW_RFCALIBFXN_RXTXLPF_TYPE_E = FIRST_CALIBRATION_TYPE_E,
533 	DRPW_TUNE_TYPE_E,	/* TUNE will perform DCO_freq, AB/TB, KDCO, TDC_inverter */
534 	DRPW_RFCALIBFXN_RTRIM_TYPE_E,
535 	/**** TX ****/
536 	CM_TX_LO_LEAKAGE_CALIBRATION_TYPE_E,
537     CM_TX_IQ_MM_CALIBRATION_TYPE_E,
538 	DRPW_RFCALIBFXN_TXMIXERFREQ_TYPE_E,
539 	/**** RX ****/
540 	DRPW_RFCALIBFXN_TA_TYPE_E,
541 	DRPW_RFCALIBFXN_RXLNAGAIN_TYPE_E,
542 	DRPW_RFCALIBFXN_RXIF2GAIN_TYPE_E,
543 	DRPW_RFCALIBFXN_RXDAC_TYPE_E,
544 	DRPW_RFCALIBFXN_LNATANK_TYPE_E,
545 	RX_ANALOG_DC_CORRECTION_CALIBRATION_TYPE_E,
546 	CM_RX_IQ_MM_CORRECTION_CALIBRATION_TYPE_E,
547     SMART_REFLEX_CALIBRATION_TYPE_E,
548     CHANNEL_RESPONSE_CALIBRATION_TYPE_E,
549 	/* ... */
550 /*----------------------------------------------------------*/
551 	NUMBER_OF_CALIBRATIONS_E,
552 	LAST_CALIBRATION_TYPE_E = (NUMBER_OF_CALIBRATIONS_E - 1)
553 } CALIBRATIONS_ENMT;
554 
555 /******************************************************************************
556 
557     Name:	ACX_CAL_ASSESSMENT
558 	Type:	Configuration
559 	Access:	Write Only
560 	Length: 4
561 	Note:	OBSOLETE !!! (DO_CALIBRATION_IN_DRIVER is not defined)
562 
563 ******************************************************************************/
564 typedef enum
565 {
566     RUNTIME_CALIBRATION_NOT_NEEDED = 1,
567     RUNTIME_CALIBRATION_NEEDED = 2,
568     RFPLL_CALIBRATION_NEEDED = 3,
569     MAX_RUNTIME_CALIBRATION_OPTIONS = 0x7FFFFFFF /* force this enum to be uint32 */
570 } RadioRuntimeCalState_enum;
571 
572 
573 #ifdef HOST_COMPILE
574 typedef uint32 RadioRuntimeCalState_e;
575 #else
576 typedef RadioRuntimeCalState_enum RadioRuntimeCalState_e;
577 #endif
578 
579 /************************************************************************/
580 /*																		*/
581 /*							Commands section                            */
582 /*																		*/
583 /************************************************************************/
584 typedef struct PltGainGet_t
585 {
586             uint8 TxGain;            /*Total TX chain gain according to the current setting*/
587             uint8 TxUpperBound;      /*the max gain setting allowed*/
588             uint8 TxLowerBound;      /*the min gain setting allowed*/
589             uint8 padding;           /* padding to 32 bit */
590 }PltGainGet_t;
591 
592 typedef struct
593 {
594     uint8 refTxPower;
595     uint8 band;
596     uint8 channel;
597     uint8 padding;
598 }RadioPltTxCalibrationRequest_t;
599 
600 
601 /******************************************************************************
602 
603 Name:	PowerLevelTable_t
604 Desc:   Retrieve Maximum Dbm per power level and sub-band.
605 Type:	Configuration
606 Access:	Read Only
607 Length: 20
608 
609 ******************************************************************************/
610 typedef struct
611 {
612 	uint8 txPowerTable[NUMBER_OF_SUB_BANDS_E][NUM_OF_POWER_LEVEL]; /* Maximun Dbm in Dbm/10 units */
613 } PowerLevelTable_t;
614 
615 /* DORONS [4/27/2008] testing the 2nd auxiliary function */
616 typedef struct
617 {
618     int8 desiredTone;
619     int8 desiredGain;
620     uint8 mode;
621     uint8 padding;
622 } TestToneParams_t;
623 
624 typedef enum
625 {
626 	ePM_AWAKE,
627 	ePM_LISTEN_ENTER,
628 	ePM_LISTEN_EXIT,
629 	ePM_POWER_DOWN_ENTER,
630 	ePM_POWER_DOWN_EXIT,
631 	ePM_ELP_ENTER,
632 	ePM_ELP_EXIT,
633 	ePM_CORTEX_GATE_ENTER,
634 	ePM_CORTEX_GATE_EXIT
635 }PowerMode;
636 
637 typedef struct
638 
639 {
640 	uint8	iPowerMode;		/* Awake					- 0 */
641 							/* Enter Listen Mode		- 1 */
642 							/* Exit Listen Mode			- 2 */
643 							/* Enter Power Down Mode	- 3 */
644 							/* Exit Power Down Mode		- 4 */
645 							/* ELP Mode					- 5 */
646 							/* Enter Cortex Gate Mode	- 6 */
647 							/* Exit Cortex Gate Mode	- 7 */
648 	uint8	  padding[3];
649 }TTestCmdPowerMode;
650 
651 /************************************************************************
652                 PLT  DBS
653 				To modify these DBs Latter - according to Architecture Document,
654 				and move it to public_commands.h
655 ************************************************************************/
656 
657 /******************************************************************************
658 
659       ID:     CMD_TEST
660     Desc:   The TEST command can be issued immediately after the firmware has
661           been downloaded, with no further configuration of the WiLink required.
662           Full initialization of the WiLink is not required to invoke the TEST
663           command and perform the radio test function.
664           After testing, the system must be reset.
665           Test parameters can be modified while a test is executing.
666           For instance, the host program can change the channel without resetting
667           the system.
668 
669       Params:     TestCmdID_enum - see below.
670           The returned values are copied to the cmd/sts MB replacing  the command
671           (similar to the interrogate mechanism).
672 
673 ******************************************************************************/
674 /* Efil -	when adding parameter here fill the switch case sentence in function
675 			"cmdBld_CmdIeTest" in module "TWD\Ctrl\CmdBldCmdIE.c" */
676 typedef enum
677 {
678 /*	0x01	*/  TEST_CMD_PD_BUFFER_CAL = 0x1,	/* TX PLT */
679 /*	0x02	*/  TEST_CMD_P2G_CAL,				/* TX BiP */
680 /*	0x03	*/  TEST_CMD_RX_PLT_ENTER,
681 /*	0x04	*/  TEST_CMD_RX_PLT_CAL,			/* RSSI Cal */
682 /*	0x05	*/  TEST_CMD_RX_PLT_EXIT,
683 /*	0x06	*/  TEST_CMD_RX_PLT_GET,
684 /*	0x07	*/  TEST_CMD_FCC,					/* Continuous TX */
685 /*	0x08	*/  TEST_CMD_TELEC,					/* Carrier wave in a specific channel and band */
686 /*	0x09	*/  TEST_CMD_STOP_TX,				/* Stop FCC or TELEC */
687 /*	0x0A	*/  TEST_CMD_PLT_TEMPLATE,			/* define Template for TX */
688 /*	0x0B	*/  TEST_CMD_PLT_GAIN_ADJUST,
689 /*	0x0C	*/  TEST_CMD_PLT_GAIN_GET,
690 /*	0x0D	*/	TEST_CMD_CHANNEL_TUNE,
691 /*	0x0E	*/	TEST_CMD_FREE_RUN_RSSI,         /* Free running RSSI measurement */
692 /*	0x0F	*/  TEST_CMD_DEBUG,					/* test command for debug using the struct: */
693 /*	0x10	*/  TEST_CMD_CLPC_COMMANDS,
694 /*	0x11	*/  RESERVED_4,
695 /*	0x12	*/  TEST_CMD_RX_STAT_STOP,
696 /*	0x13	*/  TEST_CMD_RX_STAT_START,
697 /*	0x14	*/  TEST_CMD_RX_STAT_RESET,
698 /*	0x15	*/  TEST_CMD_RX_STAT_GET,
699 /*	0x16	*/	TEST_CMD_LOOPBACK_START,		/* for FW Test Debug */
700 /*	0x17	*/  TEST_CMD_LOOPBACK_STOP,			/* for FW Test Debug */
701 /*	0x18	*/	TEST_CMD_GET_FW_VERSIONS,
702 /*  0x19    */  TEST_CMD_INI_FILE_RADIO_PARAM,
703 /*  0x1A	*/  TEST_CMD_RUN_CALIBRATION_TYPE,
704 /*  0x1B    */	TEST_CMD_TX_GAIN_ADJUST,
705 /*	0x1C	*/	TEST_CMD_UPDATE_PD_BUFFER_ERRORS,
706 /*	0x1D	*/	TEST_CMD_UPDATE_PD_REFERENCE_POINT,
707 /*  0x1E    */	TEST_CMD_INI_FILE_GENERAL_PARAM,
708 /*	0x1F	*/	TEST_CMD_SET_EFUSE,
709 /*	0x20	*/	TEST_CMD_GET_EFUSE,
710 /* DORONS [4/27/2008] testing the 2nd auxiliary function */
711 /*0x21 */   TEST_CMD_TEST_TONE,
712 /*	0x22	*/	TEST_CMD_POWER_MODE,
713 /*	0x23	*/	TEST_CMD_SMART_REFLEX,
714 /*	0x24	*/	TEST_CMD_CHANNEL_RESPONSE,
715 /*	0x25	*/	TEST_CMD_DCO_ITRIM_FEATURE,
716 /*	0x26	*/	TEST_CMD_INI_FILE_RF_EXTENDED_PARAM,
717 
718     MAX_TEST_CMD_ID = 0xFF	/* Dummy - must be last!!! (make sure that Enum variables are type of int) */
719 
720 } TestCmdID_enum;
721 
722 /************************************************************************/
723 /* radio test result information struct									*/
724 /************************************************************************/
725 #define DEFAULT_MULTIPLE_ACTIVATION_TIME		5
726 
727 #define MULTIPLE_ACTIVATION_TIME				1000000
728 
729 #define DEFAULT_RSMODE_CALIBRATION_INTERVAL		(DEFAULT_MULTIPLE_ACTIVATION_TIME * MULTIPLE_ACTIVATION_TIME)	/* RadioScope calibration interval - 5 sec */
730 
731 typedef enum
732 {
733 	eCMD_GET_CALIBRAIONS_INFO,
734 	eCMD_GET_CLPC_VBAT_TEMPERATURE_INFO
735 }TTestCmdDeubug_enum;
736 
737 /* struct of calibration status, indication if RM performed calibration */
738 typedef struct
739 {
740 	uint8		operateCalibration;									/* RM performed calibration */
741 	int8		calibrationsResult[NUMBER_OF_CALIBRATIONS_E];		/* Calibrations status	*/
742 }CalibrationInfo;
743 
744 /* struct of CLPC output, temperature, battery voltage */
745 typedef struct
746 {
747 	int					ClpcOffset[NUMBER_OF_RATE_GROUPS_E];		 /* CLPC */
748 	int8				CurrentTemperature;							 /* current temperature in Celsius */
749 	uint16				CurrentVbat;								 /* VBat	*/
750 
751 }CLPCTempratureVbatStruct;
752 
753 typedef struct
754 {
755 	int16			oRadioStatus;
756 	uint8			iCommand; /* command to check */
757 
758 	CalibrationInfo				calibInfo;			/* for eCMD_GET_CALIBRAIONS_INFO */
759 	CLPCTempratureVbatStruct	CLPCTempVbatInfo;	/* for eCMD_GET_CLPC_VBAT_TEMPERATURE_INFO */
760 
761 	uint8			padding[3];
762 
763 }TTestCmdDebug;
764 
765 /************************************************************************/
766 /* end radio test result information struct								*/
767 /************************************************************************/
768 
769 
770 #ifdef HOST_COMPILE
771 typedef uint8 TestCmdID_e;
772 #else
773 typedef TestCmdID_enum TestCmdID_e;
774 #endif
775 
776 /******************************************************************************/
777 typedef enum
778 {
779     TEST_MODE_HOST_ORIGINATED_DATA      = 0x00,
780     TEST_MODE_FIXED_SEQ_NUMBER          = 0x00,
781     TEST_MODE_FW_ORIGINATED_DATA     	= 0x01,
782     TEST_MODE_RANDOM_DATA               = 0x05,
783     TEST_MODE_ZOZO_DATA                 = 0x09,
784     TEST_MODE_FILLING_PATERN_MASK       = 0x0F,
785     TEST_MODE_DELAY_REQUIRED            = 0x10,
786     TEST_MODE_DISABLE_SRCRAMBLING_FLAG  = 0x20
787 }TestModeCtrlTypes_e;
788 
789 #ifdef HOST_COMPILE
790 typedef uint8 FccTestType_e;
791 #else
792 typedef TestModeCtrlTypes_e FccTestType_e;
793 #endif
794 
795 /******************************************************************************/
796 #define     TEST_SEQ_NUM_MODE_FIXED             (0)
797 #define     TEST_SEQ_NUM_MODE_INCREMENTED       (1)
798 
799 /******************************************************************************/
800 /* DORONS [4/23/2008] RX Tone activation for DRPw cals */
801 #define     ACTIVE_TONE_CAL_MODE                (0)
802 #define     ACTIVE_TONE_NORM_MODE               (1)
803 /******************************************************************************
804 
805   TestCmdId :   TEST_CMD_FCC - Tx continuous test
806 
807   Description:  Continuous transmit series of numbers with a valid MAC header
808                 as was received from driver.
809                 However there is no 802.11 air access compliance.
810 
811   Params:       PERTxCfg_t fcc - see below.
812 
813 ******************************************************************************/
814 #define NUM_OF_MAC_ADDR_ELEMENTS 6
815 typedef struct PERTxCfg_t
816 {
817             /*input parameters*/
818             uint32 numFrames;       				/* number of frams to transmit, 0 = endless*/
819             uint32 interFrameGap;   				/* time gap in uSec */
820             uint32 seqNumMode;      				/* Fixed / Incremented */
821             uint32 frameBodySize;    				/* length of Mac Payload */
822             uint8 channel;          				/*channel number*/
823             uint8 dataRate;         				/* MBps 1,2,11,22,... 54           */
824             uint8 modPreamble;      				/* CTL_PREAMBLE 0x01 */
825             uint8 band;             				/* {BAND_SELECT_24GHZ 0x00 | BAND_SELECT_5GHZ 0x01} */
826             uint8 modulation;       				/* {PBCC_MODULATION_MASK |OFDM_MODULATION_MASK }*/
827             FccTestType_e testModeCtrl;
828             uint8 dest[NUM_OF_MAC_ADDR_ELEMENTS];  	/* set to hard codded default {0,0,0xde,0xad,0xbe,0xef}; */
829 } PERTxCfg_t;
830 
831 /******************************************************************************
832 
833   TestCmdId :   TEST_CMD_SET_EFUSE, TEST_CMD_GET_EFUSE
834 
835   Description:  Get and set the eFuse parameters
836 
837 ******************************************************************************/
838 typedef enum EFUSE_PARAMETER_TYPE_ENMT
839 {
840 	EFUSE_FIRST_PARAMETER_E,
841 /*_______________________________________________*/
842 
843 	/* RX PARAMETERS */
844     EFUSE_FIRST_RX_PARAMETER_E = EFUSE_FIRST_PARAMETER_E,
845 	RX_BIP_MAX_GAIN_ERROR_BAND_B_E = EFUSE_FIRST_RX_PARAMETER_E,		/* MaxGainErrBandB */
846 
847 	RX_BIP_MAX_GAIN_ERROR_J_LOW_MID_E,									/* MaxGainErrJLowMid */
848 	RX_BIP_MAX_GAIN_ERROR_J_HIGH_E,										/* MaxGainErrJHigh  */
849 
850 	RX_BIP_MAX_GAIN_ERROR_5G_1ST_E,										/* MaxGainErr5G1st  */
851 	RX_BIP_MAX_GAIN_ERROR_5G_2ND_E,										/* MaxGainErr5G2nd  */
852 	RX_BIP_MAX_GAIN_ERROR_5G_3RD_E,										/* MaxGainErr5G3rd  */
853 	RX_BIP_MAX_GAIN_ERROR_5G_4TH_E,										/* MaxGainErr5G4th  */
854 
855 	RX_BIP_LNA_STEP_CORR_BAND_B_4TO3_E,									/* LnaStepCorrBandB (Step 4To3) */
856 	RX_BIP_LNA_STEP_CORR_BAND_B_3TO2_E,									/* LnaStepCorrBandB (Step 3To2) */
857 	RX_BIP_LNA_STEP_CORR_BAND_B_2TO1_E,									/* LnaStepCorrBandB (Step 2To1) */
858 	RX_BIP_LNA_STEP_CORR_BAND_B_1TO0_E,									/* LnaStepCorrBandB (Step 1To0) */
859 
860 	RX_BIP_LNA_STEP_CORR_BAND_A_4TO3_E,									/* LnaStepCorrBandA (Step 4To3) */
861 	RX_BIP_LNA_STEP_CORR_BAND_A_3TO2_E,									/* LnaStepCorrBandA (Step 3To2) */
862 	RX_BIP_LNA_STEP_CORR_BAND_A_2TO1_E,									/* LnaStepCorrBandA (Step 2To1) */
863 	RX_BIP_LNA_STEP_CORR_BAND_A_1TO0_E,									/* LnaStepCorrBandA (Step 1To0) */
864 
865 	RX_BIP_TA_STEP_CORR_BAND_B_2TO1_E,									/* TaStepCorrBandB (Step 2To1) */
866 	RX_BIP_TA_STEP_CORR_BAND_B_1TO0_E,									/* TaStepCorrBandB (Step 1To0) */
867 
868 	RX_BIP_TA_STEP_CORR_BAND_A_2TO1_E,									/* TaStepCorrBandA (Step 2To1) */
869 	RX_BIP_TA_STEP_CORR_BAND_A_1TO0_E,									/* TaStepCorrBandA (Step 1To0) */
870 
871 	NUMBER_OF_RX_BIP_EFUSE_PARAMETERS_E,								/* Number of RX parameters */
872 
873 	/* TX PARAMETERS */
874 	TX_BIP_PD_BUFFER_GAIN_ERROR_E = NUMBER_OF_RX_BIP_EFUSE_PARAMETERS_E,/* PD_Buffer_Gain_error */
875 	TX_BIP_PD_BUFFER_VBIAS_ERROR_E,										/* PD_Buffer_Vbias_error */
876 
877 /*_______________________________________________*/
878 	EFUSE_NUMBER_OF_PARAMETERS_E,
879     EFUSE_LAST_PARAMETER_E = (EFUSE_NUMBER_OF_PARAMETERS_E - 1)
880 
881 }EFUSE_PARAMETER_TYPE_ENM;
882 
883 typedef struct
884 {
885 	int8	EfuseParameters[EFUSE_NUMBER_OF_PARAMETERS_E];
886 
887 	int16	oRadioStatus;
888     int8	padding[3];     /* Align to 32bit */
889 
890 } EfuseParameters_t;
891 
892 /******************************************************************************/
893 
894 /******************************************************************************
895 
896   TestCmdId :       TEST_CMD_PLT_GAIN_GET
897 
898     Description: Retrieves the TX chain gain settings.
899 
900   Params:           PltGainGet_t       gainGet - see public_radio.h
901 
902 
903 ******************************************************************************/
904 
905 /******************************************************************************
906 
907     TestCmdId:  TEST_CMD_PLT_GET_NVS_UPDATE_BUFFER
908 
909     Description: This PLT function provides the all information required by
910                     the upper driver in order to update the NVS image.
911                     It received a parameter defining the type of update
912                     information required and provides an array of elements
913                     defining the data bytes to be written to the NVS image
914                     and the byte offset in which they should be written.
915  Params:     PltNvsResultsBuffer_t nvsUpdateBuffer  - see public_radio.h
916 
917 
918 *****************************************************************************/
919 
920 
921 /******************************************************************************
922 
923   TestCmdId :   TEST_CMD_PLT_GAIN_ADJUST
924 
925     Description: retrieves the TX chain gain settings.
926 
927     Params:     int32                txGainAdjust
928 
929 *****************************************************************************/
930 
931 /******************************************************************************
932 
933   TestCmdId :   TEST_CMD_PLT_RX_CALIBRATION
934 
935     Description: Used as part of the  RX calibration procedure, call this
936             function for every calibration channel.
937             The response for that function indicates only that command had been received by th FW,
938             and not that the calibration procedure had been finished.
939             The upper layer need to wait amount of ((numOfSamples*intervalBetweenSamplesUsec).
940             To make sure that the RX  calibration  completed. before calling to the next command.
941 
942     Params:     PltRxCalibrationRequest_t    rxCalibration
943 
944   ******************************************************************************/
945 
946 typedef struct
947 {
948 	uint8 iBand;
949 	uint8 iChannel;
950 	int16 oRadioStatus;
951 } TTestCmdChannel;
952 
953 typedef struct TTestCmdPdBufferCalStruct
954 {
955 	uint8   iGain;
956 	uint8   iVBias;
957 	int16	oAdcCodeword;
958 	int16	oRadioStatus;
959 	uint8	Padding[2];
960 } TTestCmdPdBufferCal;
961 
962 typedef struct
963 {
964 	int8	vBIASerror;
965 	int8	gainError;
966 	uint8	padding[2];
967 }TTestCmdPdBufferErrors;
968 
969 typedef struct
970 {
971 	int32     iReferencePointPower;
972 	int32     iReferencePointDetectorValue;
973 	uint8     isubBand;
974 	uint8     padding[3];
975 }TTestCmdUpdateReferncePoint;
976 
977 typedef struct
978 {
979 	int16 oRadioStatus;
980 	uint8 iCalibratonType;
981 	uint8 Padding;
982 
983 } TTestCmdRunCalibration;
984 
985 typedef struct
986 {
987     uint8   DCOItrimONOff;
988 	uint8	padding[3];
989 }TTestCmdDCOItrimOnOff;
990 
991 typedef enum
992 {
993 	eDISABLE_LIMIT_POWER,
994 	eENABLE_LIMIT_POWER
995 }UseIniFileLimitPower;
996 
997 typedef struct
998 {
999 	int32	iTxGainValue;
1000 	int16	oRadioStatus;
1001 	uint8	iUseinifilelimitPower;
1002 	uint8	padding;
1003 } TTxGainAdjust;
1004 
1005 /* TXPWR_CFG0__VGA_STEP_GAIN_E */
1006 typedef enum TXPWR_CFG0__VGA_STEP_ENMT
1007 {
1008 	TXPWR_CFG0__VGA_STEP__FIRST_E,
1009 /*_______________________________________________*/
1010 	TXPWR_CFG0__VGA_STEP__MINIMUM_E = TXPWR_CFG0__VGA_STEP__FIRST_E,
1011 	TXPWR_CFG0__VGA_STEP__0_E = TXPWR_CFG0__VGA_STEP__MINIMUM_E,
1012 	TXPWR_CFG0__VGA_STEP__1_E,
1013 	TXPWR_CFG0__VGA_STEP__2_E,
1014 	TXPWR_CFG0__VGA_STEP__3_E,
1015 	TXPWR_CFG0__VGA_STEP__4_E,
1016 	TXPWR_CFG0__VGA_STEP__MAXIMUM_E = TXPWR_CFG0__VGA_STEP__4_E,
1017 /*_______________________________________________*/
1018 	TXPWR_CFG0__VGA_STEP__NUMBER_OF_STEPS_E,
1019 	TXPWR_CFG0__VGA_STEP__LAST_E = (TXPWR_CFG0__VGA_STEP__NUMBER_OF_STEPS_E - 1)
1020 
1021 } TXPWR_CFG0__VGA_STEP_ENM;
1022 
1023 
1024 /******************************************************************************
1025 
1026 	Name:	ACX_PLT_NVS_BUFFER_UPDATE
1027 	TestCmdId:	TEST_CMD_PLT_GET_NVS_UPDATE_BUFFER
1028 	Description: This PLT function provides the all information required by
1029 					the upper driver in order to update the NVS image.
1030 					It received a parameter defining the type of update
1031 					information required and provides an array of elements defining
1032 					the data bytes to be written to the NVS image and the byte
1033 					offset in which they should be written.
1034 	Type:	PLT
1035 	Access:	Read Only
1036 	Length: 420
1037 
1038 ******************************************************************************/
1039 
1040 /* default efuse value */
1041 #define DEFAULT_EFUSE_VALUE				0
1042 
1043 /* Default hard-coded power to gain offsets (these values will be overridden by NVS) */
1044 #define DB_FACTOR						1000			/* factor because we can't use float */
1045 
1046 /* TX BIP default parameters */
1047 #define CALIBRATION_STEP_SIZE			1000
1048 #define CALIBRATION_POWER_HIGHER_RANGE	22000
1049 #define CALIBRATION_POWER_LOWER_RANGE	(-3000)
1050 
1051 #define FIRST_PD_CURVE_TO_SET_2_OCTET	(10 * CALIBRATION_STEP_SIZE)/* dBm */
1052 
1053 #define SIZE_OF_POWER_DETECTOR_TABLE	((((CALIBRATION_POWER_HIGHER_RANGE) - (CALIBRATION_POWER_LOWER_RANGE))\
1054 	                                      / (CALIBRATION_STEP_SIZE)) + 1)
1055 
1056 /* default PPA steps value */
1057 #define DEFAULT_PPA_STEP_VALUE			(-6000)
1058 
1059 #define P2G_TABLE_TO_NVS				(-1) * 8 / DB_FACTOR
1060 
1061 #define DEF_2_4_G_SUB_BAND_P2G_OFFSET           (-25000)
1062 #define DEF_LOW_JAPAN_4_9_G_SUB_BAND_P2G_OFFSET (-25*DB_FACTOR)
1063 #define DEF_MID_JAPAN_4_9_G_SUB_BAND_OFFSET     (-25*DB_FACTOR)
1064 #define DEF_HIGH_JAPAN_4_9_G_SUB_BAND_OFFSET    (-25*DB_FACTOR)
1065 #define DEF_5_G_FIRST_SUB_BAND_P2G_OFFSET       (-25*DB_FACTOR)
1066 #define DEF_5_G_SECOND_SUB_BAND_P2G_OFFSET      (-25*DB_FACTOR)
1067 #define DEF_5_G_THIRD_SUB_BAND_P2G_OFFSET       (-25*DB_FACTOR)
1068 #define DEF_5_G_FOURTH_SUB_BAND_P2G_OFFSET      (-25*DB_FACTOR)
1069 
1070 
1071 /* NVS definition start here */
1072 
1073 #define	NVS_TX_TYPE_INDEX		0
1074 #define        NVS_TX_LENGTH_INDEX                             ((NVS_TX_TYPE_INDEX) + 1) /* 1 (26) */
1075 #define        NVS_TX_PARAM_INDEX                              ((NVS_TX_LENGTH_INDEX) + 2) /* 3  (28) */
1076 
1077 #define START_TYPE_INDEX_IN_TLV	0
1078 #define TLV_TYPE_LENGTH			1
1079 #define START_LENGTH_INDEX		(START_TYPE_INDEX_IN_TLV + TLV_TYPE_LENGTH) /* 1 */
1080 #define TLV_LENGTH_LENGTH		2
1081 #define START_PARAM_INDEX		(START_LENGTH_INDEX + TLV_LENGTH_LENGTH) /* 3 */
1082 
1083 #define	NVS_VERSION_1			1
1084 #define	NVS_VERSION_2			2
1085 
1086 #define	NVS_MAC_FIRST_LENGTH_INDEX			0
1087 #define	NVS_MAC_FIRST_LENGHT_VALUE			1
1088 
1089 #define NVS_MAC_L_ADDRESS_INDEX				((NVS_MAC_FIRST_LENGTH_INDEX) + 1) /* 1*/
1090 #define NVS_MAC_L_ADDRESS_LENGTH			2
1091 
1092 #define NVS_MAC_L_VALUE_INDEX				((NVS_MAC_L_ADDRESS_INDEX) + (NVS_MAC_L_ADDRESS_LENGTH)) /* 3 */
1093 #define NVS_MAC_L_VALUE_LENGTH				4
1094 
1095 #define	NVS_MAC_SECONDE_LENGTH_INDEX		((NVS_MAC_L_VALUE_INDEX) + 4) /* 7 */
1096 #define	NVS_MAC_SECONDE_LENGHT_VALUE		1
1097 
1098 #define NVS_MAC_H_ADDRESS_INDEX				((NVS_MAC_SECONDE_LENGTH_INDEX) + 1) /* 8*/
1099 #define NVS_MAC_H_ADDRESS_LENGTH			2
1100 
1101 #define NVS_MAC_H_VALUE_INDEX				((NVS_MAC_H_ADDRESS_INDEX) + (NVS_MAC_H_ADDRESS_LENGTH)) /* 10 */
1102 #define NVS_MAC_H_VALUE_LENGTH				4
1103 
1104 #define NVS_END_BURST_TRANSACTION_INDEX		((NVS_MAC_H_VALUE_INDEX) + (NVS_MAC_H_VALUE_LENGTH))	/* 14 */
1105 #define NVS_END_BURST_TRANSACTION_VALUE		0
1106 #define NVS_END_BURST_TRANSACTION_LENGTH	7
1107 
1108 #define NVS_ALING_TLV_START_ADDRESS_INDEX	((NVS_END_BURST_TRANSACTION_INDEX) + (NVS_END_BURST_TRANSACTION_LENGTH))	/* 21 */
1109 #define NVS_ALING_TLV_START_ADDRESS_VALUE	0
1110 #define NVS_ALING_TLV_START_ADDRESS_LENGTH	3
1111 
1112 
1113 /* NVS pre TLV length */
1114 #define NVS_PRE_PARAMETERS_LENGTH			((NVS_ALING_TLV_START_ADDRESS_INDEX) + (NVS_ALING_TLV_START_ADDRESS_LENGTH)) /* 24 */
1115 
1116 /* NVS P2G table */
1117 #define NVS_TX_P2G_TABLE_LENGTH			((NUMBER_OF_SUB_BANDS_E) * 1 /* byte */) /* 8 */
1118 
1119 /* NVS PPA table */
1120 #define NVS_TX_PPA_STEPS_TABLE_LENGTH	((NUMBER_OF_SUB_BANDS_E) * \
1121                                          ((TXPWR_CFG0__VGA_STEP__NUMBER_OF_STEPS_E) \
1122                                           - 1) * 1 /* byte */) 	/* 32 */
1123 
1124 /* NVS version 1 TX PD curve table length */
1125 #define NVS_TX_PD_TABLE_LENGTH_NVS_V1	(1 /* byte to set size of table */ + \
1126                                          ((NUMBER_OF_SUB_BANDS_E) * (2 /* 1 byte offset, 1 byte low range */ + \
1127                                           2 /* first index in table */ + (((SIZE_OF_POWER_DETECTOR_TABLE) - 1) * 1 /* 1 byte */)))) /* 233 */
1128 
1129 /* NVS version 2 TX PD curve table length */
1130 #define NVS_TX_PD_TABLE_LENGTH_NVS_V2	((NUMBER_OF_SUB_BANDS_E) * (12 /* 12index of one byte -2 dBm - 9dBm */ +\
1131                                         28 /* 14 indexes of 2 byte -3dBm, 10dBm - 22 dBm */)) /* 320 */
1132 
1133 /* NVS version 1 TX parameters Length */
1134 #define	NVS_TX_PARAM_LENGTH_NVS_V1		((NVS_TX_P2G_TABLE_LENGTH) + (NVS_TX_PPA_STEPS_TABLE_LENGTH) +\
1135                                          (NVS_TX_PD_TABLE_LENGTH_NVS_V1)) /* 273 */
1136 
1137 /* NVS version 2 TX parameters Length */
1138 #define NVS_TX_PARAM_LENGTH_NVS_V2		((NVS_TX_P2G_TABLE_LENGTH) + (NVS_TX_PPA_STEPS_TABLE_LENGTH) +\
1139                                          (NVS_TX_PD_TABLE_LENGTH_NVS_V2) +\
1140                                          (NUMBER_OF_RADIO_CHANNEL_INDEXS_E /* for Per Channel power Gain Offset table */)) /* 409 */
1141 
1142 /* NVS TX version */
1143 #define NVS_TX_PARAM_LENGTH				NVS_TX_PARAM_LENGTH_NVS_V2
1144 
1145 /* NVS RX version */
1146 #define        NVS_RX_TYPE_INDEX                               ((NVS_TX_PARAM_INDEX) + (NVS_TX_PARAM_LENGTH)) /* 316 (341) */
1147 #define        NVS_RX_LENGTH_INDEX                             ((NVS_RX_TYPE_INDEX) + 1) /* 317 (342) */
1148 #define        NVS_RX_PARAM_INDEX                              ((NVS_RX_LENGTH_INDEX) + 2) /* 319 (344) */
1149 #define	NVS_RX_PARAM_LENGTH				NUMBER_OF_RX_BIP_EFUSE_PARAMETERS_E				/* 19		 */
1150 
1151 /* NVS version parameter length */
1152 #define NVS_VERSION_TYPE_INDEX                 ((NVS_RX_PARAM_INDEX) + (NVS_RX_PARAM_LENGTH)) /* 338 (363) */
1153 #define NVS_VERSION_LENGTH_INDEX               ((NVS_VERSION_TYPE_INDEX) + 1) /* 339 (364) */
1154 #define NVS_VERSION_PARAMETER_INDEX            ((NVS_VERSION_LENGTH_INDEX) + 2) /* 340 (365) */
1155 #define NVS_VERSION_PARAMETER_LENGTH	3
1156 
1157 /* NVS max length */
1158 #define NVS_TOTAL_LENGTH				500 /* original ((NVS_TOTAL_LENGTH) + 4 - ((NVS_TOTAL_LENGTH) % 4)) */
1159 
1160 /* TLV max length */
1161 #define  MAX_TLV_LENGTH 				NVS_TOTAL_LENGTH
1162 
1163 #define	 MAX_NVS_VERSION_LENGTH			12
1164 
1165 /* type to set in the NVS for each mode of work */
1166 typedef enum
1167 {
1168 	eNVS_VERSION = 0xaa,
1169 	eNVS_RADIO_TX_PARAMETERS = 1,
1170 	eNVS_RADIO_RX_PARAMETERS = 2,
1171 
1172 	eNVS_RADIO_INI = 16,
1173 
1174 
1175 	eNVS_NON_FILE = 0xFE,
1176 
1177 	/* last TLV type */
1178 	eTLV_LAST = 0xFF
1179 }NVSType;
1180 
1181 /* type to set parameter type buffers for each mode of work */
1182 typedef enum
1183 {
1184 	eFIRST_RADIO_TYPE_PARAMETERS_INFO,											/* 0 */
1185 	eNVS_RADIO_TX_TYPE_PARAMETERS_INFO = eFIRST_RADIO_TYPE_PARAMETERS_INFO,		/* 0 */
1186 	eNVS_RADIO_RX_TYPE_PARAMETERS_INFO,											/* 1 */
1187 	eLAST_RADIO_TYPE_PARAMETERS_INFO = eNVS_RADIO_RX_TYPE_PARAMETERS_INFO,		/* 1 */
1188 	UNUSED_RADIO_TYPE_PARAMETERS_INFO,											/* 2 */
1189 	eNUMBER_RADIO_TYPE_PARAMETERS_INFO = UNUSED_RADIO_TYPE_PARAMETERS_INFO,		/* 2 */
1190 	LAST_RADIO_TYPE_PARAMETERS_INFO = (eNUMBER_RADIO_TYPE_PARAMETERS_INFO - 1)	/* 1 */
1191 }NVSTypeInfo;
1192 
1193 /* NVS definition end here */
1194 
1195 
1196 typedef enum
1197 {
1198 	eCURRENT_SUB_BAND,
1199 	eALL_SUB_BANDS
1200 }TxBipCurrentAllSubBand;
1201 
1202 typedef struct
1203 {
1204 	uint16 	Length;			       	/* TLV length in bytes */
1205 	uint8 	Buffer[MAX_TLV_LENGTH]; /* TLV buffer content to be burned */
1206     uint8   Type;                   /* TLV Type Index */
1207 	uint8   padding;
1208 }TNvsStruct;
1209 
1210 typedef struct
1211 {
1212 	uint32		oNVSVersion;
1213 	TNvsStruct	oNvsStruct; 	/* output (P2G array) */
1214 	int16		oRadioStatus;
1215     uint8             iSubBandMask;             /* 7 sub-band bit mask (asserted bit - calibration required) */
1216     uint8             Padding;
1217 } TTestCmdP2GCal;
1218 
1219 typedef struct
1220 {
1221 	int16			oRadioStatus;
1222 	uint16			Pad;
1223 	uint32			iDelay;			/* between packets (usec) */
1224 	uint32	     	iRate; 			/* 1MBPS	= 0x00000001,
1225 										2MBPS   = 0x00000002,
1226 										5.5MBPS	= 0x00000004,
1227 										6MBPS   = 0x00000008,
1228 										9MBPS   = 0x00000010,
1229 										11MBPS  = 0x00000020,
1230 										12MBPS  = 0x00000040,
1231 										18MBPS  = 0x00000080,
1232 										24MBPS  = 0x00000200,
1233 										36MBPS  = 0x00000400,
1234 										48MBPS  = 0x00000800,
1235 										54MBPS  = 0x00001000,
1236 										MCS_0  	= 0x00002000,
1237 										MCS_1  	= 0x00004000,
1238 										MCS_2  	= 0x00008000,
1239 										MCS_3  	= 0x00010000,
1240 										MCS_4  	= 0x00020000,
1241 										MCS_5  	= 0x00040000,
1242 										MCS_6  	= 0x00080000,
1243 										MCS_7  	= 0x00100000 */
1244 	uint16	     	iSize; 			/* size of packet (bytes) */
1245 	uint16			iAmount; 		/* in case of multiple (# of packets) */
1246 	int32			iPower;			/* upper power limit (dBm) */
1247 	uint16			iSeed;
1248 	uint8			iPacketMode; 	/* single, multiple, InfiniteLength, Continuous, FCC */
1249 	uint8	     	iDcfOnOff; 		/* use DCF access (1) */
1250 	uint8	     	iGI;			/* Guard Interval: long:800ns (0), short:400ns (1) */
1251 	uint8	     	iPreamble;		/* long (0), short (1),  OFDM (4), GF (7), Mixed (6) */
1252 	uint8	     	iType;			/* Data (0), Ack (1), Probe-request(2), Random (3), User-defined (4), PER (5) */
1253 	uint8	     	iScrambler;		/* Off (0), On (1) */
1254 	uint8	     	iEnableCLPC; 	/* range 0-100. 0 - disable calibration										/
1255 									   range 1-99 - enable Cal asses periodic time, every step is 200msecond
1256 	                                   periodic of cal assess for example: 1.2 second put the value 6.
1257 									   if the value is out of range it will be change to 25 represent
1258 	                                   5 second of cal assess periodical */
1259 	uint8 	     	iSeqNumMode; 	/* Fixed sequence number (0), incremental (1) - used for PER test only */
1260 	TMacAddr	 	iSrcMacAddr; 	/* Source address (BSSID) - used for PER test only */
1261 	TMacAddr	    iDstMacAddr; 	/* Destination address - used for PER test only */
1262 
1263 } TPacketParam;
1264 
1265 typedef struct
1266 {
1267 	int16			 oRadioStatus;
1268 	uint16			 Pad;
1269 	int32		     iPower;
1270 	uint8	    	 iToneType;
1271 	uint8		     iPpaStep;
1272 	uint8		     iToneNumberSingleTones;
1273 	uint8 	    	 iToneNumberTwoTones;
1274 	uint8		     iUseDigitalDC;
1275 	uint8 		     iInvert;
1276 	uint8	    	 iElevenNSpan;
1277 	uint8		     iDigitalDC;
1278 	uint8		     iAnalogDCFine;
1279 	uint8	    	 iAnalogDCCoarse;
1280 } TToneParam;
1281 
1282 typedef  struct
1283 {
1284 	uint16 	bufferOffset;
1285 	uint16 	bufferLength;
1286 	int16	oRadioStatus;
1287 	int8 	buffer[TX_TEMPLATE_MAX_BUF_LEN];
1288 	uint8	padding[2];
1289 } TTxTemplate;
1290 
1291 typedef enum
1292 {
1293 	eDISABLE_CLPC,
1294 	eENABLE_CLPC,
1295 	eRESET_CLPC_TABLES,
1296 	eINIDCATE_CLPC_ACTIVATION_TIME
1297 }CLPCCommands;
1298 
1299 typedef struct
1300 {
1301 	int16	oStatus;
1302 	uint8	iCLPCActivationTime; /* range 0-100. 0 - disable calibration										/
1303 									range 1-99 - enable Cal asses periodic time, every step is 200msecond
1304 	                                periodic of cal assess for example: 1.2 second put the value 6.
1305 									if the value is out of range it will be change to 25 represent
1306 	                                5 second of cal assess periodical */
1307 	uint8	iCLPCCommands;
1308 }TTestCmdCLPCCommands;
1309 
1310 
1311 /************************************************************************
1312                 PLT  DBS
1313 				Theses DBs were moved from the TWDExternalIf.h because of
1314 				redundency.
1315 ************************************************************************/
1316 typedef struct
1317 {
1318 	uint8   oAbsoluteGain; 	/* Per Sub-Band (output) */
1319 	uint8   oLNASteps[RX_PLT_LNA_STEPS_BUF_LEN]; 	/* 4 steps per Band (output) */
1320 	uint8   oTASteps[RX_PLT_TA_STEPS_BUF_LEN]; 	/* 2 steps per Band (output) */
1321 	uint8   Padding;
1322 } TTestCmdRxPlt;
1323 
1324 typedef struct
1325 {
1326 	uint32  ReceivedValidPacketsNumber;
1327     uint32  ReceivedFcsErrorPacketsNumber;
1328     uint32  ReceivedPlcpErrorPacketsNumber;
1329     uint32 	SeqNumMissCount; /* For PER calculation */
1330     int16   AverageSnr;
1331     int16   AverageRssi;
1332     int16  AverageEvm;
1333     uint8   Padding[2];
1334 } RxPathStatistics_t;
1335 
1336 typedef struct
1337 {
1338 	uint16  Length;
1339     uint16  EVM;
1340     uint16  RSSI;
1341     uint16  FrequencyDelta;
1342     uint16  Flags;
1343     int8	Type;
1344     uint8   Rate;
1345     uint8   Noise;
1346     uint8   AgcGain;
1347     uint8   Padding[2];
1348 } RxPacketStatistics_t;
1349 
1350 #define RX_STAT_PACKETS_PER_MESSAGE           (20)
1351 typedef struct
1352 {
1353 	RxPathStatistics_t		oRxPathStatistics;
1354     uint32           		oBasePacketId;
1355     uint32           		ioNumberOfPackets; 			/* input/output: number of following packets */
1356 	uint32					oNumberOfMissedPackets;		/* number of following packet statistic entries that were dropped */
1357     /*RxPacketStatistics_t    RxPacketStatistics[RX_STAT_PACKETS_PER_MESSAGE];*/
1358 	int16					oRadioStatus;
1359 } RadioRxStatistics;
1360 
1361 /* RX RF gain values */
1362 typedef enum PHY_RADIO_RX_GAIN_VALUES_ENMT
1363 {
1364 	FIRST_RX_GAIN_VALUE_E,
1365 /*_______________________________________________*/
1366 	RX_GAIN_VALUE_0_E = FIRST_RX_GAIN_VALUE_E,
1367 	RX_GAIN_VALUE_1_E,
1368 	RX_GAIN_VALUE_2_E,
1369 	RX_GAIN_VALUE_3_E,
1370 	RX_GAIN_VALUE_4_E,
1371 	RX_GAIN_VALUE_5_E,
1372 	RX_GAIN_VALUE_6_E,
1373 	RX_GAIN_VALUE_7_E,
1374 /*_______________________________________________*/
1375 	NUMBER_OF_RX_GAIN_VALUES_E,
1376 	LAST_RX_GAIN_VALUE_E = (NUMBER_OF_RX_GAIN_VALUES_E - 1)
1377 
1378 }PHY_RADIO_RX_GAIN_VALUES_ENM;
1379 
1380 /* RX BIP */
1381 typedef struct
1382 {
1383 	uint32		oNVSVersion;
1384 	int32		iExternalSignalPowerLevel;
1385 	int32		oLnaTaCompensationValues[NUMBER_OF_RX_GAIN_VALUES_E-1];
1386 	TNvsStruct	oNvsStruct;
1387 	int16		oRadioStatus;
1388 	int8		padding[2];
1389 }RadioRxPltCal;
1390 
1391 
1392 typedef enum
1393 {
1394 	eSINGLE_BAND_INI_FILE,
1395 	eDUAL_BAND_INI_FILE
1396 }IniFileSingleDualBand;
1397 
1398 #define SMART_REFLEX_LENGTH_INDEX				0
1399 #define SMART_REFLEX_UPPER_LIMIT_INDEX			1
1400 #define SMART_REFLEX_START_ERROR_VALUE_INDEX	2
1401 
1402 #define MAX_SMART_REFLEX_FUB_VALUES		14
1403 /* 1. first index is the number of param	*/
1404 /* 2. second is the higher value			*/
1405 /* 3. 14 parameter of the correction		*/
1406 #define MAX_SMART_REFLEX_PARAM					(MAX_SMART_REFLEX_FUB_VALUES + SMART_REFLEX_START_ERROR_VALUE_INDEX)
1407 
1408 
1409 
1410 typedef struct
1411 {
1412 	uint8	RefClk;
1413 	uint8	SettlingTime;
1414 	uint8	ClockValidOnWakeup;
1415 	uint8	DC2DCMode;
1416 	uint8	Single_Dual_Band_Solution;
1417 	uint8	TXBiPFEMAutoDetect;
1418 	uint8	TXBiPFEMManufacturer;
1419 /*	GeneralSettingsByte	Settings; */
1420     uint8   GeneralSettings;
1421 
1422 
1423     /* smart reflex state*/
1424     uint8 SRState;
1425     /* FUB parameters */
1426     int8	SRF1[MAX_SMART_REFLEX_PARAM];
1427     int8	SRF2[MAX_SMART_REFLEX_PARAM];
1428     int8	SRF3[MAX_SMART_REFLEX_PARAM];
1429 
1430 
1431     /* FUB debug parameters */
1432     int8	SR_Debug_Table[MAX_SMART_REFLEX_PARAM];
1433     uint8	SR_SEN_N_P;
1434     uint8	SR_SEN_N_P_Gain;
1435     uint8	SR_SEN_NRN;
1436     uint8	SR_SEN_PRN;
1437     uint8	padding[3];
1438 
1439 }IniFileGeneralParam;
1440 
1441 typedef enum
1442 {
1443 	FEM_MANUAL_DETECT_MODE_E,
1444 	FEM_AUTO_DETECT_MODE_E
1445 
1446 }FEM_DETECT_MODE_ENM;
1447 
1448 typedef enum
1449 {
1450 	FEM_RFMD_TYPE_E,
1451 	FEM_TRIQUINT_TYPE_E,
1452 	NUMBER_OF_FEM_TYPES_E
1453 
1454 }FEM_TYPE_ENM;
1455 
1456 typedef enum
1457 {
1458 	eREF_CLK_19_2_E,
1459 	eREF_CLK_26_E,
1460 	eREF_CLK_38_4_E,
1461 	eREF_CLK_52_E
1462 
1463 }REF_CLK_ENM;
1464 
1465 typedef enum
1466 {
1467 	REF_CLK_NOT_VALID_E,
1468 	REF_CLK_VALID_AND_STABLE_E
1469 
1470 }CLK_VALID_ON_WAKEUP_ENM;
1471 
1472 typedef enum
1473 {
1474 	BT_SPI_IS_NOT_USED_E,
1475 	MUX_DC2DC_TO_BT_FUNC2_E
1476 
1477 }DC2DC_MODE_ENM;
1478 
1479 typedef enum
1480 {
1481 	SINGLE_BAND_SOLUTION_E,
1482 	DUAL_BAND_SOLUTION_E
1483 
1484 }SINGLE_DUAL_BAND_SOLUTION_ENM;
1485 
1486 /* General settings byte */
1487 typedef enum
1488 {
1489 	TELEC_CHAN_14_OFF_E,
1490 	TELEC_CHAN_14_ON_E
1491 
1492 }TELEC_CHAN_14_ENM;
1493 
1494 typedef enum
1495 {
1496 	NBI_OFF_E,
1497 	NBI_ON_E
1498 
1499 }NBI_ENM;
1500 
1501 #define RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE   (15)
1502 
1503 typedef struct
1504 {
1505 	/* SECTION 1: 2.4G parameters */
1506 	uint8 RxTraceInsertionLoss_2_4G;
1507 	uint8 TXTraceLoss_2_4G;
1508 	int8  RxRssiAndProcessCompensation_2_4G[RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE];
1509 
1510 	/* SECTION 2: 5G parameters */
1511 	uint8 RxTraceInsertionLoss_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E];
1512 	uint8 TXTraceLoss_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E];
1513 	int8  RxRssiAndProcessCompensation_5G[RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE];
1514 
1515 }TStatRadioParams;
1516 
1517 typedef struct
1518 {
1519 	/* SECTION 1: 2.4G parameters */
1520 	uint16  TXBiPReferencePDvoltage_2_4G;
1521 	uint8   TxBiPReferencePower_2_4G;
1522 	int8  	TxBiPOffsetdB_2_4G;
1523 	int8  	TxPerRatePowerLimits_2_4G_Normal[NUMBER_OF_RATE_GROUPS_E];
1524 	int8  	TxPerRatePowerLimits_2_4G_Degraded[NUMBER_OF_RATE_GROUPS_E];
1525 	int8    TxPerRatePowerLimits_2_4G_Extreme[NUMBER_OF_RATE_GROUPS_E];
1526 	int8  	TxPerChannelPowerLimits_2_4G_11b[NUMBER_OF_2_4_G_CHANNELS];
1527 	int8    TxPerChannelPowerLimits_2_4G_OFDM[NUMBER_OF_2_4_G_CHANNELS];
1528 	int8    TxPDVsRateOffsets_2_4G[NUMBER_OF_RATE_GROUPS_E];
1529 	uint8   TxIbiasTable_2_4G[NUMBER_OF_RATE_GROUPS_E];
1530 	uint8   RxFemInsertionLoss_2_4G;
1531         uint8 	DegradedLowToNormalThr_2_4G;
1532         uint8 	NormalToDegradedHighThr_2_4G;
1533 
1534 	/* SECTION 2: 5G parameters */
1535 	uint16 	TXBiPReferencePDvoltage_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E];
1536 	uint8  	TxBiPReferencePower_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E];
1537 	int8   	TxBiPOffsetdB_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E];
1538 	int8   	TxPerRatePowerLimits_5G_Normal[NUMBER_OF_RATE_GROUPS_E];
1539 	int8   	TxPerRatePowerLimits_5G_Degraded[NUMBER_OF_RATE_GROUPS_E];
1540     int8   	TxPerRatePowerLimits_5G_Extreme[NUMBER_OF_RATE_GROUPS_E];
1541 	int8   	TxPerChannelPowerLimits_5G_OFDM[NUMBER_OF_5G_CHANNELS];
1542 	int8   	TxPDVsRateOffsets_5G[NUMBER_OF_RATE_GROUPS_E];
1543 	int8   	TxIbiasTable_5G[NUMBER_OF_RATE_GROUPS_E];
1544 	uint8  	RxFemInsertionLoss_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E];
1545     uint8  	DegradedLowToNormalThr_5G;
1546     uint8   NormalToDegradedHighThr_5G;
1547 
1548 }TDynRadioParams;
1549 
1550 typedef struct
1551 {
1552 	TStatRadioParams	tStatRadioParams;
1553 	TDynRadioParams		tDynRadioParams;
1554     uint8                   Padding[2];
1555 
1556 }IniFileRadioParam;
1557 
1558 typedef struct
1559 {
1560 	int8  TxPerChannelPowerCompensation_2_4G[HALF_NUMBER_OF_2_4_G_CHANNELS]; /* 7 */
1561 	int8  TxPerChannelPowerCompensation_5G_OFDM[HALF_NUMBER_OF_5G_CHANNELS]; /* 18 */
1562 	uint8 Padding[3];
1563 
1564 }IniFileExtendedRadioParam;
1565 
1566 /*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
1567 
1568 /* Describes a reference design supported by the HDK Module */
1569 typedef struct HDKReferenceDesign_t
1570 {
1571     uint16  referenceDesignId;          /* Reference design Id supported */
1572     uint8   nvsMajorVersion;            /* First EEPROM version supported */
1573     uint8   nvsMinorVersion;
1574     uint8   nvsMinorMinorVersion;
1575 } THDKReferenceDesign;
1576 
1577 typedef struct HDKModuleVersion_t
1578 {
1579     uint8               ProductName;				/* '6' for WiLink6, '4' for WiLink4 */
1580     uint8               PgNumber;                   /* Hardware tag */
1581     uint8               SoftwareVersionLevel;       /* SW level number (Major SW change) */
1582     uint8               SoftwareVersionDelivery;    /* Delivery number inside any (Inside any level) */
1583 
1584     uint8					radioModuleType;                    /* The radio that is currently supported by the HDK module */
1585     uint8					numberOfReferenceDesignsSupported;  /* The number of reference designs supported by the HDK module */
1586     THDKReferenceDesign*   referenceDesignsSupported;			/* Array of reference_design supported */
1587 
1588 } THDKModuleVersion;
1589 
1590 #define FW_VERSION_LENGTH 5
1591 
1592 typedef struct
1593 {
1594 	THDKModuleVersion	hdkVersion;
1595 	uint8				FWVersion[FW_VERSION_LENGTH];
1596     uint32               drpwVersion;
1597 	int16				oRadioStatus;
1598 	uint8				padding[3];
1599 }TFWVerisons;
1600 
1601 typedef struct
1602 {
1603     int16       RSSIVal;      /* free running RSSI value, 1dB resolution */
1604     int16		oRadioStatus;
1605 }TTestCmdFreeRSSI;
1606 
1607 typedef struct
1608 {
1609     TestCmdID_e     testCmdId;
1610 	int8            padding[3];
1611 
1612 	/* Efil -	when adding parameter here fill the switch case sentence in function
1613 			"cmdBld_CmdIeTest" in module "TWD\Ctrl\CmdBldCmdIE.c" */
1614     union
1615     {
1616 		TTestCmdChannel 				Channel;
1617 		RadioRxPltCal 					RxPlt;
1618 		TTestCmdPdBufferCal 			PdBufferCal;
1619 		TTestCmdP2GCal 					P2GCal;
1620 		TTestCmdPdBufferErrors			PdBufferErrors;
1621 		TTestCmdUpdateReferncePoint		PdBufferCalReferencePoint;
1622 		TPacketParam 					TxPacketParams;
1623 		TToneParam 						TxToneParams;
1624 		TTxTemplate						TxTemplateParams;
1625 		/*uint32               			txGainAdjust; */
1626 		TTxGainAdjust					txGainAdjust;
1627 		RadioRxStatistics				Statistics;
1628 		TFWVerisons						fwVersions;
1629 		TTestCmdRunCalibration			RunCalibration;
1630         IniFileRadioParam				IniFileRadioParams;
1631 		IniFileExtendedRadioParam		IniFileExtendedRadioParams;
1632 		IniFileGeneralParam				IniFileGeneralParams;
1633 		EfuseParameters_t				EfuseParams;
1634 		TestToneParams_t				TestToneParams;
1635 		TTestCmdPowerMode				powerMode;
1636         TTestCmdFreeRSSI                freeRSSI;
1637 		TTestCmdCLPCCommands			clpcCommands;
1638 		TTestCmdDCOItrimOnOff           DCOitrimFeatureOnOff;
1639 
1640 		TTestCmdDebug					testDebug;
1641     }testCmd_u;
1642 }TTestCmd;
1643 
1644 
1645 #ifndef HOST_IF_ENUMS_DISABLED
1646 typedef enum RadioParamType_e
1647 {
1648     RADIO_PARAM_POWER_TABLE = 1,
1649     RADIO_PARAM_POWER_LIMIT_TABLE,
1650     RADIO_PARAM_POWER_ADJ_TABLE,
1651     RADIO_PARAM_POWER_ENABLES,
1652     RADIO_PABIAS_TABLE,
1653     RADIO_PARAM_POWER_LEVELS,
1654 
1655     MAX_RADIO_PARAM_TYPE = 0x7FFFFFFF /* force this enum to be uint32 */
1656 
1657 } RadioParamType_e;
1658 #else
1659 typedef uint32 RadioParamType_e;
1660 #endif
1661 
1662 typedef struct RadioParam_t
1663 {
1664     RadioParamType_e parameterType;
1665     int8  parameter[MAX_RADIO_PARAM_LEN];
1666 } RadioParam_t;
1667 
1668 typedef enum RadioState_e
1669 {
1670     RADIO_STATE_INIT = 1,           /* Completed radio initialization */
1671     RADIO_STATE_TUNE = 2,           /* Completed channel tuning */
1672     RADIO_STATE_DC_CAL = 3,         /* Completed radio DC calibration */
1673     RADIO_STATE_AFE_DC_CAL =4,      /* Completed AFE DC calibration */
1674     RADIO_STATE_TX_MM = 5,          /* Completed transmit IQ mismatch calibration */
1675     RADIO_STATE_TX_EQUAL = 6,       /* Completed transmit equalization  calibration */
1676     RADIO_STATE_CARR_SUPP = 7,      /* Completed carrier suppression calibration */
1677     RADIO_STATE_TX_PWR_CTRL = 8     /* Completed transmit power control calibration (only for bg and abg radios) */
1678 
1679 } RadioState_e;
1680 
1681 typedef enum
1682 {
1683     PS_MODE_ENTER_ELP = 0x0,
1684     PS_MODE_ENTER_PD = 0x1,
1685     PS_MODE_EXIT_FROM_ELP = 0x2,
1686     PS_MODE_EXIT_FROM_PD = 0x4,
1687     PS_MODE_ENTER_ELP_SG_EN = 0x10,
1688     PS_MODE_ENTER_PD_SG_EN = 0x11,
1689     PS_MODE_EXIT_FROM_ELP_SG_EN = 0x12,
1690     PS_MODE_EXIT_FROM_PD_SG_EN = 0x14,
1691     PS_MODE_INVALID = 0xFF
1692 
1693 }PowerSaveMode_e;
1694 
1695 typedef struct RadioTune_t
1696 {
1697     Channel_e   channel;
1698     RadioBand_e band;
1699 } RadioTune_t;
1700 
1701 typedef struct RadioRSSIAndSNR_t
1702 {
1703     int16   rssi;
1704     int16   snr;
1705 }RadioRSSIAndSNR_t;
1706 
1707 /* VBIAS values (in mili-volts) */
1708 typedef enum PHY_RADIO_VBIAS_MV_ENMT
1709 {
1710 	FIRST_VBIAS_VALUE_E = -1,
1711 
1712 	VBIAS_0MV_E = FIRST_VBIAS_VALUE_E,
1713 	VBIAS_100MV_E = 0,
1714 	VBIAS_200MV_E = 1,
1715 	VBIAS_300MV_E = 2,
1716 	VBIAS_400MV_E = 3,
1717 	VBIAS_500MV_E = 4,
1718 	VBIAS_600MV_E = 5,
1719 	VBIAS_700MV_E = 6,
1720 	VBIAS_800MV_E = 7,
1721 
1722 	NUMBER_OF_VBIAS_VALUES_E = 9,
1723     LAST_VBIAS_VALUE_E = (NUMBER_OF_VBIAS_VALUES_E - 1)
1724 
1725 }PHY_RADIO_VBIAS_MV_ENM;
1726 
1727 /* Gain monitor values */
1728 typedef enum PHY_RADIO_GAIN_MONITOR_TYPES_ENMT
1729 {
1730 	FIRST_GAIN_MONITOR_TYPE_E,
1731 	GAIN_MONITOR_DISABLE = 0,
1732 	GAIN_MONITOR_RESERVED = 1,
1733 /*_______________________________________________*/
1734 	GAIN_MONITOR_X0_5_E = 2,
1735 	GAIN_MONITOR_X1_E = 3,
1736 	GAIN_MONITOR_X2_E = 4,
1737 	GAIN_MONITOR_X4_E = 5,
1738 	GAIN_MONITOR_X8_E = 6,
1739 	GAIN_MONITOR_X16_E = 7,
1740 /*_______________________________________________*/
1741 	NUMBER_OF_GAIN_MONITOR_TYPES_E = GAIN_MONITOR_X16_E,
1742 	LAST_GAIN_MONITOR_TYPE_E = (NUMBER_OF_GAIN_MONITOR_TYPES_E - 1)
1743 
1744 }PHY_RADIO_GAIN_MONITOR_TYPES_ENM;
1745 
1746 
1747 /* TX Packet Mode; */
1748 typedef enum
1749 {
1750 	eTX_MODE_SINGLE_PACKET,              /* 0 */
1751 	eTX_MODE_MULTIPLE_PACKET,            /* 1 */
1752 	eTX_MODE_INFINITE_LENGTH_PACKET,     /* 2 */
1753 	eTX_MODE_CONTINUES_PACKET,           /* 3 */
1754 	eTX_MODE_FCC_PACKET,                 /* 4 */
1755 	eTX_MODE_SENARIO_PACKET,	     /* 5 */
1756 
1757 	eMAX_PACKET_MODE_PACKET
1758 }PacketTypeMode;
1759 
1760 /* TX tone mode */
1761 typedef enum
1762 {
1763 	eSILENCE_TONE_MODE,
1764 	eCARRIER_FEED_THROUGH_MODE,
1765 	eSINGLE_TONE_MODE,
1766 	eTWO_TONE_MODE,
1767 	eMULTI_TONE_MODE,
1768 
1769 	eMax_TONE_MODE
1770 }ToneTypeMode;
1771 
1772 
1773 /**********************************************************************/
1774 /*		For RSSI Calculation - Save Parameters						  */
1775 /**********************************************************************/
1776 
1777 typedef struct
1778 {
1779 	uint16 linerEvmVal;
1780 	uint16 ccaEcalcMonReg;
1781 	uint16 ccaEcalcRssi;
1782 	uint16 linerEvmPilVal;
1783 	uint8 lanTableIndex;
1784 	uint8 taTableIndex;
1785 	uint8 lnaTableIndex;
1786 	RADIO_SUB_BAND_TYPE_ENM currSubBand;
1787 	RADIO_BAND_TYPE_ENM		currBand;
1788 }rssiParamSave_t;
1789 
1790 
1791 
1792 #endif	/* #ifndef PUBLIC_RADIO */
1793