⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rct_ctrl.cpp

📁 MTK 手机软件开发 META 源代码,开发环境: C++ Builder
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            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 + -