📄 rct_ctrl.cpp
字号:
&IQTSpurLevel,
IQTResultsArray,
IQTFreqsArray,
&IQTTuningCount
) != VI_SUCCESS )
{
return false;
}
d_IQ_Imbalance = get_IQ_Imbalance(IQTFreqsArray, IQTResultsArray, IQTTuningCount);
d_Original_Offset = get_Original_Offset(IQTFreqsArray, IQTResultsArray, IQTTuningCount);
if ((NAN == d_IQ_Imbalance) || (NAN == d_Original_Offset))
{
return false;
}
}
else
{
if (! cmu_mod_xper_read_txiq( &(p_rct->cmu), &d_IQ_Imbalance, &d_Original_Offset))
{
return false;
}
}
return true;
}
//===========================================================================
////////////////////////// EPSK /////////////////////////
//===========================================================================
bool CRCTCTRL::RCT_Config_EPSK_ModACcuracy(S_RCT *p_rct, int iMeasureCount, int iTriSour, int iDelay, int iTimeout)
{
if( AGILENT_8960 == p_rct->device_type )
{
if( age1968A_Config_EPSK_ModACcuracy(p_rct->age.vi,
iMeasureCount,
iTriSour,
iDelay,
iTimeout) != VI_SUCCESS )
{
return false;
}
}
else
{
if (!cmu_mod_overview_config_control_mode_8psk(&(p_rct->cmu), iMeasureCount))
{
return false;
}
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_Fetch_EPSK_Average_OrignalOffset( S_RCT *p_rct, ViReal64 *p_virOOS )
{
if( AGILENT_8960 == p_rct->device_type )
{
if( age1968A_Fetch_EPSK_Average_OrignalOffset(p_rct->age.vi, p_virOOS ) != VI_SUCCESS )
{
return false;
}
}
else
{
if (!cmu_mod_overview_fetch_8psk(&(p_rct->cmu), 8, p_virOOS))
{
return false;
}
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_Fetch_EPSK_Average_IQImbalance( S_RCT *p_rct, ViReal64 *p_virSBS )
{
if (AGILENT_8960 == p_rct->device_type)
{
if( age1968A_Fetch_EPSK_Average_IQImbalance( p_rct->age.vi, p_virSBS) != VI_SUCCESS )
{
return false;
}
}
else
{
if (!cmu_mod_overview_read_8psk(&(p_rct->cmu), 16, p_virSBS))
{
return false;
}
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_Fetch_EPSK_Average_TxIq(S_RCT *p_rct, ViReal64 *p_virSBS, ViReal64 *p_virOOS)
{
if (AGILENT_8960 == p_rct->device_type)
{
// if( age1968A_Fetch_EPSK_Average_TxIq( p_rct->age.vi, p_virSBS, p_virOOS) != VI_SUCCESS )
// {
// return false;
// }
if (age1968A_Fetch_EPSK_Average_OrignalOffset(p_rct->age.vi, p_virOOS) != VI_SUCCESS)
{
return false;
}
if (age1968A_Fetch_EPSK_Average_IQImbalance(p_rct->age.vi, p_virSBS) != VI_SUCCESS )
{
return false;
}
}
else
{
if (!cmu_Fetch_EPSK_Average_TxIq(&(p_rct->cmu), p_virSBS, p_virOOS))
{
return false;
}
}
return true;
}
//===========================================================================
///////////////////////// Multislot TX power /////////////////////
//===========================================================================
bool CRCTCTRL::RCT_confMultiSlotTxPower( S_RCT *p_rct, int measure_count, E_MODULATION_TYPE modulation )
{
if( AGILENT_8960 == p_rct->device_type )
{
}
else
{
if( ! cmu_config_multislot_txpower_control_mode( &(p_rct->cmu), measure_count ) )
return false;
if( ! cmu_config_multislot_txpower_repetition_single_shot( &(p_rct->cmu) ) )
return false;
if( ! cmu_config_multi_slot_count( &(p_rct->cmu), 4 ) )
return false;
if( ! cmu_config_trigger_slot_offset( &(p_rct->cmu), TIMESLOT_0 ) )
return false;
if( ! cmu_config_multislot_modulation( &(p_rct->cmu), modulation ) )
return false;
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_readMultiSlotAverageTxPower( S_RCT *p_rct, S_MULTISLOT_BURST_POWER *power )
{
if( AGILENT_8960 == p_rct->device_type )
{
}
else
{
if( ! cmu_read_multislot_average_txpower( &(p_rct->cmu), power ) )
return false;
}
return true;
}
//===========================================================================
///////////////////////// Signalling //////////////////////////
//===========================================================================
bool CRCTCTRL::RCT_sig_Init( S_RCT *p_rct, AnsiString asFreqBand )
{
//-----------------------------------------------------------------------
// Agilent
if(CMU_200 == p_rct->device_type)
{
p_rct->cmu.s_BAND = "GSM";
if( ! cmu_sig_init_RCT( &(p_rct->cmu), asFreqBand, p_rct->bReset ) )
{
return false;
}
Sleep(3500);
}
/////////////////////////////////////////////////////////////////////////////
return true;
}
//--------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_close(S_RCT *p_rct, AnsiString asFreqBand)
{
if(p_rct->device_type == CMU_200)
{
if (!cmu_sig_close(&p_rct->cmu, asFreqBand))
{
return false;
}
}
return true;
}
//--------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_cellBand(S_RCT *p_rct, int i_BAND)
{
if(p_rct->device_type == CMU_200)
{
if( ! cmu_sig_cellband(&(p_rct->cmu), i_BAND) )
{
return false;
}
}
return true;
}
//--------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_cellPower(S_RCT *p_rct, double d_P_DL)
{
if(p_rct->device_type == CMU_200)
{
if( ! cmu_sig_cellpower( &(p_rct->cmu), d_P_DL ) )
{
return false;
}
}
return true;
}
//--------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_BCHARFCN(S_RCT *p_rct, short s_ARFCN)
{
if (CMU_200 == p_rct->device_type)
{
if (!cmu_sig_bcharfcn(&(p_rct->cmu), s_ARFCN))
{
return false;
}
}
return true;
}
//--------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_TCHARFCN(S_RCT *p_rct, short s_ARFCN)
{
if (CMU_200 == p_rct->device_type)
{
if (!cmu_sig_tcharfcn(&(p_rct->cmu), s_ARFCN))
{
return false;
}
}
return true;
}
//-------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_TCHTimeslot(S_RCT *p_rct, int TCHTimeslot)
{
if( CMU_200 == p_rct->device_type )
{
if( ! cmu_sig_tchtimeslot( &(p_rct->cmu), TCHTimeslot ) )
{
return false;
}
}
return true;
}
//-------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_TCHLevel(S_RCT *p_rct, double level)
{
if( CMU_200 == p_rct->device_type )
{
if( ! cmu_sig_tchlevel( &(p_rct->cmu), level ) )
{
return false;
}
}
return true;
}
//-------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_ConfigTSC(S_RCT *p_rct, char c_TSC)
{
if( CMU_200 == p_rct->device_type )
{
if( !cmu_sig_tsc( &(p_rct->cmu), c_TSC ) )
{
return false;
}
}
return true;
}
//-------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_MSTXLevel(S_RCT *p_rct, int i_pcl)
{
if( CMU_200 == p_rct->device_type )
{
if( ! cmu_sig_mstxlevel( &(p_rct->cmu), i_pcl ) )
{
return false;
}
}
return true;
}
//-------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_confPFER(S_RCT *p_rct, int measure_count )
{
if( CMU_200 == p_rct->device_type )
{
if( ! cmu_sig_mod_config_control_mode( &(p_rct->cmu), measure_count ) )
{
return false;
}
#if 0
if( ! cmu_sig_mod_config_control_repetition( &(p_rct->cmu), measure_count ) )
{
return false;
}
#endif
}
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_FetchAvgFreqErr( S_RCT *p_rct, ViReal64 &AvgFreqErr )
{
ViInt32 PFERIntegrity;
ViReal64 PFERRMSError;
ViReal64 PFERPeakError;
ViReal64 PFERFreqError;
if(CMU_200 == p_rct->device_type )
{
if( ! cmu_sig_mod_init( &(p_rct->cmu) ) )
{
return false;
}
if( ! cmu_sig_mod_sample(&(p_rct->cmu), FREQ_ERR_AVERAGE, &PFERFreqError) )
{
return false;
}
if( ! cmu_sig_mod_abort( &(p_rct->cmu) ) )
{
return false;
}
}
AvgFreqErr = PFERFreqError;
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_FetchAvgPhErr( S_RCT *p_rct, ViReal64 &AvgPhErr )
{
ViInt32 PFERIntegrity;
ViReal64 PFERRMSError;
ViReal64 PFERPeakError;
ViReal64 PFERFreqError;
if(CMU_200 == p_rct->device_type )
{
if( ! cmu_sig_mod_init( &(p_rct->cmu ) ) )
{
return false;
}
if( ! cmu_sig_mod_sample(&(p_rct->cmu), PH_ERR_RMS_AVERAGE, &PFERRMSError) )
// if( !cmu_readmod(PH_ERR_RMS_AVERAGE, &cmu, &PFERFreqError) )
{
return false;
}
if( ! cmu_sig_mod_abort( &(p_rct->cmu) ) )
{
return false;
}
}
AvgPhErr = PFERRMSError;
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_ReadAvgFreqErr( S_RCT *p_rct, ViReal64 &AvgFreqErr )
{
ViInt32 PFERIntegrity;
ViReal64 PFERRMSError;
ViReal64 PFERPeakError;
ViReal64 PFERFreqError;
if(CMU_200 == p_rct->device_type )
{
if( ! cmu_sig_mod_read(&(p_rct->cmu), FREQ_ERR_AVERAGE, &PFERFreqError) )
{
return false;
}
}
AvgFreqErr = PFERFreqError;
return true;
}
//---------------------------------------------------------------------------
bool CRCTCTRL::RCT_sig_ReadAvgPhErr( S_RCT *p_rct, ViReal64 &AvgPhErr )
{
ViInt32 PFERIntegrity;
ViReal64 PFERRMSError;
ViReal64 PFERPeakError;
ViReal64 PFERFreqError;
if(CMU_200 == p_rct->device_type )
{
if( ! cmu_sig_mod_read(&(p_rct->cmu), PH_ERR_RMS_AVERAGE, &PFERRMSError) )
{
return false;
}
}
AvgPhErr = PFERRMSError;
return true;
}
//===========================================================================
///////////////////////// string //////////////////////////////
//===========================================================================
const AnsiString AGILENT_8960_STR = "Agilent 8960";
const AnsiString CMU_200_STR = "CMU 200";
//---------------------------------------------------------------------------
int CRCTCTRL::RCT_StringToDeviceType( AnsiString as_str )
{
int device_type;
if( as_str.AnsiCompareIC(AGILENT_8960_STR) == 0 )
{
device_type = AGILENT_8960;
}
else
{
device_type = CMU_200;
}
return device_type;
}
//---------------------------------------------------------------------------
AnsiString CRCTCTRL::RCT_DeviceTypeToString( E_DEVICE_TYPE device_type )
{
AnsiString as_str;
switch( device_type )
{
case AGILENT_8960:
as_str = AGILENT_8960_STR;
break;
case CMU_200:
as_str = CMU_200_STR;
break;
default:
as_str = "Unkown device";
break;
}
return as_str;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -