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