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

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.  *   cmu200.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  CMU 200 function source
  48.  *
  49.  * Author:
  50.  *  Andy Ueng (mtk00490)
  51.  *
  52.  *============================================================================
  53.  *             HISTORY
  54.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  55.  *------------------------------------------------------------------------------
  56.  * $Revision$
  57.  * $Modtime$
  58.  * $Log$
  59.  * 
  60.  *------------------------------------------------------------------------------
  61.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  62.  *============================================================================
  63.  ****************************************************************************/
  64. #include <assert.h>
  65. #pragma hdrstop
  66. #ifndef _META_FACTORY_CFG_H_
  67. #include "meta_factory_cfg.h"
  68. #endif
  69. #ifndef  _FT_UTILS_H_
  70. #include "ft_utils.h"
  71. #endif
  72. #ifndef  _META_UTILS_H_
  73. #include "meta_utils.h"
  74. #endif
  75. #ifndef _META_FACTORY_H_
  76. #include "meta_factory.h"
  77. #endif
  78. #ifndef _FORM_MAIN_H_
  79. #include "form_main.h"
  80. #endif
  81. #ifndef  _CMU200_H_
  82. #include "cmu200.h"
  83. #endif
  84. #pragma package(smart_init)
  85. //---------------------------------------------------------------------------
  86. int status;
  87. unsigned long num;
  88. char cmd[BUF], buf[BUF];
  89. //---------------------------------------------------------------------------
  90. bool cmu_init_rfg(CMU_VAR *cmu)
  91. {
  92.     if( cmu->BAND.AnsiCompareIC("GSM") == 0 )           { strcpy(cmd, "INIT:RFG"); viWrite(cmu->gsm, cmd, strlen(cmd), &num); }
  93.     else if( cmu->BAND.AnsiCompareIC("DCS") == 0 )      { strcpy(cmd, "INIT:RFG"); viWrite(cmu->dcs, cmd, strlen(cmd), &num); }
  94.     else if( cmu->BAND.AnsiCompareIC("PCS") == 0 )      { strcpy(cmd, "INIT:RFG"); viWrite(cmu->pcs, cmd, strlen(cmd), &num); }
  95.     else if( cmu->BAND.AnsiCompareIC("GSM850") == 0 )   { strcpy(cmd, "INIT:RFG"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num); }
  96.     else                                                { return false; }
  97.     return true;
  98. }
  99. //---------------------------------------------------------------------------
  100. bool cmu_init_TX_FreqErr(CMU_VAR *cmu)
  101. {
  102.     // band
  103.     //RFBandSupport_S  band_support;
  104.     status=viOpenDefaultRM(&cmu->RM);
  105.     if( status<VI_SUCCESS ) return false;
  106.     status=viOpen(cmu->RM, (cmu->ADD+"::0::INSTR").c_str(), VI_NULL, cmu->TMO, &cmu->base);
  107.     if( status<VI_SUCCESS ) return false;
  108.     status=viSetAttribute(cmu->base, VI_ATTR_TMO_VALUE, cmu->TMO);
  109.     if( status<VI_SUCCESS ) return false;
  110.     strcpy(cmd, "*rst"); viWrite(cmu->base, cmd, strlen(cmd), &num);
  111.     //strcpy(cmd, "*idn?"); viWrite(cmu->base, cmd, strlen(cmd), &num); viRead(cmu->base, buf, BUF, &num);
  112.     strcpy(cmd, "SYST:REM:ADDR:SEC 3,"GSM900MS_NSig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  113.     strcpy(cmd, "SYST:REM:ADDR:SEC 5,"GSM1800MS_NSig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  114.     strcpy(cmd, "SYST:REM:ADDR:SEC 7,"GSM1900MS_NSig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  115.     if( frmMainSel->cbGSM850->Checked )
  116.     //frmMainSel->Get_FinalBandSupport( band_support );
  117.     //if( band_support.GSM850 )
  118.     {
  119.         strcpy(cmd, "SYST:REM:ADDR:SEC 9,"GSM850MS_NSig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  120.     }
  121.     status=viOpen(cmu->RM, (cmu->ADD+"::3::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).gsm);
  122.     if( status<VI_SUCCESS ) return false;
  123.     status=viSetAttribute(cmu->gsm, VI_ATTR_TMO_VALUE, cmu->TMO);
  124.     if( status<VI_SUCCESS ) return false;
  125.     status=viOpen(cmu->RM, (cmu->ADD+"::5::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).dcs);
  126.     if( status<VI_SUCCESS ) return false;
  127.     status=viSetAttribute(cmu->dcs, VI_ATTR_TMO_VALUE, cmu->TMO);
  128.     if( status<VI_SUCCESS ) return false;
  129.     status=viOpen(cmu->RM, (cmu->ADD+"::7::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).pcs);
  130.     if( status<VI_SUCCESS ) return false;
  131.     status=viSetAttribute(cmu->pcs, VI_ATTR_TMO_VALUE, cmu->TMO);
  132.     if( status<VI_SUCCESS ) return false;
  133.     if( frmMainSel->cbGSM850->Checked )
  134.     //frmMainSel->Get_FinalBandSupport( band_support );
  135.     //if( band_support.GSM850 )
  136.     {
  137.         status=viOpen(cmu->RM, (cmu->ADD+"::9::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).gsm850);
  138.         if( status<VI_SUCCESS ) return false;
  139.         status=viSetAttribute(cmu->gsm850, VI_ATTR_TMO_VALUE, cmu->TMO);
  140.         if( status<VI_SUCCESS ) return false;
  141.     }
  142.     strcpy(cmd, "*rst"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  143.     strcpy(cmd, "INIT:RFG"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  144.    //Sleep(500);
  145.     strcpy(cmd, "*rst"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  146.     strcpy(cmd, "INIT:RFG"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  147.   // Sleep(500);
  148.     strcpy(cmd, "*rst"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  149.     strcpy(cmd, "INIT:RFG"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  150. //gsm nonsignaling setup--------------------------------------------------------
  151.    //Sleep(500);
  152.     if( frmMainSel->cbGSM850->Checked )
  153.     //frmMainSel->Get_FinalBandSupport( band_support );
  154.     //if( band_support.GSM850 )
  155.     {
  156.         strcpy(cmd, "*rst"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  157.         strcpy(cmd, "INIT:RFG"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  158.     }
  159.     return true;
  160. }
  161. //---------------------------------------------------------------------------
  162. bool cmu_init_RCT(CMU_VAR *cmu, AnsiString asFreqBand, bool bReset)
  163. {
  164.     // RM
  165.     status = viOpenDefaultRM(&cmu->RM);
  166.     if (status<VI_SUCCESS)
  167.     {
  168.         return false;
  169.     }
  170.     // base
  171.     status=viOpen (cmu->RM, (cmu->ADD+"::0::INSTR").c_str(), VI_NULL, cmu->TMO, &cmu->base);
  172.     if (status < VI_SUCCESS)
  173.     {
  174.         return false;
  175.     }
  176.     status=viSetAttribute(cmu->base, VI_ATTR_TMO_VALUE, cmu->TMO);
  177.     if( status<VI_SUCCESS ) return false;
  178.     if (bReset)
  179.     {
  180.         strcpy(cmd, "*rst"); viWrite(cmu->base, cmd, strlen(cmd), &num);
  181.     }
  182.     // GSM handle
  183.     if (IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  184.     {
  185.         strcpy(cmd, "SYST:REM:ADDR:SEC 3,"GSM900MS_NSig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  186.     }
  187.     // DCS hancle
  188.     if (IsCmuBandSupported(asFreqBand, CMU_DCS1800_BAND))
  189.     {
  190.         strcpy(cmd, "SYST:REM:ADDR:SEC 5,"GSM1800MS_NSig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  191.     }
  192.     // PCS handle
  193.     if (IsCmuBandSupported(asFreqBand, CMU_PCS1900_BAND))
  194.     {
  195.         strcpy(cmd, "SYST:REM:ADDR:SEC 7,"GSM1900MS_NSig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  196.     }
  197.     // GSM850 handle
  198.     if (IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND))
  199.     {
  200.         strcpy(cmd, "SYST:REM:ADDR:SEC 9,"GSM850MS_NSig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  201.     }
  202.     // timeout
  203.     if (IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  204.     {
  205.         status = viOpen(cmu->RM, (cmu->ADD+"::3::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).gsm);
  206.         if (status < VI_SUCCESS)
  207.         {
  208.             return false;
  209.         }
  210.         status = viSetAttribute(cmu->gsm, VI_ATTR_TMO_VALUE, cmu->TMO);
  211.         if (status < VI_SUCCESS)
  212.         {
  213.             return false;
  214.         }
  215.     }
  216.     if (IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND) )
  217.     {
  218.         status=viOpen(cmu->RM, (cmu->ADD+"::5::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).dcs);
  219.         if( status<VI_SUCCESS ) return false;
  220.         status=viSetAttribute(cmu->dcs, VI_ATTR_TMO_VALUE, cmu->TMO);
  221.         if( status<VI_SUCCESS ) return false;
  222.     }
  223.     if ( IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND) )
  224.     {
  225.         status=viOpen(cmu->RM, (cmu->ADD+"::7::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).pcs);
  226.         if( status<VI_SUCCESS ) return false;
  227.         status=viSetAttribute(cmu->pcs, VI_ATTR_TMO_VALUE, cmu->TMO);
  228.         if( status<VI_SUCCESS ) return false;
  229.     }
  230.     if ( IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND) )
  231.     {
  232.         status=viOpen(cmu->RM, (cmu->ADD+"::9::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).gsm850);
  233.         if( status<VI_SUCCESS ) return false;
  234.         status=viSetAttribute(cmu->gsm850, VI_ATTR_TMO_VALUE, cmu->TMO);
  235.         if( status<VI_SUCCESS ) return false;
  236.     }
  237.     if ( IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND) )
  238.     {
  239.         if( bReset )
  240.         {
  241.             strcpy(cmd, "*rst"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  242.         }
  243.         //strcpy(cmd, "INIT:RFG"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  244.     }
  245.    //Sleep(500);
  246.     if ( IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND) )
  247.     {
  248.         if( bReset )
  249.         {
  250.             strcpy(cmd, "*rst"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  251.         }
  252.         //strcpy(cmd, "INIT:RFG"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  253.     }
  254.   // Sleep(500);
  255.     if ( IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  256.     {
  257.         if( bReset )
  258.         {
  259.             strcpy(cmd, "*rst"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  260.         }
  261.        // strcpy(cmd, "INIT:RFG"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  262.     }
  263. //gsm nonsignaling setup--------------------------------------------------------
  264.    //Sleep(500);
  265.     if ( IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND) )
  266.     {
  267.         if( bReset )
  268.         {
  269.             strcpy(cmd, "*rst"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  270.         }
  271.        // strcpy(cmd, "INIT:RFG"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  272.     }
  273.     //gsm nonsignaling setup--------------------------------------------------------
  274.     if ( IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  275.     {
  276.         strcpy(cmd, "INP:STAT RF2"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  277.         strcpy(cmd, "OUTP:STAT RF2"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  278.         sprintf(cmd, "SENS:CORR:LOSS:INP2 %f", cmu->loss_gsm_i); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  279.         sprintf(cmd, "SENS:CORR:LOSS:OUTP2 %f", cmu->loss_gsm_o); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  280.  //jh lai, MTK AFC debug
  281.  //strcpy(cmd, "CONF:RFG:MOD:TRAN BURS"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  282.  //strcpy(cmd, "CONF:RFG:MOD:BIT:SEL ALL0"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  283.  //strcpy(cmd, "CONF:RFG:MOD:BIT:SEL DUMM"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  284.         strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  285.         strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  286.         strcpy(cmd, "CONF:RFG:MOD:TRAN CONT"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  287.         strcpy(cmd, "SOUR:RFG:FREQ:CHAN 70CH"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  288.         strcpy(cmd, "SOUR:RFG:LEV:UTIM -60"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  289.        // strcpy(cmd, "TRIG:SOUR RFP"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  290.        // strcpy(cmd, "TRIG:THR HIGH"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  291.         strcpy(cmd, "TRIG:SOUR IFP"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  292.         strcpy(cmd, "TRIG:THR LOW"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  293.         strcpy(cmd, "RFAN:CHAN 70CH"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  294.         strcpy(cmd, "RFAN:TSEQ GSM5"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  295.         strcpy(cmd, "LEV:MODE AUT"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  296.         strcpy(cmd, "CONF:POW:CONT SCAL,10"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  297.         strcpy(cmd, "CONF:POW:CONT:REP SING,NONE,NONE"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  298.        // strcpy(cmd, "TRAC:REM:MODE:DISP OFF"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  299.    // strcpy(cmd, "INIT:RFG"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  300.     }
  301.  //dcs nonsignaling setup-------------------------------------------------------
  302.     if ( IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND) )
  303.     {
  304.         strcpy(cmd, "INP:STAT RF2"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  305.         strcpy(cmd, "OUTP:STAT RF2"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  306.         sprintf(cmd, "SENS:CORR:LOSS:INP2 %f", cmu->loss_dcs_i); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  307.         sprintf(cmd, "SENS:CORR:LOSS:OUTP2 %f", cmu->loss_dcs_o); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  308.         strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  309.         strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  310.         strcpy(cmd, "CONF:RFG:MOD:TRAN CONT"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  311.         strcpy(cmd, "SOUR:RFG:FREQ:CHAN 512CH"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  312.         strcpy(cmd, "SOUR:RFG:LEV:UTIM -60"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  313.        // strcpy(cmd, "TRIG:SOUR RFP"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  314.        // strcpy(cmd, "TRIG:THR HIGH"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  315.         strcpy(cmd, "TRIG:SOUR IFP"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  316.         strcpy(cmd, "TRIG:THR LOW"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  317.         strcpy(cmd, "RFAN:CHAN 512CH"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  318.         strcpy(cmd, "RFAN:TSEQ GSM5"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  319.         strcpy(cmd, "LEV:MODE AUT"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  320.         strcpy(cmd, "CONF:POW:CONT SCAL,10"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  321.         strcpy(cmd, "CONF:POW:CONT:REP SING,NONE,NONE"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  322.        // strcpy(cmd, "TRAC:REM:MODE:DISP OFF"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  323.     }
  324.     //pcs nonsignaling setup-------------------------------------------------------
  325.     if ( IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND) )
  326.     {
  327.         strcpy(cmd, "INP:STAT RF2"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  328.         strcpy(cmd, "OUTP:STAT RF2"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  329.         sprintf(cmd, "SENS:CORR:LOSS:INP2 %f", cmu->loss_pcs_i); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  330.         sprintf(cmd, "SENS:CORR:LOSS:OUTP2 %f", cmu->loss_pcs_o); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  331.         strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  332.         strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  333.         strcpy(cmd, "CONF:RFG:MOD:TRAN CONT"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  334.         strcpy(cmd, "SOUR:RFG:FREQ:CHAN 512CH"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  335.         strcpy(cmd, "SOUR:RFG:LEV:UTIM -60"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  336.       //  strcpy(cmd, "TRIG:SOUR RFP"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  337.       //  strcpy(cmd, "TRIG:THR HIGH"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  338.         strcpy(cmd, "TRIG:SOUR IFP"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  339.         strcpy(cmd, "TRIG:THR LOW"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  340.         strcpy(cmd, "RFAN:CHAN 512CH"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  341.         strcpy(cmd, "RFAN:TSEQ GSM5"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  342.         strcpy(cmd, "LEV:MODE AUT"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  343.         strcpy(cmd, "CONF:POW:CONT SCAL,10"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  344.         strcpy(cmd, "CONF:POW:CONT:REP SING,NONE,NONE"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  345.      //   strcpy(cmd, "TRAC:REM:MODE:DISP OFF"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  346.     }
  347.  // gsm850
  348.  //gsm850 nonsignaling setup--------------------------------------------------------
  349.     if ( IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND) )
  350.     {
  351.         strcpy(cmd, "INP:STAT RF2"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  352.         strcpy(cmd, "OUTP:STAT RF2"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  353.         sprintf(cmd, "SENS:CORR:LOSS:INP2 %f", cmu->loss_gsm850_i); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  354.         sprintf(cmd, "SENS:CORR:LOSS:OUTP2 %f", cmu->loss_gsm850_o); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  355.  //jh lai, MTK AFC debug
  356.  //strcpy(cmd, "CONF:RFG:MOD:TRAN BURS"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  357.  //strcpy(cmd, "CONF:RFG:MOD:BIT:SEL ALL0"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  358.  //strcpy(cmd, "CONF:RFG:MOD:BIT:SEL DUMM"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  359.         strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  360.         strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  361.         strcpy(cmd, "CONF:RFG:MOD:TRAN CONT"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  362.         strcpy(cmd, "SOUR:RFG:FREQ:CHAN 190CH"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  363.         strcpy(cmd, "SOUR:RFG:LEV:UTIM -60"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  364.       //  strcpy(cmd, "TRIG:SOUR RFP"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  365.       //  strcpy(cmd, "TRIG:THR HIGH"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  366.         strcpy(cmd, "TRIG:SOUR IFP"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  367.         strcpy(cmd, "TRIG:THR LOW"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  368.         strcpy(cmd, "RFAN:CHAN 190CH"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  369.         strcpy(cmd, "RFAN:TSEQ GSM5"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  370.         strcpy(cmd, "LEV:MODE AUT"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  371.         strcpy(cmd, "CONF:POW:CONT SCAL,10"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  372.         strcpy(cmd, "CONF:POW:CONT:REP SING,NONE,NONE"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  373.      //   strcpy(cmd, "TRAC:REM:MODE:DISP OFF"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  374.    // strcpy(cmd, "INIT:RFG"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  375.     }
  376.     return true;
  377. }
  378. //---------------------------------------------------------------------------
  379. bool cmu_reset( CMU_VAR *cmu, AnsiString asFreqBand )
  380. {
  381. // reset
  382.     if ( IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND) )
  383.     {
  384.         strcpy(cmd, "*rst"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  385.         Sleep(2000);
  386.     }
  387.     if ( IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND) )
  388.     {
  389.         strcpy(cmd, "*rst"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  390.         Sleep(2000);
  391.     }
  392.     if ( IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  393.     {
  394.         strcpy(cmd, "*rst"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  395.         Sleep(2000);
  396.     }
  397.     if ( IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND) )
  398.     {
  399.         strcpy(cmd, "*rst"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  400.         Sleep(2000);
  401.     }
  402.     return true;
  403. }
  404. //------------------------------------------------------------------------------
  405. bool cmu_cellband(int band, CMU_VAR *cmu)
  406. {
  407.    // if( cmu->BAND.AnsiCompareIC("GSM")==0 && band==CMU_PGSM_BAND )         return true;
  408.    // else if( cmu->BAND.AnsiCompareIC("GSM")==0 && band==CMU_EGSM_BAND )    return true;
  409.    // else if( cmu->BAND.AnsiCompareIC("DCS")==0 && band==CMU_DCS1800_BAND ) return true;
  410.    // else if( cmu->BAND.AnsiCompareIC("PCS")==0 && band==CMU_PCS1900_BAND ) return true;
  411.    // else if( cmu->BAND.AnsiCompareIC("GSM850")==0 && band==CMU_GSM850_BAND ) return true;
  412.     // abort current active RFG
  413.     if( cmu->BAND.AnsiCompareIC("GSM") == 0 )           { strcpy(cmd, "ABOR:RFG"); viWrite(cmu->gsm, cmd, strlen(cmd), &num); }
  414.     else if( cmu->BAND.AnsiCompareIC("DCS") == 0 )      { strcpy(cmd, "ABOR:RFG"); viWrite(cmu->dcs, cmd, strlen(cmd), &num); }
  415.     else if( cmu->BAND.AnsiCompareIC("PCS") == 0 )      { strcpy(cmd, "ABOR:RFG"); viWrite(cmu->pcs, cmd, strlen(cmd), &num); }
  416.     else if( cmu->BAND.AnsiCompareIC("GSM850") == 0 )   { strcpy(cmd, "ABOR:RFG"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num); }
  417.     if( band==0 )                                               return false;
  418.     else if( band==CMU_PGSM_BAND || band==CMU_EGSM_BAND )       cmu->BAND="GSM";
  419.     else if( band==CMU_DCS1800_BAND )                           cmu->BAND="DCS";
  420.     else if( band==CMU_PCS1900_BAND )                           cmu->BAND="PCS";
  421.     else if( band==CMU_GSM850_BAND )                            cmu->BAND="GSM850";
  422.     else
  423.     {                                                        return false;}
  424.     if( band==CMU_PGSM_BAND || band==CMU_EGSM_BAND )
  425.     {
  426.         strcpy(cmd, "init:rfg;*opc?"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  427.         viRead(cmu->gsm, buf, BUF, &num);
  428.         Sleep(500);
  429.     }
  430.     else if( band==CMU_DCS1800_BAND )
  431.     {
  432.         strcpy(cmd, "init:rfg;*opc?"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  433.         viRead(cmu->dcs, buf, BUF, &num);
  434.         Sleep(500);
  435.     }
  436.     else if( band==CMU_PCS1900_BAND )
  437.     {
  438.         strcpy(cmd, "init:rfg;*opc?"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  439.         viRead(cmu->pcs, buf, BUF, &num);
  440.         Sleep(500);
  441.     }
  442.     else if( band==CMU_GSM850_BAND )
  443.     {
  444.         strcpy(cmd, "init:rfg;*opc?"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  445.         viRead(cmu->gsm850, buf, BUF, &num);
  446.         Sleep(500);
  447.     }
  448.     else
  449.     {
  450.         return false;
  451.     }
  452. // Sleep(500);
  453.     return true;
  454. }
  455. //cmu generator functions-------------------------------------------------------
  456. bool cmu_bcharfcn(short chan, CMU_VAR *cmu)
  457. {
  458.     sprintf(cmd, "sour:rfg:freq %dch;*opc?", chan);
  459.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    { status=viWrite(cmu->gsm,    cmd, strlen(cmd), &num); viRead(cmu->gsm,    buf, BUF, &num); }
  460.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    { status=viWrite(cmu->dcs,    cmd, strlen(cmd), &num); viRead(cmu->dcs,    buf, BUF, &num); }
  461.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    { status=viWrite(cmu->pcs,    cmd, strlen(cmd), &num); viRead(cmu->pcs,    buf, BUF, &num); }
  462.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) { status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); viRead(cmu->gsm850, buf, BUF, &num); }
  463.     if( status<VI_SUCCESS ) return false;
  464.     return true;
  465. }
  466. //---------------------------------------------------------------------------
  467. bool cmu_cellpower(double power, CMU_VAR *cmu)
  468. {
  469.     if( power>=0 ) power=-60;
  470.     sprintf(cmd, "sour:rfg:lev:utim %f", power);
  471.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm,    cmd, strlen(cmd), &num);
  472.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs,    cmd, strlen(cmd), &num);
  473.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs,    cmd, strlen(cmd), &num);
  474.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  475.     else                                { return false; }
  476.     Sleep(100);
  477.     if( status<VI_SUCCESS ) return false;
  478.     return true;
  479. }
  480. //---------------------------------------------------------------------------
  481. bool cmu_pow_cont(bool set, CMU_VAR *cmu)
  482. {
  483.     if( set )
  484.         strcpy(cmd, "CONF:RFG:MOD:TRAN CONT");
  485.     else
  486.         strcpy(cmd, "CONF:RFG:MOD:TRAN BURS");
  487.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm,    cmd, strlen(cmd), &num);
  488.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs,    cmd, strlen(cmd), &num);
  489.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs,    cmd, strlen(cmd), &num);
  490.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  491.     else                                { return false; }
  492.     if( status<VI_SUCCESS ) return false;
  493.     return true;
  494. }
  495. //---------------------------------------------------------------------------
  496. /////////////////////////////   Generator   /////////////////////////////////
  497. //---------------------------------------------------------------------------
  498. bool cmu_gen_freq_offset(CMU_VAR *cmu, double d_freq)
  499. {
  500.     AnsiString as_cmd = "SOURce:RFGenerator:FM:DEViation " + Double_To_AnsiString(d_freq);
  501.     if ((cmu->BAND).AnsiCompareIC("GSM") == 0)
  502.     {
  503.         status = viWrite(cmu->gsm, as_cmd.c_str(), as_cmd.Length(), &num);
  504.     }
  505.     else if ((cmu->BAND).AnsiCompareIC("DCS") == 0)
  506.     {
  507.         status = viWrite(cmu->dcs, as_cmd.c_str(), as_cmd.Length(), &num);
  508.     }
  509.     else if ((cmu->BAND).AnsiCompareIC("PCS") == 0)
  510.     {
  511.         status = viWrite(cmu->pcs, as_cmd.c_str(), as_cmd.Length(), &num);
  512.     }
  513.     else if ((cmu->BAND).AnsiCompareIC("GSM850")==0)
  514.     {
  515.         status = viWrite(cmu->gsm850, as_cmd.c_str(), as_cmd.Length(), &num);
  516.     }
  517.     else
  518.     {
  519.         assert(false);
  520.         return false;
  521.     }
  522.     if (status < VI_SUCCESS)
  523.     {
  524.         return false;
  525.     }
  526.     return true;
  527. }
  528. //---------------------------------------------------------------------------
  529. bool cmu_gen_bit_mod(E_CMU200_GEN_BIT_MODU_T mode, CMU_VAR *cmu)
  530. {
  531.     switch (mode)
  532.     {
  533.         case CMU200_GEN_BIT_MODU_OFF:
  534.         {
  535.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL OFF");
  536.         }
  537.         break;
  538.         case CMU200_GEN_BIT_MODU_ALL_ZERO:
  539.         {
  540.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL ALL0");
  541.         }
  542.         break;
  543.         case CMU200_GEN_BIT_MODU_PRBS:
  544.         {
  545.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS");
  546.         }
  547.         break;
  548.         case CMU200_GEN_BIT_MODU_DUMMY_BURST:
  549.         {
  550.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL DUMM");
  551.         }
  552.         break;
  553.         case CMU200_GEN_BIT_MODU_8_PSK_ALL_ZERO:
  554.         {
  555.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL EALL0");
  556.         }
  557.         break;
  558.         case CMU200_GEN_BIT_MODU_8_PSK_PRBS:
  559.         {
  560.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL EPRBS");
  561.         }
  562.         break;
  563.         default:
  564.         {
  565.             assert(false);
  566.         }    
  567.     }
  568.     if ((cmu->BAND).AnsiCompareIC("GSM") == 0)
  569.     {
  570.         status = viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  571.     }
  572.     else if ((cmu->BAND).AnsiCompareIC("DCS") == 0)
  573.     {
  574.         status = viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  575.     }
  576.     else if ((cmu->BAND).AnsiCompareIC("PCS") == 0)
  577.     {
  578.         status = viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  579.     }
  580.     else if ((cmu->BAND).AnsiCompareIC("GSM850")==0)
  581.     {
  582.         status = viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  583.     }
  584.     else
  585.     {
  586.         assert(false);
  587.         return false;
  588.     }
  589.     if (status < VI_SUCCESS)
  590.     {
  591.         return false;
  592.     }
  593.     return true;
  594. }
  595. //-----------------------------------------------------------------------
  596. bool cmu_gen_tsc(E_CMU200_GEN_TSC_TYPE_T tsc, CMU_VAR *cmu)
  597. {
  598.     switch (tsc)
  599.     {
  600.         case CMU200_GEN_TSC_ALL_ZERO:
  601.         {
  602.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL ALL");
  603.         }
  604.         break;
  605.         case CMU200_GEN_TSC_GSM_0:
  606.         {
  607.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM0");
  608.         }
  609.         break;
  610.         case CMU200_GEN_TSC_GSM_1:
  611.         {
  612.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM1");
  613.         }
  614.         break;
  615.         case CMU200_GEN_TSC_GSM_2:
  616.         {
  617.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM2");
  618.         }
  619.         break;
  620.         case CMU200_GEN_TSC_GSM_3:
  621.         {
  622.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM3");
  623.         }
  624.         break;
  625.         case CMU200_GEN_TSC_GSM_4:
  626.         {
  627.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM4");
  628.         }
  629.         break;
  630.         case CMU200_GEN_TSC_GSM_5:
  631.         {
  632.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5");
  633.         }
  634.         break;
  635.         case CMU200_GEN_TSC_GSM_6:
  636.         {
  637.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM6");
  638.         }
  639.         break;
  640.         case CMU200_GEN_TSC_GSM_7:
  641.         {
  642.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM7");
  643.         }
  644.         break;
  645.         case CMU200_GEN_TSC_DUMMY:
  646.         {
  647.              strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL DUMMy");
  648.         }
  649.         break;
  650.         default:
  651.         {
  652.         }
  653.         break;
  654.     }
  655.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm,    cmd, strlen(cmd), &num);
  656.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs,    cmd, strlen(cmd), &num);
  657.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs,    cmd, strlen(cmd), &num);
  658.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  659.     else                                { return false; }
  660.     if( status<VI_SUCCESS ) return false;
  661.     return true;
  662. }
  663. //cmu analyser functions--------------------------------------------------------
  664. bool cmu_tsc(int tsc, CMU_VAR *cmu)
  665. {
  666.     sprintf(cmd, "rfan:tseq GSM%d", tsc);
  667.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  668.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  669.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  670.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  671.     if( status<VI_SUCCESS ) return false;
  672.     return true;
  673. }
  674. //------------------------------------------------------------------------------
  675. bool cmu_tcharfcn(short chan, CMU_VAR *cmu)
  676. {
  677.     sprintf(cmd, "rfan:chan %dch;*opc?", chan);
  678.     if( (cmu->BAND).AnsiCompareIC("GSM") == 0 )         { status=viWrite(cmu->gsm,    cmd, strlen(cmd), &num); viRead(cmu->gsm, buf, BUF, &num); }
  679.     else if( (cmu->BAND).AnsiCompareIC("DCS") == 0 )    { status=viWrite(cmu->dcs,    cmd, strlen(cmd), &num); viRead(cmu->dcs, buf, BUF, &num); }
  680.     else if( (cmu->BAND).AnsiCompareIC("PCS") == 0 )    { status=viWrite(cmu->pcs,    cmd, strlen(cmd), &num); viRead(cmu->pcs, buf, BUF, &num); }
  681.     else if( (cmu->BAND).AnsiCompareIC("GSM850") == 0 ) { status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); viRead(cmu->gsm850, buf, BUF, &num); }
  682.     if( status<VI_SUCCESS ) return false;
  683.     return true;
  684. }
  685. //------------------------------------------------------------------------------
  686. bool cmu_pdtcharfcn(short chan, CMU_VAR *cmu)
  687. {
  688.     sprintf(cmd, "rfan:chan %dch;*opc?", chan);
  689.     if( (cmu->BAND).AnsiCompareIC("GSM") == 0 )         { status=viWrite(cmu->gsm,    cmd, strlen(cmd), &num); viRead(cmu->gsm, buf, BUF, &num); }
  690.     else if( (cmu->BAND).AnsiCompareIC("DCS") == 0 )    { status=viWrite(cmu->dcs,    cmd, strlen(cmd), &num); viRead(cmu->dcs, buf, BUF, &num); }
  691.     else if( (cmu->BAND).AnsiCompareIC("PCS") == 0 )    { status=viWrite(cmu->pcs,    cmd, strlen(cmd), &num); viRead(cmu->pcs, buf, BUF, &num); }
  692.     else if( (cmu->BAND).AnsiCompareIC("GSM850") == 0 ) { status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); viRead(cmu->gsm850, buf, BUF, &num); }
  693.     if( status<VI_SUCCESS ) return false;
  694.     return true;
  695. }
  696. //------------------------------------------------------------------------------
  697. bool cmu_mxtxlevel(int lev, CMU_VAR *cmu)
  698. {
  699.     sprintf(cmd, "conf:rfan:tpcl %d", lev);
  700.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  701.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  702.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  703.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  704.     if( status<VI_SUCCESS ) return false;
  705.     return true;
  706. }
  707. //-----------------------------------------------------------------------------
  708. bool cmu_config_txpwr_repetition_single_shot( CMU_VAR *cmu )
  709. {
  710.     char str[256];
  711.     sprintf(str, "conf:pow:cont:rep sing,none,none");
  712.     strcpy(cmd, str);
  713.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  714.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  715.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  716.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  717.     if( status<VI_SUCCESS ) return false;
  718.     return true;
  719. }
  720. //-----------------------------------------------------------------------------
  721. bool cmu_config_txpwr_repetition_continuous( CMU_VAR *cmu )
  722. {
  723.     char str[256];
  724.     sprintf(str, "conf:pow:cont:rep cont");
  725.     strcpy(cmd, str);
  726.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  727.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  728.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  729.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  730.     if( status<VI_SUCCESS ) return false;
  731.     return true;
  732. }
  733. //-----------------------------------------------------------------------------
  734. bool cmu_config_txpwr_repetition_single_shot_epsk( CMU_VAR *cmu )
  735. {
  736.     char str[256];
  737.     sprintf(str, "conf:pow:epsk:cont:rep sing,none,none");
  738.     strcpy(cmd, str);
  739.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  740.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  741.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  742.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  743.     if( status<VI_SUCCESS ) return false;
  744.     return true;
  745. }
  746. //-----------------------------------------------------------------------------
  747. bool cmu_config_txpwr_repetition_continuous_epsk( CMU_VAR *cmu )
  748. {
  749.     char str[256];
  750.     sprintf(str, "conf:pow:epsk:cont:rep cont");
  751.     strcpy(cmd, str);
  752.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  753.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  754.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  755.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  756.     if( status<VI_SUCCESS ) return false;
  757.     return true;
  758. }
  759. //-----------------------------------------------------------------------------
  760. bool cmu_config_txpwr_control_mode( CMU_VAR *cmu, int count )
  761. {
  762.     char str[256];
  763.     sprintf(str, "conf:pow:cont scal,%d", count );
  764.     strcpy(cmd, str);
  765.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  766.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  767.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  768.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  769.     if( status<VI_SUCCESS ) return false;
  770.     return true;
  771. }
  772. //-----------------------------------------------------------------------------
  773. bool cmu_config_txpwr_control_mode_epsk( CMU_VAR *cmu, int count )
  774. {
  775.     char str[256];
  776.     sprintf(str, "conf:pow:epsk:cont scal,%d", count );
  777.     //sprintf(str, "conf:pow:epsk:cont array,%d", count );
  778.     strcpy(cmd, str);
  779.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  780.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  781.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  782.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  783.     if( status<VI_SUCCESS ) return false;
  784.     sprintf(str, "conf:pow:epsk:cont:rpm dcom" );
  785.     strcpy(cmd, str);
  786.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  787.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  788.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  789.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  790.     if( status<VI_SUCCESS ) return false;
  791.     return true;
  792. }
  793. //------------------------------------------------------------------------------
  794. bool cmu_readtxpower(double *pow, CMU_VAR *cmu)
  795. {
  796.     AnsiString temp;
  797.     strcpy(cmd, "read:pow?");
  798.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  799.     {
  800.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  801.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  802.     }
  803.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  804.     {
  805.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  806.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  807.     }
  808.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  809.     {
  810.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  811.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  812.     }
  813.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  814.     {
  815.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  816.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  817.     }
  818.     buf[num-1]=NULL;
  819.     temp=(AnsiString)buf;
  820.     if( temp.Pos("NAN") ) return false;
  821.     temp=temp.SubString(1, temp.Pos(",")-1);
  822.     *pow = atof(temp.c_str());
  823.     return true;
  824. }
  825. //------------------------------------------------------------------------------
  826. bool cmu_readtxpower_8psk(double *pow, CMU_VAR *cmu)
  827. {
  828.     AnsiString temp;
  829.     strcpy(cmd, "read:pow:epsk?");
  830.    // strcpy(cmd, "READ:ARRAy:POWer:EPSK:AVERage?");
  831.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  832.     {
  833.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  834.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  835.     }
  836.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  837.     {
  838.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  839.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  840.     }
  841.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  842.     {
  843.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  844.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  845.     }
  846.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  847.     {
  848.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  849.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  850.     }
  851.     buf[num-1]=NULL;
  852.     temp=(AnsiString)buf;
  853.     if( temp.Pos("NAN") ) return false;
  854.     temp=temp.SubString(1, temp.Pos(",")-1);
  855.     *pow = atof(temp.c_str());
  856.     return true;
  857. }
  858. //=============================================================================
  859. ///////////////////////      Modulation      //////////////////////////////////
  860. //=============================================================================
  861. bool cmu_mod_init( CMU_VAR *cmu )
  862. {
  863.     strcpy(cmd, "init:mod");
  864.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  865.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  866.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  867.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  868.     if( status<VI_SUCCESS ) return false;
  869.     return true;
  870. }
  871. //-----------------------------------------------------------------------------
  872. bool cmu_mod_config_control_mode( CMU_VAR *cmu, int count )
  873. {
  874.     char str[256];
  875.     sprintf(str, "conf:mod:perr:cont scal,%d", count );
  876.     strcpy(cmd, str);
  877.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  878.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  879.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  880.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  881.     if( status<VI_SUCCESS ) return false;
  882.     return true;
  883. }
  884. //-----------------------------------------------------------------------------
  885. bool cmu_mod_config_control_mode_8psk( CMU_VAR *cmu, int count )
  886. {
  887.     char str[256];
  888.     sprintf(str, "conf:mod:perr:epsk:cont scal,%d", count );
  889.     strcpy(cmd, str);
  890.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  891.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  892.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  893.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  894.     if( status<VI_SUCCESS ) return false;
  895.     return true;
  896. }
  897. //-----------------------------------------------------------------------------
  898. bool cmu_mod_overview_config_control_mode_8psk(CMU_VAR *cmu, int count)
  899. {
  900.     char str[256];
  901.    // sprintf(str, "conf:mod:over:epsk:cont scal,%d", count);
  902.     sprintf(str, "CONF:MOD:EPSK:CONT SCAL,%d", count);
  903.     strcpy(cmd, str);
  904.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  905.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  906.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  907.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  908.     if( status<VI_SUCCESS ) return false;
  909.     return true;
  910. }
  911. //-----------------------------------------------------------------------------
  912. bool cmu_mod_config_control_repetition( CMU_VAR *cmu, int count )
  913. {
  914. #if 0
  915.     char str[256];
  916.     sprintf( str, "conf:mod:cont:rep sing,none,none" );
  917.     strcpy(cmd, str);
  918.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  919.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  920.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  921.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  922.     if( status<VI_SUCCESS ) return false;
  923. #endif
  924.     return true;
  925. }
  926. //-----------------------------------------------------------------------------
  927. bool cmu_mod_config_control_repetition_8psk( CMU_VAR *cmu, int count )
  928. {
  929. #if 0
  930.     char str[256];
  931.     sprintf( str, "conf:mod:epsk:cont:rep sing,none,none" );
  932.     strcpy(cmd, str);
  933.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  934.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  935.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  936.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  937.     if( status<VI_SUCCESS ) return false;
  938. #endif
  939.     return true;
  940. }
  941. //-----------------------------------------------------------------------------
  942. bool cmu_mod_config_control_subarray( CMU_VAR *cmu, int sample )
  943. {
  944.     char str[256];
  945.     sprintf( str, "conf:sub:mod:perr:gsmk:arit, 0, %d", sample );
  946.     strcpy(cmd, str);
  947.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  948.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  949.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  950.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  951.     if( status<VI_SUCCESS ) return false;
  952.     return true;
  953. }
  954. //-----------------------------------------------------------------------------
  955. bool cmu_mod_read(CMU_VAR *cmu, int category, double *mod)
  956. {
  957.     AnsiString temp,temp_total,temp_other,temp_value;
  958.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  959.     AnsiString value10,value11,value12,value13,value14;
  960.     AnsiString value[14];
  961.     int i=0;
  962.     int as_num;
  963.     AnsiString as;
  964.     strcpy(cmd, "read:mod?");
  965.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  966.     {
  967.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  968.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  969.     }
  970.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  971.     {
  972.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  973.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  974.     }
  975.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  976.     {
  977.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  978.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  979.     }
  980.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  981.     {
  982.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  983.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  984.     }
  985.     buf[num-1]=NULL;
  986.     temp=(AnsiString)buf;
  987.     if( temp.Pos("NAN") ) return false;
  988.     for(i=0;i<10;i++)
  989.     {
  990.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  991.         as_num= temp.AnsiPos(",");
  992.         value[i]=temp_value;
  993.         temp_total=temp.SubString(as_num+1, temp.Length());
  994.         temp=temp_total;
  995.     }
  996.    // *mod = atof(value[7].c_str());
  997.     *mod = atof(value[category].c_str());
  998.     return true;
  999. }
  1000. //-----------------------------------------------------------------------------
  1001. bool cmu_mod_read_8psk(CMU_VAR *cmu, int category, double *mod)
  1002. {
  1003.     AnsiString temp,temp_total,temp_other,temp_value;
  1004.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1005.     AnsiString value10,value11,value12,value13,value14;
  1006.     AnsiString value[14];
  1007.     int i=0;
  1008.     int i_num;
  1009.     AnsiString as;
  1010.     strcpy(cmd, "read:mod:epsk?");
  1011.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1012.     {
  1013.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1014.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1015.     }
  1016.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1017.     {
  1018.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1019.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1020.     }
  1021.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1022.     {
  1023.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1024.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1025.     }
  1026.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1027.     {
  1028.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1029.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1030.     }
  1031.     buf[num-1] = NULL;
  1032.     temp = (AnsiString) buf;
  1033.     if (temp.Pos("NAN"))
  1034.     {
  1035.         return false;
  1036.     }
  1037.     for (i=0; i<EPSK_MOD_PH_ERR_END; i++)
  1038.     {
  1039.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1040.         i_num= temp.AnsiPos(",");
  1041.         value[i]=temp_value;
  1042.         temp_total=temp.SubString(i_num+1, temp.Length());
  1043.         temp=temp_total;
  1044.     }
  1045.     *mod = atof(value[category].c_str());
  1046.     return true;
  1047. }
  1048. //-----------------------------------------------------------------------------
  1049. bool cmu_mod_overview_read_8psk(CMU_VAR *cmu, int category, double *mod)
  1050. {
  1051.     AnsiString temp;
  1052.     AnsiString temp_total;
  1053.     AnsiString temp_value;
  1054.     AnsiString value[EPSK_MOD_OVERVIEW_END];
  1055.     int i_num;
  1056.     
  1057.     strcpy(cmd, "read:mod:epsk?");
  1058.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1059.     {
  1060.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1061.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1062.     }
  1063.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1064.     {
  1065.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1066.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1067.     }
  1068.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1069.     {
  1070.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1071.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1072.     }
  1073.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1074.     {
  1075.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1076.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1077.     }
  1078.      buf[num-1]=NULL;
  1079.     temp=(AnsiString)buf;
  1080.     if( temp.Pos("NAN") ) return false;
  1081.     for(int i=0;i<18;i++)
  1082.     {
  1083.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1084.         i_num= temp.AnsiPos(",");
  1085.         value[i]=temp_value;
  1086.         temp_total=temp.SubString(i_num+1, temp.Length());
  1087.         temp=temp_total;
  1088.     }
  1089.     *mod = atof(value[category].c_str());
  1090.     return true;
  1091. }
  1092. //-----------------------------------------------------------------------------
  1093. bool cmu_mod_overview_fetch_8psk(CMU_VAR *cmu, int category, double *mod)
  1094. {
  1095.     AnsiString temp;
  1096.     AnsiString temp_total;
  1097.     AnsiString temp_value;
  1098.     AnsiString value[EPSK_MOD_OVERVIEW_END];
  1099.     int i_num;
  1100.     // init
  1101.     strcpy(cmd, "INIT:MOD:EPSK");
  1102.     if ((cmu->BAND).AnsiCompareIC("GSM")==0)
  1103.     {
  1104.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1105.     }
  1106.     else if ((cmu->BAND).AnsiCompareIC("DCS")==0)
  1107.     {
  1108.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1109.     }
  1110.     else if ((cmu->BAND).AnsiCompareIC("PCS")==0)
  1111.     {
  1112.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1113.     }
  1114.     else if ((cmu->BAND).AnsiCompareIC("GSM850")==0)
  1115.     {
  1116.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1117.     }
  1118.     // fetch
  1119.     strcpy(cmd, "FETC:MOD:EPSK?");
  1120.     if ((cmu->BAND).AnsiCompareIC("GSM")==0)
  1121.     {
  1122.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1123.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1124.     }
  1125.     else if ((cmu->BAND).AnsiCompareIC("DCS")==0)
  1126.     {
  1127.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1128.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1129.     }
  1130.     else if ((cmu->BAND).AnsiCompareIC("PCS")==0)
  1131.     {
  1132.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1133.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1134.     }
  1135.     else if ((cmu->BAND).AnsiCompareIC("GSM850")==0)
  1136.     {
  1137.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1138.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1139.     }
  1140.      buf[num-1]=NULL;
  1141.     temp=(AnsiString)buf;
  1142.     if( temp.Pos("NAN") ) return false;
  1143.     for(int i=0;i<18;i++)
  1144.     {
  1145.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1146.         i_num= temp.AnsiPos(",");
  1147.         value[i]=temp_value;
  1148.         temp_total=temp.SubString(i_num+1, temp.Length());
  1149.         temp=temp_total;
  1150.     }
  1151.     *mod = atof(value[category].c_str());
  1152. #if 0
  1153.     // abort
  1154.     strcpy(cmd, "ABORT:MOD:EPSK");
  1155.     if ((cmu->BAND).AnsiCompareIC("GSM")==0)
  1156.     {
  1157.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1158.     }
  1159.     else if ((cmu->BAND).AnsiCompareIC("DCS")==0)
  1160.     {
  1161.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1162.     }
  1163.     else if ((cmu->BAND).AnsiCompareIC("PCS")==0)
  1164.     {
  1165.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1166.     }
  1167.     else if ((cmu->BAND).AnsiCompareIC("GSM850")==0)
  1168.     {
  1169.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1170.     }
  1171. #endif
  1172.     return true;
  1173. }
  1174. //-----------------------------------------------------------------------------
  1175. bool cmu_Fetch_EPSK_Average_TxIq(CMU_VAR *cmu, ViReal64 *p_virSBS, ViReal64 *p_virOOS)
  1176. {
  1177.     AnsiString temp;
  1178.     AnsiString temp_total;
  1179.     AnsiString temp_value;
  1180.     AnsiString value[EPSK_MOD_PH_ERR_END];
  1181.     int i_num;
  1182.     // init
  1183.     strcpy(cmd, "INIT:MOD:EPSK");
  1184.     if ((cmu->BAND).AnsiCompareIC("GSM") == 0)
  1185.     {
  1186.         status = viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1187.         if (status < VI_SUCCESS)
  1188.         {
  1189.             return false;
  1190.         }
  1191.     }
  1192.     else if ((cmu->BAND).AnsiCompareIC("DCS") == 0)
  1193.     {
  1194.         status = viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1195.         if (status < VI_SUCCESS)
  1196.         {
  1197.             return false;
  1198.         }
  1199.     }
  1200.     else if ((cmu->BAND).AnsiCompareIC("PCS")==0)
  1201.     {
  1202.         status = viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1203.         if (status < VI_SUCCESS)
  1204.         {
  1205.             return false;
  1206.         }
  1207.     }
  1208.     else if ((cmu->BAND).AnsiCompareIC("GSM850") == 0)
  1209.     {
  1210.         status = viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1211.         if (status < VI_SUCCESS)
  1212.         {
  1213.             return false;
  1214.         }
  1215.     }
  1216.     // fetch
  1217.     strcpy(cmd, "FETC:MOD:EPSK?");
  1218.     if ((cmu->BAND).AnsiCompareIC("GSM") == 0)
  1219.     {
  1220.         status = viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1221.         if (status < VI_SUCCESS)
  1222.         {
  1223.             return false;
  1224.         }
  1225.         status = viRead(cmu->gsm, buf, BUF, &num);
  1226.         if (status < VI_SUCCESS)
  1227.         {
  1228.             return false;
  1229.         }
  1230.     }
  1231.     else if ((cmu->BAND).AnsiCompareIC("DCS") == 0)
  1232.     {
  1233.         status = viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1234.         if (status < VI_SUCCESS)
  1235.         {
  1236.             return false;
  1237.         }
  1238.         status = viRead(cmu->dcs, buf, BUF, &num);
  1239.         if (status < VI_SUCCESS)
  1240.         {
  1241.             return false;
  1242.         }
  1243.     }
  1244.     else if ((cmu->BAND).AnsiCompareIC("PCS") == 0)
  1245.     {
  1246.         status = viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1247.         if (status < VI_SUCCESS)
  1248.         {
  1249.             return false;
  1250.         }
  1251.         status = viRead(cmu->pcs, buf, BUF, &num);
  1252.         if (status < VI_SUCCESS)
  1253.         {
  1254.             return false;
  1255.         }
  1256.     }
  1257.     else if ((cmu->BAND).AnsiCompareIC("GSM850") == 0)
  1258.     {
  1259.         status = viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1260.         if (status < VI_SUCCESS)
  1261.         {
  1262.             return false;
  1263.         }
  1264.         status = viRead(cmu->gsm850, buf, BUF, &num);
  1265.         if (status < VI_SUCCESS)
  1266.         {
  1267.             return false;
  1268.         }
  1269.     }
  1270.     buf[num-1]=NULL;
  1271.     temp=(AnsiString)buf;
  1272.     if (temp.Pos("NAN"))
  1273.     {
  1274.         return false;
  1275.     }
  1276.     for (int i=0;i<EPSK_MOD_PH_ERR_END; i++)
  1277.     {
  1278.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1279.         i_num= temp.AnsiPos(",");
  1280.         value[i]=temp_value;
  1281.         temp_total=temp.SubString(i_num+1, temp.Length());
  1282.         temp=temp_total;
  1283.     }
  1284.     *p_virSBS = atof(value[EPSK_MOD_IQ_IMBALANCE_AVERAGE].c_str());
  1285.     *p_virOOS = atof(value[EPSK_MOD_ORIGINAL_OFFSET_AVERAGE].c_str());
  1286. #if 0
  1287.     // abort
  1288.     strcpy(cmd, "ABORT:MOD:EPSK");
  1289.     if ((cmu->BAND).AnsiCompareIC("GSM") == 0)
  1290.     {
  1291.         status = viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1292.         if (status < VI_SUCCESS)
  1293.         {
  1294.             return false;
  1295.         }
  1296.     }
  1297.     else if ((cmu->BAND).AnsiCompareIC("DCS") == 0)
  1298.     {
  1299.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1300.         if (status < VI_SUCCESS)
  1301.         {
  1302.             return false;
  1303.         }
  1304.     }
  1305.     else if ((cmu->BAND).AnsiCompareIC("PCS") == 0)
  1306.     {
  1307.         status = viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1308.         if (status < VI_SUCCESS)
  1309.         {
  1310.             return false;
  1311.         }
  1312.     }
  1313.     else if ((cmu->BAND).AnsiCompareIC("GSM850") == 0)
  1314.     {
  1315.         status = viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1316.         if (status < VI_SUCCESS)
  1317.         {
  1318.             return false;
  1319.         }
  1320.     }
  1321. #endif
  1322.     return true;
  1323. }
  1324. //-----------------------------------------------------------------------------
  1325. bool cmu_mod_fetch(CMU_VAR *cmu, int category, double *mod)
  1326. {
  1327.     AnsiString temp,temp_total,temp_other,temp_value;
  1328.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1329.     AnsiString value10,value11,value12,value13,value14;
  1330.     AnsiString value[14];
  1331.     int i=0;
  1332.     int as_num;
  1333.     AnsiString as;
  1334.     strcpy(cmd, "fetch:mod?");
  1335.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1336.     {
  1337.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1338.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1339.     }
  1340.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1341.     {
  1342.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1343.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1344.     }
  1345.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1346.     {
  1347.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1348.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1349.     }
  1350.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1351.     {
  1352.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1353.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1354.     }
  1355.     buf[num-1]=NULL;
  1356.     temp=(AnsiString)buf;
  1357.     if( temp.Pos("NAN") ) return false;
  1358.     for(i=0;i<10;i++)
  1359.     {
  1360.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1361.         as_num= temp.AnsiPos(",");
  1362.         value[i]=temp_value;
  1363.         temp_total=temp.SubString(as_num+1, temp.Length());
  1364.         temp=temp_total;
  1365.     }
  1366.     *mod = atof(value[category].c_str());
  1367.     return true;
  1368. }
  1369. //-----------------------------------------------------------------------------
  1370. bool cmu_mod_fetch_8psk(CMU_VAR *cmu, int category, double *mod)
  1371. {
  1372.     AnsiString temp,temp_total,temp_other,temp_value;
  1373.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1374.     AnsiString value10,value11,value12,value13,value14;
  1375.     AnsiString value[14];
  1376.     int i=0;
  1377.     int as_num;
  1378.     AnsiString as;
  1379.     strcpy(cmd, "read:mod:epsk?");
  1380.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1381.     {
  1382.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1383.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1384.     }
  1385.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1386.     {
  1387.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1388.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1389.     }
  1390.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1391.     {
  1392.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1393.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1394.     }
  1395.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1396.     {
  1397.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1398.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1399.     }
  1400.     buf[num-1]=NULL;
  1401.     temp=(AnsiString)buf;
  1402.     if( temp.Pos("NAN") ) return false;
  1403.     for (i=0; i<EPSK_MOD_PH_ERR_END; i++)
  1404.     {
  1405.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1406.         as_num= temp.AnsiPos(",");
  1407.         value[i]=temp_value;
  1408.         temp_total=temp.SubString(as_num+1, temp.Length());
  1409.         temp=temp_total;
  1410.     }
  1411.     *mod = atof(value[category].c_str());
  1412.     return true;
  1413. }
  1414. //-----------------------------------------------------------------------------
  1415. bool cmu_mod_sample(CMU_VAR *cmu, int category, double *mod)
  1416. {
  1417.     AnsiString temp,temp_total,temp_other,temp_value;
  1418.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1419.     AnsiString value10,value11,value12,value13,value14;
  1420.     AnsiString value[14];
  1421.     int i=0;
  1422.     int as_num;
  1423.     AnsiString as;
  1424.     strcpy(cmd, "sample:mod?");
  1425.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1426.     {
  1427.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1428.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1429.     }
  1430.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1431.     {
  1432.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1433.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1434.     }
  1435.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1436.     {
  1437.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1438.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1439.     }
  1440.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1441.     {
  1442.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1443.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1444.     }
  1445.     buf[num-1]=NULL;
  1446.     temp=(AnsiString)buf;
  1447.     if( temp.Pos("NAN") ) return false;
  1448.     for(i=0;i<10;i++)
  1449.     {
  1450.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1451.         as_num= temp.AnsiPos(",");
  1452.         value[i]=temp_value;
  1453.         temp_total=temp.SubString(as_num+1, temp.Length());
  1454.         temp=temp_total;
  1455.     }
  1456.    // *mod = atof(value[7].c_str());
  1457.     *mod = atof(value[category].c_str());
  1458.     return true;
  1459. }
  1460. //-----------------------------------------------------------------------------
  1461. bool cmu_mod_sample_8psk(CMU_VAR *cmu, int category, double *mod)
  1462. {
  1463.     AnsiString temp,temp_total,temp_other,temp_value;
  1464.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1465.     AnsiString value10,value11,value12,value13,value14;
  1466.     AnsiString value[14];
  1467.     int i=0;
  1468.     int as_num;
  1469.     AnsiString as;
  1470.     strcpy(cmd, "read:mod:epsk?");
  1471.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1472.     {
  1473.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1474.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1475.     }
  1476.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1477.     {
  1478.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1479.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1480.     }
  1481.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1482.     {
  1483.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1484.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1485.     }
  1486.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1487.     {
  1488.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1489.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1490.     }
  1491.     buf[num-1]=NULL;
  1492.     temp=(AnsiString)buf;
  1493.     if( temp.Pos("NAN") ) return false;
  1494.     for(i=0;i<EPSK_MOD_PH_ERR_END;i++)
  1495.     {
  1496.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1497.         as_num= temp.AnsiPos(",");
  1498.         value[i]=temp_value;
  1499.         temp_total=temp.SubString(as_num+1, temp.Length());
  1500.         temp=temp_total;
  1501.     }
  1502.     *mod = atof(value[category].c_str());
  1503.     return true;
  1504. }
  1505. //---------------------------------------------------------------------------
  1506. bool cmu_mod_abort( CMU_VAR *cmu )
  1507. {
  1508.     strcpy(cmd, "abort:mod");
  1509.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1510.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1511.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1512.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1513.     if( status<VI_SUCCESS ) return false;
  1514.     return true;
  1515. }
  1516. //---------------------------------------------------------------------------
  1517. bool cmu_mod_abort_8psk( CMU_VAR *cmu )
  1518. {
  1519.     strcpy(cmd, "abort:mod:epsk");
  1520.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1521.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1522.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1523.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1524.     if( status<VI_SUCCESS ) return false;
  1525.     return true;
  1526. }
  1527. //---------------------------------------------------------------------------
  1528. bool cmu_mod_stop( CMU_VAR *cmu )
  1529. {
  1530.     strcpy(cmd, "stop:mod");
  1531.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1532.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1533.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1534.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1535.     if( status<VI_SUCCESS ) return false;
  1536.     return true;
  1537. }
  1538. //---------------------------------------------------------------------------
  1539. bool cmu_mod_stop_8psk( CMU_VAR *cmu )
  1540. {
  1541.     strcpy(cmd, "stop:mod:epsk");
  1542.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1543.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1544.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1545.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1546.     if( status<VI_SUCCESS ) return false;
  1547.     return true;
  1548. }
  1549. //==============================================================================
  1550. bool cmu_close(CMU_VAR *cmu, AnsiString asFreqBand)
  1551. {
  1552.     if (cmu->BAND.AnsiCompareIC("GSM") == 0)
  1553.     {
  1554.         if (NULL != cmu->gsm)
  1555.         {
  1556.             strcpy(cmd, "ABOR:RFG");
  1557.             viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1558.         }
  1559.     }
  1560.     else if (cmu->BAND.AnsiCompareIC("DCS") == 0)
  1561.     {
  1562.         if (NULL != cmu->dcs)
  1563.         {
  1564.             strcpy(cmd, "ABOR:RFG");
  1565.             viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1566.         }
  1567.     }
  1568.     else if (cmu->BAND.AnsiCompareIC("PCS") == 0)
  1569.     {
  1570.         if (NULL != cmu->pcs)
  1571.         {
  1572.             strcpy(cmd, "ABOR:RFG");
  1573.             viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1574.         }
  1575.     }
  1576.     else if (cmu->BAND.AnsiCompareIC("GSM850") == 0)
  1577.     {
  1578.         if (NULL != cmu->gsm850)
  1579.         {
  1580.             strcpy(cmd, "ABOR:RFG");
  1581.             viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1582.         }
  1583.     }
  1584.     if (IsCmuBandSupported(asFreqBand, CMU_GSM850_BAND))
  1585.     {
  1586.         if (NULL != cmu->gsm850)
  1587.         {
  1588.             status = viClose(cmu->gsm850);
  1589.             if (status < VI_SUCCESS)
  1590.             {
  1591.                 return false;
  1592.             }
  1593.             cmu->gsm850 = NULL;
  1594.         }
  1595.     }
  1596.     if (IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND))
  1597.     {
  1598.         if (NULL != cmu->pcs)
  1599.         {
  1600.             status = viClose(cmu->pcs);
  1601.             if (status < VI_SUCCESS)
  1602.             {
  1603.                 return false;
  1604.             }
  1605.             cmu->pcs = NULL;
  1606.         }
  1607.     }
  1608.     if (IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND))
  1609.     {
  1610.         if (NULL != cmu->dcs)
  1611.         {
  1612.             status = viClose(cmu->dcs);
  1613.             if (status < VI_SUCCESS)
  1614.             {
  1615.                 return false;
  1616.             }
  1617.             cmu->dcs = NULL;
  1618.         }
  1619.     }
  1620.     if (IsCmuBandSupported(asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported(asFreqBand, CMU_EGSM_BAND))
  1621.     {
  1622.         if (NULL != cmu->gsm)
  1623.         {
  1624.             status = viClose(cmu->gsm);
  1625.             if (status < VI_SUCCESS)
  1626.             {
  1627.                 return false;
  1628.             }
  1629.             cmu->gsm = NULL;
  1630.         }
  1631.     }
  1632.     
  1633.     return true;
  1634. }
  1635. //---------------------------------------------------------------------------
  1636. bool cmu_close_RM(CMU_VAR *cmu)
  1637. {
  1638.     if (NULL != cmu->base)
  1639.     {
  1640.         status = viClose(cmu->base);
  1641.         if (status < VI_SUCCESS)
  1642.         {
  1643.             return false;
  1644.         }
  1645.         cmu->base = NULL;
  1646.     }
  1647.     if (NULL != cmu->RM)
  1648.     {
  1649.         status = viClose(cmu->RM);
  1650.         if (status < VI_SUCCESS)
  1651.         {
  1652.             return false;
  1653.         }
  1654.         cmu->RM = NULL;
  1655.     }
  1656.     return true;
  1657. }
  1658. //---------------------------------------------------------------------------
  1659. bool cmu_mod_tran(CMU_VAR *cmu, bool is_burst_mode)
  1660. {
  1661.     if(is_burst_mode)
  1662.     {
  1663.         if( cmu->BAND.AnsiCompareIC("GSM")==0 )
  1664.         {
  1665.             strcpy(cmd, "CONF:RFG:MOD:TRAN BURS"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1666.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1667.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1668.         }
  1669.         else if( cmu->BAND.AnsiCompareIC("DCS")==0 )
  1670.         {
  1671.             strcpy(cmd, "CONF:RFG:MOD:TRAN BURS"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1672.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1673.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1674.         }
  1675.         else if( cmu->BAND.AnsiCompareIC("PCS")==0 )
  1676.         {
  1677.             strcpy(cmd, "CONF:RFG:MOD:TRAN BURS"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1678.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1679.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1680.         }
  1681.         else if( cmu->BAND.AnsiCompareIC("GSM850")==0 )
  1682.         {
  1683.             strcpy(cmd, "CONF:RFG:MOD:TRAN BURS"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1684.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1685.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1686.         }
  1687.     }
  1688.     else
  1689.     {
  1690.         if( cmu->BAND.AnsiCompareIC("GSM")==0 )
  1691.         {
  1692.             strcpy(cmd, "CONF:RFG:MOD:TRAN CONT"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1693.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1694.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1695.         }
  1696.         else if( cmu->BAND.AnsiCompareIC("DCS")==0 )
  1697.         {
  1698.             strcpy(cmd, "CONF:RFG:MOD:TRAN CONT"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1699.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1700.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1701.         }
  1702.         else if( cmu->BAND.AnsiCompareIC("PCS")==0 )
  1703.         {
  1704.             strcpy(cmd, "CONF:RFG:MOD:TRAN CONT"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1705.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1706.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1707.         }
  1708.         else if( cmu->BAND.AnsiCompareIC("GSM850")==0 )
  1709.         {
  1710.             strcpy(cmd, "CONF:RFG:MOD:TRAN CONT"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1711.             strcpy(cmd, "CONF:RFG:MOD:BIT:SEL PRBS"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1712.             strcpy(cmd, "CONF:RFG:MOD:TSEQ:SEL GSM5"); viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1713.         }
  1714.     }
  1715.     return true;
  1716. }
  1717. //==============================================================================
  1718. ////////////////////////   CMU external phase error    /////////////////////////
  1719. //==============================================================================
  1720. bool cmu_mod_xper_init( CMU_VAR *cmu )
  1721. {
  1722.     strcpy(cmd, "init:mod:xper");
  1723.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1724.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1725.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1726.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1727.     if( status<VI_SUCCESS ) return false;
  1728.     return true;
  1729. }
  1730. //-----------------------------------------------------------------------------
  1731. bool cmu_mod_xper_config_control_mode( CMU_VAR *cmu, int count )
  1732. {
  1733.     char str[256];
  1734.     sprintf( str, "conf:mod:xper:cont scal,%d", count);
  1735.     strcpy(cmd, str);
  1736.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1737.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1738.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1739.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1740.     if( status<VI_SUCCESS ) return false;
  1741.     return true;
  1742. }
  1743. //-----------------------------------------------------------------------------
  1744. bool cmu_mod_xper_config_control_repetition( CMU_VAR *cmu, int count )
  1745. {
  1746.     #if 0
  1747.     char str[256];
  1748.     sprintf( str, "conf:mod:xper:gsmk:cont rep,%d,son", count );
  1749.     strcpy(cmd, str);
  1750.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1751.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1752.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1753.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1754.     if( status<VI_SUCCESS ) return false;
  1755.     #endif
  1756.     return true;
  1757. }
  1758. //-----------------------------------------------------------------------------
  1759. bool cmu_mod_xper_config_control_subarray( CMU_VAR *cmu, int sample )
  1760. {
  1761.     char str[256];
  1762.     sprintf(str, "conf:sub:mod:xper:gsmk:arit, 0, %d", sample);
  1763.     strcpy(cmd, str);
  1764.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1765.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1766.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1767.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1768.     if( status<VI_SUCCESS ) return false;
  1769.     return true;
  1770. }
  1771. //-----------------------------------------------------------------------------
  1772. bool cmu_mod_xper_read(CMU_VAR *cmu, int category, double *mod)
  1773. {
  1774.     AnsiString temp,temp_total,temp_other,temp_value;
  1775.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1776.     AnsiString value10,value11,value12,value13,value14;
  1777.     AnsiString value[14];
  1778.     int i=0;
  1779.     int as_num;
  1780.     AnsiString as;
  1781.     strcpy(cmd, "read:mod:xper?");
  1782.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1783.     {
  1784.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1785.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1786.     }
  1787.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1788.     {
  1789.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1790.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1791.     }
  1792.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1793.     {
  1794.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1795.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1796.     }
  1797.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1798.     {
  1799.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1800.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1801.     }
  1802.     buf[num-1]=NULL;
  1803.     temp=(AnsiString)buf;
  1804.     if( temp.Pos("NAN") ) return false;
  1805.     for(i=0;i<=17;i++)
  1806.     {
  1807.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1808.         as_num= temp.AnsiPos(",");
  1809.         value[i]=temp_value;
  1810.         temp_total=temp.SubString(as_num+1, temp.Length());
  1811.         temp=temp_total;
  1812.     }
  1813.    // *mod = atof(value[7].c_str());
  1814.     *mod = atof(value[category].c_str());
  1815.     return true;
  1816. }
  1817. //-----------------------------------------------------------------------------
  1818. bool cmu_mod_xper_read_txiq(CMU_VAR *cmu, double *d_IQ_Imbalance, double *d_Original_Offset)
  1819. {
  1820.     AnsiString temp,temp_total,temp_other,temp_value;
  1821.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1822.     AnsiString value10,value11,value12,value13,value14;
  1823.     AnsiString value[14];
  1824.     int i=0;
  1825.     int as_num;
  1826.     AnsiString as;
  1827.     strcpy(cmd, "read:mod:xper?");
  1828.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1829.     {
  1830.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1831.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1832.     }
  1833.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1834.     {
  1835.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1836.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1837.     }
  1838.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1839.     {
  1840.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1841.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1842.     }
  1843.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1844.     {
  1845.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1846.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1847.     }
  1848.     buf[num-1]=NULL;
  1849.     temp=(AnsiString)buf;
  1850.     if( temp.Pos("NAN") ) return false;
  1851.     for(i=0;i<=17;i++)
  1852.     {
  1853.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1854.         as_num= temp.AnsiPos(",");
  1855.         value[i]=temp_value;
  1856.         temp_total=temp.SubString(as_num+1, temp.Length());
  1857.         temp=temp_total;
  1858.     }
  1859.     *d_IQ_Imbalance     = atof(value[XPER_IQ_IMBALANCE_AVERAGE].c_str());
  1860.     *d_Original_Offset = atof(value[XPER_ORIGINAL_OFFSET_AVERAGE].c_str());
  1861.     return true;
  1862. }
  1863. //-----------------------------------------------------------------------------
  1864. bool cmu_mod_xper_fetch(CMU_VAR *cmu, int category, double *mod)
  1865. {
  1866.     AnsiString temp,temp_total,temp_other,temp_value;
  1867.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1868.     AnsiString value10,value11,value12,value13,value14;
  1869.     AnsiString value[14];
  1870.     int i=0;
  1871.     int as_num;
  1872.     AnsiString as;
  1873.     strcpy(cmd, "fetch:mod:xper?");
  1874.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1875.     {
  1876.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1877.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1878.     }
  1879.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1880.     {
  1881.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1882.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1883.     }
  1884.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1885.     {
  1886.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1887.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1888.     }
  1889.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1890.     {
  1891.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1892.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1893.     }
  1894.     buf[num-1]=NULL;
  1895.     temp=(AnsiString)buf;
  1896.     if( temp.Pos("NAN") ) return false;
  1897.     for(i=0;i<=17;i++)
  1898.     {
  1899.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1900.         as_num= temp.AnsiPos(",");
  1901.         value[i]=temp_value;
  1902.         temp_total=temp.SubString(as_num+1, temp.Length());
  1903.         temp=temp_total;
  1904.     }
  1905.    // *mod = atof(value[7].c_str());
  1906.     *mod = atof(value[category].c_str());
  1907.     return true;
  1908. }
  1909. //-----------------------------------------------------------------------------
  1910. bool cmu_mod_xper_sample(CMU_VAR *cmu, int category, double *mod)
  1911. {
  1912.     AnsiString temp,temp_total,temp_other,temp_value;
  1913.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  1914.     AnsiString value10,value11,value12,value13,value14;
  1915.     AnsiString value[14];
  1916.     int i=0;
  1917.     int as_num;
  1918.     AnsiString as;
  1919.     strcpy(cmd, "sample:mod:xper?");
  1920.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  1921.     {
  1922.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1923.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1924.     }
  1925.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  1926.     {
  1927.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1928.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1929.     }
  1930.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  1931.     {
  1932.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1933.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1934.     }
  1935.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  1936.     {
  1937.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  1938.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  1939.     }
  1940.     buf[num-1]=NULL;
  1941.     temp=(AnsiString)buf;
  1942.     if( temp.Pos("NAN") ) return false;
  1943.     for(i=0;i<=17;i++)
  1944.     {
  1945.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  1946.         as_num= temp.AnsiPos(",");
  1947.         value[i]=temp_value;
  1948.         temp_total=temp.SubString(as_num+1, temp.Length());
  1949.         temp=temp_total;
  1950.     }
  1951.    // *mod = atof(value[7].c_str());
  1952.     *mod = atof(value[category].c_str());
  1953.     return true;
  1954. }
  1955. //-----------------------------------------------------------------------------
  1956. bool cmu_mod_xper_abort( CMU_VAR *cmu )
  1957. {
  1958.     strcpy(cmd, "abort:mod:xper");
  1959.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1960.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1961.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1962.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1963.     if( status<VI_SUCCESS ) return false;
  1964.     return true;
  1965. }
  1966. //==============================================================================
  1967. ////////////////////////            CMU multislot      /////////////////////////
  1968. //==============================================================================
  1969. //-----------------------------------------------------------------------------
  1970. bool cmu_config_multislot_txpower_control_mode( CMU_VAR *cmu, int count )
  1971. {
  1972.     char str[256];
  1973.     sprintf(str, "CONFigure:POWer:MSLot:CONTrol SCALar, %d", count );
  1974.     strcpy(cmd, str);
  1975.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1976.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1977.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1978.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1979.     if( status<VI_SUCCESS ) return false;
  1980.     return true;
  1981. }
  1982. //-----------------------------------------------------------------------------
  1983. bool cmu_config_multislot_txpower_repetition_single_shot( CMU_VAR *cmu )
  1984. {
  1985.     char str[256];
  1986.     sprintf(str, "CONFigure:POWer:MSLot:CONTrol:REPetition sing,none,none");
  1987.     strcpy(cmd, str);
  1988.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  1989.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  1990.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  1991.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  1992.     if( status<VI_SUCCESS ) return false;
  1993.     return true;
  1994. }
  1995. //-----------------------------------------------------------------------------
  1996. bool cmu_config_multi_slot_count( CMU_VAR *cmu, int timeslot_count )
  1997. {
  1998.     char str[256];
  1999.     AnsiString as_cmd = "CONFigure:POWer:MSLot:SCOunt " + IntToStr( timeslot_count );
  2000.     sprintf( str, as_cmd.c_str() );
  2001.     strcpy(cmd, str);
  2002.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  2003.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  2004.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  2005.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  2006.     if( status<VI_SUCCESS ) return false;
  2007.     return true;
  2008. }
  2009. //-----------------------------------------------------------------------------
  2010. bool cmu_config_trigger_slot_offset( CMU_VAR *cmu, E_TIMESLOT timeslot )
  2011. {
  2012.     char str[256];
  2013.     AnsiString as_cmd = "CONFigure:RFANalyzer:MCONTrol:TSOFfset " + IntToStr( (int) timeslot );
  2014.     sprintf( str, as_cmd.c_str() );
  2015.     strcpy(cmd, str);
  2016.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  2017.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  2018.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  2019.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  2020.     if( status<VI_SUCCESS ) return false;
  2021.     return true;
  2022. }
  2023. //-----------------------------------------------------------------------------
  2024. bool cmu_config_multislot_modulation( CMU_VAR *cmu, E_MODULATION_TYPE modulation )
  2025. {
  2026.     AnsiString as_cmd;
  2027.     char str[256];
  2028.     if( MOD_GMSK == modulation )
  2029.     {
  2030.         AnsiString as_cmd = "CONFigure:POWer:MSLot:MVIew GMSK,GMSK,GMSK,GMSK";
  2031.     }
  2032.     else
  2033.     {
  2034.         AnsiString as_cmd = "CONFigure:POWer:MSLot:MVIew EPSK,EPSK,EPSK,EPSK";
  2035.     }
  2036.     sprintf( str, as_cmd.c_str() );
  2037.     strcpy(cmd, str);
  2038.     if(      (cmu->BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->gsm, cmd, strlen(cmd), &num);
  2039.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->dcs, cmd, strlen(cmd), &num);
  2040.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->pcs, cmd, strlen(cmd), &num);
  2041.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num);
  2042.     if( status<VI_SUCCESS ) return false;
  2043.     return true;
  2044. }
  2045. //-----------------------------------------------------------------------------
  2046. bool cmu_read_multislot_average_txpower( CMU_VAR *cmu, S_MULTISLOT_BURST_POWER *power )
  2047. {
  2048. #if 0
  2049.     AnsiString temp,temp_total,temp_other,temp_value;
  2050.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  2051.     AnsiString value10,value11,value12,value13,value14;
  2052.     AnsiString value[14];
  2053.     int i=0;
  2054.     int as_num;
  2055.     AnsiString as;
  2056.     strcpy(cmd, "READ:ARRay:POWer:MSLot:AVERage?");
  2057.     if( (cmu->BAND).AnsiCompareIC("GSM")==0 )
  2058.     {
  2059.         status=viWrite(cmu->gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  2060.         status=viRead(cmu->gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  2061.     }
  2062.     else if( (cmu->BAND).AnsiCompareIC("DCS")==0 )
  2063.     {
  2064.         status=viWrite(cmu->dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  2065.         status=viRead(cmu->dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  2066.     }
  2067.     else if( (cmu->BAND).AnsiCompareIC("PCS")==0 )
  2068.     {
  2069.         status=viWrite(cmu->pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  2070.         status=viRead(cmu->pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  2071.     }
  2072.     else if( (cmu->BAND).AnsiCompareIC("GSM850")==0 )
  2073.     {
  2074.         status=viWrite(cmu->gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  2075.         status=viRead(cmu->gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  2076.     }
  2077.     buf[num-1]=NULL;
  2078.     temp=(AnsiString)buf;
  2079.     if( temp.Pos("NAN") ) return false;
  2080.     for(i=0;i<=17;i++)
  2081.     {
  2082.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  2083.         as_num= temp.AnsiPos(",");
  2084.         value[i]=temp_value;
  2085.         temp_total=temp.SubString(as_num+1, temp.Length());
  2086.         temp=temp_total;
  2087.     }
  2088.    // *mod = atof(value[7].c_str());
  2089.     *mod = atof(value[category].c_str());
  2090. #endif
  2091.     return true; 
  2092. }
  2093. //---------------------------------------------------------------------------