rf_txpcs_sweep.cpp
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:12k
源码类别:

MTK

开发平台:

C++ Builder

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *   rf_txpcs_sweep.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  RF TX power channel sweep source
  48.  *
  49.  * Author:
  50.  * -------
  51.  *  Andy Ueng (mtk00490)
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * $Revision$
  58.  * $Modtime$
  59.  * $Log$
  60.  * 
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  63.  *============================================================================
  64.  ****************************************************************************/
  65. //---------------------------------------------------------------------------
  66. #include <vcl.h>
  67. #pragma hdrstop
  68. #include "form_RFTool.h"
  69. #include "rf_txpcs_sweep.h"
  70. #include "meta_utils.h"
  71. //#include "Crystal_INIFileHandle.h"
  72. #include "man_dll.h"
  73. // equipment
  74. #include "ageCommon.h"
  75. #include "age1968A.h"
  76. #include "cmu200.h"
  77. #ifndef  _RCT_COMMON_H_
  78. #include "rct_common.h"
  79. #endif
  80. #ifndef  _RCT_CTRL_H_
  81. #include "rct_ctrl.h"
  82. #endif
  83. #ifndef  _AGE_MISC_H_
  84. #include "age_misc.h"
  85. #endif
  86. // misc
  87. #ifndef  _BAND_UTILS_H_
  88. #include "band_utils.h"
  89. #endif
  90. //---------------------------------------------------------------------------
  91. //#define ONE_SECOND 1
  92. //------------------------------------------------------------------------------
  93. //ViInt16 vi_Band_Crystal;
  94. //==============================================================================
  95. static void  ConfirmCallback_TXPCS( void )
  96. {   if(frmRFTool->pt_TXPCS_sweep != NULL )
  97.     {
  98.         frmRFTool->pt_TXPCS_sweep->Resume();
  99.     }
  100. }
  101. //------------------------------------------------------------------------------
  102. static void cb_rf_stop_TXPCS()
  103. {
  104.     if(frmRFTool->pt_TXPCS_sweep != NULL )
  105.     {
  106.         frmRFTool->pt_TXPCS_sweep->Resume();
  107.     }
  108. }
  109. //==============================================================================
  110. void _fastcall CRF_TXPCS_SWEEP::ShowMsg()
  111. {
  112.     ShowMessage( as_Msg );
  113. }
  114. //------------------------------------------------------------------------------
  115. void _fastcall CRF_TXPCS_SWEEP::SyncShowMsg(AnsiString as)
  116. {
  117.     as_Msg = as;
  118.     Synchronize( ShowMsg );
  119. }
  120. //=========================================================================================
  121. __fastcall CRF_TXPCS_SWEEP::CRF_TXPCS_SWEEP(
  122.                                            bool CreateSuspended,
  123.                                            sTXPCSSweep *p_txpcs_sweep
  124.                                           // ViSession &vs_Age196x,
  125.                                           // AnsiString &as_TaModel
  126.                                           ): TThread(CreateSuspended)
  127. {
  128.     txpcs_sweep = p_txpcs_sweep;
  129.    // as_pAgeTaModel = &as_TaModel;
  130.    // pvi = &vs_Age196x;
  131. }
  132. //---------------------------------------------------------------------------
  133. void __fastcall CRF_TXPCS_SWEEP::Execute()
  134. {
  135.     char buf[40000], buf0[10000], buf1[10000], buf2[10000];
  136.     AnsiString as_str;
  137.     ViReal64 virTX;
  138.     #if 0
  139.     if( txpcs_sweep.device_type == AGILENT_8960 )
  140.     {
  141.         if((! txpcs_sweep.rf_cfg->getGSM400_CableLoss( rct.age.d400 )) ||
  142.            (! txpcs_sweep.rf_cfg->getGSM850_CableLoss( rct.age.d850 )) ||
  143.            (! txpcs_sweep.rf_cfg->getGSM900_CableLoss( rct.age.d900 )) ||
  144.            (! txpcs_sweep.rf_cfg->getDCS1800_CableLoss( rct.age.d1800 )) ||
  145.            (! txpcs_sweep.rf_cfg->getPCS1900_CableLoss( rct.age.d1900 ))
  146.           )
  147.         {
  148.             SyncShowMsg( " Agilent 8960 read config file (cable loss) fail " );
  149.             return;
  150.         }
  151.         if(! txpcs_sweep.rf_cfg->getTimeOut( rct.age.TMO ) )
  152.         {
  153.             SyncShowMsg( "Get Time Out from file fail" );
  154.             return;
  155.         }
  156.         if(! txpcs_sweep.rf_cfg->getGPIB_Addr( rct.age.ADD ) )
  157.         {
  158.             SyncShowMsg( "Get GPIB address from file fail" );
  159.             return;
  160.         }
  161.     }
  162.     #endif
  163.     if(! TXPCS_CfgRead() )
  164.     {
  165.         return;
  166.     }
  167.     rct.device_type = txpcs_sweep->e_device_type;
  168.     if( ! rct_ctrl.RCT_Init( &rct, BandIdx_To_FreqBandString(txpcs_sweep->e_band) ) )
  169.     {
  170.         SyncShowMsg( "Initialize equipment fail" );
  171.         return;
  172.     }
  173.     if( ! rct_ctrl.RCT_operatingMode( &rct, OPERATING_MODE_GSM_BCH ) )
  174.     {
  175.         SyncShowMsg( "Set equipment operation mode to BCH+TCH fail" );
  176.         return;
  177.     }
  178.     if( ! rct_ctrl.RCT_cellBand( &rct, BandIdx_To_AgeBand(txpcs_sweep->e_band)) )
  179.     {
  180.         SyncShowMsg( "Set equipment e_band fail" );
  181.         return;
  182.     }
  183.     if( ! rct_ctrl.RCT_MSTXLevel( &rct, txpcs_sweep->pcl ) )
  184.     {
  185.         SyncShowMsg( "Set equipment PCL fail" );
  186.         return;
  187.     }
  188.     if( ! rct_ctrl.RCT_ConfigTSC( &rct, txpcs_sweep->tsc) )
  189.     {
  190.         SyncShowMsg( "Set equipment TSC fail" );
  191.         return;
  192.     }
  193.     as_str = "Channel     Power(dBm)";
  194.     sprintf(buf, as_str.c_str());
  195.     txpcs_sweep->st_Log->Add(buf);
  196.     frmRFTool->write_TXPCS_log_file();
  197.     for(int arfcn=txpcs_sweep->s_arfcn_start; arfcn<=txpcs_sweep->s_arfcn_stop; arfcn +=txpcs_sweep->s_arfcn_step )
  198.     {
  199.         if ( this->Terminated )
  200.         {
  201.             this->OnTerminate = txpcs_sweep->ne_onTermByUser;
  202.             return;
  203.         }
  204.         if( txpcs_sweep->e_band == BANDSEL_GSM900 && arfcn>=125 && arfcn < 975)
  205.         {
  206.             arfcn = arfcn - 125 + 975;
  207.         }
  208.         if( ! rct_ctrl.RCT_TCHARFCN( &rct, arfcn ) )
  209.         {
  210.             SyncShowMsg( "Set equipment TCH ARFCN="+IntToStr(arfcn)+" fail" );
  211.             return;
  212.         }
  213.         S_RFTX rf_tx;
  214.         rf_tx.e_bandsel = txpcs_sweep->e_band;
  215.         rf_tx.s_RfNbTxReq.arfcn  = arfcn;
  216.         rf_tx.s_RfNbTxReq.bsic   = txpcs_sweep->tsc;
  217.         rf_tx.s_RfNbTxReq.power  = txpcs_sweep->pcl;
  218.         rf_tx.s_RfNbTxReq.frames = txpcs_sweep->frames;
  219.         rf_tx.s_RfNbTxReq.dacValue = txpcs_sweep->s_afc_dac;
  220.         rf_tx.s_RfNbTxReq.burstTypeNB = txpcs_sweep->burst_type;
  221.         RF_TX_Object.ConfirmCallback   = ::ConfirmCallback_TXPCS;
  222.         RF_TX_Object.REQ_Start(rf_tx);
  223.        // RF_TX_Object.REQ_Start( txpcs_sweep->e_band, arfcn, txpcs_sweep->tsc, txpcs_sweep->pcl,
  224.        //                         txpcs_sweep->frames, txpcs_sweep->s_afc_dac, txpcs_sweep->burst_type, -99, -99, -99, -99 );
  225.         this->Suspend();
  226.         if (RF_TX_Object.Get_ConfirmState() != METAAPP_SUCCESS )
  227.         {
  228.             SyncShowMsg( "NB TX fail" );
  229.             return;
  230.         }
  231.         Sleep(50);
  232.         if( ! rct_ctrl.RCT_confTXPower( &rct ) )
  233.         {
  234.             SyncShowMsg( "Equipment config TX power measurement function fail" );
  235.             return;
  236.         }
  237.         if( ! rct_ctrl.RCT_initMeasFcn_TXPOWER( &rct ) )
  238.         {
  239.             SyncShowMsg( "Equipment initialize TX power measurement function fail" );
  240.             return;
  241.         }
  242.         if( ! rct_ctrl.RCT_ReadTxPower( &rct, virTX ) )
  243.         {
  244.             SyncShowMsg( "Equipment read TX power measurement fail" );
  245.             return;
  246.         }
  247.         sprintf( buf, "%4d       %8.3f ", arfcn, virTX);
  248.         txpcs_sweep->st_Log->Add(buf);
  249.         frmRFTool->write_TXPCS_log_file();
  250.         RF_STOP_Object.REQ_Start();
  251.     }
  252.     this->OnTerminate = txpcs_sweep->ne_onTermSuccess;
  253. }
  254. //---------------------------------------------------------------------------
  255. bool __fastcall CRF_TXPCS_SWEEP::TXPCS_CfgRead( void )
  256. {
  257.     if (AGILENT_8960 == txpcs_sweep->e_device_type)
  258.     {
  259.         if((! txpcs_sweep->rf_cfg->getGSM400_CableLoss( rct.age.d400 )) ||
  260.            (! txpcs_sweep->rf_cfg->getGSM850_CableLoss( rct.age.d850 )) ||
  261.            (! txpcs_sweep->rf_cfg->getGSM900_CableLoss( rct.age.d900 )) ||
  262.            (! txpcs_sweep->rf_cfg->getDCS1800_CableLoss( rct.age.d1800 )) ||
  263.            (! txpcs_sweep->rf_cfg->getPCS1900_CableLoss( rct.age.d1900 ))
  264.           )
  265.         {
  266.             SyncShowMsg( " Agilent 8960 read config file (cable loss) fail " );
  267.             return false;
  268.         }
  269.         if(! txpcs_sweep->rf_cfg->getTimeOut( rct.age.TMO ) )
  270.         {
  271.             SyncShowMsg( "Get Time Out from file fail" );
  272.             return false;
  273.         }
  274.         if(! txpcs_sweep->rf_cfg->getGPIB_Addr( rct.age.ADD ) )
  275.         {
  276.             SyncShowMsg( "Get GPIB address from file fail" );
  277.             return false;
  278.         }
  279.     }
  280.     else // CMU 200
  281.     {
  282.         if(
  283.              (! txpcs_sweep->rf_cfg->getCMU200_INPUT_GSM850_CableLoss( rct.cmu.loss_gsm850_i )) ||
  284.              (! txpcs_sweep->rf_cfg->getCMU200_INPUT_GSM900_CableLoss( rct.cmu.loss_gsm_i    )) ||
  285.              (! txpcs_sweep->rf_cfg->getCMU200_INPUT_DCS1800_CableLoss( rct.cmu.loss_dcs_i   )) ||
  286.              (! txpcs_sweep->rf_cfg->getCMU200_INPUT_PCS1900_CableLoss( rct.cmu.loss_pcs_i   ))
  287.           )
  288.         {
  289.              SyncShowMsg(  " CMU200 read config file (input cable loss) fail " );
  290.              return false;
  291.         }
  292.         //*************************************************************
  293.         //************************************************************
  294.         if(
  295.                (! txpcs_sweep->rf_cfg->getCMU200_OUTPUT_GSM850_CableLoss( rct.cmu.loss_gsm850_o )) ||
  296.                (! txpcs_sweep->rf_cfg->getCMU200_OUTPUT_GSM900_CableLoss( rct.cmu.loss_gsm_o ))    ||
  297.                (! txpcs_sweep->rf_cfg->getCMU200_OUTPUT_DCS1800_CableLoss( rct.cmu.loss_dcs_o ))   ||
  298.                (! txpcs_sweep->rf_cfg->getCMU200_OUTPUT_PCS1900_CableLoss( rct.cmu.loss_pcs_o ))
  299.                                                       )
  300.         {
  301.              SyncShowMsg(  " CMU200 read config file (output cable loss) fail " );
  302.              return false;
  303.         }
  304.         if(! txpcs_sweep->rf_cfg->getCMU200_TimeOut( rct.cmu.TMO ) )
  305.         {
  306.             SyncShowMsg( "Get Time Out from file fail" );
  307.             return false;
  308.         }
  309.         if(! txpcs_sweep->rf_cfg->getCMU200_GPIB_Addr( rct.cmu.ADD ) )
  310.         {
  311.             SyncShowMsg( "Get GPIB address from file fail" );
  312.             return false;
  313.         }
  314.         rct.cmu.ADD = rct.cmu.ADD.SubString(0, rct.cmu.ADD.Pos("::INSTR")-1);
  315.     }
  316.     return true;
  317. }