📄 rct_ctrl.cpp
字号:
if( age1968A_ReadTxPower(p_rct->age.vi, &virTX) != VI_SUCCESS )
{
return false;
}
}
}
else
{
viPowerInteg=0;
if( !cmu_readtxpower( &virTX, &(p_rct->cmu) ) )
{
return false;
}
}
return true;
}
//-------------------------------------------------------------------------
bool CRCTCTRL::RCT_ReadTxPower_EPSK( S_RCT *p_rct, ViReal64 &virTX )
{
if( p_rct->device_type == AGILENT_8960 )
{
if( age1968A_ReadEGPRSTxPower(p_rct->age.vi, &virTX) != VI_SUCCESS )
{
return false;
}
}
else
{
//viPowerInteg=0;
if( !cmu_readtxpower_8psk( &virTX, &(p_rct->cmu) ) )
{
return false;
}
}
return true;
}
//==========================================================================
// phase error
bool CRCTCTRL::RCT_confPFER(S_RCT *p_rct, int measure_count )
{
if( p_rct->device_type == AGILENT_8960 )
{
if (age1968A_confPFER(p_rct->age.vi,
measure_count,
age1960_TRIG_AUTO,
AGE1960_PFER_TRIGGER_DELAY,
AGE1960_PFER_TRIGGER_QUALIFIER_ON,
AGE1960_READ_PFER_TIMEOUT)!= VI_SUCCESS)
{
return false;
}
}
else
{
if( ! cmu_mod_config_control_mode( &(p_rct->cmu), measure_count ) )
{
return false;
}
if( ! cmu_mod_config_control_repetition( &(p_rct->cmu), measure_count ) )
{
return false;
}
}
return true;
}
//--------------------------------------------------------------------------
//bool CRCTCTRL::RCT_initMeasFcn_PFER( S_RCT *p_rct )
//{
// if( p_rct->device_type == AGILENT_8960 )
// {
// if ( age1960_initMeasFcn(p_rct->age.vi, age1960_PFER) != VI_SUCCESS )
// {
// return false;
// }
// else // CMU 200
// {
//
// }
// }
// return true;
//}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_FetchAvgFreqErr( S_RCT *p_rct, ViReal64 &AvgFreqErr )
{
ViInt32 PFERIntegrity;
ViReal64 PFERRMSError;
ViReal64 PFERPeakError;
ViReal64 PFERFreqError;
if (AGILENT_8960 == p_rct->device_type)
{
if( age_FetchAvgFreqError(p_rct->age.vi, &PFERFreqError) != VI_SUCCESS )
{
return false;
}
}
else
{
if( ! cmu_mod_init( &(p_rct->cmu) ) )
{
return false;
}
if( ! cmu_mod_sample(&(p_rct->cmu), FREQ_ERR_AVERAGE, &PFERFreqError) )
{
return false;
}
if( ! cmu_mod_abort( &(p_rct->cmu) ) )
{
return false;
}
}
AvgFreqErr = PFERFreqError;
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_FetchAvgPhErr( S_RCT *p_rct, ViReal64 &AvgPhErr )
{
ViInt32 PFERIntegrity;
ViReal64 PFERRMSError;
ViReal64 PFERPeakError;
ViReal64 PFERFreqError;
if( p_rct->device_type == AGILENT_8960 )
{
if ( age1960_fetchPFER_Q(
p_rct->age.vi,
&PFERIntegrity,
&PFERRMSError,
&PFERPeakError,
&PFERFreqError
)!= VI_SUCCESS)
{
return false;
}
}
else
{
if( ! cmu_mod_init( &(p_rct->cmu ) ) )
{
return false;
}
if( ! cmu_mod_sample(&(p_rct->cmu), PH_ERR_RMS_AVERAGE, &PFERRMSError) )
// if( !cmu_readmod(PH_ERR_RMS_AVERAGE, &cmu, &PFERFreqError) )
{
return false;
}
if( ! cmu_mod_abort( &(p_rct->cmu) ) )
{
return false;
}
}
AvgPhErr = PFERRMSError;
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_ReadAvgFreqErr( S_RCT *p_rct, ViReal64 &AvgFreqErr )
{
ViInt32 PFERIntegrity;
ViReal64 PFERRMSError;
ViReal64 PFERPeakError;
ViReal64 PFERFreqError;
if(AGILENT_8960 == p_rct->device_type)
{
if( age_ReadAvgFreqError(p_rct->age.vi, &PFERFreqError) != VI_SUCCESS )
{
return false;
}
}
else
{
if( ! cmu_mod_read(&(p_rct->cmu), FREQ_ERR_AVERAGE, &PFERFreqError) )
{
return false;
}
}
AvgFreqErr = PFERFreqError;
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_ReadAvgPhErr( S_RCT *p_rct, ViReal64 &AvgPhErr )
{
ViInt32 PFERIntegrity;
ViReal64 PFERRMSError;
ViReal64 PFERPeakError;
ViReal64 PFERFreqError;
if( AGILENT_8960 == p_rct->device_type )
{
if ( age1960_readPFER_Q(
p_rct->age.vi,
&PFERIntegrity,
&PFERRMSError,
&PFERPeakError,
&PFERFreqError
)!= VI_SUCCESS)
{
return false;
}
}
else
{
if( ! cmu_mod_read(&(p_rct->cmu), PH_ERR_RMS_AVERAGE, &PFERRMSError) )
{
return false;
}
}
AvgPhErr = PFERRMSError;
return true;
}
//===========================================================================
///////////////////////// IQ tunning /////////////////////////////
//===========================================================================
bool CRCTCTRL::RCT_initMeasFcn_IQTuning( S_RCT *p_rct )
{
if( p_rct->device_type == AGILENT_8960 )
{
if ( age1960_initMeasFcn(p_rct->age.vi, age1960_IQTUNING) != VI_SUCCESS )
{
return false;
}
else // CMU 200
{
}
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_confIQTuning( S_RCT *p_rct, int measure_count )
{
if( p_rct->device_type == AGILENT_8960 )
{
if( age1960_confIQTuning(p_rct->age.vi,
measure_count,
age1960_TRIG_RF_RISE,
AGE1960_IQ_TUNNING_TRIGGER_DELAY,
age1960_IQ_REF_AUTO,
AGE1960_IQ_TUNNING_TRIGGER_QUALIFIER_OFF,
AGE1960_IQ_TUNNING_SPUR_FREQ,
AGE1960_READ_IQ_TUNNING_TIMEOUT) != VI_SUCCESS )
{
return false;
}
}
else
{
if( ! cmu_mod_xper_config_control_mode( &(p_rct->cmu), measure_count ) )
{
return false;
}
if( ! cmu_mod_xper_config_control_repetition( &(p_rct->cmu), measure_count ) )
{
return false;
}
}
return true;
}
//----------------------------------------------------------------------------
bool CRCTCTRL::RCT_readTxOriginalOffset( S_RCT *p_rct, double &d_Original_Offset )
{
if( AGILENT_8960 == p_rct->device_type )
{
ViInt32 IQTIntegrity;
ViReal64 IQTSpurFreq;
ViReal64 IQTSpurLevel;
ViReal64 IQTResultsArray[age1960_IQ_ARRAY_MIN];
ViReal64 IQTFreqsArray[age1960_IQ_ARRAY_MIN];
ViInt32 IQTTuningCount;
if( age1960_readIQTuning_Q( p_rct->age.vi,
age1960_IQ_ARRAY_MIN,
&IQTIntegrity,
&IQTSpurFreq,
&IQTSpurLevel,
IQTResultsArray,
IQTFreqsArray,
&IQTTuningCount) != VI_SUCCESS )
{
return false;
}
d_Original_Offset = get_Original_Offset(IQTFreqsArray, IQTResultsArray, IQTTuningCount);
if( NAN == d_Original_Offset )
{
return false;
}
}
else
{
if( ! cmu_mod_xper_read( &(p_rct->cmu), XPER_ORIGINAL_OFFSET_AVERAGE, &d_Original_Offset) )
{
return false;
}
}
return true;
}
//----------------------------------------------------------------------------
bool CRCTCTRL::RCT_fetchTxOriginalOffset( S_RCT *p_rct, double &d_Original_Offset )
{
if( AGILENT_8960 == p_rct->device_type )
{
ViInt32 IQTIntegrity;
ViReal64 IQTSpurFreq;
ViReal64 IQTSpurLevel;
ViReal64 IQTResultsArray[age1960_IQ_ARRAY_MIN];
ViReal64 IQTFreqsArray[age1960_IQ_ARRAY_MIN];
ViInt32 IQTTuningCount;
if( age1960_fetchIQTuning_Q ( p_rct->age.vi,
age1960_IQ_ARRAY_MIN,
&IQTIntegrity,
&IQTSpurFreq,
&IQTSpurLevel,
IQTResultsArray,
IQTFreqsArray,
&IQTTuningCount) != VI_SUCCESS )
{
return false;
}
d_Original_Offset = get_Original_Offset(IQTFreqsArray, IQTResultsArray, IQTTuningCount);
if( NAN == d_Original_Offset )
{
return false;
}
}
else
{
if( ! cmu_mod_xper_init( &(p_rct->cmu) ) )
{
return false;
}
if( ! cmu_mod_xper_sample( &(p_rct->cmu), XPER_ORIGINAL_OFFSET_AVERAGE, &d_Original_Offset) )
{
return false;
}
if( ! cmu_mod_xper_abort( &(p_rct->cmu) ) )
{
return false;
}
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_fetchTxIqImbalance( S_RCT *p_rct, double &d_IQ_Imbalance )
{
if( AGILENT_8960 == p_rct->device_type )
{
ViInt32 IQTIntegrity;
ViReal64 IQTSpurFreq;
ViReal64 IQTSpurLevel;
ViReal64 IQTResultsArray[age1960_IQ_ARRAY_MIN];
ViReal64 IQTFreqsArray[age1960_IQ_ARRAY_MIN];
ViInt32 IQTTuningCount;
if( age1960_fetchIQTuning_Q ( p_rct->age.vi,
age1960_IQ_ARRAY_MIN,
&IQTIntegrity,
&IQTSpurFreq,
&IQTSpurLevel,
IQTResultsArray,
IQTFreqsArray,
&IQTTuningCount
) != VI_SUCCESS )
{
return false;
}
d_IQ_Imbalance = get_IQ_Imbalance(IQTFreqsArray, IQTResultsArray, IQTTuningCount);
if( NAN == d_IQ_Imbalance )
{
return false;
}
}
else
{
if( ! cmu_mod_xper_init( &(p_rct->cmu) ) )
{
return false;
}
if( ! cmu_mod_xper_sample( &(p_rct->cmu), XPER_IQ_IMBALANCE_AVERAGE, &d_IQ_Imbalance) )
{
return false;
}
if( ! cmu_mod_xper_abort( &(p_rct->cmu) ) )
{
return false;
}
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_readTxIqImbalance( S_RCT *p_rct, double &d_IQ_Imbalance )
{
if( AGILENT_8960 == p_rct->device_type )
{
ViInt32 IQTIntegrity;
ViReal64 IQTSpurFreq;
ViReal64 IQTSpurLevel;
ViReal64 IQTResultsArray[age1960_IQ_ARRAY_MIN];
ViReal64 IQTFreqsArray[age1960_IQ_ARRAY_MIN];
ViInt32 IQTTuningCount;
if( age1960_readIQTuning_Q ( p_rct->age.vi,
age1960_IQ_ARRAY_MIN,
&IQTIntegrity,
&IQTSpurFreq,
&IQTSpurLevel,
IQTResultsArray,
IQTFreqsArray,
&IQTTuningCount
) != VI_SUCCESS )
{
return false;
}
d_IQ_Imbalance = get_IQ_Imbalance(IQTFreqsArray, IQTResultsArray, IQTTuningCount);
if( NAN == d_IQ_Imbalance )
{
return false;
}
}
else
{
if( ! cmu_mod_xper_read( &(p_rct->cmu), XPER_IQ_IMBALANCE_AVERAGE, &d_IQ_Imbalance) )
{
return false;
}
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_readTxIq(S_RCT *p_rct, double &d_IQ_Imbalance, double &d_Original_Offset)
{
if (AGILENT_8960 == p_rct->device_type)
{
ViInt32 IQTIntegrity;
ViReal64 IQTSpurFreq;
ViReal64 IQTSpurLevel;
ViReal64 IQTResultsArray[age1960_IQ_ARRAY_MIN];
ViReal64 IQTFreqsArray[age1960_IQ_ARRAY_MIN];
ViInt32 IQTTuningCount;
if (age1960_readIQTuning_Q (p_rct->age.vi,
age1960_IQ_ARRAY_MIN,
&IQTIntegrity,
&IQTSpurFreq,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -