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

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_sig.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  CMU 200 signalling 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. #pragma hdrstop
  65. #ifndef _META_FACTORY_CFG_H_
  66. #include "meta_factory_cfg.h"
  67. #endif
  68. #ifndef  _META_UTILS_H_
  69. #include "meta_utils.h"
  70. #endif
  71. #ifndef _META_FACTORY_H_
  72. #include "meta_factory.h"
  73. #endif
  74. #ifndef _FORM_MAIN_H_
  75. #include "form_main.h"
  76. #endif
  77. #ifndef  _CMU200_SIG_H_
  78. #include "cmu200_sig.h"
  79. #endif
  80. #pragma package(smart_init)
  81. //=============================================================================
  82. ///////////////////////      General      //////////////////////////////////
  83. //=============================================================================
  84. //---------------------------------------------------------------------------
  85. bool cmu_sig_init_RCT(CMU_VAR *cmu, AnsiString asFreqBand, bool bReset )
  86. {
  87.     int status;
  88.     unsigned long num;
  89.     char cmd[BUF], buf[BUF];
  90.     if (NULL == cmu->RM)
  91.     {
  92.         status=viOpenDefaultRM(&cmu->RM);
  93.         if( status<VI_SUCCESS ) return false;
  94.         status=viOpen(cmu->RM, (cmu->ADD+"::0::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).base);
  95.         if( status<VI_SUCCESS ) return false;
  96.         status=viSetAttribute(cmu->base, VI_ATTR_TMO_VALUE, cmu->TMO);
  97.         if( status<VI_SUCCESS ) return false;
  98.         if (bReset)
  99.         {
  100.             strcpy(cmd, "*rst"); viWrite(cmu->base, cmd, strlen(cmd), &num);
  101.         }    
  102.     }
  103.     if ( IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  104.     {
  105.         strcpy(cmd, "SYST:REM:ADDR:SEC 13,"GSM900MS_Sig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  106.     }
  107.     if ( IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND) )
  108.     {
  109.         strcpy(cmd, "SYST:REM:ADDR:SEC 15,"GSM1800MS_Sig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  110.     }
  111.     if ( IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND) )
  112.     {
  113.         strcpy(cmd, "SYST:REM:ADDR:SEC 17,"GSM1900MS_Sig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  114.     }
  115.     if ( IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND) )
  116.     {
  117.         strcpy(cmd, "SYST:REM:ADDR:SEC 19,"GSM850MS_Sig""); viWrite(cmu->base, cmd, strlen(cmd), &num);
  118.     }
  119.     if ( IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  120.     {
  121.         status=viOpen(cmu->RM, (cmu->ADD+"::13::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).s_gsm);
  122.         if( status<VI_SUCCESS ) return false;
  123.         status=viSetAttribute(cmu->s_gsm, VI_ATTR_TMO_VALUE, cmu->TMO);
  124.         if( status<VI_SUCCESS ) return false;
  125.     }
  126.     if ( IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND) )
  127.     {
  128.         status=viOpen(cmu->RM, (cmu->ADD+"::15::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).s_dcs);
  129.         if( status<VI_SUCCESS ) return false;
  130.         status=viSetAttribute(cmu->s_dcs, VI_ATTR_TMO_VALUE, cmu->TMO);
  131.         if( status<VI_SUCCESS ) return false;
  132.     }
  133.     if ( IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND) )
  134.     {
  135.         status=viOpen(cmu->RM, (cmu->ADD+"::17::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).s_pcs);
  136.         if( status<VI_SUCCESS ) return false;
  137.         status=viSetAttribute(cmu->s_pcs, VI_ATTR_TMO_VALUE, cmu->TMO);
  138.         if( status<VI_SUCCESS ) return false;
  139.     }
  140.     if ( IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND) )
  141.     {
  142.         status=viOpen(cmu->RM, (cmu->ADD+"::19::INSTR").c_str(), VI_NULL, cmu->TMO, &(*cmu).s_gsm850);
  143.         if( status<VI_SUCCESS ) return false;
  144.         status=viSetAttribute(cmu->s_gsm850, VI_ATTR_TMO_VALUE, cmu->TMO);
  145.         if( status<VI_SUCCESS ) return false;
  146.     }
  147.     if ( IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND) )
  148.     {
  149.         if( bReset )
  150.         {
  151.             strcpy(cmd, "*rst"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  152.            // Sleep(2500);
  153.         }
  154.        // strcpy(cmd, "PROCedure:SIGNalling:ACTion SON"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  155.     }
  156.    //
  157.     if ( IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND) )
  158.     {
  159.         if( bReset )
  160.         {
  161.             strcpy(cmd, "*rst"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  162.            // Sleep(2500);
  163.         }
  164.        // strcpy(cmd, "PROCedure:SIGNalling:ACTion SON"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  165.     }
  166.   //
  167.     if ( IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  168.     {
  169.         if( bReset )
  170.         {
  171.             strcpy(cmd, "*rst"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  172.             //Sleep(2500);
  173.         }
  174.        // strcpy(cmd, "PROCedure:SIGNalling:ACTion SON"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  175.     }
  176. //gsm nonsignaling setup--------------------------------------------------------
  177.    //Sleep(500);
  178.     if ( IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND) )
  179.     {
  180.         if( bReset )
  181.         {
  182.             strcpy(cmd, "*rst"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  183.            // Sleep(2500);
  184.         }
  185.        // strcpy(cmd, "PROCedure:SIGNalling:ACTion SON"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  186.     }
  187.     //gsm nonsignaling setup--------------------------------------------------------
  188.     if ( IsCmuBandSupported( asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported( asFreqBand, CMU_EGSM_BAND) )
  189.     {
  190.         strcpy(cmd, "INP:STAT RF2"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  191.         strcpy(cmd, "OUTP:STAT RF2"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  192.         sprintf(cmd, "SENS:CORR:LOSS:INP2 %f", cmu->loss_gsm_i); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  193.         sprintf(cmd, "SENS:CORR:LOSS:OUTP2 %f", cmu->loss_gsm_o); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  194.         sprintf(cmd, "CONFigure:BSSignal:CCH:MODE BATC"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  195.         sprintf(cmd, "CONFigure:NETWork:SMODe:SCHannel NONE"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  196.         sprintf(cmd, "TRIG:SOUR IFP"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  197.     }
  198.     if ( IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND) )
  199.     {
  200.         strcpy(cmd, "INP:STAT RF2"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  201.         strcpy(cmd, "OUTP:STAT RF2"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  202.         sprintf(cmd, "SENS:CORR:LOSS:INP2 %f", cmu->loss_dcs_i); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  203.         sprintf(cmd, "SENS:CORR:LOSS:OUTP2 %f", cmu->loss_dcs_o); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  204.         sprintf(cmd, "CONFigure:BSSignal:CCH:MODE BATC"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  205.         sprintf(cmd, "CONFigure:NETWork:SMODe:SCHannel NONE"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  206.         sprintf(cmd, "TRIG:SOUR IFP"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  207.     }
  208.     if ( IsCmuBandSupported( asFreqBand, CMU_PCS1900_BAND) )
  209.     {
  210.         strcpy(cmd, "INP:STAT RF2"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  211.         strcpy(cmd, "OUTP:STAT RF2"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  212.         sprintf(cmd, "SENS:CORR:LOSS:INP2 %f", cmu->loss_pcs_i); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  213.         sprintf(cmd, "SENS:CORR:LOSS:OUTP2 %f", cmu->loss_pcs_o); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  214.         sprintf(cmd, "CONFigure:BSSignal:CCH:MODE BATC"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  215.         sprintf(cmd, "CONFigure:NETWork:SMODe:SCHannel NONE"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  216.         sprintf(cmd, "TRIG:SOUR IFP"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  217.     }
  218.  // gsm850
  219.  //gsm850 nonsignaling setup--------------------------------------------------------
  220.     if ( IsCmuBandSupported( asFreqBand, CMU_GSM850_BAND) )
  221.     {
  222.         strcpy(cmd, "INP:STAT RF2"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  223.         strcpy(cmd, "OUTP:STAT RF2"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  224.         sprintf(cmd, "SENS:CORR:LOSS:INP2 %f", cmu->loss_gsm850_i); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  225.         sprintf(cmd, "SENS:CORR:LOSS:OUTP2 %f", cmu->loss_gsm850_o); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  226.         sprintf(cmd, "CONFigure:BSSignal:CCH:MODE BATC"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  227.         sprintf(cmd, "CONFigure:NETWork:SMODe:SCHannel NONE"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  228.         sprintf(cmd, "TRIG:SOUR IFP"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  229.     }
  230.     return true;
  231. }
  232. //------------------------------------------------------------------------------
  233. bool cmu_sig_close(CMU_VAR *cmu, AnsiString asFreqBand)
  234. {
  235.     int status;
  236.     unsigned long num;
  237.     char cmd[BUF];
  238.     
  239.    // if (cmu->BAND.AnsiCompareIC("GSM") == 0)
  240.    // {
  241.    //     if (NULL != cmu->s_gsm)
  242.    //     {
  243.    //         strcpy(cmd, "ABOR:RFG");
  244.    //         viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  245.    //     }
  246.     //}
  247.     //else if (cmu->BAND.AnsiCompareIC("DCS") == 0)
  248.    // {
  249.    //     if (NULL != cmu->s_dcs)
  250.    //     {
  251.    //         strcpy(cmd, "ABOR:RFG");
  252.    //         viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  253.    //     }
  254.    // }
  255.    // else if (cmu->BAND.AnsiCompareIC("PCS") == 0)
  256.    // {
  257.    //     if (NULL != cmu->s_pcs)
  258.    //     {
  259.    //         strcpy(cmd, "ABOR:RFG");
  260.    //         viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  261.    //     }
  262.    // }
  263.    // else if (cmu->BAND.AnsiCompareIC("GSM850") == 0)
  264.    // {
  265.    //     if (NULL != cmu->s_gsm850)
  266.    //     {
  267.    //         strcpy(cmd, "ABOR:RFG");
  268.    //         viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  269.    //     }
  270.    // }
  271.     if (IsCmuBandSupported(asFreqBand, CMU_GSM850_BAND))
  272.     {
  273.         if (NULL != cmu->s_gsm850)
  274.         {
  275.             status = viClose(cmu->s_gsm850);
  276.             if (status < VI_SUCCESS)
  277.             {
  278.                 return false;
  279.             }
  280.             cmu->s_gsm850 = NULL;
  281.         }
  282.     }
  283.     if (IsCmuBandSupported(asFreqBand, CMU_PCS1900_BAND))
  284.     {
  285.         if (NULL != cmu->s_pcs)
  286.         {
  287.             status = viClose(cmu->s_pcs);
  288.             if (status < VI_SUCCESS)
  289.             {
  290.                 return false;
  291.             }
  292.             cmu->s_pcs = NULL;
  293.         }
  294.     }
  295.     if (IsCmuBandSupported( asFreqBand, CMU_DCS1800_BAND))
  296.     {
  297.         if (NULL != cmu->s_dcs)
  298.         {
  299.             status = viClose(cmu->s_dcs);
  300.             if (status < VI_SUCCESS)
  301.             {
  302.                 return false;
  303.             }
  304.             cmu->s_dcs = NULL;
  305.         }
  306.     }
  307.     if (IsCmuBandSupported(asFreqBand, CMU_PGSM_BAND) || IsCmuBandSupported(asFreqBand, CMU_EGSM_BAND))
  308.     {
  309.         if (NULL != cmu->s_gsm)
  310.         {
  311.             status = viClose(cmu->s_gsm);
  312.             if (status < VI_SUCCESS)
  313.             {
  314.                 return false;
  315.             }
  316.             cmu->s_gsm = NULL;
  317.         }
  318.     }
  319.     return true;
  320. }
  321. //----------------------------------------------------------------------------
  322. bool cmu_sig_onoff(CMU_VAR *cmu, bool on)
  323. {
  324.     int status;
  325.     unsigned long num;
  326.     char cmd[BUF], buf[BUF];
  327.     if( on )
  328.     {   sprintf(cmd, "PROCedure:SIGNalling:ACTion SON");
  329.     }
  330.     else
  331.     {   sprintf(cmd, "PROCedure:SIGNalling:ACTion SOFF");
  332.     }
  333.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )    { status=viWrite(cmu->s_gsm,    cmd, strlen(cmd), &num);  }
  334.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )    { status=viWrite(cmu->s_dcs,    cmd, strlen(cmd), &num);  }
  335.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )    { status=viWrite(cmu->s_pcs,    cmd, strlen(cmd), &num);  }
  336.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ) { status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);  }
  337.     if( status<VI_SUCCESS ) return false;
  338.     return true;
  339. }
  340. //------------------------------------------------------------------------------
  341. bool cmu_sig_net_support( CMU_VAR *cmu, int net_support )
  342. {
  343.     int status;
  344.     unsigned long num;
  345.     char cmd[BUF], buf[BUF];
  346.     switch( net_support )
  347.     {
  348.         case NET_SUPPORT_GSM_ONLY:
  349.              sprintf(cmd, "CONFigure:NETWork:NSUPport GSM");
  350.         break;
  351.         case NET_SUPPORT_GSM_GPRS:
  352.              sprintf(cmd, "CONFigure:NETWork:NSUPport GGPR");
  353.         break;
  354.         case NET_SUPPORT_GSM_EGPRS:
  355.              sprintf(cmd, "CONFigure:NETWork:NSUPport GEGP");
  356.         break;
  357.     }
  358.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )    { status=viWrite(cmu->s_gsm,    cmd, strlen(cmd), &num);  }
  359.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )    { status=viWrite(cmu->s_dcs,    cmd, strlen(cmd), &num);  }
  360.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )    { status=viWrite(cmu->s_pcs,    cmd, strlen(cmd), &num);  }
  361.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ) { status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);  }
  362.     if( status<VI_SUCCESS ) return false;
  363.     return true;
  364. }
  365. //------------------------------------------------------------------------------
  366. bool cmu_sig_cellband(CMU_VAR *cmu, int band)
  367. {
  368.     char cmd[BUF], buf[BUF];
  369.     unsigned long num;
  370.     // abort current active RFG
  371.     if( cmu->s_BAND.AnsiCompareIC("GSM") == 0 )           { strcpy(cmd, "PROCedure:SIGNalling:ACTion SOFF"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num); }
  372.     else if( cmu->s_BAND.AnsiCompareIC("DCS") == 0 )      { strcpy(cmd, "PROCedure:SIGNalling:ACTion SOFF"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num); }
  373.     else if( cmu->s_BAND.AnsiCompareIC("PCS") == 0 )      { strcpy(cmd, "PROCedure:SIGNalling:ACTion SOFF"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num); }
  374.     else if( cmu->s_BAND.AnsiCompareIC("GSM850") == 0 )   { strcpy(cmd, "PROCedure:SIGNalling:ACTion SOFF"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); }
  375.     if( band==0 )                                               return false;
  376.     else if( band==CMU_PGSM_BAND || band==CMU_EGSM_BAND )       cmu->s_BAND="GSM";
  377.     else if( band==CMU_DCS1800_BAND )                           cmu->s_BAND="DCS";
  378.     else if( band==CMU_PCS1900_BAND )                           cmu->s_BAND="PCS";
  379.     else if( band==CMU_GSM850_BAND )                            cmu->s_BAND="GSM850";
  380.     else
  381.     {                                                        return false;}
  382.     if( band==CMU_PGSM_BAND || band==CMU_EGSM_BAND )
  383.     {
  384.         strcpy(cmd, "PROCedure:SIGNalling:ACTion SON;*opc?"); viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  385.         viRead(cmu->s_gsm, buf, BUF, &num);
  386.         Sleep(500);
  387.     }
  388.     else if( band==CMU_DCS1800_BAND )
  389.     {
  390.         strcpy(cmd, "PROCedure:SIGNalling:ACTion SON;*opc?"); viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  391.         viRead(cmu->s_dcs, buf, BUF, &num);
  392.         Sleep(500);
  393.     }
  394.     else if( band==CMU_PCS1900_BAND )
  395.     {
  396.         strcpy(cmd, "PROCedure:SIGNalling:ACTion SON;*opc?"); viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  397.         viRead(cmu->s_pcs, buf, BUF, &num);
  398.         Sleep(500);
  399.     }
  400.     else if( band==CMU_GSM850_BAND )
  401.     {
  402.         strcpy(cmd, "PROCedure:SIGNalling:ACTion SON;*opc?"); viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  403.         viRead(cmu->s_gsm850, buf, BUF, &num);
  404.         Sleep(500);
  405.     }
  406.     else
  407.     {
  408.         return false;
  409.     }
  410. // Sleep(500);
  411.     return true;
  412. }
  413. //---------------------------------------------------------------------------
  414. bool cmu_sig_bcharfcn(CMU_VAR *cmu, short chan)
  415. {
  416.     int status;
  417.     unsigned long num;
  418.     char cmd[BUF], buf[BUF];
  419.     sprintf(cmd, "CONFigure:BSSignal:CCH:CHANnel %d;*opc?", chan);
  420.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )    { status=viWrite(cmu->s_gsm,    cmd, strlen(cmd), &num); viRead(cmu->s_gsm,    buf, BUF, &num); }
  421.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )    { status=viWrite(cmu->s_dcs,    cmd, strlen(cmd), &num); viRead(cmu->s_dcs,    buf, BUF, &num); }
  422.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )    { status=viWrite(cmu->s_pcs,    cmd, strlen(cmd), &num); viRead(cmu->s_pcs,    buf, BUF, &num); }
  423.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ) { status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); viRead(cmu->s_gsm850, buf, BUF, &num); }
  424.     if( status<VI_SUCCESS ) return false;
  425.     return true;
  426. }
  427. //---------------------------------------------------------------------------
  428. bool cmu_sig_cellpower(CMU_VAR *cmu, double power)
  429. {
  430.     int status;
  431.     unsigned long num;
  432.     char cmd[BUF], buf[BUF];
  433.     if( power>=0 ) power=-60;
  434.     sprintf(cmd, "CONFigure:BSSignal:CCH:LEVel:ABSolute %f;*opc?", power);
  435.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )   { status=viWrite(cmu->s_gsm,    cmd, strlen(cmd), &num); viRead(cmu->s_gsm,    buf, BUF, &num); }
  436.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )   { status=viWrite(cmu->s_dcs,    cmd, strlen(cmd), &num); viRead(cmu->s_dcs,    buf, BUF, &num); }
  437.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )   { status=viWrite(cmu->s_pcs,    cmd, strlen(cmd), &num); viRead(cmu->s_pcs,    buf, BUF, &num); }
  438.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ){ status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); viRead(cmu->s_gsm850, buf, BUF, &num); }
  439.     else                                { return false; }
  440.     Sleep(100);
  441.     if( status<VI_SUCCESS ) return false;
  442.     return true;
  443. }
  444. //------------------------------------------------------------------------------
  445. bool cmu_sig_tcharfcn(CMU_VAR *cmu, short chan)
  446. {
  447.     int status;
  448.     unsigned long num;
  449.     char cmd[BUF], buf[BUF];
  450.     sprintf(cmd, "CONFigure:BSSignal:CHANnel %d;*opc?", chan);
  451.     if( (cmu->s_BAND).AnsiCompareIC("GSM") == 0 )         { status=viWrite(cmu->s_gsm,    cmd, strlen(cmd), &num); viRead(cmu->s_gsm, buf, BUF, &num); }
  452.     else if( (cmu->s_BAND).AnsiCompareIC("DCS") == 0 )    { status=viWrite(cmu->s_dcs,    cmd, strlen(cmd), &num); viRead(cmu->s_dcs, buf, BUF, &num); }
  453.     else if( (cmu->s_BAND).AnsiCompareIC("PCS") == 0 )    { status=viWrite(cmu->s_pcs,    cmd, strlen(cmd), &num); viRead(cmu->s_pcs, buf, BUF, &num); }
  454.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850") == 0 ) { status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); viRead(cmu->s_gsm850, buf, BUF, &num); }
  455.     if( status<VI_SUCCESS ) return false;
  456.     return true;
  457. }
  458. //------------------------------------------------------------------------------
  459. bool cmu_sig_tchtimeslot(CMU_VAR *cmu, int timeslot)
  460. {
  461.     int status;
  462.     unsigned long num;
  463.     char cmd[BUF], buf[BUF];
  464.     sprintf(cmd, "CONFigure:BSSignal:TIMeslot %d;*opc?", timeslot);
  465.     if( (cmu->s_BAND).AnsiCompareIC("GSM") == 0 )         { status=viWrite(cmu->s_gsm,    cmd, strlen(cmd), &num); viRead(cmu->s_gsm, buf, BUF, &num); }
  466.     else if( (cmu->s_BAND).AnsiCompareIC("DCS") == 0 )    { status=viWrite(cmu->s_dcs,    cmd, strlen(cmd), &num); viRead(cmu->s_dcs, buf, BUF, &num); }
  467.     else if( (cmu->s_BAND).AnsiCompareIC("PCS") == 0 )    { status=viWrite(cmu->s_pcs,    cmd, strlen(cmd), &num); viRead(cmu->s_pcs, buf, BUF, &num); }
  468.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850") == 0 ) { status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); viRead(cmu->s_gsm850, buf, BUF, &num); }
  469.     if( status<VI_SUCCESS ) return false;
  470.     return true;
  471. }
  472. //------------------------------------------------------------------------------
  473. bool cmu_sig_tchlevel(CMU_VAR *cmu, double level)
  474. {
  475.     int status;
  476.     unsigned long num;
  477.     char cmd[BUF], buf[BUF];
  478.     sprintf(cmd, "CONFigure:BSSignal:LEVel:UTIMeslot %f;*opc?", level);
  479.     if( (cmu->s_BAND).AnsiCompareIC("GSM") == 0 )         { status=viWrite(cmu->s_gsm,    cmd, strlen(cmd), &num); viRead(cmu->s_gsm, buf, BUF, &num); }
  480.     else if( (cmu->s_BAND).AnsiCompareIC("DCS") == 0 )    { status=viWrite(cmu->s_dcs,    cmd, strlen(cmd), &num); viRead(cmu->s_dcs, buf, BUF, &num); }
  481.     else if( (cmu->s_BAND).AnsiCompareIC("PCS") == 0 )    { status=viWrite(cmu->s_pcs,    cmd, strlen(cmd), &num); viRead(cmu->s_pcs, buf, BUF, &num); }
  482.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850") == 0 ) { status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); viRead(cmu->s_gsm850, buf, BUF, &num); }
  483.     if( status<VI_SUCCESS ) return false;
  484.     return true;
  485. }
  486. //------------------------------------------------------------------------------
  487. bool cmu_sig_mstxlevel(CMU_VAR *cmu, int lev)
  488. {
  489.     int status;
  490.     unsigned long num;
  491.     char cmd[BUF], buf[BUF];
  492.     sprintf(cmd, "CONFigure:MSSignal:MS:PCL %d;*opc?", lev);
  493.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )   { status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);    viRead(cmu->s_gsm, buf, BUF, &num); }
  494.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )   { status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);    viRead(cmu->s_dcs, buf, BUF, &num); }
  495.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )   { status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);    viRead(cmu->s_pcs, buf, BUF, &num); }
  496.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ){ status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); viRead(cmu->s_gsm850, buf, BUF, &num); }
  497.     if( status<VI_SUCCESS ) return false;
  498.     return true;
  499. }
  500. //------------------------------------------------------------------------------
  501. bool cmu_sig_tsc(CMU_VAR *cmu, int tsc)
  502. {
  503. #if 0
  504.     sprintf(cmd, "rfan:tseq GSM%d", tsc);
  505.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  506.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  507.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  508.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  509.     if( status<VI_SUCCESS ) return false;
  510. #endif    
  511.     return true;
  512. }
  513. //=============================================================================
  514. ///////////////////////      Analyzer level      //////////////////////////////////
  515. //=============================================================================
  516. //=============================================================================
  517. ///////////////////////      Modulation      //////////////////////////////////
  518. //=============================================================================
  519. bool cmu_sig_mod_init( CMU_VAR *cmu )
  520. {
  521.     int status;
  522.     unsigned long num;
  523.     char cmd[BUF], buf[BUF];
  524.     strcpy(cmd, "init:mod");
  525.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  526.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  527.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  528.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  529.     if( status<VI_SUCCESS ) return false;
  530.     return true;
  531. }
  532. //-----------------------------------------------------------------------------
  533. bool cmu_sig_mod_config_control_mode( CMU_VAR *cmu, int count )
  534. {
  535.     int status;
  536.     unsigned long num;
  537.     char cmd[BUF], buf[BUF];
  538.     char str[256];
  539.     sprintf(str, "conf:mod:perr:cont scal,%d;*opc?", count );
  540.     strcpy(cmd, str);
  541.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )    { status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);    viRead(cmu->s_gsm, buf, BUF, &num); }
  542.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )    { status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);    viRead(cmu->s_dcs, buf, BUF, &num); }
  543.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )    { status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);    viRead(cmu->s_pcs, buf, BUF, &num); }
  544.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ) { status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); viRead(cmu->s_gsm850, buf, BUF, &num); }
  545.     if( status<VI_SUCCESS ) return false;
  546.     return true;
  547. }
  548. //-----------------------------------------------------------------------------
  549. bool cmu_sig_mod_read(CMU_VAR *cmu, int category, double *mod)
  550. {
  551.     int status;
  552.     unsigned long num;
  553.     char cmd[BUF], buf[BUF];
  554.     AnsiString temp,temp_total,temp_other,temp_value;
  555.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  556.     AnsiString value10,value11,value12,value13,value14;
  557.     AnsiString value[14];
  558.     int i=0;
  559.     int as_num;
  560.     AnsiString as;
  561.     strcpy(cmd, "read:mod?");
  562.     if( (cmu->s_BAND).AnsiCompareIC("GSM")==0 )
  563.     {
  564.         status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  565.         status=viRead(cmu->s_gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  566.     }
  567.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )
  568.     {
  569.         status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  570.         status=viRead(cmu->s_dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  571.     }
  572.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )
  573.     {
  574.         status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  575.         status=viRead(cmu->s_pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  576.     }
  577.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 )
  578.     {
  579.         status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  580.         status=viRead(cmu->s_gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  581.     }
  582.     buf[num-1]=NULL;
  583.     temp=(AnsiString)buf;
  584.     if( temp.Pos("NAN") ) return false;
  585.     for(i=0;i<10;i++)
  586.     {
  587.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  588.         as_num= temp.AnsiPos(",");
  589.         value[i]=temp_value;
  590.         temp_total=temp.SubString(as_num+1, temp.Length());
  591.         temp=temp_total;
  592.     }
  593.    // *mod = atof(value[7].c_str());
  594.     *mod = atof(value[category].c_str());
  595.     return true;
  596. }
  597. //-----------------------------------------------------------------------------
  598. bool cmu_sig_mod_fetch(CMU_VAR *cmu, int category, double *mod)
  599. {
  600.     int status;
  601.     unsigned long num;
  602.     char cmd[BUF], buf[BUF];
  603.     AnsiString temp,temp_total,temp_other,temp_value;
  604.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  605.     AnsiString value10,value11,value12,value13,value14;
  606.     AnsiString value[14];
  607.     int i=0;
  608.     int as_num;
  609.     AnsiString as;
  610.     strcpy(cmd, "fetch:mod?");
  611.     if( (cmu->s_BAND).AnsiCompareIC("GSM")==0 )
  612.     {
  613.         status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  614.         status=viRead(cmu->s_gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  615.     }
  616.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )
  617.     {
  618.         status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  619.         status=viRead(cmu->s_dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  620.     }
  621.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )
  622.     {
  623.         status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  624.         status=viRead(cmu->s_pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  625.     }
  626.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 )
  627.     {
  628.         status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  629.         status=viRead(cmu->s_gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  630.     }
  631.     buf[num-1]=NULL;
  632.     temp=(AnsiString)buf;
  633.     if( temp.Pos("NAN") ) return false;
  634.     for(i=0;i<10;i++)
  635.     {
  636.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  637.         as_num= temp.AnsiPos(",");
  638.         value[i]=temp_value;
  639.         temp_total=temp.SubString(as_num+1, temp.Length());
  640.         temp=temp_total;
  641.     }
  642.    // *mod = atof(value[7].c_str());
  643.     *mod = atof(value[category].c_str());
  644.     return true;
  645. }
  646. //-----------------------------------------------------------------------------
  647. bool cmu_sig_mod_sample(CMU_VAR *cmu, int category, double *mod)
  648. {
  649.     int status;
  650.     unsigned long num;
  651.     char cmd[BUF], buf[BUF];
  652.     AnsiString temp,temp_total,temp_other,temp_value;
  653.     AnsiString value1,value2,value3,value4,value5,value6,value7,value9;
  654.     AnsiString value10,value11,value12,value13,value14;
  655.     AnsiString value[14];
  656.     int i=0;
  657.     int as_num;
  658.     AnsiString as;
  659.     strcpy(cmd, "sample:mod?");
  660.     if( (cmu->s_BAND).AnsiCompareIC("GSM")==0 )
  661.     {
  662.         status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  663.         status=viRead(cmu->s_gsm, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  664.     }
  665.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )
  666.     {
  667.         status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  668.         status=viRead(cmu->s_dcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  669.     }
  670.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )
  671.     {
  672.         status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  673.         status=viRead(cmu->s_pcs, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  674.     }
  675.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 )
  676.     {
  677.         status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num); if( status<VI_SUCCESS ) return false;
  678.         status=viRead(cmu->s_gsm850, buf, BUF, &num); if( status<VI_SUCCESS ) return false;
  679.     }
  680.     buf[num-1]=NULL;
  681.     temp=(AnsiString)buf;
  682.     if( temp.Pos("NAN") ) return false;
  683.     for(i=0;i<10;i++)
  684.     {
  685.         temp_value=temp.SubString(1, temp.Pos(",")-1);
  686.         as_num= temp.AnsiPos(",");
  687.         value[i]=temp_value;
  688.         temp_total=temp.SubString(as_num+1, temp.Length());
  689.         temp=temp_total;
  690.     }
  691.    // *mod = atof(value[7].c_str());
  692.     *mod = atof(value[category].c_str());
  693.     return true;
  694. }
  695. //---------------------------------------------------------------------------
  696. bool cmu_sig_mod_abort( CMU_VAR *cmu )
  697. {
  698.     int status;
  699.     unsigned long num;
  700.     char cmd[BUF], buf[BUF];
  701.     strcpy(cmd, "abort:mod");
  702.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  703.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  704.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  705.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  706.     if( status<VI_SUCCESS ) return false;
  707.     return true;
  708. }
  709. //---------------------------------------------------------------------------
  710. bool cmu_sig_mod_stop( CMU_VAR *cmu )
  711. {
  712.     int status;
  713.     unsigned long num;
  714.     char cmd[BUF], buf[BUF];
  715.     strcpy(cmd, "stop:mod");
  716.     if(      (cmu->s_BAND).AnsiCompareIC("GSM")==0 )    status=viWrite(cmu->s_gsm, cmd, strlen(cmd), &num);
  717.     else if( (cmu->s_BAND).AnsiCompareIC("DCS")==0 )    status=viWrite(cmu->s_dcs, cmd, strlen(cmd), &num);
  718.     else if( (cmu->s_BAND).AnsiCompareIC("PCS")==0 )    status=viWrite(cmu->s_pcs, cmd, strlen(cmd), &num);
  719.     else if( (cmu->s_BAND).AnsiCompareIC("GSM850")==0 ) status=viWrite(cmu->s_gsm850, cmd, strlen(cmd), &num);
  720.     if( status<VI_SUCCESS ) return false;
  721.     return true;
  722. }