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

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.  *   WFC_ctrl.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  WiFi Tester control function source
  48.  *
  49.  * Author:
  50.  * -------
  51.  *  Andy Ueng (mtk00490)
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * $Revision$
  58.  * $Modtime$
  59.  * $Log$
  60.  *
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  63.  *============================================================================
  64.  ****************************************************************************/
  65. #include <vcl.h>
  66. //#ifndef age1960_INCLUDE
  67. //#include "age1960.h"
  68. //#endif
  69. #include "AgN4010WSOAPI.h"
  70. #pragma hdrstop
  71. #ifndef  _WFT_CTRL_H_
  72. #include "wft_ctrl.h"
  73. #endif
  74. #ifndef  _WFT_COMMON_H_
  75. #include "wft_common.h"
  76. #endif
  77. //===========================================================================
  78. CWFTCTRL::CWFTCTRL( void )
  79. {
  80. }
  81. //---------------------------------------------------------------------------
  82. CWFTCTRL::~CWFTCTRL()
  83. {
  84. }
  85. //=============================================================================
  86. /////////////////////////////   initialization/terminate  /////////////////////
  87. //=============================================================================
  88. bool CWFTCTRL::WFT_Init( S_WFT *p_wft )
  89. {
  90.     if( IQVIEW == p_wft->device_type )
  91.     {
  92.         IQV_init();
  93.     }
  94.     else if( N4010A == p_wft->device_type )
  95.     {
  96.         char str[1024];
  97.         strcpy( str, p_wft->s_age_n4010a.as_VISA_Alias_Name.c_str() );
  98.         if( 0 > AgN4010_Init( str ) )
  99.             return false;
  100.     }
  101.     return true;
  102. }
  103. //--------------------------------------------------------------------------
  104. bool CWFTCTRL::WFT_Terminate( S_WFT *p_wft )
  105. {
  106.     if( IQVIEW == p_wft->device_type )
  107.     {
  108.         IQV_term();
  109.     }
  110.     else if( N4010A == p_wft->device_type )
  111.     {
  112.         AgN4010_Close();
  113.     }
  114.     return true;
  115. }
  116. //=============================================================================
  117. ///////////////////////////   Connection control   ////////////////////////////
  118. //=============================================================================
  119. bool CWFTCTRL::WFT_ConOpen( S_WFT *p_wft )
  120. {
  121.     if( IQVIEW == p_wft->device_type )
  122.     {
  123.         p_wft->iqv.p_handle = IQV_con_open(&(p_wft->iqv.ip_addr));
  124.         if( NULL == p_wft->iqv.p_handle )
  125.         {
  126.             //int err = IQV_err();
  127.             return false;
  128.         }
  129.     }
  130.     return true;
  131. }
  132. //----------------------------------------------------------------------------
  133. bool CWFTCTRL::WFT_ConClose( S_WFT *p_wft )
  134. {
  135.     if( IQVIEW == p_wft->device_type )
  136.     {
  137.         if( NULL != p_wft->iqv.p_handle )
  138.         {
  139.             if( IQV_ERR_OK != IQV_con_close(p_wft->iqv.p_handle) )
  140.                 return false;
  141.             p_wft->iqv.p_handle = NULL;
  142.         }
  143.     }
  144.     return true;
  145. }
  146. //----------------------------------------------------------------------------
  147. bool CWFTCTRL::WFT_ConCalUpdate( S_WFT *p_wft )
  148. {
  149.     if( IQVIEW == p_wft->device_type )
  150.     {
  151.         if( IQV_ERR_OK != IQV_con_cal_update(p_wft->iqv.p_handle) )
  152.             return false;
  153.     }
  154.     return true;
  155. }
  156. //============================================================================
  157. //////////////////////////  Test setup handling   ////////////////////////////
  158. //============================================================================
  159. bool CWFTCTRL::WFT_SetDefault( S_WFT *p_wft )
  160. {
  161.     if( IQVIEW == p_wft->device_type )
  162.     {
  163.         if( IQV_ERR_OK != IQV_set_default( p_wft->iqv.p_handle ) )
  164.             return false;
  165.     }
  166.     return true;
  167. }
  168. //---------------------------------------------------------------------------
  169. bool CWFTCTRL::WFT_ApplyChange( S_WFT *p_wft )
  170. {
  171.     if( IQVIEW == p_wft->device_type )
  172.     {
  173.         if( IQV_ERR_OK != IQV_set_status ( p_wft->iqv.p_handle, 0) )
  174.             return false;
  175.     }
  176.     return true;
  177. }
  178. //---------------------------------------------------------------------------
  179. bool CWFTCTRL::WFT_SetFrameCount( S_WFT *p_wft, unsigned int frame_count )
  180. {
  181.     if( IQVIEW == p_wft->device_type )
  182.     {
  183.         if( IQV_ERR_OK != IQV_set_frame_cnt ( p_wft->iqv.p_handle, frame_count ) )
  184.         {
  185.             return false;
  186.         }
  187.     }
  188.     return true;
  189. }
  190. //---------------------------------------------------------------------------
  191. bool CWFTCTRL::WFT_SetTriggerStyle( S_WFT *p_wft )
  192. {
  193.     if( N4010A == p_wft->device_type )
  194.     {
  195.         if( 0 >= AgN4010_SetProperty( "TriggerStyle", enumTriggerStyle_MagLevel ) )
  196.         {
  197.             return false;
  198.         }
  199.         if( 0 >= AgN4010_SetProperty( "TriggerLevel_mV", 20 ) )
  200.         {
  201.             return false;
  202.         }
  203.         if( 0 >= AgN4010_SetProperty( "TriggerDelay_s", 0.000002 ) )
  204.         {
  205.             return false;
  206.         }
  207.     }
  208.     return true;
  209. }
  210. //---------------------------------------------------------------------------
  211. bool CWFTCTRL::WFT_SetPowerRange( S_WFT *p_wft, double power_range )
  212. {
  213.     if( N4010A == p_wft->device_type )
  214.     {
  215.         if( 0 >= AgN4010_SetProperty( "PowerRange", power_range ) )
  216.         {
  217.             return false;
  218.         }
  219.     }
  220.     return true;
  221. }
  222. //---------------------------------------------------------------------------
  223. bool CWFTCTRL::WFT_SetCentralFreq( S_WFT *p_wft, double MHz )
  224. {
  225.     if( IQVIEW == p_wft->device_type )
  226.     {
  227.         p_wft->iqv.p_handle->rx.freq = MHz*1000000.0;
  228.         if( ! WFT_ApplyChange( p_wft ) )
  229.             return false;
  230.     }
  231.     else if( N4010A == p_wft->device_type )
  232.     {
  233.         if( 0 >= AgN4010_SetProperty( "CenterFrequency_MHz", MHz ) )
  234.         {
  235.             return false;
  236.         }
  237.     }
  238.     return true;
  239. }
  240. //---------------------------------------------------------------------------
  241. bool CWFTCTRL::WFT_SetPacketLength( S_WFT *p_wft, double s )
  242. {
  243.     if( N4010A == p_wft->device_type )
  244.     {
  245.         if( 0 >= AgN4010_SetProperty( "MaxPacketLength_s", s ) )  // suggest : 100 us
  246.         {
  247.             return false;
  248.         }
  249.     }
  250.     return true;
  251. }
  252. //============================================================================
  253. //////////////////////////  Data capture and signal analysis   ///////////////
  254. //============================================================================
  255. bool CWFTCTRL::WFT_DataCapture( S_WFT *p_wft )
  256. {
  257.     if( IQVIEW == p_wft->device_type )
  258.     {
  259.         if( IQV_ERR_OK != IQV_data_capture ( p_wft->iqv.p_handle, 0, IQV_DC_ARM_NEW ) )
  260.         {
  261.             return false;
  262.         }
  263.     }
  264.     return true;
  265. }
  266. //----------------------------------------------------------------------------
  267. bool CWFTCTRL::WFT_PowerAnalyze( S_WFT *p_wft )
  268. {
  269.     if( IQVIEW == p_wft->device_type )
  270.     {
  271.         if( IQV_ERR_OK != IQV_data_analyze( p_wft->iqv.p_handle, 0, IQV_GROUP_POWER_ANALYSIS ) )
  272.         {
  273.             return false;
  274.         }
  275.     }
  276.     return true;
  277. }
  278. //============================================================================
  279. //////////////////////////  Result Handling   ////////////////////////////////
  280. //============================================================================
  281. bool CWFTCTRL::WFT_ReadPower( S_WFT *p_wft, double &power )
  282. {
  283.     if( IQVIEW == p_wft->device_type )
  284.     {
  285.         if( ! IQV_result_exist_valid( p_wft->iqv.p_handle, 0, IQV_RES_RMS_DB_NO_GAP ) )
  286.         {
  287.             return false;
  288.         }
  289.         power = IQV_result_real( p_wft->iqv.p_handle, 0, IQV_RES_RMS_DB_NO_GAP );
  290.     }
  291.     else if( N4010A == p_wft->device_type )
  292.     {
  293.         if( 0 > AgN4010_Measure_AveragePower( &power ) )
  294.         {
  295.             return false;
  296.         }
  297.     }    
  298.     return true;
  299. }