diff -r 000000000000 -r 10c42ec6c05f TWD/FirmwareApi/public_radio.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TWD/FirmwareApi/public_radio.h Tue Jun 29 12:34:26 2010 +0100 @@ -0,0 +1,1768 @@ +/* + * public_radio.h + * + * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. + * All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 or BSD License which accompanies + * this distribution. The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name Texas Instruments nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/********************************************************************************************************************** + FILENAME: public_radio.h + + DESCRIPTION: Contains information element defines/structures used by the TNETxxxx and host and Radio Module. + This is a PUBLIC header, which customers will use. +***********************************************************************************************************************/ +/* +======================================================================================================================= + R E V I S I O N H I S T O R Y + + 04/29/05 BRK 1. retrieved from ClearCase and added this rev. history + 2. added two new entries to RadioParamType_e enum + 3. increased MAX_RADIO_PARAM_POWER_TABLE (from 20 to 56) + - this is sort of a kludge, struct RadioParam_t should have used an + array pointer instead of an actual data block + 06/10/05 BRK changed MAX_RADIO_PARAM_POWER_TABLE for 1251 support (sort of a KLUDGE) + 07/15/05 BRK added RADIO_PABIAS_TABLE entry to RadioParamType_e enum + 04/12/06 MH Added new run-time calibration state: RFPLL_CALIBRATION_NEEDED + + Note: This code should only be edited with TAB stops set at 4 +======================================================================================================================= + */ +#ifndef PUBLIC_RADIO +#define PUBLIC_RADIO + +#include "public_types.h" +#define MAC_ADDR_SIZE 6 +/* typedef uint8 TMacAddr[MAC_ADDR_SIZE]; */ +/************************************************************************/ +/* */ +/* Definitions section */ +/* */ +/************************************************************************/ +/* radio parameter to set */ +#ifdef TNETW1251 +#define MAX_RADIO_PARAM_POWER_TABLE (4*48) /* cPowLmtTbl[] max size for ABG radios */ +#else +#define MAX_RADIO_PARAM_POWER_TABLE (56) /* cPowLmtTbl[] max size for BG radios*/ +#endif +#define MAX_RADIO_PARAM_LEN (MAX_RADIO_PARAM_POWER_TABLE) + +#define RADIO_PARAM_POWER_TABLE_ENABLE (0x01) /* mask for RADIO_PARAM_POWER_ENABLES usage*/ +#define RADIO_PARAM_POWER_LIMIT_TABLE_ENABLE (0x02) /* mask for RADIO_PARAM_POWER_ENABLES usage*/ +#define RADIO_PARAM_POWER_ADJ_TABLE_ENABLE (0x04) /* mask for RADIO_PARAM_POWER_ENABLES usage*/ + +#define NUM_OF_POWER_LEVEL (4) + + +#define TX_TEMPLATE_MAX_BUF_LEN (512) + +#define RX_PLT_LNA_STEPS_BUF_LEN (4) +#define RX_PLT_TA_STEPS_BUF_LEN (4) + +#define RX_STAT_PACKETS_PER_MESSAGE (20) + +#define MULTIPLE_PACKET_SIZE 1024 +#define MAX_TX_PACKET_SIZE_11_B (2 * MULTIPLE_PACKET_SIZE) +#define MAX_TX_PACKET_SIZE_11_G (4 * MULTIPLE_PACKET_SIZE) +#define MAX_TX_PACKET_SIZE_11_N (8 * MULTIPLE_PACKET_SIZE) /* must be PDU */ + +/* Radio Band */ +typedef enum +{ + eELEVEN_A_B, + eELEVEN_A_G, + eELEVEN_N, + + MAX_MODULATION +}Modulation; + +/************************************************************************/ +/* */ +/* Enumerations section */ +/* */ +/************************************************************************/ + +/* Radio band types. */ +typedef enum RADIO_BAND_TYPE_ENMT +{ + FIRST_BAND_TYPE_E, +/*______________________________________*/ + + _2_4_G_BAND_TYPE_E = FIRST_BAND_TYPE_E, + _5_G_BAND_TYPE_E, +/*_______________________________________________*/ + UNUSED_BAND_TYPE_E, + NUMBER_OF_BANDS_E = UNUSED_BAND_TYPE_E, + LAST_BAND_TYPE_E = (NUMBER_OF_BANDS_E - 1) + +}RADIO_BAND_TYPE_ENM; + + +#define RADIO_BAND_2_4GHZ_BASE_FREQUENCY 2407 +#define RADIO_BAND_JAPAN_4_9_GHZ_BASE_FREQUENCY 5000 +#define RADIO_BAND_5GHZ_BASE_FREQUENCY 5000 + +#define RADIO_BAND_2_4GHZ_MULTIPLE_BASE_FREQUENCY 5 +#define RADIO_BAND_JAPAN_4_9_GHZ_MULTIPLE_BASE_FREQUENCY (-5) +#define RADIO_BAND_5GHZ_MULTIPLE_BASE_FREQUENCY 5 + +#define GIGA_HZ_TO_MEGA_HZ 1000 + + + +/* Radio sub-band types. */ +typedef enum RADIO_SUB_BAND_TYPE_ENMT +{ + FIRST_SUB_BAND_TYPE_E, +/*______________________________________*/ + + _2_4_G_SUB_BAND_TYPE_E = FIRST_SUB_BAND_TYPE_E, /* band b/g */ + FIRST_SUB_BANDS_IN_5G_BAND_E, + 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) */ + MID_JAPAN_4_9_G_SUB_BAND_TYPE_E, /* band 4.9Ghz (Japan) mid sub-band(J8,J12,J16) */ + HIGH_JAPAN_4_9_G_SUB_BAND_TYPE_E, /* band 4.9Ghz (Japan) high sub-band(J34,36,J38,40, J42, 44, J46,48) */ + _5_G_FIRST_SUB_BAND_TYPE_E, /* band 5GHz 1st sub-band(52->64 in steps of 4) */ + _5_G_SECOND_SUB_BAND_TYPE_E, /* band 5GHz 2nd sub-band(100->116 in steps of 4) */ + _5_G_THIRD_SUB_BAND_TYPE_E, /* band 5GHz 3rd sub-band(120->140 in steps of 4) */ + _5_G_FOURTH_SUB_BAND_TYPE_E, /* band 5GHz 4th sub-band(149->165 in steps of 4) */ + LAST_SUB_BANDS_IN_5G_BAND_E = _5_G_FOURTH_SUB_BAND_TYPE_E, +/*_______________________________________________*/ + UNUSED_SUB_BAND_TYPE_E, + NUMBER_OF_SUB_BANDS_E = UNUSED_SUB_BAND_TYPE_E, + LAST_SUB_BAND_TYPE_E = (NUMBER_OF_SUB_BANDS_E - 1) + +}RADIO_SUB_BAND_TYPE_ENM; + +#define NUMBER_OF_SUB_BANDS_IN_5G_BAND_E (LAST_SUB_BANDS_IN_5G_BAND_E - FIRST_SUB_BANDS_IN_5G_BAND_E + 1) + +typedef struct +{ + uint8 uDbm[NUMBER_OF_SUB_BANDS_E][NUM_OF_POWER_LEVEL]; +} TpowerLevelTable_t; + +/* Channel number */ +typedef enum RADIO_CHANNEL_NUMBER_ENMT +{ + /*---------------------------------*/ + /* _2_4_G_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + + /* index 0 */ RADIO_CHANNEL_INDEX_0_NUMBER_1_E = 1, + /* index 1 */ RADIO_CHANNEL_INDEX_1_NUMBER_2_E = 2, + /* index 2 */ RADIO_CHANNEL_INDEX_2_NUMBER_3_E = 3, + /* index 3 */ RADIO_CHANNEL_INDEX_3_NUMBER_4_E = 4, + /* index 4 */ RADIO_CHANNEL_INDEX_4_NUMBER_5_E = 5, + /* index 5 */ RADIO_CHANNEL_INDEX_5_NUMBER_6_E = 6, + /* index 6 */ RADIO_CHANNEL_INDEX_6_NUMBER_7_E = 7, + /* index 7 */ RADIO_CHANNEL_INDEX_7_NUMBER_8_E = 8, + /* index 8 */ RADIO_CHANNEL_INDEX_8_NUMBER_9_E = 9, + /* index 9 */ RADIO_CHANNEL_INDEX_9_NUMBER_10_E = 10, + /* index 10 */ RADIO_CHANNEL_INDEX_10_NUMBER_11_E = 11, + /* index 11 */ RADIO_CHANNEL_INDEX_11_NUMBER_12_E = 12, + /* index 12 */ RADIO_CHANNEL_INDEX_12_NUMBER_13_E = 13, + /* index 13 */ RADIO_CHANNEL_INDEX_13_NUMBER_14_E = 14, + + /*---------------------------------*/ + /* LOW_JAPAN_4_9_G_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + /* index 14 */ RADIO_CHANNEL_INDEX_14_NUMBER_J1_E = 16, + /* index 15 */ RADIO_CHANNEL_INDEX_15_NUMBER_J2_E = 12, + /* index 16 */ RADIO_CHANNEL_INDEX_16_NUMBER_J3_E = 8, + /* index 17 */ RADIO_CHANNEL_INDEX_17_NUMBER_J4_E = 4, + + /*---------------------------------*/ + /* MID_JAPAN_4_9_G_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + /* index 18 */ RADIO_CHANNEL_INDEX_18_NUMBER_J8_E = 8, + /* index 19 */ RADIO_CHANNEL_INDEX_19_NUMBER_J12_E = 12, + /* index 20 */ RADIO_CHANNEL_INDEX_20_NUMBER_J16_E = 16, + + /*----------------------------------*/ + /* HIGH_JAPAN_4_9_G_SUB_BAND_TYPE_E */ + /*----------------------------------*/ + /* index 21 */ RADIO_CHANNEL_INDEX_21_NUMBER_J34_E = 34, + /* index 22 */ RADIO_CHANNEL_INDEX_22_NUMBER_36_E = 36, + /* index 23 */ RADIO_CHANNEL_INDEX_23_NUMBER_J38_E = 38, + /* index 24 */ RADIO_CHANNEL_INDEX_24_NUMBER_40_E = 40, + /* index 25 */ RADIO_CHANNEL_INDEX_25_NUMBER_J42_E = 42, + /* index 26 */ RADIO_CHANNEL_INDEX_26_NUMBER_44_E = 44, + /* index 27 */ RADIO_CHANNEL_INDEX_27_NUMBER_J46_E = 46, + /* index 28 */ RADIO_CHANNEL_INDEX_28_NUMBER_48_E = 48, + + /*---------------------------------*/ + /* _5_G_FIRST_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + /* index 29 */ RADIO_CHANNEL_INDEX_29_NUMBER_52_E = 52, + /* index 30 */ RADIO_CHANNEL_INDEX_30_NUMBER_56_E = 56, + /* index 31 */ RADIO_CHANNEL_INDEX_31_ENUMBER_60_E = 60, + /* index 32 */ RADIO_CHANNEL_INDEX_32_ENUMBER_64_E = 64, + + /*---------------------------------*/ + /* _5_G_SECOND_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + /* index 33 */ RADIO_CHANNEL_INDEX_33_NUMBER_100_E = 100, + /* index 34 */ RADIO_CHANNEL_INDEX_34_NUMBER_104_E = 104, + /* index 35 */ RADIO_CHANNEL_INDEX_35_NUMBER_108_E = 108, + /* index 36 */ RADIO_CHANNEL_INDEX_36_NUMBER_112_E = 112, + /* index 37 */ RADIO_CHANNEL_INDEX_37_NUMBER_116_E = 116, + + /*---------------------------------*/ + /* _5_G_THIRD_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + /* index 38 */ RADIO_CHANNEL_INDEX_38_NUMBER_120_E = 120, + /* index 39 */ RADIO_CHANNEL_INDEX_39_NUMBER_124_E = 124, + /* index 40 */ RADIO_CHANNEL_INDEX_40_NUMBER_128_E = 128, + /* index 41 */ RADIO_CHANNEL_INDEX_41_NUMBER_132_E = 132, + /* index 42 */ RADIO_CHANNEL_INDEX_42_NUMBER_136_E = 136, + /* index 43 */ RADIO_CHANNEL_INDEX_43_NUMBER_140_E = 140, + + + /*---------------------------------*/ + /* _5_G_FOURTH_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + /* index 44 */ RADIO_CHANNEL_INDEX_44_NUMBER_149_E = 149, + /* index 45 */ RADIO_CHANNEL_INDEX_45_NUMBER_153_E = 153, + /* index 46 */ RADIO_CHANNEL_INDEX_46_NUMBER_157_E = 157, + /* index 47 */ RADIO_CHANNEL_INDEX_47_NUMBER_161_E = 161, + /* index 48 */ RADIO_CHANNEL_INDEX_48_NUMBER_165_E = 165 + +}RADIO_CHANNEL_NUMBER_ENM; + +/* Radio channels */ +typedef enum RADIO_CHANNEL_INDEX_ENMT +{ + FIRST_RADIO_CHANNEL_INDEX_E, +/*______________________________________*/ + + /*---------------------------------*/ + /* _2_4_G_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + FIRST_2_4_G_BAND_RADIO_CHANNEL_INDEX_E = FIRST_RADIO_CHANNEL_INDEX_E, /* 0 */ + FIRST_2_4_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = FIRST_2_4_G_BAND_RADIO_CHANNEL_INDEX_E, /* 0 */ + + /* Channels 0-13 indexes in the FW are 1-14 channels number in the RS */ + RADIO_CHANNEL_INDEX_0_E = FIRST_2_4_G_SUB_BAND_RADIO_CHANNEL_INDEX_E,/* 0 */ + RADIO_CHANNEL_INDEX_1_E, /* 1 */ + RADIO_CHANNEL_INDEX_2_E, /* 2 */ + RADIO_CHANNEL_INDEX_3_E, /* 3 */ + RADIO_CHANNEL_INDEX_4_E, /* 4 */ + RADIO_CHANNEL_INDEX_5_E, /* 5 */ + RADIO_CHANNEL_INDEX_6_E, /* 6 */ + RADIO_CHANNEL_INDEX_7_E, /* 7 */ + RADIO_CHANNEL_INDEX_8_E, /* 8 */ + RADIO_CHANNEL_INDEX_9_E, /* 9 */ + RADIO_CHANNEL_INDEX_10_E, /* 10 */ + RADIO_CHANNEL_INDEX_11_E, /* 11 */ + RADIO_CHANNEL_INDEX_12_E, /* 12 */ + RADIO_CHANNEL_INDEX_13_E, /* 13 */ + LAST_2_4_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_13_E, /* 13 */ + LAST_2_4_G_BAND_RADIO_CHANNEL_INDEX_E = LAST_2_4_G_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 13 */ + NUMBER_OF_2_4_G_CHANNEL_INDICES_E = LAST_2_4_G_BAND_RADIO_CHANNEL_INDEX_E, /* 13 */ + + /*---------------------------------*/ + /* LOW_JAPAN_4_9_G_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + FIRST_5_G_BAND_RADIO_CHANNEL_INDEX_E, /* 14 */ + FIRST_LOW_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = FIRST_5_G_BAND_RADIO_CHANNEL_INDEX_E, /* 14 */ + + /* Channels 14-17 indexes in the FW are J1-J4 channels number in the RS */ + RADIO_CHANNEL_INDEX_14_E = FIRST_LOW_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 14 */ + RADIO_CHANNEL_INDEX_15_E, /* 15 */ + RADIO_CHANNEL_INDEX_16_E, /* 16 */ + RADIO_CHANNEL_INDEX_17_E, /* 17 */ + LAST_LOW_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_17_E, /* 17 */ + + /*---------------------------------*/ + /* MID_JAPAN_4_9_G_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + FIRST_MID_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 18 */ + + /* Channel 18 index in the FW is channel number J8 in the RS */ + RADIO_CHANNEL_INDEX_18_E = FIRST_MID_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 18 */ + + /* Channel 19 index in the FW is channel number J12 in the RS */ + RADIO_CHANNEL_INDEX_19_E, /* 19 */ + + /* Channel 20 index in the FW is channel number J16 in the RS */ + RADIO_CHANNEL_INDEX_20_E, /* 20 */ + LAST_MID_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_20_E, /* 20 */ + + /*----------------------------------*/ + /* HIGH_JAPAN_4_9_G_SUB_BAND_TYPE_E */ + /*----------------------------------*/ + FIRST_HIGH_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 21 */ + + /* Channel 21 index in the FW is channel number J34 in the RS */ + RADIO_CHANNEL_INDEX_21_E = FIRST_HIGH_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 21 */ + + /* Channel 22 index in the FW is channel number 36 in the RS */ + RADIO_CHANNEL_INDEX_22_E, /* 22 */ + + /* Channel 23 index in the FW is channel number J38 in the RS */ + RADIO_CHANNEL_INDEX_23_E, /* 23 */ + + /* Channel 24 index in the FW is channel number 40 in the RS */ + RADIO_CHANNEL_INDEX_24_E, /* 24 */ + + /* Channel 25 index in the FW is channel number J42 in the RS */ + RADIO_CHANNEL_INDEX_25_E, /* 25 */ + + /* Channel 26 index in the FW is channel number 44 in the RS */ + RADIO_CHANNEL_INDEX_26_E, /* 26 */ + + /* Channel 27 index in the FW is channel number J46 in the RS */ + RADIO_CHANNEL_INDEX_27_E, /* 27 */ + + /* Channel 28 index in the FW is channel number 48 in the RS */ + RADIO_CHANNEL_INDEX_28_E, /* 28 */ + LAST_HIGH_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_28_E, /* 28 */ + LAST_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E = LAST_HIGH_JAPAN_4_9_G_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 28 */ + /*---------------------------------*/ + /* _5_G_FIRST_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + FIRST_5_G_FIRST_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 29 */ + + /* Channel 29 index in the FW is channel number 52 in the RS */ + RADIO_CHANNEL_INDEX_29_E = FIRST_5_G_FIRST_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 29 */ + + /* Channel 30 index in the FW is channel number 56 in the RS */ + RADIO_CHANNEL_INDEX_30_E, /* 30 */ + + /* Channel 31 index in the FW is channel number 60 in the RS */ + RADIO_CHANNEL_INDEX_31_E, /* 31 */ + + /* Channel 32 index in the FW is channel number 64 in the RS */ + RADIO_CHANNEL_INDEX_32_E, /* 32 */ + LAST_5_G_FIRST_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_32_E, /* 32 */ + + /*---------------------------------*/ + /* _5_G_SECOND_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + FIRST_5_G_SECOND_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 33 */ + + /* Channel 33 index in the FW is channel number 100 in the RS */ + RADIO_CHANNEL_INDEX_33_E = FIRST_5_G_SECOND_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 33 */ + + /* Channel 34 index in the FW is channel number 104 in the RS */ + RADIO_CHANNEL_INDEX_34_E, /* 34 */ + + /* Channel 35 index in the FW is channel number 108 in the RS */ + RADIO_CHANNEL_INDEX_35_E, /* 35 */ + + /* Channel 36 index in the FW is channel number 112 in the RS */ + RADIO_CHANNEL_INDEX_36_E, /* 36 */ + + /* Channel 37 index in the FW is channel number 116 in the RS */ + RADIO_CHANNEL_INDEX_37_E, /* 37 */ + LAST_5_G_SECOND_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_37_E, /* 37 */ + + /*---------------------------------*/ + /* _5_G_THIRD_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + FIRST_5_G_THIRD_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 38 */ + + /* Channel 38 index in the FW is channel number 120 in the RS */ + RADIO_CHANNEL_INDEX_38_E = FIRST_5_G_THIRD_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 38 */ + + /* Channel 39 index in the FW is channel number 124 in the RS */ + RADIO_CHANNEL_INDEX_39_E, /* 39 */ + + /* Channel 40 index in the FW in the FW is channel number 128 in the RS */ + RADIO_CHANNEL_INDEX_40_E, /* 40 */ + + /* Channel 41 index in the FW is channel number 132 in the RS */ + RADIO_CHANNEL_INDEX_41_E, /* 41 */ + + /* Channel 42 index in the FW is channel number 136 in the RS */ + RADIO_CHANNEL_INDEX_42_E, /* 42 */ + + /* Channel 43 index in the FW is channel number 140 in the RS */ + RADIO_CHANNEL_INDEX_43_E, /* 43 */ + LAST_5_G_THIRD_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_43_E, /* 43 */ + + /*---------------------------------*/ + /* _5_G_FOURTH_SUB_BAND_TYPE_E */ + /*---------------------------------*/ + FIRST_5_G_FOURTH_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 44 */ + + /* Channel 44 index in the FW is channel number 149 in the RS */ + RADIO_CHANNEL_INDEX_44_E = FIRST_5_G_FOURTH_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 44 */ + + /* Channel 45 index in the FW is channel number 153 in the RS */ + RADIO_CHANNEL_INDEX_45_E, /* 45 */ + + /* Channel 46 index in the FW is channel number 157 in the RS */ + RADIO_CHANNEL_INDEX_46_E, /* 46 */ + + /* Channel 47 index in the FW is channel number 161 in the RS */ + RADIO_CHANNEL_INDEX_47_E, /* 47 */ + + /* Channel 48 index in the FW is channel number 165 in the RS */ + RADIO_CHANNEL_INDEX_48_E, /* 48 */ + LAST_5_G_FOURTH_SUB_BAND_RADIO_CHANNEL_INDEX_E = RADIO_CHANNEL_INDEX_48_E, /* 48 */ + LAST_5_G_BAND_RADIO_CHANNEL_INDEX_E = LAST_5_G_FOURTH_SUB_BAND_RADIO_CHANNEL_INDEX_E, /* 48 */ +/*_______________________________________________*/ + + UNUSED_RADIO_CHANNEL_INDEX_E, /* 49 */ + NUMBER_OF_RADIO_CHANNEL_INDEXS_E = UNUSED_RADIO_CHANNEL_INDEX_E, /* 49 */ + LAST_RADIO_CHANNEL_INDEX_E = (NUMBER_OF_RADIO_CHANNEL_INDEXS_E - 1) /* 48 */ + +}RADIO_CHANNEL_INDEX_ENM; + +#define NUMBER_OF_2_4_G_CHANNELS (NUMBER_OF_2_4_G_CHANNEL_INDICES_E + 1) +#define NUMBER_OF_5G_CHANNELS (NUMBER_OF_RADIO_CHANNEL_INDEXS_E - NUMBER_OF_2_4_G_CHANNELS) + +typedef enum RADIO_RATE_GROUPS_ENMT +{ + FIRST_RATE_GROUP_E, +/*______________________________________*/ + + MCS7_RATE_GROUP_E = FIRST_RATE_GROUP_E, + _54_48_RATE_GROUP_E, /* band 4.9Ghz (Japan) low sub-band (J1-J4) */ + _36_24_RATE_GROUP_E, /* band 4.9Ghz (Japan) mid sub-band(J8,J12,J16) */ + _18_12_RATE_GROUP_E, /* band 4.9Ghz (Japan) high sub-band(J34,36,J38,40, J42, 44, J46,48) */ + _9_6_RATE_GROUP_E, /* band 5GHz 1st sub-band(52->64 in steps of 4) */ + _11b_RATE_GROUP_E, /* band 5GHz 2nd sub-band(100->116 in steps of 4) */ +/*_______________________________________________*/ + UNUSED_RATE_GROUPS_E, + NUMBER_OF_RATE_GROUPS_E = UNUSED_RATE_GROUPS_E, + LAST_RATE_GROUP_E = (NUMBER_OF_RATE_GROUPS_E - 1) + +}RADIO_RATE_GROUPS_ENM; + + +typedef enum +{ + RADIO_BAND_2_4_GHZ = 0, + RADIO_BAND_5_0_GHZ = 1, + RADIO_BAND_DUAL = 2, + RADIO_BAND_NUM_OF_BANDS = 2 + +} ERadioBand; + + +/****************************************************************************** + TTestCmdRunCalibration - Calibration manager message + + Note: +******************************************************************************/ + +typedef enum CALIBRATION_COMMANDS_ENMT +{ + /* RX */ + CM_space1_e, + CM_RX_IQ_MM_calibration_e, + CM_RX_IQ_MM_correction_upon_channel_change_e, + CM_RX_IQ_MM_correction_upon_temperature_change_e, + CM_RX_IQ_MM_duplicate_VGA_e, + CM_space2_e, + + CM_RX_analog_DC_Correction_calibration_e, + CM_RX_DC_AUX_cal_mode_e, + CM_RX_DC_AUX_normal_mode_e, + CM_space3_e, + + CM_RX_BIP_enter_mode_e, + CM_RX_BIP_perform_e, + CM_RX_BIP_exit_mode_e, + CM_space4_e, + + /* TX */ + CM_TX_power_detector_calibration_e, + CM_TX_power_detector_buffer_calibration_e, + CM_space5_e, + + CM_TX_LO_Leakage_calibration_e, + CM_TX_PPA_Steps_calibration_e, + CM_TX_CLPC_calibration_e, + CM_TX_IQ_MM_calibration_e, + CM_TX_BIP_calibration_e, + /* DRPw */ + CM_RX_TANK_TUNE_calibration_e, +/* CM_PD_BUFF_TUNE_calibration_e,*/ + CM_RX_DAC_TUNE_calibration_e, + CM_RX_IQMM_TUNE_calibration_e, + CM_RX_LPF_TUNE_calibration_e, + CM_TX_LPF_TUNE_calibration_e, + CM_TA_TUNE_calibration_e, + CM_TX_MIXERFREQ_calibration_e, + CM_RX_IF2GAIN_calibration_e, + CM_RTRIM_calibration_e, + CM_RX_LNAGAIN_calibration_e, + + CM_SMART_REFLEX_calibration_e, + CM_CHANNEL_RESPONSE_calibration_e + +}CALIBRATION_COMMANDS_ENM; + + +typedef enum CALIBRATIONS_ENMT +{ + FIRST_CALIBRATION_TYPE_E, +/*----------------------------------------------------------*/ + /**** GENERAL ****/ + DRPW_RFCALIBFXN_RXTXLPF_TYPE_E = FIRST_CALIBRATION_TYPE_E, + DRPW_TUNE_TYPE_E, /* TUNE will perform DCO_freq, AB/TB, KDCO, TDC_inverter */ + DRPW_RFCALIBFXN_RTRIM_TYPE_E, + /**** TX ****/ + CM_TX_LO_LEAKAGE_CALIBRATION_TYPE_E, + DRPW_RFCALIBFXN_TXMIXERFREQ_TYPE_E, + CM_TX_IQ_MM_CALIBRATION_TYPE_E, + /**** RX ****/ + DRPW_RFCALIBFXN_TA_TYPE_E, + DRPW_RFCALIBFXN_RXLNAGAIN_TYPE_E, + DRPW_RFCALIBFXN_RXIF2GAIN_TYPE_E, + DRPW_RFCALIBFXN_RXDAC_TYPE_E, + DRPW_RFCALIBFXN_LNATANK_TYPE_E, + RX_ANALOG_DC_CORRECTION_CALIBRATION_TYPE_E, + CM_RX_IQ_MM_CORRECTION_CALIBRATION_TYPE_E, + SMART_REFLEX_CALIBRATION_TYPE_E, + /* ... */ +/*----------------------------------------------------------*/ + NUMBER_OF_CALIBRATIONS_E, + LAST_CALIBRATION_TYPE_E = (NUMBER_OF_CALIBRATIONS_E - 1) +} CALIBRATIONS_ENMT; + +/****************************************************************************** + + Name: ACX_CAL_ASSESSMENT + Type: Configuration + Access: Write Only + Length: 4 + Note: OBSOLETE !!! (DO_CALIBRATION_IN_DRIVER is not defined) + +******************************************************************************/ +typedef enum +{ + RUNTIME_CALIBRATION_NOT_NEEDED = 1, + RUNTIME_CALIBRATION_NEEDED = 2, + RFPLL_CALIBRATION_NEEDED = 3, + MAX_RUNTIME_CALIBRATION_OPTIONS = 0x7FFFFFFF /* force this enum to be uint32 */ +} RadioRuntimeCalState_enum; + + +#ifdef HOST_COMPILE +typedef uint32 RadioRuntimeCalState_e; +#else +typedef RadioRuntimeCalState_enum RadioRuntimeCalState_e; +#endif + +/************************************************************************/ +/* */ +/* Commands section */ +/* */ +/************************************************************************/ +typedef struct PltGainGet_t +{ + uint8 TxGain; /*Total TX chain gain according to the current setting*/ + uint8 TxUpperBound; /*the max gain setting allowed*/ + uint8 TxLowerBound; /*the min gain setting allowed*/ + uint8 padding; /* padding to 32 bit */ +}PltGainGet_t; + +typedef struct +{ + uint8 refTxPower; + uint8 band; + uint8 channel; + uint8 padding; +}RadioPltTxCalibrationRequest_t; + + +/****************************************************************************** + +Name: PowerLevelTable_t +Desc: Retrieve Maximum Dbm per power level and sub-band. +Type: Configuration +Access: Read Only +Length: 20 + +******************************************************************************/ +typedef struct +{ + uint8 txPowerTable[NUMBER_OF_SUB_BANDS_E][NUM_OF_POWER_LEVEL]; /* Maximun Dbm in Dbm/10 units */ +} PowerLevelTable_t; + +/* DORONS [4/27/2008] testing the 2nd auxiliary function */ +typedef struct +{ + int8 desiredTone; + int8 desiredGain; + uint8 mode; + uint8 padding; +} TestToneParams_t; + +typedef enum +{ + ePM_AWAKE, + ePM_LISTEN_ENTER, + ePM_LISTEN_EXIT, + ePM_POWER_DOWN_ENTER, + ePM_POWER_DOWN_EXIT, + ePM_ELP_ENTER, + ePM_ELP_EXIT, + ePM_CORTEX_GATE_ENTER, + ePM_CORTEX_GATE_EXIT +}PowerMode; + +typedef struct + +{ + uint8 iPowerMode; /* Awake - 0 */ + /* Enter Listen Mode - 1 */ + /* Exit Listen Mode - 2 */ + /* Enter Power Down Mode - 3 */ + /* Exit Power Down Mode - 4 */ + /* ELP Mode - 5 */ + /* Enter Cortex Gate Mode - 6 */ + /* Exit Cortex Gate Mode - 7 */ + uint8 padding[3]; +}TTestCmdPowerMode; + +/************************************************************************ + PLT DBS + To modify these DBs Latter - according to Architecture Document, + and move it to public_commands.h +************************************************************************/ + +/****************************************************************************** + + ID: CMD_TEST + Desc: The TEST command can be issued immediately after the firmware has + been downloaded, with no further configuration of the WiLink required. + Full initialization of the WiLink is not required to invoke the TEST + command and perform the radio test function. + After testing, the system must be reset. + Test parameters can be modified while a test is executing. + For instance, the host program can change the channel without resetting + the system. + + Params: TestCmdID_enum - see below. + The returned values are copied to the cmd/sts MB replacing the command + (similar to the interrogate mechanism). + +******************************************************************************/ +/* Efil - when adding parameter here fill the switch case sentence in function + "cmdBld_CmdIeTest" in module "TWD\Ctrl\CmdBldCmdIE.c" */ +typedef enum +{ +/* 0x01 */ TEST_CMD_PD_BUFFER_CAL = 0x1, /* TX PLT */ +/* 0x02 */ TEST_CMD_P2G_CAL, /* TX BiP */ +/* 0x03 */ TEST_CMD_RX_PLT_ENTER, +/* 0x04 */ TEST_CMD_RX_PLT_CAL, /* RSSI Cal */ +/* 0x05 */ TEST_CMD_RX_PLT_EXIT, +/* 0x06 */ TEST_CMD_RX_PLT_GET, +/* 0x07 */ TEST_CMD_FCC, /* Continuous TX */ +/* 0x08 */ TEST_CMD_TELEC, /* Carrier wave in a specific channel and band */ +/* 0x09 */ TEST_CMD_STOP_TX, /* Stop FCC or TELEC */ +/* 0x0A */ TEST_CMD_PLT_TEMPLATE, /* define Template for TX */ +/* 0x0B */ TEST_CMD_PLT_GAIN_ADJUST, +/* 0x0C */ TEST_CMD_PLT_GAIN_GET, +/* 0x0D */ TEST_CMD_CHANNEL_TUNE, +/* 0x0E */ TEST_CMD_FREE_RUN_RSSI, /* Free running RSSI measurement */ +/* 0x0F */ TEST_CMD_DEBUG, /* test command for debug using the struct: */ +/* 0x10 */ TEST_CMD_CLPC_COMMANDS, +/* 0x11 */ RESERVED_4, +/* 0x12 */ TEST_CMD_RX_STAT_STOP, +/* 0x13 */ TEST_CMD_RX_STAT_START, +/* 0x14 */ TEST_CMD_RX_STAT_RESET, +/* 0x15 */ TEST_CMD_RX_STAT_GET, +/* 0x16 */ TEST_CMD_LOOPBACK_START, /* for FW Test Debug */ +/* 0x17 */ TEST_CMD_LOOPBACK_STOP, /* for FW Test Debug */ +/* 0x18 */ TEST_CMD_GET_FW_VERSIONS, +/* 0x19 */ TEST_CMD_INI_FILE_RADIO_PARAM, +/* 0x1A */ TEST_CMD_RUN_CALIBRATION_TYPE, +/* 0x1B */ TEST_CMD_TX_GAIN_ADJUST, +/* 0x1C */ TEST_CMD_UPDATE_PD_BUFFER_ERRORS, +/* 0x1D */ TEST_CMD_UPDATE_PD_REFERENCE_POINT, +/* 0x1E */ TEST_CMD_INI_FILE_GENERAL_PARAM, +/* 0x1F */ TEST_CMD_SET_EFUSE, +/* 0x20 */ TEST_CMD_GET_EFUSE, +/* DORONS [4/27/2008] testing the 2nd auxiliary function */ +/*0x21 */ TEST_CMD_TEST_TONE, +/* 0x22 */ TEST_CMD_POWER_MODE, +/* 0x23 */ TEST_CMD_SMART_REFLEX, +/* 0x24 */ TEST_CMD_CHANNEL_RESPONSE, +/* 0x25 */ TEST_CMD_DCO_ITRIM_FEATURE, + + MAX_TEST_CMD_ID = 0xFF /* Dummy - must be last!!! (make sure that Enum variables are type of int) */ + +} TestCmdID_enum; + +/************************************************************************/ +/* radio test result information struct */ +/************************************************************************/ +#define DEFAULT_MULTIPLE_ACTIVATION_TIME 5 + +#define MULTIPLE_ACTIVATION_TIME 1000000 + +#define DEFAULT_RSMODE_CALIBRATION_INTERVAL (DEFAULT_MULTIPLE_ACTIVATION_TIME * MULTIPLE_ACTIVATION_TIME) /* RadioScope calibration interval - 5 sec */ + +typedef enum +{ + eCMD_GET_CALIBRAIONS_INFO, + eCMD_GET_CLPC_VBAT_TEMPERATURE_INFO +}TTestCmdDeubug_enum; + +/* struct of calibration status, indication if RM performed calibration */ +typedef struct +{ + uint8 operateCalibration; /* RM performed calibration */ + int8 calibrationsResult[NUMBER_OF_CALIBRATIONS_E]; /* Calibrations status */ +}CalibrationInfo; + +/* struct of CLPC output, temperature, battery voltage */ +typedef struct +{ + int ClpcOffset[NUMBER_OF_RATE_GROUPS_E]; /* CLPC */ + int8 CurrentTemperature; /* current temperature in Celsius */ + uint16 CurrentVbat; /* VBat */ + uint8 enableCalibration; /* enableCalibration */ + +}CLPCTempratureVbatStruct; + +typedef struct +{ + int16 oRadioStatus; + uint8 iCommand; /* command to check */ + + CalibrationInfo oCalibInfo; /* for eCMD_GET_CALIBRAIONS_INFO */ + CLPCTempratureVbatStruct oCLPCTempVbatInfo; /* for eCMD_GET_CLPC_VBAT_TEMPERATURE_INFO */ + + uint8 padding[3]; + +}TTestCmdDebug; + +/************************************************************************/ +/* end radio test result information struct */ +/************************************************************************/ + + +#ifdef HOST_COMPILE +typedef uint8 TestCmdID_e; +#else +typedef TestCmdID_enum TestCmdID_e; +#endif + +/******************************************************************************/ +typedef enum +{ + TEST_MODE_HOST_ORIGINATED_DATA = 0x00, + TEST_MODE_FIXED_SEQ_NUMBER = 0x00, + TEST_MODE_FW_ORIGINATED_DATA = 0x01, + TEST_MODE_RANDOM_DATA = 0x05, + TEST_MODE_ZOZO_DATA = 0x09, + TEST_MODE_FILLING_PATERN_MASK = 0x0F, + TEST_MODE_DELAY_REQUIRED = 0x10, + TEST_MODE_DISABLE_SRCRAMBLING_FLAG = 0x20 +}TestModeCtrlTypes_e; + +#ifdef HOST_COMPILE +typedef uint8 FccTestType_e; +#else +typedef TestModeCtrlTypes_e FccTestType_e; +#endif + +/******************************************************************************/ +#define TEST_SEQ_NUM_MODE_FIXED (0) +#define TEST_SEQ_NUM_MODE_INCREMENTED (1) + +/******************************************************************************/ +/* DORONS [4/23/2008] RX Tone activation for DRPw cals */ +#define ACTIVE_TONE_CAL_MODE (0) +#define ACTIVE_TONE_NORM_MODE (1) +/****************************************************************************** + + TestCmdId : TEST_CMD_FCC - Tx continuous test + + Description: Continuous transmit series of numbers with a valid MAC header + as was received from driver. + However there is no 802.11 air access compliance. + + Params: PERTxCfg_t fcc - see below. + +******************************************************************************/ +#define NUM_OF_MAC_ADDR_ELEMENTS 6 +typedef struct PERTxCfg_t +{ + /*input parameters*/ + uint32 numFrames; /* number of frams to transmit, 0 = endless*/ + uint32 interFrameGap; /* time gap in uSec */ + uint32 seqNumMode; /* Fixed / Incremented */ + uint32 frameBodySize; /* length of Mac Payload */ + uint8 channel; /*channel number*/ + uint8 dataRate; /* MBps 1,2,11,22,... 54 */ + uint8 modPreamble; /* CTL_PREAMBLE 0x01 */ + uint8 band; /* {BAND_SELECT_24GHZ 0x00 | BAND_SELECT_5GHZ 0x01} */ + uint8 modulation; /* {PBCC_MODULATION_MASK |OFDM_MODULATION_MASK }*/ + FccTestType_e testModeCtrl; + uint8 dest[NUM_OF_MAC_ADDR_ELEMENTS]; /* set to hard codded default {0,0,0xde,0xad,0xbe,0xef}; */ +} PERTxCfg_t; + +/****************************************************************************** + + TestCmdId : TEST_CMD_SET_EFUSE, TEST_CMD_GET_EFUSE + + Description: Get and set the eFuse parameters + +******************************************************************************/ +typedef enum EFUSE_PARAMETER_TYPE_ENMT +{ + EFUSE_FIRST_PARAMETER_E, +/*_______________________________________________*/ + + /* RX PARAMETERS */ + EFUSE_FIRST_RX_PARAMETER_E = EFUSE_FIRST_PARAMETER_E, + RX_BIP_MAX_GAIN_ERROR_BAND_B_E = EFUSE_FIRST_RX_PARAMETER_E, /* MaxGainErrBandB */ + + RX_BIP_MAX_GAIN_ERROR_J_LOW_MID_E, /* MaxGainErrJLowMid */ + RX_BIP_MAX_GAIN_ERROR_J_HIGH_E, /* MaxGainErrJHigh */ + + RX_BIP_MAX_GAIN_ERROR_5G_1ST_E, /* MaxGainErr5G1st */ + RX_BIP_MAX_GAIN_ERROR_5G_2ND_E, /* MaxGainErr5G2nd */ + RX_BIP_MAX_GAIN_ERROR_5G_3RD_E, /* MaxGainErr5G3rd */ + RX_BIP_MAX_GAIN_ERROR_5G_4TH_E, /* MaxGainErr5G4th */ + + RX_BIP_LNA_STEP_CORR_BAND_B_4TO3_E, /* LnaStepCorrBandB (Step 4To3) */ + RX_BIP_LNA_STEP_CORR_BAND_B_3TO2_E, /* LnaStepCorrBandB (Step 3To2) */ + RX_BIP_LNA_STEP_CORR_BAND_B_2TO1_E, /* LnaStepCorrBandB (Step 2To1) */ + RX_BIP_LNA_STEP_CORR_BAND_B_1TO0_E, /* LnaStepCorrBandB (Step 1To0) */ + + RX_BIP_LNA_STEP_CORR_BAND_A_4TO3_E, /* LnaStepCorrBandA (Step 4To3) */ + RX_BIP_LNA_STEP_CORR_BAND_A_3TO2_E, /* LnaStepCorrBandA (Step 3To2) */ + RX_BIP_LNA_STEP_CORR_BAND_A_2TO1_E, /* LnaStepCorrBandA (Step 2To1) */ + RX_BIP_LNA_STEP_CORR_BAND_A_1TO0_E, /* LnaStepCorrBandA (Step 1To0) */ + + RX_BIP_TA_STEP_CORR_BAND_B_2TO1_E, /* TaStepCorrBandB (Step 2To1) */ + RX_BIP_TA_STEP_CORR_BAND_B_1TO0_E, /* TaStepCorrBandB (Step 1To0) */ + + RX_BIP_TA_STEP_CORR_BAND_A_2TO1_E, /* TaStepCorrBandA (Step 2To1) */ + RX_BIP_TA_STEP_CORR_BAND_A_1TO0_E, /* TaStepCorrBandA (Step 1To0) */ + + NUMBER_OF_RX_BIP_EFUSE_PARAMETERS_E, /* Number of RX parameters */ + + /* TX PARAMETERS */ + TX_BIP_PD_BUFFER_GAIN_ERROR_E = NUMBER_OF_RX_BIP_EFUSE_PARAMETERS_E,/* PD_Buffer_Gain_error */ + TX_BIP_PD_BUFFER_VBIAS_ERROR_E, /* PD_Buffer_Vbias_error */ + +/*_______________________________________________*/ + EFUSE_NUMBER_OF_PARAMETERS_E, + EFUSE_LAST_PARAMETER_E = (EFUSE_NUMBER_OF_PARAMETERS_E - 1) + +}EFUSE_PARAMETER_TYPE_ENM; + +typedef struct +{ + int8 EfuseParameters[EFUSE_NUMBER_OF_PARAMETERS_E]; + + int16 oRadioStatus; + int8 padding[3]; /* Align to 32bit */ + +} EfuseParameters_t; + +/******************************************************************************/ + +/****************************************************************************** + + TestCmdId : TEST_CMD_PLT_GAIN_GET + + Description: Retrieves the TX chain gain settings. + + Params: PltGainGet_t gainGet - see public_radio.h + + +******************************************************************************/ + +/****************************************************************************** + + TestCmdId: TEST_CMD_PLT_GET_NVS_UPDATE_BUFFER + + Description: This PLT function provides the all information required by + the upper driver in order to update the NVS image. + It received a parameter defining the type of update + information required and provides an array of elements + defining the data bytes to be written to the NVS image + and the byte offset in which they should be written. + Params: PltNvsResultsBuffer_t nvsUpdateBuffer - see public_radio.h + + +*****************************************************************************/ + + +/****************************************************************************** + + TestCmdId : TEST_CMD_PLT_GAIN_ADJUST + + Description: retrieves the TX chain gain settings. + + Params: int32 txGainAdjust + +*****************************************************************************/ + +/****************************************************************************** + + TestCmdId : TEST_CMD_PLT_RX_CALIBRATION + + Description: Used as part of the RX calibration procedure, call this + function for every calibration channel. + The response for that function indicates only that command had been received by th FW, + and not that the calibration procedure had been finished. + The upper layer need to wait amount of ((numOfSamples*intervalBetweenSamplesUsec). + To make sure that the RX calibration completed. before calling to the next command. + + Params: PltRxCalibrationRequest_t rxCalibration + + ******************************************************************************/ + +typedef struct +{ + uint8 iBand; + uint8 iChannel; + int16 oRadioStatus; +} TTestCmdChannel; + +typedef struct TTestCmdPdBufferCalStruct +{ + uint8 iGain; + uint8 iVBias; + int16 oAdcCodeword; + int16 oRadioStatus; + uint8 Padding[2]; +} TTestCmdPdBufferCal; + +typedef struct +{ + int8 vBIASerror; + int8 gainError; + uint8 padding[2]; +}TTestCmdPdBufferErrors; + +typedef struct +{ + int32 iReferencePointPower; + int32 iReferencePointDetectorValue; + uint8 isubBand; + uint8 padding[3]; +}TTestCmdUpdateReferncePoint; + +typedef struct +{ + int16 oRadioStatus; + uint8 iCalibratonType; + uint8 Padding; + +} TTestCmdRunCalibration; + +typedef struct +{ + uint8 DCOItrimONOff; + uint8 padding[3]; +}TTestCmdDCOItrimOnOff; + +typedef enum +{ + eDISABLE_LIMIT_POWER, + eENABLE_LIMIT_POWER +}UseIniFileLimitPower; + +typedef struct +{ + int32 iTxGainValue; + int16 oRadioStatus; + uint8 iUseinifilelimitPower; + uint8 padding; +} TTxGainAdjust; + +/* TXPWR_CFG0__VGA_STEP_GAIN_E */ +typedef enum TXPWR_CFG0__VGA_STEP_ENMT +{ + TXPWR_CFG0__VGA_STEP__FIRST_E, +/*_______________________________________________*/ + TXPWR_CFG0__VGA_STEP__MINIMUM_E = TXPWR_CFG0__VGA_STEP__FIRST_E, + TXPWR_CFG0__VGA_STEP__0_E = TXPWR_CFG0__VGA_STEP__MINIMUM_E, + TXPWR_CFG0__VGA_STEP__1_E, + TXPWR_CFG0__VGA_STEP__2_E, + TXPWR_CFG0__VGA_STEP__3_E, + TXPWR_CFG0__VGA_STEP__4_E, + TXPWR_CFG0__VGA_STEP__MAXIMUM_E = TXPWR_CFG0__VGA_STEP__4_E, +/*_______________________________________________*/ + TXPWR_CFG0__VGA_STEP__NUMBER_OF_STEPS_E, + TXPWR_CFG0__VGA_STEP__LAST_E = (TXPWR_CFG0__VGA_STEP__NUMBER_OF_STEPS_E - 1) + +} TXPWR_CFG0__VGA_STEP_ENM; + +/****************************************************************************** + + Name: ACX_PLT_NVS_BUFFER_UPDATE + TestCmdId: TEST_CMD_PLT_GET_NVS_UPDATE_BUFFER + Description: This PLT function provides the all information required by + the upper driver in order to update the NVS image. + It received a parameter defining the type of update + information required and provides an array of elements defining + the data bytes to be written to the NVS image and the byte + offset in which they should be written. + Type: PLT + Access: Read Only + Length: 420 + +******************************************************************************/ + +/* default efuse value */ +#define DEFAULT_EFUSE_VALUE 0 + +/* Default hard-coded power to gain offsets (these values will be overridden by NVS) */ +#define DB_FACTOR 1000 /* factor because we can't use float */ + +/* TX BIP default parameters */ +#define CALIBRATION_STEP_SIZE 1000 +#define CALIBRATION_POWER_HIGHER_RANGE 22000 +#define CALIBRATION_POWER_LOWER_RANGE (-3000) + +#define FIRST_PD_CURVE_TO_SET_2_OCTET (10 * CALIBRATION_STEP_SIZE)/* dBm */ + +#define SIZE_OF_POWER_DETECTOR_TABLE ((((CALIBRATION_POWER_HIGHER_RANGE) - (CALIBRATION_POWER_LOWER_RANGE))\ + / (CALIBRATION_STEP_SIZE)) + 1) + +/* default PPA steps value */ +#define DEFAULT_PPA_STEP_VALUE (-6000) + +#define P2G_TABLE_TO_NVS (-1) * 8 / DB_FACTOR + +#define DEF_2_4_G_SUB_BAND_P2G_OFFSET (-25000) +#define DEF_LOW_JAPAN_4_9_G_SUB_BAND_P2G_OFFSET (-25*DB_FACTOR) +#define DEF_MID_JAPAN_4_9_G_SUB_BAND_OFFSET (-25*DB_FACTOR) +#define DEF_HIGH_JAPAN_4_9_G_SUB_BAND_OFFSET (-25*DB_FACTOR) +#define DEF_5_G_FIRST_SUB_BAND_P2G_OFFSET (-25*DB_FACTOR) +#define DEF_5_G_SECOND_SUB_BAND_P2G_OFFSET (-25*DB_FACTOR) +#define DEF_5_G_THIRD_SUB_BAND_P2G_OFFSET (-25*DB_FACTOR) +#define DEF_5_G_FOURTH_SUB_BAND_P2G_OFFSET (-25*DB_FACTOR) + +#define START_TYPE_INDEX_IN_TLV 0 +#define TLV_TYPE_LENGTH 1 +#define START_LENGTH_INDEX (START_TYPE_INDEX_IN_TLV + TLV_TYPE_LENGTH) /* 1 */ +#define TLV_LENGTH_LENGTH 2 +#define START_PARAM_INDEX (START_LENGTH_INDEX + TLV_LENGTH_LENGTH) /* 3 */ + +#define NVS_VERSION_1 1 +#define NVS_VERSION_2 2 + +#define NVS_MAC_FIRST_LENGTH_INDEX 0 +#define NVS_MAC_FIRST_LENGHT_VALUE 1 + +#define NVS_MAC_L_ADDRESS_INDEX ((NVS_MAC_FIRST_LENGTH_INDEX) + 1) /* 1*/ +#define NVS_MAC_L_ADDRESS_LENGTH 2 + +#define NVS_MAC_L_VALUE_INDEX ((NVS_MAC_L_ADDRESS_INDEX) + (NVS_MAC_L_ADDRESS_LENGTH)) /* 3 */ +#define NVS_MAC_L_VALUE_LENGTH 4 + +#define NVS_MAC_SECONDE_LENGTH_INDEX ((NVS_MAC_L_VALUE_INDEX) + 4) /* 7 */ +#define NVS_MAC_SECONDE_LENGHT_VALUE 1 + +#define NVS_MAC_H_ADDRESS_INDEX ((NVS_MAC_SECONDE_LENGTH_INDEX) + 1) /* 8*/ +#define NVS_MAC_H_ADDRESS_LENGTH 2 + +#define NVS_MAC_H_VALUE_INDEX ((NVS_MAC_H_ADDRESS_INDEX) + (NVS_MAC_H_ADDRESS_LENGTH)) /* 10 */ +#define NVS_MAC_H_VALUE_LENGTH 4 + +#define NVS_END_BURST_TRANSACTION_INDEX ((NVS_MAC_H_VALUE_INDEX) + (NVS_MAC_H_VALUE_LENGTH)) /* 14 */ +#define NVS_END_BURST_TRANSACTION_VALUE 0 +#define NVS_END_BURST_TRANSACTION_LENGTH 7 + +#define NVS_ALING_TLV_START_ADDRESS_INDEX ((NVS_END_BURST_TRANSACTION_INDEX) + (NVS_END_BURST_TRANSACTION_LENGTH)) /* 21 */ +#define NVS_ALING_TLV_START_ADDRESS_VALUE 0 +#define NVS_ALING_TLV_START_ADDRESS_LENGTH 3 + + +/* NVS pre TLV length */ +#define NVS_PRE_PARAMETERS_LENGTH ((NVS_ALING_TLV_START_ADDRESS_INDEX) + (NVS_ALING_TLV_START_ADDRESS_LENGTH)) /* 24 */ + +/* NVS P2G table */ +#define NVS_TX_P2G_TABLE_LENGTH ((NUMBER_OF_SUB_BANDS_E) * 1 /* byte */) /* 8 */ + +/* NVS PPA table */ +#define NVS_TX_PPA_STEPS_TABLE_LENGTH ((NUMBER_OF_SUB_BANDS_E) * \ + ((TXPWR_CFG0__VGA_STEP__NUMBER_OF_STEPS_E) \ + - 1) * 1 /* byte */) /* 32 */ + +/* NVS version 1 TX PD curve table length */ +#define NVS_TX_PD_TABLE_LENGTH_NVS_V1 (1 /* byte to set size of table */ + \ + ((NUMBER_OF_SUB_BANDS_E) * (2 /* 1 byte offset, 1 byte low range */ + \ + 2 /* first index in table */ + (((SIZE_OF_POWER_DETECTOR_TABLE) - 1) * 1 /* 1 byte */)))) /* 233 */ + +/* NVS version 2 TX PD curve table length */ +#define NVS_TX_PD_TABLE_LENGTH_NVS_V2 ((NUMBER_OF_SUB_BANDS_E) * (12 /* 12index of one byte -2 dBm - 9dBm */ +\ + 28 /* 14 indexes of 2 byte -3dBm, 10dBm - 22 dBm */)) /* 320 */ + +/* NVS version 1 TX parameters Length */ +#define NVS_TX_PARAM_LENGTH_NVS_V1 ((NVS_TX_P2G_TABLE_LENGTH) + (NVS_TX_PPA_STEPS_TABLE_LENGTH) +\ + (NVS_TX_PD_TABLE_LENGTH_NVS_V1)) /* 273 */ + +/* NVS version 2 TX parameters Length */ +#define NVS_TX_PARAM_LENGTH_NVS_V2 ((NVS_TX_P2G_TABLE_LENGTH) + (NVS_TX_PPA_STEPS_TABLE_LENGTH) +\ + (NVS_TX_PD_TABLE_LENGTH_NVS_V2) +\ + (NUMBER_OF_RADIO_CHANNEL_INDEXS_E /* for Per Channel power Gain Offset table */)) /* 409 */ + +/* NVS TX version */ +#define NVS_TX_PARAM_LENGTH NVS_TX_PARAM_LENGTH_NVS_V2 + +/* NVS RX version */ +#define NVS_RX_PARAM_LENGTH NUMBER_OF_RX_BIP_EFUSE_PARAMETERS_E /* 19 */ + +/* NVS version parameter length */ +#define NVS_VERSION_PARAMETER_LENGTH 3 + +/* NVS max length */ +#define NVS_TOTAL_LENGTH 500 /* original ((NVS_TOTAL_LENGTH) + 4 - ((NVS_TOTAL_LENGTH) % 4)) */ + +/* TLV max length */ +#define MAX_TLV_LENGTH NVS_TOTAL_LENGTH + +#define MAX_NVS_VERSION_LENGTH 12 + +/* type to set in the NVS for each mode of work */ +typedef enum +{ + eNVS_VERSION = 0xaa, + eNVS_RADIO_TX_PARAMETERS = 1, + eNVS_RADIO_RX_PARAMETERS = 2, + + eNVS_RADIO_INI = 16, + + + eNVS_NON_FILE = 0xFE, + + /* last TLV type */ + eTLV_LAST = 0xFF +}NVSType; + +/* type to set parameter type buffers for each mode of work */ +typedef enum +{ + eFIRST_RADIO_TYPE_PARAMETERS_INFO, /* 0 */ + eNVS_RADIO_TX_TYPE_PARAMETERS_INFO = eFIRST_RADIO_TYPE_PARAMETERS_INFO, /* 0 */ + eNVS_RADIO_RX_TYPE_PARAMETERS_INFO, /* 1 */ + eLAST_RADIO_TYPE_PARAMETERS_INFO = eNVS_RADIO_RX_TYPE_PARAMETERS_INFO, /* 1 */ + UNUSED_RADIO_TYPE_PARAMETERS_INFO, /* 2 */ + eNUMBER_RADIO_TYPE_PARAMETERS_INFO = UNUSED_RADIO_TYPE_PARAMETERS_INFO, /* 2 */ + LAST_RADIO_TYPE_PARAMETERS_INFO = (eNUMBER_RADIO_TYPE_PARAMETERS_INFO - 1) /* 1 */ +}NVSTypeInfo; + + +typedef enum +{ + eCURRENT_SUB_BAND, + eALL_SUB_BANDS +}TxBipCurrentAllSubBand; + +typedef struct +{ + uint16 Length; /* TLV length in bytes */ + uint8 Buffer[MAX_TLV_LENGTH]; /* TLV buffer content to be burned */ + uint8 Type; /* TLV Type Index */ + uint8 padding; +}TNvsStruct; + +typedef struct +{ + uint32 oNVSVersion; + TNvsStruct oNvsStruct; /* output (P2G array) */ + int16 oRadioStatus; + uint8 iSubBandMask; /* 7 sub-band bit mask (asserted bit - calibration required) */ + uint8 Padding; +} TTestCmdP2GCal; + +typedef struct +{ + int16 oRadioStatus; + uint16 Pad; + uint32 iDelay; /* between packets (usec) */ + uint32 iRate; /* 1MBPS = 0x00000001, + 2MBPS = 0x00000002, + 5.5MBPS = 0x00000004, + 6MBPS = 0x00000008, + 9MBPS = 0x00000010, + 11MBPS = 0x00000020, + 12MBPS = 0x00000040, + 18MBPS = 0x00000080, + 24MBPS = 0x00000200, + 36MBPS = 0x00000400, + 48MBPS = 0x00000800, + 54MBPS = 0x00001000, + MCS_0 = 0x00002000, + MCS_1 = 0x00004000, + MCS_2 = 0x00008000, + MCS_3 = 0x00010000, + MCS_4 = 0x00020000, + MCS_5 = 0x00040000, + MCS_6 = 0x00080000, + MCS_7 = 0x00100000 */ + uint16 iSize; /* size of packet (bytes) */ + uint16 iAmount; /* in case of multiple (# of packets) */ + int32 iPower; /* upper power limit (dBm) */ + uint16 iSeed; + uint8 iPacketMode; /* single, multiple, InfiniteLength, Continuous, FCC */ + uint8 iDcfOnOff; /* use DCF access (1) */ + uint8 iGI; /* Guard Interval: long:800ns (0), short:400ns (1) */ + uint8 iPreamble; /* long (0), short (1), OFDM (4), GF (7), Mixed (6) */ + uint8 iType; /* Data (0), Ack (1), Probe-request(2), Random (3), User-defined (4), PER (5) */ + uint8 iScrambler; /* Off (0), On (1) */ + uint8 iEnableCLPC; /* range 0-100. 0 - disable calibration / + range 1-99 - enable Cal asses periodic time, every step is 200msecond + periodic of cal assess for example: 1.2 second put the value 6. + if the value is out of range it will be change to 25 represent + 5 second of cal assess periodical */ + uint8 iSeqNumMode; /* Fixed sequence number (0), incremental (1) - used for PER test only */ + TMacAddr iSrcMacAddr; /* Source address (BSSID) - used for PER test only */ + TMacAddr iDstMacAddr; /* Destination address - used for PER test only */ + +} TPacketParam; + +typedef struct +{ + int16 oRadioStatus; + uint16 Pad; + int32 iPower; + uint8 iToneType; + uint8 iPpaStep; + uint8 iToneNumberSingleTones; + uint8 iToneNumberTwoTones; + uint8 iUseDigitalDC; + uint8 iInvert; + uint8 iElevenNSpan; + uint8 iDigitalDC; + uint8 iAnalogDCFine; + uint8 iAnalogDCCoarse; +} TToneParam; + +typedef struct +{ + uint16 bufferOffset; + uint16 bufferLength; + int16 oRadioStatus; + int8 buffer[TX_TEMPLATE_MAX_BUF_LEN]; + uint8 padding[2]; +} TTxTemplate; + +typedef enum +{ + eDISABLE_CLPC, + eENABLE_CLPC, + eRESET_CLPC_TABLES, + eINIDCATE_CLPC_ACTIVATION_TIME, + eENABLE_CALIBRATIAONS, + eDISABLE_CALIBRATIAONS +}CLPCCommands; + +typedef struct +{ + int16 oStatus; + uint8 iCLPCActivationTime; /* range 0-100. 0 - disable calibration / + range 1-99 - enable Cal asses periodic time, every step is 200msecond + periodic of cal assess for example: 1.2 second put the value 6. + if the value is out of range it will be change to 25 represent + 5 second of cal assess periodical */ + uint8 iCLPCCommands; +}TTestCmdCLPCCommands; + + +/************************************************************************ + PLT DBS + Theses DBs were moved from the TWDExternalIf.h because of + redundency. +************************************************************************/ +typedef struct +{ + uint8 oAbsoluteGain; /* Per Sub-Band (output) */ + uint8 oLNASteps[RX_PLT_LNA_STEPS_BUF_LEN]; /* 4 steps per Band (output) */ + uint8 oTASteps[RX_PLT_TA_STEPS_BUF_LEN]; /* 2 steps per Band (output) */ + uint8 Padding; +} TTestCmdRxPlt; + +typedef struct +{ + uint32 ReceivedValidPacketsNumber; + uint32 ReceivedFcsErrorPacketsNumber; + uint32 ReceivedPlcpErrorPacketsNumber; + uint32 SeqNumMissCount; /* For PER calculation */ + int16 AverageSnr; + int16 AverageRssi; + int16 AverageEvm; + uint8 Padding[2]; +} RxPathStatistics_t; + +typedef struct +{ + uint16 Length; + uint16 EVM; + uint16 RSSI; + uint16 FrequencyDelta; + uint16 Flags; + int8 Type; + uint8 Rate; + uint8 Noise; + uint8 AgcGain; + uint8 Padding[2]; +} RxPacketStatistics_t; + +#define RX_STAT_PACKETS_PER_MESSAGE (20) +typedef struct +{ + RxPathStatistics_t oRxPathStatistics; + uint32 oBasePacketId; + uint32 ioNumberOfPackets; /* input/output: number of following packets */ + uint32 oNumberOfMissedPackets; /* number of following packet statistic entries that were dropped */ + /*RxPacketStatistics_t RxPacketStatistics[RX_STAT_PACKETS_PER_MESSAGE];*/ + int16 oRadioStatus; +} RadioRxStatistics; + +/* RX RF gain values */ +typedef enum PHY_RADIO_RX_GAIN_VALUES_ENMT +{ + FIRST_RX_GAIN_VALUE_E, +/*_______________________________________________*/ + RX_GAIN_VALUE_0_E = FIRST_RX_GAIN_VALUE_E, + RX_GAIN_VALUE_1_E, + RX_GAIN_VALUE_2_E, + RX_GAIN_VALUE_3_E, + RX_GAIN_VALUE_4_E, + RX_GAIN_VALUE_5_E, + RX_GAIN_VALUE_6_E, + RX_GAIN_VALUE_7_E, +/*_______________________________________________*/ + NUMBER_OF_RX_GAIN_VALUES_E, + LAST_RX_GAIN_VALUE_E = (NUMBER_OF_RX_GAIN_VALUES_E - 1) + +}PHY_RADIO_RX_GAIN_VALUES_ENM; + +/* RX BIP */ +typedef struct +{ + uint32 oNVSVersion; + int32 iExternalSignalPowerLevel; + int32 oLnaTaCompensationValues[NUMBER_OF_RX_GAIN_VALUES_E-1]; + TNvsStruct oNvsStruct; + int16 oRadioStatus; + int8 padding[2]; +}RadioRxPltCal; + + +typedef enum +{ + eSINGLE_BAND_INI_FILE, + eDUAL_BAND_INI_FILE +}IniFileSingleDualBand; + +#define SMART_REFLEX_LENGTH_INDEX 0 +#define SMART_REFLEX_UPPER_LIMIT_INDEX 1 +#define SMART_REFLEX_START_ERROR_VALUE_INDEX 2 + +#define MAX_SMART_REFLEX_FUB_VALUES 14 +/* 1. first index is the number of param */ +/* 2. second is the higher value */ +/* 3. 14 parameter of the correction */ +#define MAX_SMART_REFLEX_PARAM (MAX_SMART_REFLEX_FUB_VALUES + SMART_REFLEX_START_ERROR_VALUE_INDEX) + + + +typedef struct +{ + uint8 RefClk; + uint8 SettlingTime; + uint8 ClockValidOnWakeup; + uint8 DC2DCMode; + uint8 Single_Dual_Band_Solution; + uint8 TXBiPFEMAutoDetect; + uint8 TXBiPFEMManufacturer; +/* GeneralSettingsByte Settings; */ + uint8 GeneralSettings; + /* smart reflex state*/ + uint8 SRState; + /* FUB parameters */ + int8 SRF1[MAX_SMART_REFLEX_PARAM]; + int8 SRF2[MAX_SMART_REFLEX_PARAM]; + int8 SRF3[MAX_SMART_REFLEX_PARAM]; + /* FUB debug parameters */ + int8 SR_Debug_Table[MAX_SMART_REFLEX_PARAM]; + uint8 SR_SEN_N_P; + uint8 SR_SEN_N_P_Gain; + uint8 SR_SEN_NRN; + uint8 SR_SEN_PRN; + + uint8 padding[3]; +}IniFileGeneralParam; + +typedef enum +{ + FEM_MANUAL_DETECT_MODE_E, + FEM_AUTO_DETECT_MODE_E + +}FEM_DETECT_MODE_ENM; + +typedef enum +{ + FEM_RFMD_TYPE_E, + FEM_TRIQUINT_TYPE_E, + NUMBER_OF_FEM_TYPES_E + +}FEM_TYPE_ENM; + +typedef enum +{ + eREF_CLK_19_2_E, + eREF_CLK_26_E, + eREF_CLK_38_4_E, + eREF_CLK_52_E, + eREF_CLK_XTAL + + +}REF_CLK_ENM; + +typedef enum +{ + REF_CLK_NOT_VALID_E, + REF_CLK_VALID_AND_STABLE_E + +}CLK_VALID_ON_WAKEUP_ENM; + +typedef enum +{ + BT_SPI_IS_NOT_USED_E, + MUX_DC2DC_TO_BT_FUNC2_E + +}DC2DC_MODE_ENM; + +typedef enum +{ + SINGLE_BAND_SOLUTION_E, + DUAL_BAND_SOLUTION_E + +}SINGLE_DUAL_BAND_SOLUTION_ENM; + +/* General settings byte */ +typedef enum +{ + TELEC_CHAN_14_OFF_E, + TELEC_CHAN_14_ON_E + +}TELEC_CHAN_14_ENM; + +typedef enum +{ + NBI_OFF_E, + NBI_ON_E + +}NBI_ENM; + +#define RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE (15) + +typedef struct +{ + /* SECTION 1: 2.4G parameters */ + uint8 RxTraceInsertionLoss_2_4G; + uint8 TXTraceLoss_2_4G; + int8 RxRssiAndProcessCompensation_2_4G[RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE]; + + /* SECTION 2: 5G parameters */ + uint8 RxTraceInsertionLoss_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E]; + uint8 TXTraceLoss_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E]; + int8 RxRssiAndProcessCompensation_5G[RSSI_AND_PROCESS_COMPENSATION_TABLE_SIZE]; + +}TStatRadioParams; + +typedef struct +{ + /* SECTION 1: 2.4G parameters */ + uint16 TXBiPReferencePDvoltage_2_4G; + uint8 TxBiPReferencePower_2_4G; + int8 TxBiPOffsetdB_2_4G; + int8 TxPerRatePowerLimits_2_4G_Normal[NUMBER_OF_RATE_GROUPS_E]; + int8 TxPerRatePowerLimits_2_4G_Degraded[NUMBER_OF_RATE_GROUPS_E]; + int8 TxPerRatePowerLimits_2_4G_Extreme[NUMBER_OF_RATE_GROUPS_E]; + int8 TxPerChannelPowerLimits_2_4G_11b[NUMBER_OF_2_4_G_CHANNELS]; + int8 TxPerChannelPowerLimits_2_4G_OFDM[NUMBER_OF_2_4_G_CHANNELS]; + int8 TxPDVsRateOffsets_2_4G[NUMBER_OF_RATE_GROUPS_E]; + uint8 TxIbiasTable_2_4G[NUMBER_OF_RATE_GROUPS_E]; + uint8 RxFemInsertionLoss_2_4G; + uint8 DegradedLowToNormalThr_2_4G; + uint8 NormalToDegradedHighThr_2_4G; + + /* SECTION 2: 5G parameters */ + uint16 TXBiPReferencePDvoltage_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E]; + uint8 TxBiPReferencePower_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E]; + int8 TxBiPOffsetdB_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E]; + int8 TxPerRatePowerLimits_5G_Normal[NUMBER_OF_RATE_GROUPS_E]; + int8 TxPerRatePowerLimits_5G_Degraded[NUMBER_OF_RATE_GROUPS_E]; + int8 TxPerRatePowerLimits_5G_Extreme[NUMBER_OF_RATE_GROUPS_E]; + int8 TxPerChannelPowerLimits_5G_OFDM[NUMBER_OF_5G_CHANNELS]; + int8 TxPDVsRateOffsets_5G[NUMBER_OF_RATE_GROUPS_E]; + int8 TxIbiasTable_5G[NUMBER_OF_RATE_GROUPS_E]; + uint8 RxFemInsertionLoss_5G[NUMBER_OF_SUB_BANDS_IN_5G_BAND_E]; + uint8 DegradedLowToNormalThr_5G; + uint8 NormalToDegradedHighThr_5G; + +}TDynRadioParams; + +typedef struct +{ + TStatRadioParams tStatRadioParams; + TDynRadioParams tDynRadioParams; + uint8 Padding[2]; + +}IniFileRadioParam; + +/*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ + +/* Describes a reference design supported by the HDK Module */ +typedef struct HDKReferenceDesign_t +{ + uint16 referenceDesignId; /* Reference design Id supported */ + uint8 nvsMajorVersion; /* First EEPROM version supported */ + uint8 nvsMinorVersion; + uint8 nvsMinorMinorVersion; +} THDKReferenceDesign; + +typedef struct HDKModuleVersion_t +{ + uint8 ProductName; /* '6' for WiLink6, '4' for WiLink4 */ + uint8 PgNumber; /* Hardware tag */ + uint8 SoftwareVersionLevel; /* SW level number (Major SW change) */ + uint8 SoftwareVersionDelivery; /* Delivery number inside any (Inside any level) */ + + uint8 radioModuleType; /* The radio that is currently supported by the HDK module */ + uint8 numberOfReferenceDesignsSupported; /* The number of reference designs supported by the HDK module */ + THDKReferenceDesign* referenceDesignsSupported; /* Array of reference_design supported */ + +} THDKModuleVersion; + +#define FW_VERSION_LENGTH 5 + +typedef struct +{ + THDKModuleVersion hdkVersion; + uint8 FWVersion[FW_VERSION_LENGTH]; + uint32 drpwVersion; + int16 oRadioStatus; + uint8 padding[3]; +}TFWVerisons; + +typedef struct +{ + int16 RSSIVal; /* free running RSSI value, 1dB resolution */ + int16 oRadioStatus; +}TTestCmdFreeRSSI; + +typedef struct +{ + TestCmdID_e testCmdId; + int8 padding[3]; + + /* Efil - when adding parameter here fill the switch case sentence in function + "cmdBld_CmdIeTest" in module "TWD\Ctrl\CmdBldCmdIE.c" */ + union + { + TTestCmdChannel Channel; + RadioRxPltCal RxPlt; + TTestCmdPdBufferCal PdBufferCal; + TTestCmdP2GCal P2GCal; + TTestCmdPdBufferErrors PdBufferErrors; + TTestCmdUpdateReferncePoint PdBufferCalReferencePoint; + TPacketParam TxPacketParams; + TToneParam TxToneParams; + TTxTemplate TxTemplateParams; + /*uint32 txGainAdjust; */ + TTxGainAdjust txGainAdjust; + RadioRxStatistics Statistics; + TFWVerisons fwVersions; + TTestCmdRunCalibration RunCalibration; + IniFileRadioParam IniFileRadioParams; + IniFileGeneralParam IniFileGeneralParams; + EfuseParameters_t EfuseParams; + TestToneParams_t TestToneParams; + TTestCmdPowerMode powerMode; + TTestCmdFreeRSSI freeRSSI; + TTestCmdCLPCCommands clpcCommands; + TTestCmdDCOItrimOnOff DCOitrimFeatureOnOff; + + TTestCmdDebug testDebug; + }testCmd_u; +}TTestCmd; + + +#ifndef HOST_IF_ENUMS_DISABLED +typedef enum RadioParamType_e +{ + RADIO_PARAM_POWER_TABLE = 1, + RADIO_PARAM_POWER_LIMIT_TABLE, + RADIO_PARAM_POWER_ADJ_TABLE, + RADIO_PARAM_POWER_ENABLES, + RADIO_PABIAS_TABLE, + RADIO_PARAM_POWER_LEVELS, + + MAX_RADIO_PARAM_TYPE = 0x7FFFFFFF /* force this enum to be uint32 */ + +} RadioParamType_e; +#else +typedef uint32 RadioParamType_e; +#endif + +typedef struct RadioParam_t +{ + RadioParamType_e parameterType; + int8 parameter[MAX_RADIO_PARAM_LEN]; +} RadioParam_t; + +typedef enum RadioState_e +{ + RADIO_STATE_INIT = 1, /* Completed radio initialization */ + RADIO_STATE_TUNE = 2, /* Completed channel tuning */ + RADIO_STATE_DC_CAL = 3, /* Completed radio DC calibration */ + RADIO_STATE_AFE_DC_CAL =4, /* Completed AFE DC calibration */ + RADIO_STATE_TX_MM = 5, /* Completed transmit IQ mismatch calibration */ + RADIO_STATE_TX_EQUAL = 6, /* Completed transmit equalization calibration */ + RADIO_STATE_CARR_SUPP = 7, /* Completed carrier suppression calibration */ + RADIO_STATE_TX_PWR_CTRL = 8 /* Completed transmit power control calibration (only for bg and abg radios) */ + +} RadioState_e; + +typedef enum +{ + PS_MODE_ENTER_ELP = 0x0, + PS_MODE_ENTER_PD = 0x1, + PS_MODE_EXIT_FROM_ELP = 0x2, + PS_MODE_EXIT_FROM_PD = 0x4, + PS_MODE_ENTER_ELP_SG_EN = 0x10, + PS_MODE_ENTER_PD_SG_EN = 0x11, + PS_MODE_EXIT_FROM_ELP_SG_EN = 0x12, + PS_MODE_EXIT_FROM_PD_SG_EN = 0x14, + PS_MODE_INVALID = 0xFF + +}PowerSaveMode_e; + +typedef struct RadioTune_t +{ + Channel_e channel; + RadioBand_e band; +} RadioTune_t; + +typedef struct RadioRSSIAndSNR_t +{ + int16 rssi; + int16 snr; +}RadioRSSIAndSNR_t; + +/* VBIAS values (in mili-volts) */ +typedef enum PHY_RADIO_VBIAS_MV_ENMT +{ + FIRST_VBIAS_VALUE_E = -1, + + VBIAS_0MV_E = FIRST_VBIAS_VALUE_E, + VBIAS_100MV_E = 0, + VBIAS_200MV_E = 1, + VBIAS_300MV_E = 2, + VBIAS_400MV_E = 3, + VBIAS_500MV_E = 4, + VBIAS_600MV_E = 5, + VBIAS_700MV_E = 6, + VBIAS_800MV_E = 7, + + NUMBER_OF_VBIAS_VALUES_E = 9, + LAST_VBIAS_VALUE_E = (NUMBER_OF_VBIAS_VALUES_E - 1) + +}PHY_RADIO_VBIAS_MV_ENM; + +/* Gain monitor values */ +typedef enum PHY_RADIO_GAIN_MONITOR_TYPES_ENMT +{ + FIRST_GAIN_MONITOR_TYPE_E, + GAIN_MONITOR_DISABLE = 0, + GAIN_MONITOR_RESERVED = 1, +/*_______________________________________________*/ + GAIN_MONITOR_X0_5_E = 2, + GAIN_MONITOR_X1_E = 3, + GAIN_MONITOR_X2_E = 4, + GAIN_MONITOR_X4_E = 5, + GAIN_MONITOR_X8_E = 6, + GAIN_MONITOR_X16_E = 7, +/*_______________________________________________*/ + NUMBER_OF_GAIN_MONITOR_TYPES_E = GAIN_MONITOR_X16_E, + LAST_GAIN_MONITOR_TYPE_E = (NUMBER_OF_GAIN_MONITOR_TYPES_E - 1) + +}PHY_RADIO_GAIN_MONITOR_TYPES_ENM; + + +/* TX Packet Mode; */ +typedef enum +{ + eTX_MODE_SINGLE_PACKET, /* 0 */ + eTX_MODE_MULTIPLE_PACKET, /* 1 */ + eTX_MODE_INFINITE_LENGTH_PACKET, /* 2 */ + eTX_MODE_CONTINUES_PACKET, /* 3 */ + eTX_MODE_FCC_PACKET, /* 4 */ + eTX_MODE_SENARIO_PACKET, /* 5 */ + + eMAX_PACKET_MODE_PACKET +}PacketTypeMode; + +/* TX tone mode */ +typedef enum +{ + eSILENCE_TONE_MODE, + eCARRIER_FEED_THROUGH_MODE, + eSINGLE_TONE_MODE, + eTWO_TONE_MODE, + eMULTI_TONE_MODE, + + eMax_TONE_MODE +}ToneTypeMode; + + +/**********************************************************************/ +/* For RSSI Calculation - Save Parameters */ +/**********************************************************************/ + +typedef struct +{ + uint16 linerEvmVal; + uint16 ccaEcalcMonReg; + uint16 ccaEcalcRssi; + uint16 linerEvmPilVal; + uint8 lanTableIndex; + uint8 taTableIndex; + uint8 lnaTableIndex; + RADIO_SUB_BAND_TYPE_ENM currSubBand; + RADIO_BAND_TYPE_ENM currBand; +}rssiParamSave_t; + + + +#endif /* #ifndef PUBLIC_RADIO */