?? meeprom.h
字號:
#ifndef __INCmeepromh
#define __INCmeepromh
//IMPORTANT: change SCALE and DELTA together
#define SCALE 100 //scale everything by this amount so get reasonalbe acuracy
//but don't need to do float arithmatic
#define DELTA 10 //SCALE/10, but don't want do divide arithmatic each time
#define PWR_MIN 0
#define PWR_MAX 3150 //31.5*SCALE
#define PWR_STEP 50 //0.5*SCALE
// Keep 2 above defines together
//#define NUM_EEPROM_CHANNELS 8
#define NUM_11A_EEPROM_CHANNELS 10
#define NUM_PCDAC_VALUES 11
#define NUM_2_4_EEPROM_CHANNELS 3
#define NUM_2_4_EEPROM_CHANNELS_GEN5 4
//#define FREQ_MASK 0x3f
#define FREQ_MASK_16K 0x7f
#define NEW_FREQ_MASK_16K 0xff
#define PCDAC_MASK 0x3f
#define POWER_MASK 0x3f
#define NUM_TEST_FREQUENCIES 8
#define CHANNEL_START 5170
#define CHANNEL_STOP 5800
#define CHANNEL_STEP 5
#define PCDAC_START 1
#define PCDAC_STOP 63
#define PCDAC_STEP 1
#define PWR_TABLE_SIZE 64
#define NUM_CTL_EEP3_2 16
#define NUM_CTL_EEP3_3 32
#define MAX_NUM_CTL 32
#define PDADC_TABLE_SIZE 128
/*
#define FCC 0x10 // US
#define DOC 0x20 // Canada
#define ETSI 0x30 // most of Europe
#define SPAIN 0x31 // Spain
#define FRANCE 0x32 // France
#define MKK 0x40 // Japan
#define LAB 0xfe // Full spectrum from 5170 - 5700
*/
#ifndef VXWORKS
#define NONE 0xff // not available
#endif
//#define CHANNEL_POWER_INFO 8
//#define NUM_EDGES 6
#define TENX_OFDM_CCK_DELTA_INIT 15 //(power 1.5 dbm)
#define TENX_CH14_FILTER_CCK_DELTA_INIT 15 //(power 1.5 dbm)
#define OFDM_CCK_GAIN_DELTA_INIT 15 //(PAR difference of 7.5 dbm)
//codes for the eeprom structure types
#define EEP_HEADER_16K 0
#define EEP_CHANNEL_INFO_16K 1
#define EEP_TRGT_POWER_16K 2
#define EEP_RD_POWER_16K 3
#define EEP_GEN3_CHANNEL_INFO 4
#define EEP_GEN5_CHANNEL_INFO 5
#define EEP_AR6000 6
#define NUM_CORNER_CAL_POINTS 4
#define XR_POWER_INDEX 15
//eeprom offset locations
#define HDR_VERSION 0xc1
//eeprom offsets
typedef struct eepOffsetStruct {
A_UINT16 HDR_COUNTRY_CODE;
A_UINT16 HDR_MODE_DEVICE_INFO;
A_UINT16 HDR_ANTENNA_GAIN;
A_UINT16 HEADER_MAC_FEATURES;
A_UINT16 HDR_11A_COMMON;
A_UINT16 HDR_11B_COMMON;
A_UINT16 HDR_11G_COMMON;
A_UINT16 HDR_CTL;
A_UINT16 HDR_11A_SPECIFIC;
A_UINT16 HDR_11B_SPECIFIC;
A_UINT16 HDR_11G_SPECIFIC;
A_UINT16 GROUP1_11A_FREQ_PIERS;
A_UINT16 GROUP2_11A_RAW_PWR;
A_UINT16 GROUP3_11B_RAW_PWR;
A_UINT16 GROUP4_11G_RAW_PWR;
A_UINT16 GROUP5_11A_TRGT_PWR;
A_UINT16 GROUP6_11B_TRGT_PWR;
A_UINT16 GROUP7_11G_TRGT_PWR;
A_UINT16 GROUP8_CTL_INFO;
} EEP_OFFSET_STRUCT;
typedef struct mdk_dataPerChannel {
A_UINT16 channelValue;
A_UINT16 pcdacMin;
A_UINT16 pcdacMax;
A_UINT16 numPcdacValues;
A_UINT16 PcdacValues[NUM_PCDAC_VALUES];
A_INT16 PwrValues[NUM_PCDAC_VALUES];
} MDK_DATA_PER_CHANNEL;
typedef struct mdk_pcdacsAllModes {
//lla info
A_UINT16 Channels_11a[NUM_11A_EEPROM_CHANNELS];
A_UINT16 numChannels_11a;
MDK_DATA_PER_CHANNEL DataPerChannel_11a[NUM_11A_EEPROM_CHANNELS];
A_UINT16 numChannels_2_4;
A_UINT16 Channels_11b[NUM_2_4_EEPROM_CHANNELS];
A_UINT16 Channels_11g[NUM_2_4_EEPROM_CHANNELS];
//11g info
MDK_DATA_PER_CHANNEL DataPerChannel_11g[NUM_2_4_EEPROM_CHANNELS];
//11b info
MDK_DATA_PER_CHANNEL DataPerChannel_11b[NUM_2_4_EEPROM_CHANNELS];
} MDK_PCDACS_ALL_MODES;
//points to the appropriate pcdac structs in the above struct based on mode
typedef struct mdk_pcdacsEeprom {
A_UINT16 *pChannelList;
A_UINT16 numChannels;
MDK_DATA_PER_CHANNEL *pDataPerChannel;
} MDK_PCDACS_EEPROM;
typedef struct mdk_fullPcdacStruct {
A_UINT16 channelValue;
A_UINT16 pcdacMin;
A_UINT16 pcdacMax;
A_UINT16 numPcdacValues;
A_UINT16 PcdacValues[PWR_TABLE_SIZE];
A_INT16 PwrValues[PWR_TABLE_SIZE];
} MDK_FULL_PCDAC_STRUCT;
typedef struct powerTable {
A_UINT16 channelValue;
A_UINT16 pcdacValues[PWR_TABLE_SIZE];
} POWER_TABLE;
typedef struct rdMaxPower {
A_INT16 twicePwr54;
A_INT16 twicePwr48;
A_INT16 twicePwr36;
A_INT16 twicePwrRD1;
A_INT16 twicebkoffRD1;
// A_UINT16 regDomain;
} RD_MAX_POWER;
typedef struct mdk_trgtPowerInfo {
A_INT16 twicePwr54;
A_INT16 twicePwr48;
A_INT16 twicePwr36;
A_INT16 twicePwr6_24;
A_INT16 testChannel;
} MDK_TRGT_POWER_INFO;
typedef struct mdk_trgtPowerAllModes {
MDK_TRGT_POWER_INFO trgtPwr_11a[NUM_TEST_FREQUENCIES];
A_UINT16 numTargetPwr_11a;
MDK_TRGT_POWER_INFO trgtPwr_11g[3];
A_UINT16 numTargetPwr_11g;
MDK_TRGT_POWER_INFO trgtPwr_11b[2];
A_UINT16 numTargetPwr_11b;
} MDK_TRGT_POWER_ALL_MODES;
typedef struct mdk_rdEdgesPower {
A_UINT16 rdEdge;
A_INT16 twice_rdEdgePower;
A_UINT16 flag;
} MDK_RD_EDGES_POWER;
// Variable are made 16bits to support swapping(if necessary due to endian change)
// for remote clients.
typedef struct turboHeaderInfo {
A_INT16 max2wPower;
A_UINT16 switchSettling;
A_UINT16 txrxAtten;
A_UINT16 rxtxMargin;
A_INT16 adcDesiredSize; // 8-bit signed value
A_INT16 pgaDesiredSize; // 8-bit signed value
} TURBO_HEADER_INFO;
typedef struct modeHeaderInfo
{
A_UINT16 switchSettling;
A_UINT16 txrxAtten;
A_UINT16 antennaControl[11];
A_INT16 adcDesiredSize; // 8-bit signed value
A_UINT16 ob_1;
A_UINT16 db_1;
A_UINT16 ob_2;
A_UINT16 db_2;
A_UINT16 ob_3;
A_UINT16 db_3;
A_UINT16 ob_4; //hold ob_11 b and g
A_UINT16 db_4; //hold db_11 b and g
A_UINT16 txEndToXLNAOn;
A_UINT16 thresh62;
A_UINT16 txEndToXPAOff;
A_UINT16 txFrameToXPAOn;
A_INT16 pgaDesiredSize; // 8-bit signed value
A_INT16 noisefloorThresh;
A_UINT16 xlnaGain;
A_UINT16 xgain;
A_UINT16 xpd;
//added for 3.4 eeprom header
A_UINT16 initialGainI;
A_UINT16 calPier1;
A_UINT16 calPier2;
A_UINT16 calPier3; //4.0 eeprom header
//eventually will have mode specific section
A_UINT16 falseDetectBackoff;
A_INT16 xrTargetPower;
//added for 4.0n eeprom header
A_UINT16 iqCalI;
A_UINT16 iqCalQ;
A_UINT16 rxtxMargin;
A_UINT16 turboDisable; // Added as part of modespecific variable;
TURBO_HEADER_INFO turbo;
} MODE_HEADER_INFO;
typedef struct cornerCalInfo {
A_UINT16 gSel;
A_UINT16 pd84;
A_UINT16 pd90;
A_UINT16 clip;
} CORNER_CAL_INFO;
typedef struct mdk_eepHeaderInfo
{
A_UINT16 countryRegCode;
A_UINT16 countryCodeFlag;
A_UINT16 worldwideRoaming;
//A_UINT16 turboDisable; // need to be commented once it is replaced
A_UINT16 RFKill;
A_UINT16 deviceType;
A_UINT16 Amode;
A_UINT16 Bmode;
A_UINT16 Gmode;
A_UINT16 minorVersion;
A_UINT16 majorVersion;
A_UINT16 xtnd11a;
A_UINT16 antennaGain5;
A_UINT16 antennaGain2_4;
A_UINT16 numCtl;
//11a parameters (5GHz)
MODE_HEADER_INFO info11a;
//11g parameters
MODE_HEADER_INFO info11g;
//11b parameters
MODE_HEADER_INFO info11b;
A_UINT16 testGroups[MAX_NUM_CTL];
//corner calibration information
CORNER_CAL_INFO cornerCal[NUM_CORNER_CAL_POINTS];
A_UINT16 scaledOfdmCckDelta;
A_UINT16 scaledCh14FilterCckDelta;
//eeprom 4.0 header info
A_UINT16 earStartLocation;
A_UINT16 trgtPowerStartLocation;
A_UINT16 calStartLocation;
A_UINT16 eepMap;
A_UINT16 fixedBiasA;
A_UINT16 fixedBiasB;
A_UINT16 enable32khz;
A_UINT16 oldEnable32khz;
A_UINT16 maskRadio0;
A_UINT16 maskRadio1;
//introduced in eeprom 4.2
A_INT16 ofdmCckGainDeltaX2;
//introduced in eeprom 4.4
A_UINT16 eepFileVersion;
A_UINT16 earFileVersion;
A_UINT16 earFileIdentifier;
A_UINT16 artBuildNumber;
// Introduced to display MAC Settings
A_UINT16 keyCacheSize;
A_UINT16 enableClip;
A_UINT16 maxNumQCU;
A_UINT16 burstingDisable;
A_UINT16 fastFrameDisable;
A_UINT16 aesDisable;
A_UINT16 compressionDisable;
A_UINT16 disableXR;
//new regulatory flags
A_UINT16 enableFCCMid;
A_UINT16 enableJapanEvenU1;
A_UINT16 enableJapenU2;
A_UINT16 enableJapnMid;
A_UINT16 disableJapanOddU1;
A_UINT16 enableJapanMode11aNew;
} MDK_EEP_HEADER_INFO;
void
mapPcdacTable
(
MDK_PCDACS_EEPROM *pSrcStruct,
MDK_FULL_PCDAC_STRUCT *pPcdacStruct
);
A_INT16 getScaledPower
(
A_UINT16 Channel,
A_UINT16 pcdacValue,
MDK_PCDACS_EEPROM *pSrcStruct
);
A_BOOL
findValueInList
(
A_UINT16 channel,
A_UINT16 pcdacValue,
MDK_PCDACS_EEPROM *pSrcStruct,
A_INT16 *powerValue //return power value found in src struct
);
void getLowerUpperValues
(
A_UINT16 value, //value to search for
A_UINT16 *pList, //ptr to the list to search
A_UINT16 listSize, //number of entries in list
A_UINT16 *pLowerValue, //return the lower value
A_UINT16 *pUpperValue //return the upper value
);
void getLowerUpperValues
(
A_UINT16 value, //value to search for
A_UINT16 *pList, //ptr to the list to search
A_UINT16 listSize, //number of entries in list
A_UINT16 *pLowerValue, //return the lower value
A_UINT16 *pUpperValue //return the upper value
);
void getLeftRightChannels
(
A_UINT16 channel, //channel to search for
MDK_PCDACS_EEPROM *pSrcStruct, //ptr to struct to search
A_UINT16 *pLowerChannel, //return lower channel
A_UINT16 *pUpperChannel //return upper channel
);
void getLowerUpperPcdacs
(
A_UINT16 pcdac, //pcdac to search for
A_UINT16 channel, //current channel
MDK_PCDACS_EEPROM *pSrcStruct, //ptr to struct to search
A_UINT16 *pLowerPcdac, //return lower pcdac
A_UINT16 *pUpperPcdac //return upper pcdac
);
void getPwrTable
(
MDK_FULL_PCDAC_STRUCT *pPcdacStruct,
A_UINT16 *pPwrTable //ptr to power table to fill
);
void getPcdacInterceptsFromPcdacMinMax
(
A_UINT16 pcdacMin,
A_UINT16 pcdacMax,
A_UINT16 *pPcdacValues //return the pcdac value
);
void freeEepromStruct
(
MDK_PCDACS_EEPROM *pEepromStruct
);
void printEepromStruct
(
MDK_PCDACS_EEPROM *pEepromData
);
void getMaxRDPowerlistForFreq
(
A_UINT32 devNum,
A_UINT16 channel,
A_INT16 *pRatesPower
);
A_BOOL buildSingleChannelSkeletonStruct
(
MDK_FULL_PCDAC_STRUCT **ppPcdacStruct,
A_UINT16 channelValue
);
void printPcdacTable
(
A_UINT16 *pPcdacs,
A_UINT16 numChannels
);
void printPowerTxMax
(
A_INT16 *pRatesPower
);
void printRDTable
(
RD_MAX_POWER *pRdMaxPwrInfo,
char *string
);
void printToLogFile
(
const char * format,
...
);
void printEepromStructFormated
(
MDK_PCDACS_EEPROM *pEepromData
);
A_BOOL readEepromIntoDataset
(
A_UINT32 devNum
);
void readHeaderInfo
(
A_UINT32 devNum,
MDK_EEP_HEADER_INFO *pHeaderInfo
);
void programHeaderInfo
(
A_UINT32 devNum,
MDK_EEP_HEADER_INFO *pHeaderInfo,
A_UINT16 freq,
A_UCHAR mode
);
A_BOOL eepromVerifyChecksum
(
A_UINT32 devNum
);
void free16KEepStructs
(
A_UINT32 devNum
);
A_BOOL allocateEepStructs
(
A_UINT32 devNum
);
void freeEepStructs
(
A_UINT32 devNum
);
void readFreqPiers
(
A_UINT32 devNum,
A_UINT16 *pChannels,
A_UINT16 numChannels
);
A_BOOL readTrgtPowers
(
A_UINT32 devNum,
A_UINT16 offset,
MDK_TRGT_POWER_INFO *pPowerInfo,
A_UINT16 mode
);
A_UINT16 readCtlInfo
(
A_UINT32 devNum,
A_UINT16 offset,
MDK_RD_EDGES_POWER *pRdEdgePwrInfo
);
void applyFalseDetectBackoff
(
A_UINT32 devNum,
A_UINT32 freq,
A_UINT32 backoffAmount
);
void getPwrTableByModeCh
(
A_UINT32 devNum,
A_UINT32 mode,
A_UINT32 freq,
A_UINT16 *powerValues
);
void forcePowerTxMaxVenice
(
A_UINT32 devNum,
A_INT16 *pRatesPower,
A_UINT16 *pPowerValues,
double ofdm_cck_delta
);
void fillCCKMaxPower
(
A_UINT32 devNum,
A_UINT16 channel, //input channel value
A_INT16 *pRatesPower //pointer to power/rate table to fill
);
A_BOOL readEEPData_16K
(
A_UINT32 devNum
);
void
getMaxMinPower
(
A_INT16 powerArray[],
A_INT16 *minPower,
A_INT16 *maxPower
);
A_INT32
getCtlPower
(
A_UINT32 devNum,
A_UINT32 ctl,
A_UINT32 freq,
A_UINT32 mode,
A_UINT32 turbo
);
A_UINT32 getEepromSize(A_UINT32 devNum,A_UINT32 *eepromSize,A_UINT32 *checkSumLength);
extern EEP_OFFSET_STRUCT *pOffsets;
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -