📄 maui_cal.h
字号:
// A_UINT32 cal_single_xpd[3];
A_UINT32 cal_mult_xpd_gain_mask[3];
A_UINT32 EARStartAddr;
A_UINT32 TrgtPwrStartAddr;
A_UINT32 numSensPackets[3];
A_UINT32 txperBackoff;
A_UINT32 Enable_32khz; // indicates 32khz sleep crystal stuffed.
A_UINT32 rxtx_margin[3];
double ofdm_cck_gain_delta;
A_UINT32 instanceForMode[3]; // ART cmd line parameter. 1 based
A_UINT32 modeMaskForRadio[2]; // mask for supported modes for all radios
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
} CAL_SETUP;
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_UINT16 channelValue;
A_BOOL TEST_PER ;
A_INT32 targetSensitivity;
A_BOOL LO_RATE_SEN;
A_INT32 targetLoRateSensitivity;
A_BOOL TEST_TURBO;
A_BOOL TEST_HALF_RATE;
A_BOOL TEST_MASK;
A_BOOL TEST_OBW;
A_UINT32 TEST_TGT_PWR;
A_UINT32 TEST_TEMP_MARGIN;
} 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) ;
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);
A_UINT32 eeprom_get_checksum(A_UINT32 devNum, A_UINT16 startAddr, A_UINT16 numWords) ;
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;
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_BOOL eeprom_verify_checksum (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_UINT16 frameLen);
void dutVerifyDataTXRX(A_UINT32 devNum, A_UINT32 mode, A_UINT32 turbo, A_UINT16 rate, A_UINT16 frameLen);
#ifdef __cplusplus
}
#endif
#endif //__INCmauicalh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -