📄 maui_cal.h
字号:
A_INT32 i_coeff_5G; // statistical avg iq_cal_coeffs
A_INT32 q_coeff_5G; // statistical avg iq_cal_coeffs
A_INT32 i_coeff_2G; // statistical avg iq_cal_coeffs
A_INT32 q_coeff_2G; // statistical avg iq_cal_coeffs
A_BOOL atherosLoggingScheme;
FTP_DOWNLOAD_INFO ftpdownloadFileInfo;
A_UINT32 switchSettling_Turbo[3];
A_UINT32 txrxAtten_Turbo[3];
A_INT32 adcDesiredSize_Turbo[3]; // 8-bit signed value
A_INT32 pgaDesiredSize_Turbo[3]; // 8-bit signed value
A_UINT32 rxtx_margin_Turbo[3];
//new capabilities
A_BOOL uartEnable;
A_BOOL compressionDisable;
A_BOOL fastFrameDisable;
A_BOOL burstingDisable;
A_BOOL aesDisable;
A_UINT32 maxNumQCU;
A_UINT32 keyCacheSize;
A_BOOL enableHeavyClip;
A_BOOL xrDisable;
A_BOOL enableFCCMid;
A_BOOL enableJapanEvenU1;
A_BOOL enableJapenU2;
A_BOOL enableJapnMid;
A_BOOL disableJapanOddU1;
A_BOOL enableJapanMode11aNew;
A_BOOL enableDynamicEAR; // for griffin, enable dynamic EAR write
A_UINT32 numDynamicEARChannels;
A_UINT32 dynamicEARChannels[8];
A_UINT32 dynamicEARVersion;
A_UINT32 eepromLength;
A_UINT16 max_pcdac_11a;
A_UINT16 max_pcdac_11b;
A_UINT16 max_pcdac_11g;
A_UINT16 numPdGains;
A_UINT16 pdGainBoundary[4];
A_UINT16 pdGainOverlap;
A_UINT16 attempt_pcdac_11a;
A_UINT16 attempt_pcdac_11b;
A_UINT16 attempt_pcdac_11g;
A_BOOL staCardOnAP;
} CAL_SETUP;
typedef struct yieldLog_t {
A_UINT32 macID1[3]; // 3 x 16bit macID : [0]-->MSB16bit, [2]-->LSB16bit
A_UINT32 macID2[3];
A_UINT32 macID3[3];
A_UINT32 macID4[3];
A_UINT32 enetID1[3];
A_UINT32 enetID2[3];
A_UINT32 enetID3[3];
A_UINT32 enetID4[3];
A_CHAR cardType[10];
A_UINT32 cardRev;
A_UINT32 cardNum;
A_CHAR testName[50];
double param1;
double param2;
double param3;
A_CHAR result[20];
A_CHAR measName[50];
double target;
double meas;
A_CHAR measUnit[50];
A_CHAR meas2Name[50];
double meas2;
A_CHAR meas2Unit[50];
A_CHAR mode[20];
A_UINT32 devNum;
A_CHAR mfgID[20]; // 1 char. 0xb2[15:8]. "_" placeholder in 0xb2[7:0] as spare for extra s/n
A_CHAR reworkID[20];
A_UINT32 labelFormatID;
A_CHAR cardLabel[256];
A_UINT32 chipIdentifier;
} YIELD_LOG_STRUCT;
typedef struct d_dataPerChannel {
A_UINT16 channelValue;
A_UINT16 pcdacMin;
A_UINT16 pcdacMax;
A_UINT16 numPcdacValues;
A_UINT16 *pPcdacValues;
double *pPwrValues; //power is a float
} dDATA_PER_CHANNEL;
typedef struct d_pcdacsEeprom {
A_UINT16 *pChannels;
A_UINT16 numChannels;
dDATA_PER_CHANNEL *pDataPerChannel; //ptr to array of info held per channel
A_BOOL hadIdenticalPcdacs;
} dPCDACS_EEPROM;
typedef struct testChannelTargets {
A_UINT16 channelValue;
double Target24 ;
double Target36 ;
double Target48 ;
double Target54 ;
} TARGET_CHANNEL ;
typedef struct targetsSet {
A_UINT16 numTargetChannelsDefined ;
TARGET_CHANNEL *pTargetChannel ;
} TARGETS_SET ;
typedef struct testChannelMasks {
A_UINT32 channelValueTimes10;
A_BOOL TEST_PER ;
A_INT32 targetSensitivity;
A_BOOL LO_RATE_SEN;
A_INT32 targetLoRateSensitivity;
A_BOOL TEST_TURBO;
A_UINT32 TEST_HALF_QUART_RATE;
A_UINT32 TEST_MASK;
A_BOOL TEST_OBW;
A_UINT32 TEST_TGT_PWR;
A_UINT32 TEST_TEMP_MARGIN;
A_BOOL TEST_THROUGHPUT;
double throughputThreshold;
A_BOOL TEST_TURBO_THROUGHPUT;
double throughputTurboThreshold;
} TEST_CHANNEL_MASKS ;
typedef struct testSet {
A_UINT16 numTestChannelsDefined ;
A_UINT16 maxTestChannels;
TEST_CHANNEL_MASKS *pTestChannel ;
} TEST_SET ;
typedef struct testGroupData {
A_UINT16 TG_Code ;
A_UINT16 numBandEdgesDefined ;
A_UINT16 BandEdge[NUM_BAND_EDGES] ;
double maxEdgePower[NUM_BAND_EDGES];
A_UINT16 inBandFlag[NUM_BAND_EDGES];
} TEST_GROUP_DATA ;
typedef struct testGroupSet {
A_UINT16 numTestGroupsDefined ;
TEST_GROUP_DATA *pTestGroup ;
} TEST_GROUP_SET ;
typedef struct _tpVal
{
A_UINT16 channel_idx;
double val;
} TP_VAL ;
void topCalibrationEntry(A_UINT32 *pdevNum_inst1, A_UINT32 *pdevNum_inst2) ;
void calibrationMenu() ;
void dutBegin() ;
void dutCalibration( A_UINT32 devNum ) ;
void setupChannelLists() ;
void setupMaxPower() ;
void mapValues(double max, double mask[], A_UINT16 maskSize, double values[]) ;
void set_backoff_list_for_RD(A_UINT16 domain, double values[], A_UINT16 numvals) ;
void set_maxpwr_list_for_RD(A_UINT16 domain, double values[], A_UINT16 numvals) ;
void set_maxpwr_list_for_rate(A_UINT16 rate, double values[], A_UINT16 numvals);
void set_maxpwr_list_for_rate_for_domain(A_UINT16 rate, A_UINT16 domain, double values[], A_UINT16 numvals);
A_UINT16 get_domain_idx( A_UINT16 domain ) ;
A_UINT16 get_rate_idx( A_UINT16 rate ) ;
A_UINT16 get_rd_edge_idx( A_UINT16 rd_edge ) ;
void parseSetup(A_UINT32 devNum) ;
void Write_eeprom_Common_Data(A_UINT32 devNum, A_BOOL writeHeader, A_BOOL immediateWrite) ;
void Write_eeprom_header_4K(A_UINT32 devNum) ;
void Write_eeprom_header(A_UINT32 devNum) ;
A_BOOL setup_raw_datasets() ;
A_BOOL d_allocateEepromStruct(dPCDACS_EEPROM *pEepromStruct, A_UINT16 numChannels, A_UINT16 numPcdacs ) ;
void measure_all_channels(A_UINT32 devNum, A_UINT16 debug) ;
A_UINT32 dump_a2_pc_out(A_UINT32 devNum) ;
A_UINT32 read_gainf_twice(A_UINT32 devNum) ;
A_UINT32 read_gainf_with_probe_packet(A_UINT32 devNum, A_UINT32 power);
void dump_rectangular_grid_to_file( dPCDACS_EEPROM *pEepromData, char *filename );
void dump_nonrectangular_grid_to_file( dPCDACS_EEPROM *pEepromData, char *filename );
void make_cal_dataset_from_raw_dataset();
void find_optimal_pier_locations(A_UINT16 *turning_points, A_UINT16 numTPsToPick, double filter_size, A_UINT16 data_ceiling, A_UINT16 debug);
void filter_hash(dPCDACS_EEPROM *pDataset, double filter_size, double data_ceiling);
void truncate_hash_subzero(dPCDACS_EEPROM *pDataset);
void differentiate_hash(dPCDACS_EEPROM *srcStruct, dPCDACS_EEPROM *destStruct);
void build_turning_points(dPCDACS_EEPROM *pDataset, dPCDACS_EEPROM *pDerivDataset, A_UINT16 *TPlist, A_UINT16 *totalTPs, A_UINT16 debug);
void addUniqueElementToList(A_UINT16 *list, A_UINT16 element, A_UINT16 *listSize);
int numerical_compare( const void *arg1, const void *arg2 );
void pick_local_extrema(dPCDACS_EEPROM *pDataset, A_UINT16 pcd_idx, A_UINT16 *retList, A_UINT16 *listSize);
void consolidate_turning_points(A_UINT16 **tpList, A_UINT16 *sizeList, A_UINT16 debug);
void build_turningpoint_totempole(dPCDACS_EEPROM *pDataset, TP_VAL **totempole, A_UINT16 sizeTotempole, A_UINT16 *tpList, A_UINT16 debug);
int totempole_compare( const void *arg1, const void *arg2 );
void dMapGrid(dPCDACS_EEPROM *pSrcStruct, dPCDACS_EEPROM *pDestStruct);
double getPowerAt( A_UINT16 channel, A_UINT16 pcdacValue, dPCDACS_EEPROM *pSrcStruct);
A_BOOL dFindValueInList( A_UINT16 channel, A_UINT16 pcdacValue, dPCDACS_EEPROM *pSrcStruct, double *powerValue);
void iGetLowerUpperValues (A_UINT16 value, A_UINT16 *pList, A_UINT16 listSize,
A_UINT16 *pLowerValue, A_UINT16 *pUpperValue );
void dGetLeftRightChannels( A_UINT16 channel, dPCDACS_EEPROM *pSrcStruct, A_UINT16 *pLowerChannel,
A_UINT16 *pUpperChannel);
void dGetLowerUpperPcdacs( A_UINT16 pcdac, A_UINT16 channel, dPCDACS_EEPROM *pSrcStruct,
A_UINT16 *pLowerPcdac, A_UINT16 *pUpperPcdac);
double dGetInterpolatedValue(A_UINT32 target, A_UINT32 srcLeft, A_UINT32 srcRight,
double targetLeft, double targetRight);
void build_cal_dataset_skeleton(dPCDACS_EEPROM *srcDataset, dPCDACS_EEPROM *destDataset,
A_UINT16 *pPercentages, A_UINT16 numIntercepts,
A_UINT16 *tpList, A_UINT16 numTPs);
void quantize_hash(dPCDACS_EEPROM *pDataSet);
void dutTest(A_UINT32 *devNum);
void dutTestSpecMask(A_UINT32 devNum);
void ResetSA(const int ud, const double center, const double span,
const double ref_level, const double scale, const double rbw, const double vbw) ;
void dutTestOBW(A_UINT32 devNum) ;
void goldenTestRXSEN(A_UINT32 devNum);
void dutTestRXSEN(A_UINT32 devNum);
void goldenTestTXPER(A_UINT32 devNum);
void dutTestTXPER(A_UINT32 devNum);
//void goldenWait4WakeupCall(A_UINT32 devNum);
//void dutSendWakeupCall(A_UINT32 devNum);
void ProgramMACID(A_UINT32 devNum);
void reset_on_off(A_UINT32 devNum);
char *qq( char *format, ...);
void read_dataset_from_file(dPCDACS_EEPROM *pDataSet, char *filename);
void goldenTest();
void copyDomainName(A_UINT32 country, char **domainName);
char *getDomainName(A_UINT32 country);
void new_goldenWait4WakeupCall(A_UINT32 devNum);
void new_dutSendWakeupCall(A_UINT32 devNum);
A_UINT16 parseTargets(void);
void showTargets (void);
A_UINT16 fbin2freq(A_UINT16 fbin);
A_UINT16 freq2fbin(A_UINT16 freq);
void program_eeprom(A_UINT32 devNum);
void fill_words_for_eeprom(A_UINT32 *word, A_UINT16 numWords, A_UINT16 *fbin,
A_UINT16 dbmmask, A_UINT16 pcdmask, A_UINT16 freqmask);
void fill_Target_Power_and_Test_Groups(A_UINT32 *word, A_UINT16 numWords,
A_UINT16 dbmmask, A_UINT16 pcdmask, A_UINT16 freqmask);
void program_Target_Power_and_Test_Groups(A_UINT32 devNum);
void set_appropriate_OBDB(A_UINT32 devNum, A_UINT16 channel);
void dutCalibration_2p4(A_UINT32 devNum, A_UINT32 mode);
void measure_all_channels_2p4(A_UINT32 devNum, A_UINT16 debug, A_UINT32 mode) ;
A_BOOL setup_raw_datasets_2p4(A_UINT32 mode) ;
A_UINT16 fbin2freq_2p4(A_UINT16 fbin);
void dutTest_2p4(A_UINT32 devNum, A_UINT32 mode);
void dutTestSpecMask_2p4(A_UINT32 devNum, A_UINT32 mode);
void dutSendWakeupCall_2p4(A_UINT32 devNum, A_UINT32 mode);
void goldenWait4WakeupCall_2p4(A_UINT32 devNum);
void dutTestTXPER_2p4(A_UINT32 devNum, A_UINT32 mode);
void goldenTestTXPER_2p4(A_UINT32 devNum, A_UINT32 mode);
void goldenTestRXSEN_2p4(A_UINT32 devNum, A_UINT32 mode);
void dutTestRXSEN_2p4(A_UINT32 devNum, A_UINT32 mode);
void goldenTestRXSEN_2p4(A_UINT32 devNum, A_UINT32 mode);
void goldenTest_2p4(A_UINT32 devNum, A_UINT32 mode);
A_UINT16 getSubsystemIDfromCardType(A_CHAR *pLine, A_BOOL quiet);
extern CAL_SETUP CalSetup;
extern A_UINT16 eepromType;
extern TEST_GROUP_SET TG_Set ;
extern TEST_GROUP_SET *pTestGroupSet;
extern EEPROM_PCICONFIG_MAP fullMapping[];
extern A_UINT32 numMappings;
void dutTestTargetPower(A_UINT32 devNum, A_UINT32 mode);
A_BOOL isUNI3OddChannel(A_UINT16 channel);
void load_calsetup_vals(void);
void load_eep_vals(A_UINT32 devNum) ;
void load_cal_section(void);
//void cornerCal(A_UINT32 devNum);
double getTargetPower (A_UINT32 mode, A_UINT32 ch, A_UINT32 rate);
//void setCornerFixBits(A_UINT32 devnum, A_UINT16 channel);
void build_cal_dataset_skeleton_old(dPCDACS_EEPROM *srcDataset, dPCDACS_EEPROM *destDataset,
A_UINT16 *pPercentages, A_UINT16 numIntercepts,
A_UINT16 *tpList, A_UINT16 numTPs);
void getDutTargetPowerFilename ();
void dutTestTXRX(A_UINT32 devNum, A_UINT32 mode);
void goldenTestTXRX(A_UINT32 devNum, A_UINT32 mode);
void report_timing_summary();
A_UINT32 sendSync (A_UINT32 devNum, char *machineName, A_UINT32 debug);
A_UINT32 waitForSync (A_UINT32 debug);
A_UINT32 sendAck (A_UINT32 devNum, char *message, A_INT32 par1, A_INT32 par2, A_INT32 par3, A_UINT32 debug);
A_UINT32 waitForAck (A_UINT32 debug);
A_BOOL verifyAckStr (char *message);
void setup_raw_pcdacs();
A_UINT32 set_eeprom_size(A_UINT32 devNum,A_UINT32 length);
/*A_UINT32 get_eeprom_size(A_UINT32 devNum,A_UINT32 *eepromSize, A_UINT32 *checkSumLength);
A_BOOL eeprom_verify_checksum (A_UINT32 devNum);*/
void checkUserSize(A_UINT32 devNum);
A_UINT32 parseTestChannels(FILE *fStream, char *pLine, A_UINT32 mode);
void test_for_temp_margin(A_UINT32 devNum, A_UINT32 mode);
A_BOOL d_freeEepromStruct(dPCDACS_EEPROM *pEepromStruct);
void free_all_eeprom_structs();
A_BOOL prepare_for_next_card (A_UINT32 *p_devNum);
void copy_11g_cal_to_11b(dPCDACS_EEPROM *pSrcStruct, dPCDACS_EEPROM *pDestStruct);
void report_fail_summary();
A_UINT32 optimal_fixed_gain(A_UINT32 devNum, GAIN_OPTIMIZATION_LADDER *ladder, A_UINT32 mode) ;
A_BOOL test_sleep_crystal(A_UINT32 devNum) ;
void goldenVerifyDataTXRX(A_UINT32 devNum, A_UINT32 mode, A_UINT32 turbo, A_UINT16 rate, A_UINT32 frameLen);
void dutVerifyDataTXRX(A_UINT32 devNum, A_UINT32 mode, A_UINT32 turbo, A_UINT16 rate, A_UINT32 frameLen);
void printResultBanner(A_UINT32 devNum, A_BOOL fail);
void printTestEndSummary() ;
void virtual_eepromWriteBlock(A_UINT32 devNum, A_UINT32 startOffset, A_UINT32 length, A_UINT32 *buf, A_UINT32 eeprom_block, A_BOOL WRITE_NOW);
void virtual_eeprom0WriteBlock(A_UINT32 devNum, A_UINT32 startOffset, A_UINT32 length, A_UINT32 *buf);
void virtual_eeprom1WriteBlock(A_UINT32 devNum, A_UINT32 startOffset, A_UINT32 length, A_UINT32 *buf);
void virtual_eepromWrite(A_UINT32 devNum, A_UINT32 eepromOffset, A_UINT32 eepromValue, A_UINT32 eeprom_block, A_BOOL WRITE_NOW);
void virtual_eeprom0Write(A_UINT32 devNum, A_UINT32 eepromOffset, A_UINT32 eepromValue);
void virtual_eeprom1Write(A_UINT32 devNum, A_UINT32 eepromOffset, A_UINT32 eepromValue);
A_UINT32 dataArr_get_checksum(A_UINT32 devNum, A_UINT16 startAddr, A_UINT16 numWords, A_UINT32 *data);
A_UINT32 virtual_eeprom_get_checksum(A_UINT32 devNum, A_UINT16 startAddr, A_UINT16 numWords, A_UINT32 eep_blk);
A_BOOL virtual_writeEarToEeprom(A_UINT32 devNum, char *pEarFile);
A_BOOL dump_virtual_eeprom(A_UINT32 eep_blk, char *filename) ;
void program_eeprom_block1(A_UINT32 devNum);
void write_eeprom_label(A_UINT32 devNum);
void stress_target_powers(A_UINT32 devNum, A_UINT32 chan, double margin);
void setYieldParamsForTest(A_UINT32 devNum, A_CHAR *mode, A_CHAR *test_name,
A_CHAR *meas_name, A_CHAR *meas_unit,
A_CHAR *meas2_name, A_CHAR *meas2_unit);
void logMeasToYield(double par1, double par2, double par3, double tgt,
double meas, double meas2, A_CHAR *result);
void logYieldData();
//A_UINT32 eeprom_get_checksum(A_UINT32 devNum, A_UINT16 startAddr, A_UINT32 numWords) ;
void programMACIDFromLabel(A_UINT32 devNum);
A_BOOL dutTestEthernetThroughput(A_UINT32 devNum);
A_UINT32 programUartPciCfgFile(A_UINT32 devNum, const char *filename, A_UINT32 startAddr,A_BOOL atCal);
A_BOOL getPCIConfigMapping
(
A_UINT32 devNum,
A_UINT32 eepromLocation,
A_UINT32 *remapLocation
);
#ifdef __cplusplus
}
#endif
#endif //__INCmauicalh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -