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

📄 rct_ctrl.cpp

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